如何将两个Cassandra表保持在同一个分区内

8

我尝试阅读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和name text),那么没有这些属性的旧行如何工作?它甚至兼容吗?

谢谢

1个回答

11
如果两个表共享相同的复制策略和相同的分区键,则它们将放置在一起。只要这两个表在同一个keyspace中且它们的分区键匹配。
主键(账户id) == 主键(账户id, 地址id)
任何给定的账户id都会在(并且被复制到)同一组机器上。

太棒了!感谢您快速干净的回复。您能帮忙回答关于UDT的另一部分问题吗? - im2kul
最好将不相关的问题分成不同的SO问题。这样做可以使未来寻找类似答案的人们更好地使用该服务。 - RussS
明白了。我已经发布了另一个问题:http://stackoverflow.com/questions/34300141/user-defined-type-udt-behavior-in-cassandra - im2kul
我对你在这里的回答感到困惑:https://dev59.com/PZbfa4cB1Zd3GeqPqDLZ - Vishal Sharma
也许你应该在那个回答中评论你不理解的地方?@VishalSharma - RussS
显示剩余2条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接