How to keep 2 Cassandra tables within same partition

北战南征 提交于 2019-12-12 07:59:26

问题


I tried reading up on datastax blogs and documentation but could not find any specific on this

Is there a way to keep 2 tables in Cassandra to belong to same partition? For example:

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)
);

Here I need to ensure that both of these tables/CF will live on same partition that way for the same account_id both of these set of data can be fetched from the same node

Any pointers are highly appreciated.

Also, if someone has some experience in using UDT (User Defined Types), I would like to understand how the backward compatibility would work. If I modify "addr" UDT to have a couple of more attributes (say for example zip_code2 int, and name text), how does the older rows that does have these attribute work? Is it even compatible?

Thanks


回答1:


If two table share the same replication strategy and same partition key they will colocate their partitions. So as long as the two tables are in the same keyspace AND their partition keys match

PRIMARY KEY (account_id) == PRIMARY KEY (account_id, address_id)

Any given account_id will be on (and replicated to) the same machines.



来源:https://stackoverflow.com/questions/34294830/how-to-keep-2-cassandra-tables-within-same-partition

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!