Apache Cassandra에서 Bigtable로 마이그레이션
이 문서에서는 중단을 최소화하면서 Apache Cassandra에서 Bigtable로 데이터를 마이그레이션하는 프로세스를 안내합니다. Cassandra에서 Bigtable로의 프록시 어댑터 또는 Java용 Cassandra에서 Bigtable로의 클라이언트와 같은 오픈소스 도구를 사용하여 마이그레이션을 실행하는 방법을 설명합니다. 시작하기 전에 Cassandra 사용자를 위한 Bigtable을 숙지하세요.
마이그레이션 방법 선택
다음 방법 중 하나를 사용하여 Apache Cassandra에서 Bigtable로 마이그레이션할 수 있습니다.
- Cassandra to Bigtable 프록시 어댑터를 사용하면 Cassandra 드라이버를 변경하지 않고도 Cassandra 기반 애플리케이션을 Bigtable에 연결할 수 있습니다. 이 접근 방식은 최소한의 코드 변경이 필요한 애플리케이션에 적합합니다.
- Java용 Cassandra-Bigtable 클라이언트를 사용하면 Bigtable과 직접 통합하고 Cassandra 드라이버를 대체할 수 있습니다. 이 접근 방식은 고성능과 유연성이 필요한 애플리케이션에 적합합니다.
Cassandra to Bigtable 프록시 어댑터
Cassandra to Bigtable 프록시 어댑터를 사용하면 Cassandra 기반 애플리케이션을 Bigtable에 연결할 수 있습니다. 프록시 어댑터는 유선 호환 Cassandra 인터페이스로 작동하며 애플리케이션이 CQL을 사용하여 Bigtable과 상호작용할 수 있도록 지원합니다. 프록시 어댑터를 사용하면 Cassandra 드라이버를 변경할 필요가 없으며 구성 조정이 최소화됩니다.
프록시 어댑터를 설정하고 구성하려면 Cassandra-Bigtable 프록시 어댑터를 참고하세요.
프록시 어댑터를 지원하는 Cassandra 버전을 알아보려면 지원되는 Cassandra 버전을 참고하세요.
제한사항
Cassandra to Bigtable 프록시 어댑터는 특정 데이터 유형, 함수, 쿼리, 절에 대한 지원을 제한적으로 제공합니다.
자세한 내용은 Cassandra to Bigtable 프록시 - 제한사항을 참고하세요.
Cassandra 키스페이스
Cassandra keyspace는 Bigtable 인스턴스와 유사한 방식으로 테이블을 저장하고 리소스를 관리합니다. Cassandra-Bigtable 프록시 어댑터는 키스페이스 이름을 투명하게 처리하므로 동일한 키스페이스를 사용하여 쿼리할 수 있습니다. 하지만 테이블을 논리적으로 그룹화하려면 새 Bigtable 인스턴스를 만들어야 합니다. Bigtable 복제도 별도로 구성해야 합니다.
DDL 지원
Cassandra to Bigtable 프록시 어댑터는 데이터 정의 언어 (DDL) 작업을 지원합니다. DDL 작업을 사용하면 CQL 명령어를 통해 테이블을 직접 만들고 관리할 수 있습니다. 이 방법은 SQL과 유사하지만 구성 파일에서 스키마를 정의한 후 스크립트를 실행하여 테이블을 만들 필요가 없으므로 스키마를 설정하는 데 권장됩니다.
다음 예에서는 Cassandra-Bigtable 프록시 어댑터가 DDL 작업을 지원하는 방법을 보여줍니다.
CQL을 사용하여 Cassandra 테이블을 만들려면
CREATE TABLE명령어를 실행합니다.CREATE TABLE keyspace.table ( id bigint, name text, age int, PRIMARY KEY ((id), name) );테이블에 새 열을 추가하려면
ALTER TABLE명령어를 실행합니다.ALTER TABLE keyspace.table ADD email text;표를 삭제하려면
DROP TABLE명령어를 실행합니다.DROP TABLE keyspace.table;
자세한 내용은 스키마 생성을 위한 DDL 지원 (권장 방법)을 참고하세요.
DML 지원
Cassandra-Bigtable 프록시 어댑터는 INSERT, DELETE, UPDATE, SELECT과 같은 데이터 조작 언어 (DML) 작업을 지원합니다.
원시 DML 쿼리를 실행하려면 숫자 값을 제외한 모든 값에 작은따옴표가 있어야 합니다. 다음 예를 참고하세요.
SELECT * FROM keyspace.table WHERE name='john doe';INSERT INTO keyspace.table (id, name) VALUES (1, 'john doe');
제로 다운타임 마이그레이션 달성
오픈소스 다운타임 제로 마이그레이션 (ZDM) 프록시 도구 및 Cassandra 데이터 마이그레이터 도구와 함께 Cassandra to Bigtable 프록시 어댑터를 사용하여 다운타임을 최소화하면서 데이터를 마이그레이션할 수 있습니다.
다음 다이어그램은 프록시 어댑터를 사용하여 Cassandra에서 Bigtable로 마이그레이션하는 단계를 보여줍니다.
Cassandra를 Bigtable로 이전하려면 다음 단계를 따르세요.
- Cassandra 애플리케이션을 ZDM 프록시 도구에 연결합니다.
- Cassandra 및 Bigtable에 대한 이중 쓰기를 사용 설정합니다.
- Cassandra 데이터 마이그레이터 도구를 사용하여 데이터를 일괄 이동합니다.
- 마이그레이션을 검증합니다. 검증이 끝나면 Cassandra와의 연결을 종료하고 Bigtable에 직접 연결할 수 있습니다.
ZDM 프록시 도구와 함께 프록시 어댑터를 사용하는 경우 다음 이전 기능이 지원됩니다.
- 이중 쓰기: 마이그레이션 중에 데이터 가용성 유지
- 비동기 읽기: Bigtable 인스턴스 확장 및 스트레스 테스트
- 자동화된 데이터 검증 및 보고: 프로세스 전반에서 데이터 무결성 보장
- 데이터 매핑: 프로덕션 표준에 맞게 필드 및 데이터 유형을 매핑합니다.
Cassandra에서 Bigtable로의 마이그레이션을 연습하려면 이중 쓰기 프록시를 사용한 Cassandra에서 Bigtable로의 마이그레이션 Codelab을 참고하세요.
Java용 Cassandra to Bigtable 클라이언트
Bigtable과 직접 통합하고 Cassandra 드라이버를 대체할 수 있습니다. Cassandra to Bigtable client for Java 라이브러리를 사용하면 CQL을 사용하여 Cassandra 기반 Java 애플리케이션을 Bigtable과 통합할 수 있습니다.
라이브러리를 빌드하고 애플리케이션 코드에 종속 항목을 포함하는 방법은 Java용 Cassandra to Bigtable 클라이언트를 참고하세요.
다음 예에서는 Java용 Cassandra-Bigtable 클라이언트를 사용하여 애플리케이션을 구성하는 방법을 보여줍니다.
성능 이해
Bigtable은 높은 처리량, 짧은 지연 시간, 대규모 확장성을 위해 설계되었습니다. 페타바이트 단위의 데이터에 대해 초당 수백만 건의 요청을 처리할 수 있습니다. Java용 Cassandra-Bigtable 클라이언트 또는 Cassandra-Bigtable 프록시 어댑터를 사용하여 Cassandra에서 마이그레이션할 때는 다음 성능 영향을 이해해야 합니다.
클라이언트 및 프록시 오버헤드
두 이전 방법 모두 성능 오버헤드가 최소화됩니다. 효율성을 위해 최적화된 Cassandra Query Language (CQL)와 Bigtable Data API 간의 변환 레이어 역할을 합니다.
Cassandra 컬렉션 유형의 성능
Cassandra 데이터 모델에서 맵, 세트 또는 목록과 같은 컬렉션 유형을 사용하여 동적 스키마를 구현하는 경우 Bigtable에서 이러한 패턴을 효과적으로 처리할 수 있습니다. 프록시 어댑터와 Java용 클라이언트 모두 이러한 컬렉션 작업을 Bigtable의 기본 데이터 모델에 매핑합니다. 이 데이터 모델은 희소하고 광범위한 데이터 세트에 적합합니다.
이러한 컬렉션 내의 요소 수준 작업은 매우 효율적입니다. 여기에는 다음 작업이 포함됩니다.
- 맵에서 단일 값을 읽거나 씁니다.
- 세트에서 요소를 추가하거나 삭제합니다.
- 목록에 요소를 추가하거나 앞에 추가합니다.
Bigtable은 개별 컬렉션 요소에 대한 이러한 유형의 포인트 작업을 최적화하며 성능은 표준 스칼라 열에 대한 작업과 동일합니다.
워크로드 벤치마크
Bigtable 성능은 워크로드, 스키마 설계, 데이터 액세스 패턴, 클러스터 구성에 따라 달라질 수 있습니다. 사용 사례에 대한 정확한 성능 측정항목을 얻고 Bigtable이 특정 요구사항을 충족하는지 확인하려면 마이그레이션 접근 방식 중 하나를 사용하여 Cassandra 워크로드를 Bigtable에 대해 벤치마킹하는 것이 좋습니다.
Bigtable 성능 권장사항에 대한 자세한 내용은 성능 이해를 참고하세요.
추가 Cassandra 오픈소스 도구
CQL과의 Cassandra to Bigtable 프록시 어댑터의 유선 호환성으로 인해 Cassandra 오픈소스 생태계에서 추가 도구를 사용할 수 있습니다. 이러한 도구에는 다음이 포함됩니다.
- Cqlsh: CQL 셸을 사용하면 프록시 어댑터를 통해 Bigtable에 직접 연결할 수 있습니다. CQL을 사용하여 디버깅 및 빠른 데이터 조회를 할 수 있습니다.
- Cassandra 데이터 마이그레이터 (CDM): 이 Spark 기반 도구는 대량 (최대 수십억 개의 행)의 이전 데이터를 마이그레이션하는 데 적합합니다. 이 도구는 유효성 검사, 차이 보고, 재생 기능을 제공하며 프록시 어댑터와 완전히 호환됩니다.