Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cassandra/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在同一分区内保留2个Cassandra表_Cassandra_Datastax_Datastax Enterprise_Cql3_Datastax Java Driver - Fatal编程技术网

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

如何在同一分区内保留2个Cassandra表,cassandra,datastax,datastax-enterprise,cql3,datastax-java-driver,Cassandra,Datastax,Datastax Enterprise,Cql3,Datastax Java Driver,我试图阅读datastax的博客和文档,但找不到任何关于这方面的具体信息 有没有办法让Cassandra中的两个表属于同一个分区? 例如: 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, P

我试图阅读datastax的博客和文档,但找不到任何关于这方面的具体信息

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

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)
);
创建类型addr(
街道地址1文本,
城市文本,
国家文本,
国家文本,
邮政编码文本,
);
创建表foo(
帐户id timeuuid,
数据文本,
站点id int,
主键(帐户id)
};
创建表格栏(
帐户id timeuuid,
地址_idint,
地址冻结,
主键(帐户id、地址id)
);
这里我需要确保这两个表/CF都位于同一个分区上,这样对于同一个帐户\u id,这两组数据都可以从同一个节点获取

非常感谢您的指点

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


谢谢

如果两个表共享相同的复制策略和相同的分区键,它们将对它们的分区进行联合。因此,只要这两个表在相同的键空间中并且它们的分区键匹配

主键(帐户id)=主键(帐户id、地址id)


任何给定的帐户\u id都将启用(并复制到)相同的机器。

非常好!+1,快速、清晰的回答。你能帮我回答UDT问题的另一部分吗?最好将不相关的问题分成不同的SO问题。这将使未来的服务更好地为寻求类似答案的人提供服务。明白了。我发布了另一个问题:我被你的答案弄糊涂了在这里回答:也许你应该评论一下你对这个答案不理解的地方?@VishalSharma