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

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

機能の違い: Amazon Keyspaces と Apache Cassandra

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

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

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

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

Amazon Keyspaces は、キースペース 、テーブル、タイプを非同期的に作成および削除するなど、データ定義言語 (DDL) オペレーションを実行します。リソースの作成状況を監視する方法については、「Amazon Keyspaces でキースペースの作成ステータスを確認する」と「Amazon Keyspaces でテーブルの作成ステータスを確認する」を参照してください。CQL 言語リファレンスのDDLステートメントのリストについては、「」を参照してください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 には適用されず、指定すれば無視できます。

Connections

既存の 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 演算子を使用する」を参照してください。

FROZEN collections

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

Amazon Keyspaces は、デフォルトでフリーズコレクションに対して最大 8 レベルのネストをサポートしています。詳細については、「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 ごとに接続数を調整することをお勧めします。

Pagination (ページ分割)

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

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

範囲削除は分離されていません。範囲削除の処理中でも、個々の行の削除は他のオペレーションから認識できる状態です。

システムテーブル

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

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

ユーザー定義型 (UDTs)

不等式演算子は、Amazon Keyspaces UDTsの ではサポートされていません。

Amazon Keyspaces UDTsで を使用する方法については、「」を参照してくださいAmazon Keyspaces のユーザー定義タイプ (UDTs)

キースペースごとにUDTsサポートされている の数、サポートされているネストレベル、および に関連するその他のデフォルト値とクォータを確認するにはUDTs、「」を参照してくださいAmazon Keyspaces のユーザー定義タイプ (UDTs) のクォータとデフォルト値