阿帕奇卡桑德拉。索引或具有复合主键的表的特定情况

Posted

技术标签:

【中文标题】阿帕奇卡桑德拉。索引或具有复合主键的表的特定情况【英文标题】:Apache Cassandra. Specific case for an Index or a table with composite primary key 【发布时间】:2015-05-27 21:53:59 【问题描述】:

我在 Cassandra 的 POC 中有这个场景。

一张桌子

CREATE TABLE B (B-UID UUID, 
    A-UID UUID,
    CREATED_AT timestamp ,
    JSON text,
    PARENT_B-UID UUID,
    POSTALCODE text,
    CUSTOMER_TYPE text,
    START_DATE timestamp, 
    END_DATE timestamp, 
    SOME_PRICE int, 
PRIMARY KEY (B-UID));

24 k rpm 写入 / 2 k rpm 读取。在大多数情况下,对于 1 个 A-UID,我将拥有 67 个 B-IUD。

在我的应用程序的生命周期中,我必须在所有 B-IUD 中搜索特定的 A-IUD。

我的问题是:使用复合主键创建表还是创建 A-IUD 索引更好?复合主键会影响写入性能吗?

我已经阅读了 DataStax 的文档,他们在那里编写的示例对我的情况不太好,至少在我的理解中!!! :)

【问题讨论】:

【参考方案1】:

尽量避免二级索引

如果唯一的查询是检索特定 A-IUD 的所有 B-IUD,则具有复合主键(A-IUD、B-IUD)。

如果您还需要搜索特定的 B-IUD,请准备两个表格

1:表 1:以 B-IUD 作为主键,其余列按原样 2:表 2:具有复合主键(A-IUD、B-IUD)和其余列原样

【讨论】:

感谢您的快速回复!

以上是关于阿帕奇卡桑德拉。索引或具有复合主键的表的特定情况的主要内容,如果未能解决你的问题,请参考以下文章

使用 Spring-data-cassandra 查询具有复合主键的表

使用Spring-data-cassandra查询具有复合主键的表

如何为具有复合主键的表构建外键?

在 SQLite.Net-PCL 中创建和使用具有复合主键的表

如何获取表的 PRIMARY KEY COLUMNS(在 COMPOSITE 主键的情况下)

oracle中 主键和外键是啥意思?啥地方采用呢?