Cassandra 分区键可以跨一个键空间中的多个表吗?

Posted

技术标签:

【中文标题】Cassandra 分区键可以跨一个键空间中的多个表吗?【英文标题】:Can a Cassandra partition key span multiple tables in one keyspace? 【发布时间】:2018-11-12 02:47:27 【问题描述】:

在本例中,批处理是单分区还是多分区?

使用日志键空间;

CREATE TABLE Log_User(LogDay timestamp, UserId int) PRIMARY KEY (Day, UserId)

CREATE TABLE Log_Event(LogDay timestamp, EventId int) PRIMARY KEY (Day, EventId)

开始批处理

INSERT INTO Log_User(LogDay timestamp, UserId int) VALUES("2018-03-21 00:00Z", 10); INSERT INTO Log_Event(LogDay timestamp, EventId int) VALUES("2018-03-21 00:00Z", 23); 批量申请;

【问题讨论】:

我知道issues.apache.org/jira/browse/CASSANDRA-10876 Patrick McFadin 说“一个 keyspace.table 上的单个分区键。”当提到删除 batch_size_warn_threshold 时。但是,在为 Cassandra 设计数据模型时,其想法是基于查询创建表,因此通常需要批量插入到具有相同分区键的多个表中以保持这些查询的一致性。 【参考方案1】:

这是两个不同的分区。一个在 Log_User 表上,另一个在 Log_Event 上。多分区可以跨多个表或一个表。重要的是每个不同的表+分区键组合可以在不同的节点,这增加了协调者批量的负担。

【讨论】:

感谢帕特里克的澄清。如果我们使用 Murmur3Partitioner 并且值相同,我们是否可以安全地断定插入将进入同一个节点,并进一步断定这不会给 Coordinator 带来负担?

以上是关于Cassandra 分区键可以跨一个键空间中的多个表吗?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Java 中的 Cassandra 中注释/使用复合分区键?

Cassandra 的哈希值是不是跨多个表具有相同的值?

Cassandra 多个键空间或列族?

spring-data-cassandra 存储库的多个键空间支持?

BigQuery - 跨多个表读取时选择分区键

cassandra中的分区计数