Составные индексы в Apache Cassandra - PullRequest
7 голосов
/ 30 декабря 2010

Я пытаюсь настроить семейство столбцов кассандры со вторичными индексами в нескольких столбцах, которые мне нужно будет отфильтровать при чтении данных обратно. В моем первоначальном тестировании, когда я использую несколько индексов вместе, все замедляется. Вот как я настроил его сейчас (через cassandra-cli):

update column family bulkdata with comparator=UTF8Type and column_metadata=[{column_name: test_field, validation_class: UTF8Type}, {column_name: create_date, validation_class: LongType, index_type: KEYS}, {column_name: domain, validation_class: UTF8Type, index_type: KEYS}];

Я хочу получить все данные, где create_date> somevalue1 и column_name = somevalue2. Используя pycassa для моего клиента, я делаю следующее:

  domain_expr = create_index_expression('domain', 'whatever.com')
  cd_expr = create_index_expression('create_date', 1293650000, GT)
  clause = create_index_clause([domain_expr, cd_expr], count=10000)
  for key, item in col_fam.get_indexed_slices(clause):
    ...

Это, конечно, распространенная ошибка в SQL, где обычно приходится создавать составной индекс, основанный на запросах. Хотя я совершенно новичок в Кассандре, поэтому не знаю, требуется ли такая вещь или вообще существует.

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

о, а это на кассандре 0.7.0-rc3

1 Ответ

8 голосов
/ 02 марта 2011

Родные вторичные индексы Кассандры имеют некоторые ограничения.Они не должны использоваться для столбцов с большим количеством элементов (слишком много уникальных значений), согласно документации dasastax.Кажется, что столбец create_date, по которому вы индексируете, будет иметь большую мощность.Кроме того, в нативной поддержке индекса Cassandra нет такого понятия, как составной индекс.

Более подробное описание вы можете найти в моем блоге http://pkghosh.wordpress.com/2011/03/02/cassandra-secondary-index-patterns/

Pranab

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...