機能の違い: Amazon Keyspaces と Apache Cassandra - Amazon Keyspaces (Apache Cassandra 向け)

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

機能の違い: Amazon Keyspaces と Apache Cassandra

Amazon Keyspaces と Apache Cassandra の機能上の違いは以下のとおりです。

Apache Cassandra APIs、 オペレーション、およびデータ型

Amazon Keyspaces は、キースペースとテーブルの作成、データの読み取り、データの書き込みなど、一般的に使用されるあらゆる Cassandra データプレーンオペレーションに対応しています。現在サポートされているものについては、「サポートされている Cassandra API、オペレーション、関数、データ型」を参照してください。

キースペースとテーブルの非同期的な作成および削除

Amazon Keyspaces は、キースペースやテーブルの作成や削除などのデータ定義言語 (DDL) オペレーションを非同期的に実行します。リソースの作成状況を監視する方法については、「Amazon Keyspaces のキースペース作成ステータスを確認する」と「Amazon Keyspaces のテーブル作成ステータスを確認する」を参照してください。言語リファレンスのDDLステートメントのリストについては、CQL「」を参照してくださいDDL Amazon Keyspaces の ステートメント (データ定義言語)

認証と認可

Amazon Keyspaces (Apache Cassandra 向け) で を使用する AWS Identity and Access Management (IAM) ユーザー認証と承認用の で、Apache Cassandra と同等の承認ポリシーをサポートしています。そのため、Amazon Keyspaces では Apache Cassandra のセキュリティ設定コマンドをサポートしていません。

バッチ

Amazon Keyspaces では、バッチ内に最大 30 個のコマンドが含まれており、ログに記録されていないバッチコマンドがサポートされています。無条件の INSERTUPDATE、または DELETE コマンドだけがバッチで許可されます。ログに記録されたバッチはサポートしていません。

クラスターの設定

Amazon Keyspaces はサーバーレスであるため、設定するクラスター、ホスト、Java 仮想マシン (JVMs) はありません。Cassandra のコンパクション、圧縮、キャッシュ、ガベージコレクション、ブルームフィルタリングの各設定は、Amazon Keyspaces には適用されず、指定すれば無視できます。

接続

既存の Cassandra ドライバーで Amazon Keyspaces と通信できますが、ドライバーには異なる設定が必要です。Amazon Keyspaces は、1 秒あたりTCP接続あたり最大 3,000 のCQLクエリをサポートしますが、ドライバーが確立できる接続の数に制限はありません。

ほとんどのオープンソース Cassandra ドライバーで、Cassandra への接続プールが確立され、その接続プールでクエリのロードバランスが行われます。Amazon Keyspaces では 9 つのピア IP アドレスがドライバーに公開されており、ほとんどのドライバーのデフォルトの動作は、各ピアの IP アドレスに対して接続を 1 つずつ確立することです。したがって、デフォルト設定を使用するドライバーの最大CQLクエリスループットは、1 秒あたり 27,000 CQLクエリです。

この数を増やすには、接続プールでドライバーにより維持されている各 IP アドレスの接続数を増やすことをお勧めします。例えば、IP アドレスあたりの最大接続数を 2 に設定すると、ドライバーの最大スループットが 1 秒あたり 54,000 CQLクエリに倍増します。

ベストプラクティスとして、オーバーヘッドを許可し、分散を改善するために、接続ごとに 1 秒あたり 500 CQLクエリを使用するようにドライバーを設定することをお勧めします。このシナリオでは、1 秒あたり 18,000 CQLクエリを計画するには、36 の接続が必要です。9 つのエンドポイントにまたがる 4 本の接続でドライバーを設定する場合、36 本の接続で 1 秒あたり 500 件のリクエストを処理することになります。接続に関する詳しいベストプラクティスについては、「サーバーレス環境のクライアントドライバー接続を最適化する」を参照してください。

VPC エンドポイントに接続する場合、使用可能なエンドポイントが少なくなる可能性があります。したがって、ドライバー設定内の接続数を増やす必要があります。VPC 接続のベストプラクティスの詳細については、「」を参照してくださいAmazon Keyspaces のVPCエンドポイント経由で接続を設定する方法

IN キーワード

Amazon Keyspaces は、SELECT ステートメント内の IN キーワードをサポートしています。 INUPDATEDELETE ではサポートしていません。SELECT ステートメントで IN キーワードを使用すると、クエリ結果は SELECT ステートメントにキーが示されている順序で返されます。Cassandra では、結果は辞書順に並べられます。

ORDER BY を使用するとき、ページ分割を無効にした状態の完全な並べ替えはサポートしていません。結果はページ内で順序付けられます。IN キーワードではスライスクエリはサポートしていません。 TOKENS は、IN キーワードではサポートしていません。Amazon Keyspaces は、サブクエリを作成して IN キーワードのあるクエリを処理します。各サブクエリは、1 秒あたりの接続あたり 3,000 件のCQLクエリに対するTCP接続としてカウントされます。詳細については、「Amazon Keyspaces のクエリで SELECT ステートメントで IN演算子を使用する」を参照してください。

CQL クエリスループットの調整

Amazon Keyspaces は、1 秒あたりTCP接続あたり最大 3,000 のCQLクエリをサポートしますが、ドライバーが確立できる接続の数に制限はありません。

ほとんどのオープンソース Cassandra ドライバーで、Cassandra への接続プールが確立され、その接続プールでクエリのロードバランスが行われます。Amazon Keyspaces では 9 つのピア IP アドレスがドライバーに公開されており、ほとんどのドライバーのデフォルトの動作は、各ピアの IP アドレスに対して接続を 1 つずつ確立することです。したがって、デフォルト設定を使用するドライバーの最大CQLクエリスループットは、1 秒あたり 27,000 CQLクエリになります。

この数を増やすには、接続プールでドライバーにより維持されている各 IP アドレスの接続数を増やすことをお勧めします。例えば、IP アドレスあたりの最大接続数を 2 に設定すると、ドライバーの最大スループットが 1 秒あたり 54,000 CQLクエリに倍増します。

接続に関する詳しいベストプラクティスについては、「サーバーレス環境のクライアントドライバー接続を最適化する」を参照してください。

VPC エンドポイントに接続する場合、使用できるエンドポイントは少なくなります。したがって、ドライバー設定内の接続数を増やす必要があります。VPC エンドポイント接続のベストプラクティスの詳細については、「」を参照してくださいAmazon Keyspaces のVPCエンドポイント経由で接続を設定する方法

FROZEN collections

Cassandra FROZEN のキーワードでは、コレクションデータ型の複数のコンポーネントが 1 つの不変の値にシリアル化され、その値は BLOB のように扱われます。INSERT ステートメントと UPDATE ステートメントはコレクション全体を上書きします。

Amazon Keyspaces は、デフォルトでフリーズコレクションのネストを最大 5 レベルまでサポートしています。詳細については、「Amazon Keyspaces サービスクォータ」を参照してください。

Amazon Keyspaces は、条件 UPDATE ステートメントまたは SELECT ステートメントでフリーズコレクション全体を使用する不等式比較をサポートしていません。コレクションとフリーズコレクションの動作は Amazon Keyspaces でも同じです。

クライアント側のタイムスタンプでフリーズコレクションを使用している場合、書き込みオペレーションのタイムスタンプが、有効期限が切れていないか、廃棄されていない既存の列のタイムスタンプと同じ場合、Amazon Keyspaces は比較を実行しません。代わりに、サーバーが最新のライターを決定し、最新のライターが優先されます。

フリーズコレクションの詳細については、「コレクション型」を参照してください。

軽量トランザクション

Amazon Keyspaces (Apache Cassandra 向け) はINSERT、、UPDATE、および DELETE コマンドで比較および設定機能を完全にサポートします。これは、Apache Cassandra では軽量トランザクション (LWTs) と呼ばれます。Amazon Keyspaces (Apache Cassandra 向け) はサーバーレス製品として、軽量トランザクションを含め、あらゆる規模で一貫性のあるパフォーマンスを提供します。Amazon Keyspaces では、軽量トランザクションを使用してもパフォーマンス上のペナルティはありません。

負荷分散

system.peers テーブルエントリは、Amazon Keyspaces ロードバランサーに対応します。最良の結果を得るために、ラウンドロビンロードバランシングポリシーを使用し、アプリケーションのニーズに合わせて IP ごとに接続数を調整することをお勧めします。

ページ分割

Amazon Keyspaces では、結果セットで返された行数ではなく、リクエストを処理するために読み取られた行の数に基づいて結果のページ分割が行われます。その結果、一部のページには、フィルタリングされたクエリPAGESIZEに対して で指定した行よりも少ない行が含まれる場合があります。Amazon Keyspaces ではさらに、1 MB のデータの読み取り後に結果を自動的にページ分割して、一貫した 1 桁台のミリ秒の読み取りパフォーマンスをお客様にお届けします。詳細については、「Amazon Keyspaces で結果をページ分割する」を参照してください。

静的列を持つテーブルでは、Apache Cassandra と Amazon Keyspaces の両方が、複数ページのクエリの各ページの先頭にパーティションの静的列値を確立します。テーブルのデータ行が大きい場合、Amazon Keyspaces のページ分割動作の結果として、範囲読み取りオペレーションの結果が Apache Cassandra よりも Amazon Keyspaces のページを返す可能性が高くなります。そのため、Amazon Keyspaces では、静的列を同時に更新すると、範囲の読み取り結果セットの異なるページで静的列値が異なる可能性があります。

パーティショナー

Amazon Keyspaces デフォルトパーティショナーは Cassandra 互換の Murmur3Partitioner です。さらに、Amazon Keyspaces DefaultPartitioner と Cassandra 互換の RandomPartitioner のどちらを使用するかを選択できます。

Amazon Keyspaces を使用すると、Amazon Keyspaces データを再読み込みしなくても、アカウントのパーティショナーを安全に変更できます。約 10 分かかる設定変更が完了すると、クライアントが次に接続したときに新しいパーティショナー設定が自動的に表示されます。詳細については、「Amazon Keyspaces でのパーティショナーの操作」を参照してください。

プリペアドステートメント

Amazon Keyspaces では、データの読み取りや書き込みなど、データ操作言語 (DML) オペレーションにプリペアドステートメントを使用できます。Amazon Keyspaces は現在、テーブルやキースペースの作成など、データ定義言語 (DDL) オペレーション用のプリペアドステートメントの使用をサポートしていません。DDL オペレーションは、プリペアドステートメントの外部で実行する必要があります。

範囲削除

Amazon Keyspaces では、一定範囲内の行の削除がサポートされています。範囲とは、パーティション内の連続する行のセットです。WHERE 句を使用して、DELETEオペレーションで範囲を指定します。範囲をパーティション全体に指定することもできます。

さらに、関係演算子 (「>」、「<」など) を使用することによって、または、パーティションキーを含めて 1 つ以上のクラスタリング列を省略することによって、パーティション内の連続する行のサブセットとして範囲を指定できます。Amazon Keyspaces を使用すると、1 回のオペレーションで 1 つの範囲内の行を最大で 1,000 行削除できます。

範囲の削除は分離されません。範囲の削除が進行中は、個々の行の削除が他のオペレーションに表示されます。

システムテーブル

Amazon Keyspaces は、Apache 2.0 オープンソースの Cassandra ドライバーに必要なシステムテーブルに情報を入力します。クライアントに表示されるシステムテーブルには、認証されたユーザーに固有の情報が含まれています。システムテーブルは Amazon Keyspaces によって完全に制御されるものであり、読み取り専用です。詳細については、「Amazon Keyspaces のシステムキースペース」を参照してください。

システムテーブルへの読み取り専用アクセスが必要であり、IAMアクセスポリシーで制御できます。詳細については、「ポリシーを使用したアクセスの管理」を参照してください。を使用するかどうかによって、システムテーブルのタグベースのアクセスコントロールポリシーを異なる方法で定義する必要があります。 AWS SDK または Cassandra クエリ言語 (CQL) APIは、Cassandra ドライバーとデベロッパーツールを介して呼び出します。システムテーブルのタグベースのアクセスコントロールに関する詳細については、「 タグに基いた Amazon Keyspaces リソースアクセス」を参照してください。

Amazon VPCエンドポイント を使用して Amazon Keyspaces にアクセスすると、Amazon Keyspaces が表示するアクセス許可を持つ各 Amazon VPCエンドポイントの system.peersテーブルにエントリが表示されます。その結果、Cassandra ドライバーによって system.peers テーブル内のコントロールノードそのものに関する警告メッセージが表示される場合があります。この警告は無視しても問題ありません。

タイムスタンプ

Amazon Keyspaces では、Apache Cassandra のデフォルトのタイムスタンプと互換性のあるセルレベルのタイムスタンプはオプトイン機能です。

USING TIMESTAMP 句と WRITETIME 関数は、テーブルのクライアント側のタイムスタンプがオンになっているときにのみ使用できます。Amazon Keyspaces のクライアント側のタイムスタンプの詳細については、「Amazon Keyspaces でのクライアント側のタイムスタンプ」を参照してください。