Cassandra ТТЛ и Cassandra Типы данных CQL (пример)
⚡ Умное резюме
Cassandra Типы данных определяют, что может содержать каждый столбец, а TTL управляет тем, как долго значение сохраняется до автоматического истечения срока его действия. На этой странице перечислены все типы CQL, объясняется механизм истечения срока действия и описывается поведение «надгробного камня», которое следует за истечением срока действия.

Cassandra Типы данных
Cassandra поддерживает различные типы типов данных. Вот таблица, в которой показаны типы данных, их константы и описание.
| Тип CQL | Константы | Описание |
|---|---|---|
| ASCII | Струны | Строка символов US-Ascii |
| BIGINT | Целые | 64-битный длинный со знаком |
| капля | сгустки | Произвольные байты в шестнадцатеричном формате |
| логический | Булевы | Правда или ложь |
| противодействие | Целые | Распределенные значения счетчика 64 бита |
| даты | Целые числа, строки | Календарная дата без компонента времени |
| десятичная дробь | Целые числа, числа с плавающей запятой | Десятичная переменная точность |
| двойной | Целые числа, числа с плавающей запятой | 64-битная с плавающей точкой |
| продолжительность | Длительность | Промежуток времени, исчисляемый месяцами, днями и наносекундами. |
| плавать | Целые числа, числа с плавающей запятой | 32-битная с плавающей точкой |
| замороженные | Кортежи, коллекции, пользовательские типы | Хранит составное значение как один неизменяемый двоичный объект. |
| инет | Струны | IP-адрес в формате IPv4 или IPv6 |
| Int | Целые | 32-битное целое число со знаком |
| список | Упорядоченная коллекция элементов | |
| карта | Коллекция пар ключ-значение в формате JSON | |
| набор | Неупорядоченная коллекция уникальных элементов | |
| SMALLINT | Целые | 16-битное целое число со знаком |
| текст | Струны | Строка в кодировке UTF-8 |
| время | Целые числа, строки | Время суток с наносекундной точностью |
| отметка времени | Целые числа, строки | Дата плюс время, закодированное в миллисекундах с начала эпохи. |
| timeuuid | UUID | UUID типа 1, сортируемый по встроенному времени. |
| TINYINT | Целые | 8-битное целое число со знаком |
| кортеж | Фиксированная группа типизированных полей | |
| UUID | UUID | Стандартный UUID |
| варчар | Струны | Строка, закодированная в UTF-8, псевдоним текста. |
| варинт | Целые | Целое число произвольной точности |
Три пункта из этого списка приводят к наибольшему количеству ошибок моделирования, поэтому их стоит указать отдельно.
- текст против varchar. Это один и тот же тип. Оба названия подойдут, их смешивание не принесет никакой пользы.
- метка времени относительно timeuuid. Используйте метку времени для записи момента события. Используйте UUID в качестве столбца для кластеризации, когда много событий происходят с интервалом в миллисекунду, поскольку UUID гарантирует уникальность, сохраняя при этом сортировку по времени.
- десятичная дробь против дробной. Денежные значения должны быть десятичными. Тип данных double вносит ошибку двоичного округления, которая накапливается при агрегировании.
A противодействие Столбец имеет особое ограничение: таблица может содержать либо столбцы-счетчики, либо обычные столбцы, но никогда и то, и другое одновременно, а строки-счетчики нельзя вставлять, только увеличивать.
Cassandra TTL (время жизни) с использованием автоматического истечения срока действия данных
Cassandra обеспечивает функциональность, с помощью которой данные могут быть автоматически просрочены.
При вставке данных необходимо указать значение ttl в секундах. Значение «ttl» — это время жизни данных. По истечении этого определенного периода времени данные будут автоматически удалены.
Например, во время вставки укажите значение ttl 100 секунд. Данные будут автоматически удалены через 100 секунд. Когда срок действия данных истек, эти данные с истекшим сроком действия помечаются надгробием.
Надгробие существует в течение льготного периода. По истечении срока действия данные автоматически удаляются после процесса сжатия.
Синтаксис
INSERT INTO KeyspaceName.TableName (ColumnNames) VALUES (ColumnValues) USING TTL TimeInSeconds;
Пример
Вот снимок, где данные вставляются в таблицу учеников со значением ttl 100 секунд.
INSERT INTO University.Student (rollno, name, dept, semester) VALUES (3, 'Guru99', 'CS', 7) USING TTL 100;
Вот снимок, на котором срок действия данных автоматически истекает через 100 секунд, и данные автоматически удаляются.
Проверка и изменение TTL для существующих данных
После того как значение получает значение TTL, становятся полезны еще три операции, и каждая из них имеет особенности, которые могут удивить новичков.
Оставшийся срок жизни любого столбца, не являющегося первичным ключом, можно определить с помощью функции TTL.
SELECT name, TTL(name) FROM University.Student WHERE rollno = 3;
Нулевой результат означает, что для столбца не установлен срок действия. Запросы к столбцам первичного ключа таким способом невозможны, поскольку время жизни (TTL) привязано к значениям, а не к ключу.
Существующему значению можно присвоить новое значение TTL, обновив его, что сбросит обратный отсчет с этого момента.
UPDATE University.Student USING TTL 600 SET name = 'Guru99' WHERE rollno = 3;
В настройках таблицы по умолчанию этот пункт не повторяется в каждом операторе.
ALTER TABLE University.Student WITH default_time_to_live = 86400;
Из этого вытекают два следствия. Во-первых, TTL применяется к столбцу, а не к строке, поэтому обновление одного столбца без указания TTL приводит к тому, что этот столбец остается необработанным после истечения срока действия остальных, в результате чего строка оказывается частично заполненной. Установка TTL для всей операции вставки предотвращает это. Во-вторых, каждое истечение срока действия записывает «надгробный камень», поэтому таблица, в которой миллионы строк истекают одновременно, будет замедлять чтение до тех пор, пока компакция не очистит их. Использование TimeWindowCompactionStrategy для таких таблиц позволяет удалять целые SSTable-таблицы одновременно, а не компаундировать их построчно.
Срок действия также может применяться к элементам внутри коллекции, что рассматривается в соответствующем разделе. Cassandra коллекции учебное пособие.


