Выбор диапазона ключей с общим префиксом в Кассандре - PullRequest
3 голосов
/ 09 июня 2011

Я хочу получить все строки с общим префиксом, используя hector API.Я немного поиграл с RangeSuperSlicesQuery, но не нашел способа заставить его работать должным образом.Основные параметры диапазона работают с символами подстановки и т. Д.?

Обновление: я использовал ByteOrderedPartitioner вместо RandomPartitioner, и он отлично с этим работает.Это ожидаемое поведение?

Ответы [ 2 ]

5 голосов
/ 10 июня 2011

Да, это ожидаемое поведение.В RandomPartitioner строки хранятся в порядке хеширования MD5 их ключей, поэтому для получения значимого диапазона ключей вам нужно использовать сохраняющий порядок разделитель, такой как ByteOrderedPartitioner.

Однако есть и недостатки в использовании ByteOrderedPartitioner или OrderPreservingPartitioner , которых вы обычно можете избежать с помощью немного другой модели данных и RandomPartitioner.

0 голосов
/ 21 мая 2012

Чтобы уточнить ответ, приведенный выше, вам следует рассмотреть возможность использования имен столбцов в качестве «общего префикса» вместо ключа. Затем вы можете использовать срез столбца, чтобы получить все имена столбцов в определенном диапазоне, или вы можете использовать вторичный индекс, а затем сделать индексированный срез для всех ключей с этим именем столбца.

Column slice example:

Key (without prefix) 
  <prefix1> : <data>
  <prefix2> : <data>
  ...

Secondary index example:

Key (with or without prefix)
  "prefix" : <the_prefix> <-- this column is indexed
  otherCol1 : <data>    
  ...
...