У меня есть таблица с высокой записью, я переезжаю из Oracle в Кассандру.В Oracle PK является (int: clientId, id: UUID).Есть около 10 миллиардов строк.Я сразу же наткнулся на это бессмысленное предупреждение:
https://docs.datastax.com/en/cql/3.3/cql/cql_using/useWhenIndex.html: «Если вы создадите индекс для столбца с высокой степенью кардинальности, который имеет много различных значений, запрос между полями вызоветмногие ищут очень мало результатов. В таблице с миллиардом песен поиск песен по автору (значение, которое обычно уникально для каждой песни), а не по исполнителю, скорее всего, будет очень неэффективным. Возможно, он будет более эффективным.чтобы вручную поддерживать таблицу как форму индекса, а не использовать встроенный индекс Cassandra. "
Мало того, что это кажется неэффективным при поиске с помощью PK, он не может определить, что это значит для" запроса междуполя "и в чем разница между встроенным индексом, вторичным индексом и подфразами кластеризации primary_key + в команде создания таблицы.Описание барахла.Это 2019. Разве это не должно быть исправлено к настоящему времени?
AFAIK, в любом случае, это вводит в заблуждение:
CREATE TABLE dev.record (
clientid int,
id uuid,
version int,
payload text,
PRIMARY KEY (clientid, id, version)
) WITH CLUSTERING ORDER BY (id ASC, version DESC)
insert into record (id,version,clientid,payload) values
(d5ca94dd-1001-4c51-9854-554256a5b9f9,3,1001,'');
insert into record (id,version,clientid,payload) values
(d5ca94dd-1002-4c51-9854-554256a5b9e5,0,1002,'');
Маркер на клиенте действительно показывает, что они находятся в разных разделах, как и ожидалось.
Обращаясь к большой точке.Если кто-то искал одну строку с заданным clientId, и UUID --- AND --- Cassandra позволил вам пропустить указание clientId, чтобы он не знал, какой узел (ы) искать, то уверен, что поиск может быть медленным,Но это не так:
select * from record where id=
d5ca94dd-1002-4c51-9854-554256a5b9e5;
InvalidRequest: ... despite the performance unpredictability,
use ALLOW FILTERING"
И то же самое с другими вариациями, которые исключают клиентуру.Так разве мы не должны прийти к выводу, что Кассандра обрабатывает таблицы с высокой кардинальностью, которые прекрасно выдают «очень мало результатов»?