【发布时间】:2016-12-13 22:04:00
【问题描述】:
您好,我们在 Cassandra 中有一张表,其结构如下
CREATE TABLE dmp.user_profiles_6 (
vuid text PRIMARY KEY,
brand_model text,
first_seen timestamp,
last_seen timestamp,
total_day_count int,
total_usage_count int,
user_type text
) WITH bloom_filter_fp_chance = 0.01
AND caching = {'keys': 'ALL', 'rows_per_partition': 'NONE'}
AND comment = ''
AND compaction = {'class': 'org.apache.cassandra.db.compaction.LeveledCompactionStrategy'}
AND compression = {'chunk_length_in_kb': '64', 'class': 'org.apache.cassandra.io.compress.LZ4Compressor'}
AND crc_check_chance = 1.0
AND dclocal_read_repair_chance = 0.1
AND default_time_to_live = 0
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_chance = 0.1
AND speculative_retry = '99PERCENTILE';
我从 datastax 阅读了几篇关于 Cassandra 中数据建模的文章。在里面说主键由分区键和集群键组成。
现在在上面的例子中,我们有一个 vuid 列,它是每个唯一用户的标识符。它是主键。我们有 4 亿独立用户。那么现在这是否意味着 Cassandra 正在制作 400M 分区?那么这必然会降低性能。在一篇关于数据建模的 datastax 文章中,一个示例表显示了 uuid 列上的主键,该列是唯一的并且具有非常高的基数。我完全糊涂了,谁能帮我确定哪一列可以设置为分区键,哪一列可以设置为集群键?
查询可以如下: 1.根据vuid直接选择记录 2.根据最后一次看到或第一次看到的范围选择vuid
【问题讨论】:
标签: cassandra