DS201の実施_partitions

DS201: Foundations of Apache Cassandra™ and DataStax Enterpriseの学習記録。

パーティション(Partition)は、データを分割して格納するための概念。

パーティションは、データの格納と検索の単位となる。Cassandraのテーブルは、1つまたは複数のパーティションで構成されており、各パーティションは一意のパーティションキーによって識別される。パーティションキーは、データを分割するための基準となる。パーティションキーの値に基づいてデータが物理的に分散される。

cqlsh:killrvideo> DESCRIBE TABLE videos;

CREATE TABLE killrvideo.videos (
    video_id timeuuid PRIMARY KEY,
    added_date timestamp,
    title text
) WITH additional_write_policy = '99p'
    AND bloom_filter_fp_chance = 0.01
    AND caching = {'keys': 'ALL', 'rows_per_partition': 'NONE'}
    AND cdc = false
    AND comment = ''
    AND compaction = {'class': 'org.apache.cassandra.db.compaction.SizeTieredCompactionStrategy', 'max_threshold': '32', 'min_threshold': '4'}
    AND compression = {'chunk_length_in_kb': '16', 'class': 'org.apache.cassandra.io.compress.LZ4Compressor'}
    AND memtable = 'default'
    AND crc_check_chance = 1.0
    AND default_time_to_live = 0
    AND extensions = {}
    AND gc_grace_seconds = 864000
    AND max_index_interval = 2048
    AND memtable_flush_period_in_ms = 0
    AND min_index_interval = 128
    AND read_repair = 'BLOCKING'
    AND speculative_retry = '99p';

上記のテーブル定義では、“videos” テーブルの PRIMARY KEY 宣言が次のようになってる。

video_id timeuuid PRIMARY KEY

この宣言により、“video_id” 列がパーティションキーとなる。

cqlsh:killrvideo> SELECT token(video_id), video_id FROM videos;

 system.token(video_id) | video_id
------------------------+--------------------------------------
   -7805440677194688247 | 245e8024-14bd-11e5-9743-8238356b7e32

(1 rows)

クエリ結果の最初の列 “system.token(video_id)” は、“video_id” のトークン値を表している。 トークン値は、Cassandra 内部で使用されるパーティションキーのハッシュ値で、どのノードにデータが配置されるかを決定するために使われる。

Tags: