У меня есть таблицаКак добавить элемент в коллекцию с тем же TTL другого столбца в Кассандре
CREATE TABLE myTable (
id bigint,
other_id text,
my_set SET<bigint>,
my_date timestamp,
PRIMARY KEY (id, other_id)
);
Я хочу иметь общий TTL внутри всех столбцов, поэтому по истечению TTL, строка исчезает.
мне удается вставить новые строки с:
INSERT INTO myTable (id, other_id, my_date, my_set)
VALUES (1,'foo','2014-10-20 12:05:08-0300', {22})
USING TTL 20;
Я также могу обновить свой набор добавление новых элементов с:
UPDATE myTable USING TTL 20 SET my_set=my_set + {99}
WHERE id=1 AND other_id='foo';
, но моя проблема в том, что этот новый элемент имеет новый TTL, поэтому через некоторое время число 22 исчезает и 99 все еще присутствует.
Как добавить новый элемент в мой набор с тем же TTL других элементов набора?
Решение, которое я имею в виду, чтобы сделать два запроса:
- Ask my_date колонку его TTL
- При том, что TTL сделать UPDATE добавления нового элемента в my_set
Есть ли лучшее решение?
Hi @fromanator, спасибо за ответ !. Я собираюсь работать с наборами 100-150 элементов. Думаю, я поеду с первым предложенным вариантом. Считаете ли вы, что 100-150 элементов в наборе повлияют на производительность Кассандры? –
Трудно сказать, у меня есть только опыт, видя плохую работу с коллекциями, насчитывающими около 1000 предметов. В общем, коллекции в Кассандре предназначены только для «небольшого» количества предметов. Casssandra читает Коллекции полностью (даже если вы просто хотите, чтобы из него был один элемент). Если ваш случай использования включает чтение 1 или диапазонов данных в вашей коллекции, вам обычно лучше «разворачивать» вашу коллекцию с помощью столбца кластеризации, как в моем втором примере. – fromanator
Большое спасибо @fromanator !! , Я должен прочитать все значения набора, поэтому я думаю, что в моем конкретном случае это одно и то же. Я буду учитывать ваш комментарий, если мне придется читать только некоторые значения. –