我是Cassandra的新手,所以我有几个简单的问题,假设我这样做:
CREATE TABLE my_keyspace.my_table (
id bigint,
year int,
datetime timestamp,
field1 int,
field2 int,
PRIMARY KEY ((id, year), datetime))
我想象Cassandra像Map<PartitionKey, SortedMap<ColKey, ColVal>>
之类的东西,
我的问题是,当使用WHERE从Cassandra查询某些内容时,它会像这样:
SELECT * FROM my_keyspace.my_table WHERE id = 1 AND year = 4
,
这可能返回 2条或更多记录,这与Cassandra的数据模型如何匹配?
如果确实是Big HashMap,怎么允许partition key
的重复记录?
谢谢!
答案 0 :(得分:3)
SortedMap<ColKey, ColVal>
中的每一行都有其使用的排序属性。
要建立您的心理模型,尽管id = 1 AND year = 4
只有1个分区键,但有多个单元格:
(id, year) | ColKey | ColVal
------------------------------------------
1, 4 | datetime(1):field1 | 1 \ Row1
1, 4 | datetime(1):field2 | 2 /
1, 4 | datetime(5):field1 | 1 \
1, 4 | datetime(5):field2 | 2 / Row2
...