Cassandra Slice Query для частей CompositeType - PullRequest
3 голосов
/ 25 ноября 2011

У меня есть составной столбец, состоящий из четырех полей: (field1, field2, field3, field4). Мне нужно выполнить следующие запросы срезов: 1. Получить все составные столбцы, где field2 имеет определенное значение, а другие поля не имеют значения. Допустим, у меня есть три составных столбца для ключа строки: («АКТИВНО», «35», «Имя», «Время»), («НЕАКТИВНО», «35», «Город», «Страна») и («ПАССИВ», «25», «Время», «Зона»). Учитывая ключ строки и значение field3 как '35', я должен получить результаты с первыми двумя составными столбцами. Любое предложение будет высоко оценено.

1 Ответ

1 голос
/ 27 ноября 2011

Сколько разных значений может иметь field1? Столбцы с составными ключами сортируются сначала по первому измерению, затем по следующему и так далее. Чтобы получить все значения с field2 = x, вы должны сделать хотя бы | field1 | читает или сканирует всю строку. Рассматривали ли вы обмен полями2 и полями1? Это упростит этот запрос.

Если вам нужно выполнять запросы для всех значений с field1 = x, и вы отдельно хотите выполнять запросы с field2 = y, вы также можете рассмотреть возможность вставки данных дважды, с различным порядком для измерений составных ключей. Это работает лучше всего, если ваша дата однократная запись. Если это не приемлемо, тогда единственный вариант - выполнить три запроса:

["ACTIVE"; y; ""; ""] -> ["ACTIVE"; y; ""; ""] ["НЕАКТИВНО"; y: ""; ""] -> ["НЕАКТИВНО"; y: ""; ""] ["PASSIVE"; y; ""; "" -> ["PASSIVE"; y: ""; ""]

Это не сработало бы так хорошо, если бы было более трех возможных значений для field1.

...