【问题标题】:Cassandra Partition key duplicates?Cassandra 分区键重复?
【发布时间】:2019-05-03 04:36:47
【问题描述】:

我是 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 的重复记录?

谢谢!

【问题讨论】:

  • 在任何数据库中,PRIMARY_KEY 是记录的唯一标识符,您不能拥有超过 1 条完全相同(id、年份和日期时间)的记录,在您的情况下,日期时间必须不同。跨度>

标签: cassandra


【解决方案1】:

SortedMap<ColKey, ColVal> 中的每一行都有一批条目,使用其排序特性。

为了建立您的心智模型,虽然id = 1 AND year = 4 只有一个分区键,但有多个单元格:

(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
...

【讨论】:

  • 你能解释一下datetime(1)datetime(5)的区别吗?
  • 显示它的日期时间字段,如果表模式发生变化,它会有所帮助。如果在 3.0 之前的版本中使用 COMPACT STORAGE,那么对于 datetime 设置为 1 的一行,1:field1 1:field25:field15:field2 对于 datetime 为 5 的行实际上是 ne。基本上利用SortedMap 订购。
猜你喜欢
  • 1970-01-01
  • 2021-10-29
  • 1970-01-01
  • 2014-09-23
  • 1970-01-01
  • 2015-06-21
  • 1970-01-01
  • 2018-02-14
  • 2016-12-21
相关资源
最近更新 更多