기능적 차이: Amazon Keyspaces와 Apache Cassandra - Amazon Keyspaces(Apache Cassandra용)

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

기능적 차이: Amazon Keyspaces와 Apache Cassandra

다음은 Amazon Keyspaces와 Apache Cassandra의 기능적 차이점입니다.

Apache Cassandra API, 작업 및 데이터 유형

Amazon Keyspaces는 키스페이스 및 테이블 생성, 데이터 읽기, 데이터 쓰기 등 일반적으로 사용되는 모든 Cassandra 데이터 플레인 작업을 지원합니다. 현재 지원되는 내용을 보려면 Amazon Keyspaces에서 지원되는 Cassandra API, 작업, 함수, 데이터 유형 섹션을 참조하세요.

키스페이스 및 테이블의 비동기 생성 및 삭제

Amazon Keyspaces는 키스페이스 및 테이블 생성 및 삭제와 같은 데이터 정의 언어(DDL) 작업을 비동기적으로 수행합니다. 리소스 생성 상태를 모니터링하는 방법을 알아보려면 Amazon Keyspaces에서 키스페이스 생성Amazon Keyspaces에서 테이블 생성 섹션을 참조하세요. CQL 언어 참조의 DDL 문 목록은 Amazon Keyspaces의 DDL 문(데이터 정의 언어) 섹션을 참조하세요.

인증 및 권한 부여

Amazon Keyspaces (Apache Cassandra용) 는 사용자 인증 및 권한 부여에 AWS Identity and Access Management (IAM) 을 사용하며, Apache Cassandra와 동일한 권한 부여 정책을 지원합니다. 따라서 Amazon Keyspaces는 Apache Cassandra의 보안 구성 명령을 지원하지 않습니다.

배치

Amazon Keyspaces는 최대 30개의 명령으로 일괄적으로 기록되지 않은 배치 명령을 지원합니다. 무조건 INSERT, UPDATE 또는 DELETE 명령만 일괄 처리할 수 있습니다. 로깅된 배치는 지원되지 않습니다.

클러스터 구성

Amazon Keyspaces는 서버리스이므로 구성할 클러스터, 호스트 또는 Java 가상 머신(JVM)이 없습니다. 압축, 캐싱, 가비지 수집 및 블룸 필터링에 대한 Cassandra의 설정은 Amazon Keyspaces에 적용할 수 없으며 지정된 경우 무시됩니다.

연결

기존 Cassandra 드라이버를 사용하여 Amazon Keyspaces와 통신할 수 있지만 드라이버를 다르게 구성해야 합니다. Amazon Keyspaces는 TCP 연결당 초당 최대 3,000개의 CQL 쿼리를 지원하지만 드라이버가 설정할 수 있는 연결 수에는 제한이 없습니다.

대부분의 오픈 소스 Cassandra 드라이버는 Cassandra에 연결 풀을 설정하고 연결 풀 전체에 걸쳐 쿼리를 로드 밸런싱합니다. Amazon Keyspaces는 드라이버에 9개의 피어 IP 주소를 노출하며 대부분의 드라이버의 기본 동작은 각 피어 IP 주소에 단일 연결을 설정하는 것입니다. 따라서 기본 설정을 사용하는 드라이버의 최대 CQL 쿼리 처리량은 초당 27,000개의 CQL 쿼리입니다.

이 수를 늘리려면 드라이버가 연결 풀에서 유지 관리하는 IP 주소당 연결 수를 늘리는 것이 좋습니다. 예를 들어 IP 주소당 최대 연결 수를 2로 설정하면 드라이버의 최대 처리량이 초당 54,000개의 CQL 쿼리로 두 배로 늘어납니다.

오버헤드를 허용하고 배포를 개선하려면 연결당 초당 500개의 CQL 쿼리를 사용하도록 드라이버를 구성하는 것이 좋습니다. 이 시나리오에서 초당 18,000개의 CQL 쿼리를 계획하려면 36개의 연결이 필요합니다. 9개 엔드포인트의 4개 연결에 대해 드라이버를 구성하면 초당 500개의 요청을 수행하는 36개의 연결이 제공됩니다. 연결 모범 사례에 대한 자세한 내용은 Amazon Keyspaces(Apache Cassandra용)에 대한 클라이언트 드라이버 연결 섹션을 참조하세요.

VPC 엔드포인트와 연결할 때 사용 가능한 엔드포인트가 적을 수 있습니다. 즉 드라이버 구성의 연결 수를 늘려야 합니다. VPC 연결 모범 사례에 대한 자세한 내용은 Amazon Keyspaces에서 VPC 엔드포인트를 통해 연결을 구성하는 방법 섹션을 참조하세요.

IN 키워드

Amazon Keyspaces는 SELECT 문의 IN 키워드를 지원합니다. INUPDATEDELETE에서는 지원되지 않습니다. SELECT 문에서 IN 키워드를 사용하는 경우 SELECT 문에 키가 표시되는 순서대로 쿼리 결과가 반환됩니다. Cassandra에서는 결과가 사전순으로 정렬됩니다.

ORDER BY를 사용하면 페이지 매김이 비활성화된 상태에서 전체 순서 변경이 지원되지 않으며 페이지 내에서 결과가 정렬됩니다. IN 키워드에는 슬라이스 쿼리가 지원되지 않습니다. TOKENSIN 키워드에서 지원되지 않습니다. Amazon Keyspaces는 하위 쿼리를 생성하여 IN 키워드로 쿼리를 처리합니다. 각 하위 쿼리는 TCP 연결당 초당 3,000개의 CQL 쿼리 한도에 대한 연결로 간주됩니다. 자세한 정보는 Amazon Keyspaces에서 SELECT 문과 함께 IN 연산자 사용을 참조하세요.

CQL 쿼리 처리량 조정

Amazon Keyspaces는 TCP 연결당 초당 최대 3,000개의 CQL 쿼리를 지원하지만 드라이버가 설정할 수 있는 연결 수에는 제한이 없습니다.

대부분의 오픈 소스 Cassandra 드라이버는 Cassandra에 연결 풀을 설정하고 연결 풀 전체에 걸쳐 쿼리를 로드 밸런싱합니다. Amazon Keyspaces는 드라이버에 9개의 피어 IP 주소를 노출하며 대부분의 드라이버의 기본 동작은 각 피어 IP 주소에 단일 연결을 설정하는 것입니다. 따라서 기본 설정을 사용하는 드라이버의 최대 CQL 쿼리 처리량은 초당 27,000개의 CQL 쿼리입니다.

이 수를 늘리려면 드라이버가 연결 풀에서 유지 관리하는 IP 주소당 연결 수를 늘리는 것이 좋습니다. 예를 들어 IP 주소당 최대 연결 수를 2로 설정하면 드라이버의 최대 처리량이 초당 54,000개의 CQL 쿼리로 두 배로 늘어납니다.

FROZEN 컬렉션

Cassandra의 FROZEN 키워드는 컬렉션 데이터 유형의 여러 구성 요소를 BLOB처럼 처리되는 변경할 수 없는 단일 값으로 직렬화합니다. INSERTUPDATE 문은 컬렉션 전체를 덮어씁니다.

Amazon Keyspaces는 기본적으로 최대 5개 수준의 프로즌 수집 중첩을 지원합니다. 자세한 정보는 Amazon Keyspaces 서비스 할당량을 참조하세요.

Amazon Keyspaces는 조건부 UPDATE 또는 SELECT 문에서 프로즌 수집 전체를 사용하는 불평등 비교를 지원하지 않습니다. 컬렉션과 프로즌 수집의 동작은 Amazon Keyspaces에서 동일합니다.

클라이언트 측 타임스탬프가 있는 프로즌 수집을 사용하는 경우 쓰기 작업의 타임스탬프가 만료되거나 삭제되지 않은 기존 열의 타임스탬프와 동일한 경우 Amazon Keyspaces는 비교를 수행하지 않습니다. 대신 서버가 최신 라이터를 결정할 수 있으며 그러면 가장 최근 라이터가 승리합니다.

프로즌 수집에 대한 자세한 내용은 컬렉션 유형 섹션을 참조하세요.

간단한 트랜잭션

Amazon Keyspaces(Apache Cassandra용)는 Apache Cassandra에서 간단한 트랜잭션(LWT)으로 알려진 INSERT, UPDATEDELETE 명령에 대한 비교 및 설정 기능을 완벽하게 지원합니다. 서버리스 서비스인 Amazon Keyspaces(Apache Cassandra용)는 간단한 트랜잭션을 포함하여 모든 규모에서 일관된 성능을 제공합니다. Amazon Keyspaces를 사용하면 간단한 트랜잭션을 사용해도 성능이 저하되지 않습니다.

로드 밸런싱

system.peers 표 항목은 Amazon Keyspaces 로드 밸런서에 해당합니다. 최상의 결과를 얻으려면 라운드 로빈 로드 밸런싱 정책을 사용하고 애플리케이션의 요구 사항에 맞게 IP당 연결 수를 조정하는 것이 좋습니다.

페이지 매김

Amazon Keyspaces는 결과 집합에서 반환된 행 수가 아니라 요청을 처리하기 위해 읽은 행 수를 기준으로 결과 페이지를 매깁니다. 따라서 일부 페이지에는 필터링된 쿼리의 페이지 크기에서 지정한 수보다 적은 수의 행이 포함될 수 있습니다. 또한 Amazon Keyspaces는 1MB의 데이터를 읽은 후 자동으로 결과 페이지를 매겨 고객에게 한 자릿수 밀리초의 일관된 읽기 성능을 제공합니다. 자세한 정보는 Amazon Keyspaces의 결과 페이지 매김을 참조하세요.

파티셔너

Amazon Keyspaces의 기본 파티셔너는 Cassandra 호환 Murmur3Partitioner입니다. 또한 Amazon Keyspaces DefaultPartitioner 또는 Cassandra 호환 RandomPartitioner를 사용할 수 있습니다.

Amazon Keyspaces를 사용하면 Amazon Keyspaces 데이터를 다시 로드하지 않고도 계정의 파티셔너를 안전하게 변경할 수 있습니다. 구성 변경이 완료된 후(약 10분 소요) 클라이언트는 다음에 연결할 때 새 파티셔너 설정을 자동으로 보게 됩니다. 자세한 정보는 Amazon Keyspaces에서 파티셔너 사용하기을 참조하세요.

준비된 문

Amazon Keyspaces는 데이터 읽기 및 쓰기와 같은 데이터 조작 언어(DML) 작업에 준비된 문을 사용할 수 있도록 지원합니다. Amazon Keyspaces는 현재 테이블 및 키스페이스 생성과 같은 데이터 정의 언어(DDL) 작업에 준비된 문을 사용하는 것을 지원하지 않습니다. DDL 작업은 준비된 문 외부에서 실행해야 합니다.

범위 삭제

Amazon Keyspaces는 범위 내의 행 삭제를 지원합니다. 범위는 파티션 내의 연속된 행 집합입니다. WHERE 절을 사용하여 DELETE 작업에서 범위를 지정합니다. 범위를 전체 파티션으로 지정할 수 있습니다.

또한 관계 연산자(예: '>', '<')를 사용하거나 파티션 키를 포함하고 클러스터링 열을 하나 이상 생략하여 파티션 내 연속 행의 하위 집합이 될 범위를 지정할 수 있습니다. Amazon Keyspaces를 사용하면 한 번의 작업으로 범위 내에서 최대 1,000개의 행을 삭제할 수 있습니다. 또한 범위 삭제는 원자적이지만 분리되지는 않습니다.

시스템 테이블

Amazon Keyspaces는 Apache 2.0 오픈 소스 Cassandra 드라이버에 필요한 시스템 테이블을 채웁니다. 클라이언트에게 표시되는 시스템 테이블에는 인증된 사용자의 고유한 정보가 포함되어 있습니다. 시스템 테이블은 Amazon Keyspaces에 의해 완전히 제어되며 읽기 전용입니다.

시스템 테이블에 대한 읽기 전용 액세스가 필요하며 IAM 액세스 정책으로 시스템 테이블을 제어할 수 있습니다. 자세한 정보는 정책을 사용한 액세스 관리을 참조하세요. 시스템 테이블에 대한 태그 기반 액세스 제어 정책은 카산드라 드라이버 및 개발자 도구를 통해 AWS SDK 또는 CQL (카산드라 쿼리 언어) API 호출을 사용하는지 여부에 따라 다르게 정의해야 합니다. 시스템 테이블의 태그 기반 액세스 제어에 대해 자세히 알아보려면 태그를 기반으로 한 Amazon Keyspaces 리소스 액세스 섹션을 참조하세요.

Amazon VPC 엔드포인트를 사용하여 Amazon Keyspaces에 액세스하는 경우 Amazon Keyspaces가 볼 수 있는 권한을 가진 각 Amazon VPC 엔드포인트에 대한 항목이 system.peers 테이블에 표시됩니다. 따라서 Cassandra 드라이버는 system.peers 테이블의 제어 노드 자체에 대한 경고 메시지를 발행할 수 있습니다. 이 경고는 무시해도 됩니다.

타임스탬프

Amazon Keyspaces에서는 Apache Cassandra의 기본 타임스탬프와 호환되는 셀 수준 타임스탬프가 옵트인 기능입니다.

USING TIMESTAMP 절과 WRITETIME 함수는 테이블에 대해 클라이언트 측 타임스탬프가 설정된 경우에만 사용할 수 있습니다. Amazon Keyspaces의 클라이언트 측 타임스탬프에 대한 자세한 내용은 Amazon Keyspaces에서 클라이언트 측 타임스탬프 사용하기 섹션을 참조하세요.