Cassandraパーティションキーとは?
かさんどらぱーてぃしょんきー
Cassandraパーティションキーとは、データをどのノードに格納するかを決定するキーで、Cassandraのパフォーマンス設計の核心となる概念です。
Cassandraパーティションキーは、Apache Cassandraにおけるテーブルの主キー(Primary Key)の先頭部分にあたるカラムまたはカラムの組み合わせです。このキーのハッシュ値を元に、データが格納されるノード(パーティション)が決まります。
Cassandraはデータをパーティション単位で管理します。同じパーティションキーを持つ行は同一パーティション(同一ノードまたはそのレプリカ)にまとめて保存されます。そのため、クエリでパーティションキーを指定するとクラスタ内の特定ノードに直接アクセスできるため、レスポンスが非常に高速になります。逆に、パーティションキーを指定しないクエリは全ノードへのフルスキャン(FULLスキャン)が必要になり、パフォーマンスが大幅に低下します。
パーティションキーを設計するうえで重要な点は次のとおりです。
- カーディナリティ:特定のキー値にデータが集中すると「ホットスポット」が生じ、特定ノードに負荷が偏る
- データサイズのバランス:1パーティションが無制限に大きくなるとメモリ・ネットワークに悪影響を与える
- アクセスパターンとの一致:どのクエリでデータを取り出すかを先に決め、それに合わせてキーを設計する
複合パーティションキー(複数カラムをまとめてパーティションキーとする)を使うことで、単一カラムでは偏りが出る場合に分散を改善することもできます。Cassandraではこのパーティションキーの設計がシステム全体の性能を左右します。
使い方・例文
ユーザーIDと日付の組み合わせをパーティションキーにすることで、特定ユーザーの特定日のログを高速に検索でき、かつノード間でデータが均等に分散される設計が典型的な例です。
この用語をシェア
最終更新: