Мне нужно организовать партию, которая копирует дельту таблицы каждый день. Эта таблица написана, никогда не обновляется. Я использую java с jdbc, и мне интересно, есть ли метаданные или что-то в таблице, которые можно запросить, чтобы получить все строки, добавленные после даты сертификации.Cassandra delta/relative querying
Почему метаданные? Потому что с моей таблица выглядит как:
CREATE TABLE aTable (
aTable_id timeuuid,
...
PRIMARY KEY ((aTable_id))
) WITH
...
Я не могу поставить timeuuid ключа где положение как:
SELECT * FROM aTable WHERE aTable_id > minTimeuuid(?)
и функция маркеров, даже если aTable_id
правильно упорядоченные дать мне неправильные результаты:
SELECT * FROM aTable WHERE token(aTable_id) > token(minTimeuuid(?))
в общем, мой вопрос: как получить aTables новее, чем на определенную дату?
Таким образом, запросы с 'IN' являются решением, Означает ли это, что мы не должны использовать диапазоны в ключах разделов вообще? – Abhidemon
Нет, если вы используете его в режиме реального времени, например, и если это основная цель таблицы, вы должны добавить date_hour в свои ключи раздела. Но если вы занимаетесь аналитикой, например ежедневной дельтой, вы можете использовать индексную таблицу. Не забывайте, что Cassandra не является RDMBS, и вы должны думать о запросе для построения структуры таблицы. Чтобы закончить, я бы сказал, что с новой Cassandra вы можете сделать ее более сексуальной с прямым индексом, но я покончил с проектом, и, увы, я не очень хорошо помню материал cassandra. –
Извините, я думаю, что неправильно понял ваш вопрос. Я думаю, вы не должны этого делать, потому что, если это разрешено, вам придется сканировать всю базу данных. Но я не эксперт. И гораздо проще обрабатывать сторону приложения результата с ограничением (например, по часам), а не диапазоном (больше), даже если выборка в jdbc является удивительной. –