Я изо всех сил пытаюсь разработать правильную модель данных для семейства / таблицы столбцов Cassandra, которая позволит мне запрашивать то, что мне нужно.
Мне нужно хранить данные только для одного типа объекта, представляющего финансовую транзакцию. Основные поля (применимы для запросов, сортировки):
- uuid: уникальный идентификатор транзакции
- timestamp: время транзакции
- source_id: строка (низкая мощность, обычно <10 уникальных значений в наборе данных)
- destination_id: строка (низкая мощность, обычно <10 уникальных значений в наборе данных)
- merchant_id: string (высокая мощность, ~ 100 тыс. уникальных значений)
Есть дополнительные поля (всего около 20), но они не требуются для запроса или заказа.
Мне нужно запрашивать транзакции двумя способами:
- Автор: UUID
- По диапазону дат, для точных значений source_id / destination_id, упорядоченных по merchant_id
Запрос UUID должен быть быстрым и, хотя запрос диапазона дат должен быть максимально эффективным, он запускается ежедневно как автономный процесс, поэтому может занять больше времени. Было бы хорошо понять, как масштабируется время запроса с помощью no. записи.
Cassandra будет настроен как кластер из 4 узлов в 2 центрах обработки данных, если это повлияет на конфигурацию ключа раздела. Я использую Cassandra 2.0.
Будучи новичком в Cassandra, я читал о составных ключах, timeuuid, запросах срезов и т. Д., Но немного запутался. Если кто-нибудь сможет предложить правильный подход или указать мне правильное направление, я был бы очень признателен.
Спасибо.