Apache Cassandra から Bigtable に移行する
このドキュメントでは、中断を最小限に抑えながら Apache Cassandra から Bigtable にデータを移行するプロセスについて説明します。このドキュメントでは、Cassandra から Bigtable へのプロキシ アダプタや Cassandra から Bigtable への Java クライアントなどのオープンソース ツールを使用して移行を行う方法について説明します。始める前に、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 インターフェースとして機能し、アプリケーションが Cassandra クエリ言語(CQL)を使用して Bigtable とやり取りできるようにします。プロキシ アダプタを使用する場合、Cassandra ドライバを変更する必要はなく、構成の調整も最小限で済みます。
プロキシ アダプタを設定して構成するには、Cassandra to Bigtable プロキシ アダプタをご覧ください。
プロキシ アダプタをサポートする Cassandra のバージョンについては、サポートされている Cassandra のバージョンをご覧ください。
制限事項
Cassandra to Bigtable プロキシ アダプタは、特定のデータ型、関数、クエリ、句に対して限定的なサポートを提供します。詳細については、Cassandra to Bigtable Proxy - 制限事項をご覧ください。
Cassandra キースペース
Cassandra のキースペースは、Bigtable インスタンスと同様の方法でテーブルを保存し、リソースを管理します。Cassandra to 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)オペレーションをサポートしています。
次の例に示すように、数値以外のすべての値は単一引用符で囲む必要があります。
SELECT * FROM keyspace.table WHERE name='john doe';
INSERT INTO keyspace.table (id, name) VALUES (1, 'john doe');
ゼロ ダウンタイムでの移行を実現する
Cassandra to Bigtable プロキシ アダプタをオープンソースの Zero Downtime Migration(ZDM)プロキシ ツールと Cassandra データ移行ツールとともに使用すると、ダウンタイムを最小限に抑えてデータを移行できます。
次の図は、プロキシ アダプタを使用して Cassandra から Bigtable に移行する手順を示しています。


Cassandra を Bigtable に移行する手順は次のとおりです。
- Cassandra アプリケーションを ZDM プロキシ ツールに接続します。
- Cassandra と Bigtable への二重書き込みを有効にします。
- Cassandra データ移行ツールを使用して、データを一括で移動します。
- 移行を検証します。検証が完了したら、Cassandra への接続を終了し、Bigtable に直接接続できます。
ZDM プロキシツールでプロキシアダプタを使用する場合、次の移行機能がサポートされます。
- デュアル書き込み: 移行中にデータの可用性を維持する
- 非同期読み取り: Bigtable インスタンスをスケーリングしてストレステストを行う
- 自動化されたデータ検証とレポート: プロセス全体でデータの完全性を確保します。
- データ マッピング: 本番環境の基準を満たすようにフィールドとデータ型をマッピングします。
Cassandra から Bigtable への移行を練習するには、デュアル書き込みプロキシを使用した Cassandra から Bigtable への移行の Codelab をご覧ください。
Java 用 Cassandra to Bigtable クライアント
Bigtable と直接統合して Cassandra ドライバを置き換えることができます。Java 用 Cassandra to Bigtable クライアント ライブラリを使用すると、CQL を使用して Cassandra ベースの Java アプリケーションを Bigtable と統合できます。
ライブラリをビルドしてアプリケーション コードに依存関係を含める手順については、Java 用 Cassandra to Bigtable クライアントをご覧ください。
次の例は、Java 用の Cassandra to Bigtable クライアントを使用してアプリケーションを構成する方法を示しています。
その他の Cassandra オープンソース ツール
Cassandra to Bigtable プロキシ アダプタは CQL とワイヤ互換性があるため、Cassandra オープンソース エコシステムの追加ツールを使用できます。これらのツールには、次のようなものがあります。
- Cqlsh: CQL シェルを使用すると、プロキシ アダプタを介して Bigtable に直接接続できます。CQL を使用したデバッグやデータの迅速な検索に使用できます。
- Cassandra Data Migrator(CDM): この Spark ベースのツールは、大量(数十億行まで)の履歴データの移行に適しています。このツールは、検証、差分レポート、再生機能を提供し、プロキシ アダプターと完全に互換性があります。