У меня есть эта таблица:Cassandra порядок и кластеризация ключа
CREATE TABLE custumer_events_service.events_by_websiteId_time(
"event_id" text,
"currentTime" timestamp,
"websiteId" varchar,
OTHER COLUMNS ...
PRIMARY KEY(event_id, websiteId, currentTime)
)
В этом случае, я мог бы получить 10000 строк заказанных currentime
, когда я выполнить этот запрос:
SELECT * FROM events_by_websiteid_time WHERE websiteid='xxxx' LIMIT 10000 ALLOW FILTERING;
Или же я должен добавить WITH CLUSTERING ORDER BY (currentTime DESC);
в конце?
+1 Спасибо за ваш ответ Aron (еще раз ;-)), каковы минусы первого решения (используя CLUSTERING ORDER)? во втором решении я не рискую дисбалансом своего кластера, поскольку у меня есть неэквивалентное распределение событий по сайту? – farhawa
@farhawa Нижняя сторона первого решения заключается в дублировании ваших данных в новой таблице запросов. Но если вам нужно обслуживать запросы для ключей как «websiteid», так и «event_id», вам могут понадобиться обе таблицы ... торговый диск для производительности. Что касается дисбаланса во 2-м решении, если это резкое различие, то, возможно, имеет смысл добавить дополнительное «ведро», чтобы помочь разбивать ваши данные как день или месяц, или что-то еще, что имеет смысл для вашего случая использования. – Aaron
Как я изучаю кассандру, я опубликовал новый вопрос http://stackoverflow.com/questions/35880249/cassandra-the-same-query-work-with-cql-but-not-with-python-driver, который вы можете взглянуть? заранее спасибо – farhawa