Amazon Keyspaces 容量消費量を推定する方法 - Amazon Keyspaces (Apache Cassandra 向け)

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

Amazon Keyspaces 容量消費量を推定する方法

Amazon Keyspaces でデータを読み書きする際、クエリが消費する読み取り/書き込みリクエストユニット (RRU/WRU) または読み取り/書き込みキャパシティーユニット (RCU/WCU) の量は、クエリを実行するために Amazon Keyspaces が処理しなければならないデータの合計量によって異なります。場合によっては、クライアントに返されるデータが、Amazon Keyspaces がクエリを処理するために読み取らなければならなかったデータのサブセットである可能性があります。条件付き書き込みの場合、条件付きチェックが失敗しても Amazon Keyspaces は書き込み容量を消費します。

1 つのリクエストで処理されるデータの総量を見積もるには、エンコードされた行のサイズと行の合計数を考慮する必要があります。このトピックでは、Amazon Keyspaces がクエリを処理する方法と、それが容量消費にどのように影響するかを示すために、一般的なシナリオとアクセスパターンの例をいくつか紹介します。例に従ってテーブルの容量要件を見積もり、Amazon CloudWatch を使用してこれらのユースケースの読み取りおよび書き込みキャパシティー消費量を観察できます。

Amazon Keyspaces でエンコードされた行のサイズを計算する方法については、を参照してくださいAmazon Keyspaces での行サイズの計算

レンジクエリ

レンジクエリの読み込みキャパシティー消費量を調べるには、オンデマンドキャパシティモードを使用した以下のサンプルテーブルを使用します。

pk1 | pk2 | pk3 | ck1 | ck2 | ck3 | value -----+-----+-----+-----+-----+-----+------- a | b | 1 | a | b | 50 | <any value that results in a row size larger than 4KB> a | b | 1 | a | b | 60 | value_1 a | b | 1 | a | b | 70 | <any value that results in a row size larger than 4KB>

次に、このテーブルに対して次のクエリを実行します。

SELECT * FROM amazon_keyspaces.example_table_1 WHERE pk1='a' AND pk2='b' AND pk3=1 AND ck1='a' AND ck2='b' AND ck3 > 50 AND ck3 < 70;

クエリから次の結果セットを受け取り、Amazon Keyspaces によって実行される読み取りオペレーションは、コンシステンシーモードで LOCAL_QUORUM 2 つの RRU を消費します。

pk1 | pk2 | pk3 | ck1 | ck2 | ck3 | value -----+-----+-----+-----+-----+-----+------- a | b | 1 | a | b | 60 | value_1

Amazon Keyspaces esは、ck3=60ck3=70値を含む行を評価してクエリを処理するために、2つのRRUを消費します。ただし、Amazon Keyspaces は、WHEREクエリで指定された条件が真である行、ck3=60つまり値のある行のみを返します。クエリで指定された範囲を評価するために、Amazon Keyspaces は範囲の上限と一致する行を読み取ります。この場合ck3 = 70、結果にはその行は返されません。読み込み容量の消費量は、返されたデータではなく、クエリの処理時に読み取られたデータに基づいています。

クエリを制限する

LIMITこの句を使用するクエリを処理する場合、Amazon Keyspaces は、クエリで指定された条件に一致させようとすると、最大ページサイズまで行を読み取ります。Amazon Keyspaces LIMIT が最初のページの値と一致する十分なデータを見つけられない場合は、ページ分割された呼び出しが 1 回以上必要になる可能性があります。次のページを読み続けるには、ページ分割トークンを使用できます。デフォルトのページサイズは 1 MB です。LIMIT句を使用するときに消費する読み込み容量を減らすには、ページサイズを小さくすることができます。ページ分割の詳細については、「Amazon Keyspaces での結果のページ分割」を参照してください。

例として、次のクエリを見てみましょう。

SELECT * FROM my_table WHERE partition_key=1234 LIMIT 1;”

ページサイズを設定しない場合、Amazon Keyspaces は 1 行しか返しませんが、1 MB のデータを読み取ります。Amazon Keyspaces が 1 行だけを読み込むようにするには、このクエリのページサイズを 1 に設定します。この場合、T ime-to-live 設定またはクライアント側のタイムスタンプに基づいて期限切れの行がない限り、Amazon Keyspaces は 1 行だけを読み取ります。読み込み容量の消費を抑えるには、ページサイズを Amazon Keyspaces LIMIT が読み取るデータ量を減らす値と同じに設定することをお勧めします。

テーブルスキャン

ALLOW FILTERINGオプションを使用するクエリなど、テーブル全体のスキャンにつながるクエリは、結果として返されるよりも多くの読み取りを処理するクエリの 1 つです。また、読み込み容量の消費量は、返されたデータではなく、読み取られたデータに基づいています。

テーブルスキャンの例では、以下のテーブル例をオンデマンドキャパシティモードで使用しています。

pk | ck | value ---+----+--------- pk | 10 | <any value that results in a row size larger than 4KB> pk | 20 | value_1 pk | 30 | <any value that results in a row size larger than 4KB>

Amazon Keyspaces は、デフォルトで 4 つのパーティションを使用してオンデマンドキャパシティモードでテーブルを作成します。このテーブル例では、すべてのデータが 1 つのパーティションに格納され、残りの 3 つのパーティションは空です。

次に、このテーブルに対して次のクエリを実行します。

SELECT * from amazon_keyspaces.example_table_2;

このクエリの結果、Amazon Keyspaces はテーブルの 4 つのパーティションすべてをスキャンし、コンシステンシーモードで 6 つの RRU を消費するテーブルスキャンオペレーションになります。LOCAL_QUORUMまず、Amazon Keyspaces は 3 つの行の読み取りに 3 つの RRU を消費します。pk=‘pk’次に、Amazon Keyspaces は追加の 3 つの RRU を消費して、テーブルの 3 つの空のパーティションをスキャンします。このクエリの結果はテーブルスキャンになるため、Amazon Keyspaces はデータのないパーティションを含め、テーブル内のすべてのパーティションをスキャンします。

軽量トランザクション

ライトウェイトトランザクション (LWT) では、テーブルデータに対して条件付き書き込み操作を実行できます。条件付き更新操作は、現在の状態を評価する条件に基づいてレコードを挿入、更新、削除する場合に便利です。

Amazon キKeyspaces では、すべての書き込みオペレーションに LOCAL_QUORUM の整合性が必要であり、LWT を使用しても追加料金は発生しません。LWT の違いは、LWT の条件チェックの結果が FALSE になると、書き込みキャパシティーユニットを消費する点です。消費される書き込みキャパシティーユニットの数は、行のサイズによって異なります。行サイズが 2 KB の場合、条件付き書き込みが失敗すると 2 つの書き込みキャパシティーユニットが消費されます。その行が現在テーブルに存在しない場合、操作は 1 つの書き込みキャパシティーユニットを消費します。ConditionalCheckFailed内のメトリクスを監視することで CloudWatch 、LWT 条件チェックの失敗によって消費される容量を判断できます。

Amazon による読み取り/書き込み容量の消費量の見積もり CloudWatch

読み取り/書き込みキャパシティーの消費量を推定して監視するには、 CloudWatch ダッシュボードを使用できます。Amazon Keyspaces で利用できるメトリクスの詳細については、「」を参照してくださいAmazon Keyspaces のメトリクスとディメンション

特定のステートメントによって消費される読み取りおよび書き込みキャパシティーユニットをでモニタリングするには CloudWatch、以下の手順に従います。

  1. サンプルデータを含む新しいテーブルを作成します。

  2. テーブルの Amazon Keyspaces CloudWatch ダッシュボードを設定します。はじめに、Github にあるダッシュボードテンプレートを使用できます。

  3. ALLOW FILTERINGたとえばオプションを使用して CQL ステートメントを実行し、ダッシュボードでテーブル全体のスキャンで消費された読み込みキャパシティーユニットをチェックします。