问题
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