Я пытаюсь настроить семейство столбцов кассандры со вторичными индексами в нескольких столбцах, которые мне нужно будет отфильтровать при чтении данных обратно. В моем первоначальном тестировании, когда я использую несколько индексов вместе, все замедляется. Вот как я настроил его сейчас (через 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