Я пытаюсь непрерывно копировать строки из таблицы Cassandra в другую таблицу (в Cassandra или, возможно, в Oracle) для выполнения различных запросов панели инструментов. Исходная таблица Cassandra будет иметь вставки в нее объемом около 6 миллионов в день, а строки имеют TTL 30 дней. Я использую Spring-data-Cassandra в своем приложении. Я проверил следующие варианты, но ни один из них не выглядит хорошо для меня. Моя таблица Cassandra определена следующим образом:
CREATE TABLE event_status (
code text,
status text,
app_id text,
correlation_id uuid,
db_ts timestamp,
next_app_id text,
PRIMARY KEY ((code, status),app_id, correlation_id)
) WITH CLUSTERING ORDER by (app_id ASC, correlation_id ASC);
- Материализованные представления в Cassandra: Обычно не рекомендуется в соответствии с некоторыми документами, особенно из-за моих томов.
- Триггеры Cassandra: снова не рекомендуется из-за проблем с производительностью.
- Наличие отдельного столбца, который помечает строку как прочитанную: Это не рекомендуется в Cassandra, поскольку записи выполняются очень быстро, и обновление с каждая запись.
- Пометка временной метки как прочитанной в другой таблице, периодическое чтение этой таблицы и последующий запрос исходной таблицы на наличие строк после этой временной метки. Это также проблема, поскольку я думаю о том, чтобы несколько потоков выполняли эту работу для масштабирования.
Есть ли какие-либо рекомендации по этому поводу в целом для любой базы данных и, в частности, в мире Кассандры?