Cassandra から Spanner への新アダプタで Yahoo の移行プロセスを簡素化
Nitin Sagar
Sr. Product Manager, Google Cloud
Eike Falkenberg
Engineering Manager, Google
※この投稿は米国時間 2024 年 11 月 19 日に、Google Cloud blog に投稿されたものの抄訳です。
Key-Value NoSQL データベースである Cassandra は、その速度とスケーラビリティが高く評価されており、キャッシュ保存、セッション管理、リアルタイム分析など、迅速なデータ取得と保存を必要とするアプリケーションで幅広く利用されています。シンプルな Key-Value ペア構造により、特に大規模なデータセットでは、高いパフォーマンスと管理性を保証します。
しかし、このシンプルさゆえに、複雑なクエリのサポートが不十分であること、データの重複が起こりうること、複雑な関係のモデリングが困難であることなどの制限もあります。Spanner は、常時稼働でグローバルな整合性を備えた、規模の制限が事実上存在しない Google Cloud のデータベースであり、NoSQL のスケーラビリティと可用性を従来のデータベースの強整合性とリレーショナル モデルと組み合わせることで、従来の Cassandra ワークロードに対応します。そして今回、アプリケーション ロジックを変更することなく、Cassandra ワークロードを Spanner にプラグアンドプレイで移行するためのオープンソース ツールである Cassandra to Spanner Proxy Adapter の導入により、Cassandra から Spanner への切り替えがこれまで以上に簡単になりました。
NoSQL ワークロード向け Spanner
Spanner は強整合性、高可用性、事実上無制限のスケーラビリティを提供し、さらにデータの完全性を確保するための SQL および ACID トランザクションをサポートする使いやすいリレーショナル データ モデルを提供します。フルマネージド サービスであるため運用が簡素化され、チームはデータベース管理ではなくアプリケーション開発に集中できるようになります。さらに、Spanner の高可用性は、大規模かつグローバル規模であってもデータベースのダウンタイムを最小限に抑えることで、ビジネスの継続性をサポートします。
現代のビジネスニーズに応えるため、Google は Spanner を絶えず進化させています。最新の Spanner 機能には、グラフ、全文検索、ベクトル検索などの強化されたマルチモデル機能、Spanner Data Boost による分析クエリのパフォーマンス向上に加え、地域別パーティショニングやデュアルリージョン構成といった独自のエンタープライズ機能などがあります。これらの強力な機能と Spanner の魅力的なコスト パフォーマンスにより、Cassandra ユーザーにとって新しいエキサイティングな可能性の世界が解き放たれます。
Cassandra から Spanner へのアダプタ - Yahoo! での実績
「Spanner は Cassandra から飛躍的に進歩しているようだが、どうやって始め��ばいいのだろう」とお考えですか?そんな方のために、プロキシ アダプタはクライアント アプリケーションの Cassandra クエリ言語(CQL)トラフィックを Spanner に転送するための、プラグアンドプレイの方法を提供します。仕組みとしては、アダプタはアプリケーションの Cassandra クライアントとして機能しますが、すべてのデータ操作タスクについては Spanner とやり取りすることで内部的に動作します。Cassandra to Spanner Proxy Adapter を使用すると、アプリケーション コードの移行は必要なく、そのまま動作します。
Yahoo は Cassandra から Spanner への移行に成功し、パフォーマンス、スケーラビリティ、整合性、運用効率の向上といったメリットを実現しました。また、プロキシ アダプタのおかげで移行処理も簡単でした。
「Cassandra Adapter は、CQL クエリを一切変更することなく、Yahoo Contacts ワークロードを Cassandra から Spanner に移行するための基盤を提供してくれました。当社の移行戦略の柔軟性がより高まり、コードベースを更新せずに Spanner のスケール、冗長性、サポートを活用しながら、他のエンジニアリング活動に集中できています。Spanner は当社のニーズに適した費用対効果の高いソリューションであり、私たちのような規模のビジネスに必要なパフォーマンスを提供します。この移行により、費用とパフォーマンスを最適化しながら業務の継続性を維持できるようになりました。」- Yahoo、コアメールおよびアナリティクス担当主任プロダクト マネージャー、Patrick JD Newnan 氏
最近、Cassandra から Spanner への移行に成功した Google Cloud の別のお客様として、Reltio があります。Reltio は、簡単な移行プロセスにより、フルマネージド、グローバル分散、強整合性を備えたデータベースの利点を享受しながら、ダウンタイムとサービスの中断を最小限に抑えることに成功しました。
これらの成功事例は、データ インフラストラクチャのモダナイズ、新しい機能の実現、イノベーションの加速を目指す企業にとって、Cassandra から Spanner への移行が革新的なステップになり得ることを示しています。
新しいプロキシ アダプタは移行をどのように簡素化してくれるのでしょうか。一般的なデータベース移行は、次のような手順で行われます。
これらの手順のうち、アプリケーションの移行(手順 4)とデータの移行(手順 6)は他の手順よりも複雑です。プロキシ アダプタを使用すると、Cassandra ベースのアプリケーションを Spanner へ移行する作業が大幅に簡素化されます。新しいプロキシ アダプタを使用する際に必要な手順の概説をしていきましょう。
1. 評価: Cassandra スキーマ、データモデル、クエリパターンを評価し、Spanner への移行後に簡素化できるものを特定します。
2. スキーマの設計: Spanner のテーブル宣��の構文とデータ型は Cassandra のものと類似しています。ドキュメントでは、これらの類似点と相違点について詳しく説明しています。Spanner を使用すると、最適なパフォーマンスを実現するためにリレーショナル機能やインターリーブされたテーブルなどの機能を活用することもできます。
3. データ移行: データを移行するには、いくつかの手順があります。
-
一括読み込み: Cassandra からデータをエクスポートし、Spanner Dataflow コネクタや BigQuery リバース ETL などのツールを使用して Spanner にインポートします。
-
受信データのレプリケーション: Cassandra の変更データ キャプチャ(CDC)を使用して、Cassandra クラスタへの受信更新を Spanner にリアルタイムで複製します。これとは別に、アプリケーションロ ジックを更新して、Cassandra と Spanner に二重書き込みを行うという方法も考えられます。ただ、アプリケーション コードの変更を最小限に抑えたい場合はこのアプローチはおすすめしません。
4. プロキシ アダプタを設定し、Cassandra 構成を更新: Cassandra to Spanner Proxy Adapter をダウンロードして実行します。このプロキシ アダプタは、アプリケーションと並行してサイドカーとして動作します。デフォルトでは、プロキシ アダプタはポート 9042 で実行されます。別のポートを使用する場合は、プロキシ アダプタを参照するようにアプリケーション コードを更新することをお忘れなく。
5. テスト: 移行したアプリケーションとデータを非本番環境で徹底的にテストし、すべてが期待どおりに動作することを確認します。
6. カットオーバー: 移行に自信が持てたら、アプリケーション トラフィックを Spanner に切り替えます。問題がないか注意深くモニタリングし、必要に応じてパフォーマンスのファインチューニングを行います。
新しいプロキシ アダプタの仕組み
新しいプロキシ アダプタは、アプリケーションに対して Cassandra クライアントとして機能します。アプリケーションの観点から言うと、唯一の顕著な変更点は、Cassandra エンドポイントの IP アドレスまたはホスト名がプロキシ アダプタを指すようになったことです。これにより、アプリケーション コードを大幅に変更する必要がなく、Spanner の移行を合理化できます。
プロキシ アダプタは、各 Cassandra クラスタと対応する Spanner データベースの間に 1 対 1 のマッピングを確立するよう設計されています。プロキシ インスタンスはマルチリスナー アーキテクチャを採用しており、各リスナーは個別のポートにバインドされています。これにより、複数のクライアント接続を同時に処理しやすくなり、各リスナーが指定された Spanner データベースとの個別の接続を管理します。
プロキシの変換レイヤは、Cassandra プロトコルの複雑な部分を処理します。このレイヤはメッセージのデ���ードとエンコードの実行、バッファとキャッシュの管理を行い、さらに重要なこととして、受信した CQL クエリを解析して Spanner と互換性のある形式に変換します。
プロキシ アダプタは OpenTelemetry をサポートしており、トレースを収集して Cloud Trace にエクスポートできます。
アダプタのさまざまな設定方法、制限事項、CQL データ型の Spanner へのマッピングなどについての詳細は、プロキシ アダプタのドキュメントをご確認ください。
一般的なの懸念と課題への対応
移行に伴い考えられるいくつかの懸念事項についてご説明します。
-
費用: Spanner が一貫したレイテンシとスループットだけでなく、費用対効果も保証することを示した Accenture のベンチマーク結果をご覧ください。さらに Spanner では、Spanner のすべての機能を活用していただけるよう、費用の透明性を向上し、費用削減の機会を提供する新しい段階的料金モデル(Spanner エディション)が提供されるようになりました。
-
レイテンシの増加: クエリのレイテンシ増加を最小限に抑えるには、プロキシ アダプタをクライアント アプリケーションと同じホストで(サイドカー プロキシとして)実行するか、プロキシ アダプタを Docker コンテナで実行する場合は同じ Docker ネットワーク上で実行することをおすすめします。また、プロキシ アダプタ ホストの CPU 使用率を 80% 未満に保つことを推奨しています。
-
スキーマの柔軟性: Cassandra はスキーマの柔軟性を提供しますが、Spanner のより厳密なリレーショナル スキーマは、データの完全性、クエリ能力、整合性の点で優位性があります。
-
学習曲線: Spanner のデータ型には Cassandra のデータ型といくつかの相違点があります。移行を容易にするために、包括的なドキュメントをご覧ください。
使ってみる
強整合性、簡素化された運用、強化されたデータの完全性、グローバルなスケーラビリティといった利点により、Spanner は NoSQL ワークロードにクラウドの可能性を最大限活用したいと考えている企業にとって魅力的な���択肢となっています。新しい Cassandra to Spanner Proxy Adapter により、移行戦略の計画と実行が容易になり、データドリブン型のイノベーションで新時代を切り開けます。
新しい Cassandra to Spanner Proxy Adapter をダウンロードし、Spanner 無料トライアル インスタンスで今すぐお試しください。
-Google Cloud、シニア プロダクト マネージャー Nitin Sagar
-Google、エンジニアリング マネージャー Eike Falkenberg