如何在同一个分区中保留 2 个 Cassandra 表

Posted

技术标签:

【中文标题】如何在同一个分区中保留 2 个 Cassandra 表【英文标题】:How to keep 2 Cassandra tables within same partition 【发布时间】:2016-03-21 13:47:21 【问题描述】:

我尝试阅读 datastax 博客和文档,但找不到任何具体内容

有没有办法让 Cassandra 中的 2 个表属于同一个分区? 例如:

CREATE TYPE addr (
  street_address1 text,
  city text,
  state text,
  country text,
  zip_code text,
);

CREATE TABLE foo (
  account_id timeuuid,
  data text,
  site_id int,
  PRIMARY KEY (account_id)
;

CREATE TABLE bar (
  account_id timeuuid,
  address_id int,
  address frozen<addr>,
  PRIMARY KEY (account_id, address_id)
);

这里我需要确保这两个表/CF 都将存在于同一个分区上,这样对于同一个 account_id 这两个数据集都可以从同一个节点获取

任何指针都非常感谢。

另外,如果有人在使用 UDT(用户定义类型)方面有一些经验,我想了解向后兼容性如何工作。如果我修改“addr”UDT 以具有更多属性(例如 zip_code2 int 和名称文本),那么具有这些属性的旧行如何工作?它甚至兼容吗?

谢谢

【问题讨论】:

【参考方案1】:

如果两个表共享相同的复制策略和相同的分区键,它们将共同定位它们的分区。所以只要两张表在同一个键空间并且它们的分区键匹配

主键 (account_id) == 主键 (account_id, address_id)

任何给定的 account_id 都将在(并复制到)同一台机器上。

【讨论】:

太棒了! +1 快速而干净的响应。你能帮忙回答关于UDT的问题的另一部分吗? 最好将不相关的问题分成不同的SO问题。对于寻求类似答案的人来说,这将使服务在未来变得更好。 知道了。我已经发布了另一个问题:***.com/questions/34300141/… 我对您的回答感到困惑:***.com/questions/36700859/… 也许您应该评论一下您对该答案的不理解之处? @VishalSharma

以上是关于如何在同一个分区中保留 2 个 Cassandra 表的主要内容,如果未能解决你的问题,请参考以下文章

Cassandra 表有多少个分区键?

如何在 cassandra 中追溯列族的大分区

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

Cassandra分页和令牌功能;选择分区键

Cassandra:最佳分区大小

添加新服务器时对 Cassandra 中的数据进行重新分区