Amazon Keyspaces で運用する Apache Cassandra 互換データベース - サーバーレスで始める広域分散 DB

サーバーレスで Apache Cassandra 互換のワイドカラムデータベースを運用する。オンデマンドとプロビジョンドのキャパシティ選定とパーティションキー設計を紹介します。

Keyspaces の特徴と Cassandra との違い

Keyspaces は Apache Cassandra 互換のマネージドデータベースサービスです。CQL を使用してテーブルの作成、データの読み書きを行い、既存の Cassandra ドライバー (DataStax Java Driver など) をそのまま使用できます。Cassandra クラスタの運用で必要なノード管理、パッチ適用、リペア処理、コンパクション調整が不要になります。ただし、Cassandra の全機能がサポートされているわけではなく、Lightweight Transactions (LWT) の一部、ユーザー定義関数、マテリアライズドビューなどは未サポートです。移行前に互換性マトリクスを確認し、アプリケーションが使用する CQL 機能がサポートされているか検証する必要があります。

キャパシティモードとパーティション設計

オンデマンドモードはリクエスト量に応じて自動スケールし、事前のキャパシティ計画が不要です。トラフィックパターンが予測困難な場合や、開発・テスト環境に適しています。プロビジョンドモードは読み取り/書き込みキャパシティユニットを事前に指定し、Auto Scaling で自動調整できます。トラフィックが安定している本番環境ではプロビジョンドモードの方がコスト効率が高くなります。パーティションキーの設計は Cassandra と同様に重要で、カーディナリティが高く、アクセスが均等に分散するキーを選択します。ホットパーティションが発生するとスロットリングの原因になるため、時系列データではタイムスタンプだけでなくバケット ID を組み合わせるなどの工夫が必要です。

セキュリティとバックアップ

Keyspaces は保存時の暗号化がデフォルトで有効で、 AWS マネージドキーまたはカスタマーマネージドキー (KMS) を選択できます。転送中のデータは TLS で暗号化されます。アクセス制御は IAM ポリシーで管理し、テーブルレベルの細かい権限設定が可能です。ポイントインタイムリカバリ (PITR) を有効にすると、過去 35 日間の任意の秒単位にテーブルを復元できます。誤ったデータ削除やアプリケーションのバグによるデータ破損からの復旧に有効です。 PITR は追加料金が発生しますが、本番環境では有効化を強く推奨します。 Keyspaces のデータモデリングを網羅的に学ぶなら、技術書 (Amazon)を参照してください。

Keyspaces の料金

オンデマンドモードは読み取り 100 万ユニットあたり約 0.297 ドル、書き込み 100 万ユニットあたり約 1.4846 ドルです。プロビジョンドモードは読み取りキャパシティユニット (RCU) あたり月額約 0.000742 ドル、書き込みキャパシティユニット (WCU) あたり月額約 0.000371 ドルです。DynamoDB と比較すると、料金体系はほぼ同等ですが、Keyspaces は CQL でアクセスするため、既存の Cassandra ワークロードの移行コスト (アプリケーション変更) が低い点がメリットです。ストレージは 1 GB あたり月額約 0.25 ドルで、PITR を有効にすると追加のストレージ料金が発生します。

まとめ

Keyspaces は Cassandra 互換の CQL でアクセスできるサーバーレスデータベースです。クラスタ管理の負荷を排除し、オンデマンドキャパシティで使った分だけ課金されます。既存の Cassandra ワークロードの AWS 移行や、Cassandra のデータモデルが適したワークロードの新規構築に有効です。