ablog

不器用で落着きのない技術者のメモ

Amazon KeySpaces のパーティションキー

パーティション — 指定されたパーティショントラフィックが 3,000 RCU または 1,000 WCU を超えると、キャパシティ不足イベントが発生する可能性があります。ベストプラクティスとして、パーティション間でトラフィックを均一に分散させることをお勧めします。

Amazon Keyspaces でのキャパシティ管理に関するトラブルシューティング - Amazon Keyspaces (Apache Cassandra 向け)

Amazon Keyspaces テーブルの各行を一意に識別するプライマリキーは、データを保存するパーティションを決定する 1 つ以上のパーティションキー列と、パーティション内のデータのクラスター化とソートの方法を定義する 1 つ以上のクラスタリング列 (オプション) で構成されます。

パーティションキーによって、データが保存されるパーティションの数と、これらのパーティション間でデータを分散させる方法が決まるため、パーティションキーの選択方法が、クエリのパフォーマンスに大きな影響を与える可能性があります。通常は、ディスク上のすべてのパーティション全体でアクティビティが均一になるようにアプリケーションを設計する必要があります。

Amazon Keyspaces でパーティションキーを効果的に使用する方法 - Amazon Keyspaces (Apache Cassandra 向け)

パーティション全体に均等にロードを分散させるための戦略として、乱数を書き込んだパーティションキー列を追加する方法があります。次に、より大きなスペース全体の書き込みをランダム化します。

(中略)

複合パーティションキーと計算値を使用したシャーディング
ランダム化の方法は、書き込みスループットを大幅に向上させることができます。しかし、行が書き込まれたときに shard 列にどの値が書き込まれたのかわからないため、特定の行の読み取りが難しくなります。個々の行の読み取りを容易にするために、別の戦略を使用することができます。パーティション間で行を分散させるには、乱数を使用せずに、クエリする項目に基づいて計算できる数値を使用します。

前の例では、パーティションキーで今日の日付が使用されています。各行にはアクセス可能な title 列があり、日付別に加えてタイトル別に行を頻繁に検索する必要があるとします。アプリケーションでは、テーブルに行が書き込まれる前に、タイトルに基づいてハッシュ値が計算され、それを使用して shard 列が入力されます。この計算では、1 から 200 までの数値が生成され、ランダムな方法と同様に、完全に均一に分散されます。

書き込みシャーディングを使用した Amazon Keyspaces でのワークロードの均等分散 - Amazon Keyspaces (Apache Cassandra 向け)