Возможно, вы путаете оба термина, которые относятся к тому, как cassandra хранит составные первичные ключи. Я объясню, как работают составные ключи и как легко физически храниться с помощью Cassandra 2.0 и CQL3.
Cassandra хранит все логические строки с одним и тем же ключом раздела в виде одной физической широкой строки. Ключ раздела делится на (partition_key, clustering_key).
- partition_key: идентифицирует строку в Cassandra. Все регистры с одним и тем же ключом partition_key перейдут на один и тот же компьютер и будут храниться вместе. Вы можете составить partition_key.
- clustering_key: сохранить данные с тем же упорядоченным partition_key. Вы можете указать несколько ключей кластеризации, разделенных запятыми.
Представьте, что у вас есть покупка стола с таким определением:
CREATE TABLE purchase(
user text,
item text,
time timestamp,
PRIMARY KEY ((user, item), time)
);
И эти данные
john car 09/01/14...
john car 09/05/13...
john house 09/07/11...
penny laptop 09/08/08...
penny laptop 09/03/11...
rachel tv 09/01/09...
Cassandar сохранит эти данные
john || car || 09/05/13 - 09/01/14
john || house || 09/07/11
penny || laptop || 09/08/08 - 09/03/11
rachel || tv || 09/01/09
Если вы хотите получить автомобили, которые купил Джон, вы можете убедиться, что два регистра хранятся вместе и упорядочены по времени.
Для запросов вы всегда должны устанавливать поля ключа раздела ( = ), и вы можете, если хотите, сравнить порядок ключей кластеризации с помощью ( ‹ или > ).
Примеры:
- выберите * из покупки, где user='penny' и item='laptop'. Вернуть 2 регистра.
- выберите * из покупки, где user='john' и item='car', где дата 01.01.14. Вернуть 1 регистр.
Надеюсь, поможет.
person
gasparms
schedule
10.09.2014