Привет и добро пожаловать в Stackoverflow.
Пожалуйста, опубликуйте свою схему и, возможно, пример кода со своим вопросом - вы можете отредактировать его:)
Cassandra-способ сделать это - денормализовать данные при необходимости и построить вашу схему вокругзапросы.В вашем случае я бы предложил поместить ваши события в таблицу вместе с временным интервалом:
CREATE TABLE events (event_source int, bucket timestamp,
event_time timestamp, event_text text PRIMARY KEY ((event_source, bucket),event_time));
Причина этого в том, что в Кассандре очень эффективно выбирать строку с помощью ее так называемого ключа разделения(в этом примере (event_source, bucket)
), поскольку такой запрос затрагивает только один узел.Напоминание о первичном ключе называется кластеризация столбцов и определяет порядок данных, здесь все события за день внутри корзины сортируются по event_time
.
Попробуйте смоделировать таблицу событий так, чтобы вам не нужно было делать несколько запросов.Существует хороший и бесплатный курс по моделированию данных из DataStax: https://academy.datastax.com/resources/ds220-data-modeling
Одно замечание - будьте осторожны при использовании cassandra в качестве очереди - это, возможно, антипаттерн, и вам лучше использовать очередь сообщений в качестве ActiveMQили RabbitMQ или аналогичный.