Apache Cassandra から Bigtable に移行する
このドキュメントでは、中断を最小限に抑えながら Apache Cassandra から Bigtable にデータを移行するプロセスについて説明します。このドキュメントでは、Cassandra to Bigtable プロキシ アダプタや Cassandra to 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 インターフェースとして機能し、アプリケーションが 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 クライアントを使用してアプリケーションを構成する方法を示しています。
パフォーマンスについて
Bigtable は、高スループット、低レイテンシ、大規模なスケーラビリティを実現するように設計されています。ペタバイト単位のデータに対して、1 秒あたり数百万件のリクエストを処理できます。Cassandra から Cassandra to Bigtable クライアント(Java 用)または Cassandra to Bigtable プロキシ アダプタを使用して移行する場合は、次のパフォーマンスへの影響について理解してください。
クライアントとプロキシのオーバーヘッド
どちらの移行方法でも、パフォーマンスのオーバーヘッドは最小限に抑えられます。これらは、効率性を最適化した Cassandra クエリ言語(CQL)と Bigtable Data API の間の変換レイヤとして機能します。
Cassandra コレクション型でのパフォーマンス
Cassandra データモデルでマップ、セット、リストなどのコレクション タイプを使用して動的スキーマを実装している場合、Bigtable はこれらのパターンを効果的に処理できます。プロキシ アダプターと Java 用クライアントの両方で、これらのコレクション オペレーションが Bigtable の基盤となるデータモデルにマッピングされます。このデータモデルは、スパースでワイドなデータセットに適しています。
これらのコレクション内の要素レベルのオペレーションは非常に効率的です。これには、次の操作が含まれます。
- マップ内の単一の値を読み書きする。
- セットから要素を追加または削除します。
- リストに要素を追加または先頭に追加します。
Bigtable は、個々のコレクション要素に対するこのようなポイント オペレーションを最適化します。パフォーマンスは、標準のスカラー列に対するオペレーションと同じです。
ワークロードのベンチマークを行う
Bigtable のパフォーマンスは、ワークロード、スキーマ設計、データ アクセスパターン、クラスタ構成によって異なります。ユースケースの正確なパフォーマンス指標を取得し、Bigtable が特定の要件を満たしていることを確認するには、いずれかの移行アプローチを使用して、Cassandra ワークロードを Bigtable に対してベンチマークすることをおすすめします。
Bigtable のパフォーマンスに関するベスト プラクティスの詳細については、パフォーマンスについてをご覧ください。
その他の Cassandra オープンソース ツール
Cassandra to Bigtable プロキシ アダプタは CQL とワイヤ互換性があるため、Cassandra オープンソース エコシステムの追加ツールを使用できます。これらのツールには、次のようなものがあります。
- Cqlsh: CQL シェルを使用すると、プロキシ アダプタを介して Bigtable に直接接続できます。CQL を使用したデバッグやデータの迅速な検索に使用できます。
- Cassandra Data Migrator(CDM): この Spark ベースのツールは、大量(数十億行まで)の過去のデータを移行する場合に適しています。このツールは、検証、差分レポート、再生機能を提供し、プロキシ アダプターと完全に互換性があります。