Производительность Cassandra с использованием предложения IN для ключей кластеризации
Давайте рассмотрим следующую таблицу
CREATE TABLE base_table(
partition_key uuid,
clustering_key1 uuid,
clustering_key2 uuid,
regular text,
PRIMARY KEY((partition_key), clustering_key1, clustering_key2)
);
До Cassandra 2.2 не было возможности делать такие запросы:
SELECT * FROM base_table
WHERE partition_key=<UUID1>
AND clustering_key1 IN (<UUID2>,<UUID3>)
AND clustering_key2 < UUID4
Действительно, ключ кластеризации может быть ограничен, только если предыдущий был ограничен равным отношением.
Начиная с Cassandra 2.2 это возможно, но кто-нибудь знает, есть ли какие-то предостережения, делающие это? Какую производительность можно ожидать, как если бы не было предложения IN (или близко к нему)? Это масштабируется как равное отношение?
Более того, новый движок Cassandra 3.X, возможно, принял во внимание оптимизацию таких запросов... если у кого-то есть идеи по этому поводу:)
Спасибо!
1 ответ
Поскольку вы читаете из одного и того же раздела, не должно быть очень большого влияния на производительность, пока у вас не будет много элементов в IN
отношение... Но могут возникнуть проблемы, если вы выберете слишком много записей <
сравнение (это может быть проблема с одним =
также).