В данной статье мы рассмотрим типы данных, с которыми работает CQL.
Типы данных, здесь, делятся на 3 группы:
- встроенные типы данных
- коллекции
- созданные пользователем
Встроенные типы данных:
Тип данных | Хранит | Description |
---|---|---|
ascii | Строки | ASCII строки |
bigint | Большие целые числа | 64- битные числа |
blob | BLOB | Байты |
Boolean | Логические значения | Правда или ложь (true/false) |
counter | Целые числа | Столбец |
decimal | Целые числа, числа с плавающей точкой | Точные числа с плавающей точкой |
double | Целые числа | 64-битные числа IEEE-754 |
float | Целые числа, числа с плавающей точкой | 32-битные числа IEEE-754 |
inet | Строки | IP адреса, IPv4 or IPv6 |
int | Целые числа | 32-битное знаковое целое число |
text | Строки | Строка в кодировке UTF-8 |
timestamp | Целые числа, Строки | Время |
timeuuid | Уникальные идентификаторы | UUID тип 1 |
uuid | Уникальные идентификаторы | UUID тип 1 или 4 |
varchar | Строки | Строка в кодировке UTF-8 |
varint | Целые числа | Точное целое число |
Коллекции
Коллекция | Описание |
---|---|
list | Список элементов |
map | Коллекция пар “ключ-значение” |
set | Множество уникальных элементов |
Созданные пользователем
Для создания собственных типов данных используется команда следующего вида:
CREATE TYPE <ИМЯ_ТИПА_ДАННЫХ>
( ПОЛЕ_1,
... ,
ПОЛЕ_N
);
Рассмотрим следующий пример:
CREATE TYPE account (
account_id int,
description text,
person_id int,
phone_number int
);
Для проверки выполним следующую команду:
DESCRIBE proselyte ;
В результате мы увидим:
CREATE KEYSPACE proselyte WITH replication = {'class': 'SimpleStrategy', 'replication_factor': '2'} AND durable_writes = true;
CREATE TYPE proselyte.account (
account_id int,
description text,
person_id int,
phone_number int
);
CREATE TABLE proselyte.developers (
developer_id int PRIMARY KEY,
first_name text,
last_name text,
salary varint,
specialty text
) WITH bloom_filter_fp_chance = 0.01
AND caching = {‘keys’: ‘ALL’, ‘rows_per_partition’: ‘NONE’}
AND comment = ”
AND compaction = {‘class’: ‘org.apache.cassandra.db.compaction.SizeTieredCompactionStrategy’, ‘max_threshold’: ’32’, ‘min_threshold’: ‘4’}
AND compression = {‘chunk_length_in_kb’: ’64’, ‘class’: ‘org.apache.cassandra.io.compress.LZ4Compressor’}
AND crc_check_chance = 1.0
AND dclocal_read_repair_chance = 0.1
AND default_time_to_live = 0
AND gc_grace_seconds = 864000
AND max_index_interval = 2048
AND memtable_flush_period_in_ms = 0
AND min_index_interval = 128
AND read_repair_chance = 0.0
AND speculative_retry = ’99PERCENTILE’;
CREATE INDEX last_name_index ON proselyte.developers (last_name);
В данном случае нас интересует:
CREATE TYPE proselyte.account (
account_id int,
description text,
person_id int,
phone_number int
);
Т.е. новый тип данных был создан.
Для изменения типа данных, необходимо выполнить команду вида:
ALTER TYPE <ИМЯ_ТИПА>
ADD <ИМЯ_КОЛОКНКИ> <ТИП_ДАННЫХ>;
Например:
ALTER TYPE account ADD email text ;
Проверяем:
cqlsh:proselyte> DESCRIBE proselyte ;
CREATE KEYSPACE proselyte WITH replication = {‘class’: ‘SimpleStrategy’, ‘replication_factor’: ‘2’} AND durable_writes = true;
CREATE TYPE proselyte.account (
account_id int,
description text,
person_id int,
phone_number int,
email text
);
…
Также, мы имеем возможность, переименовать колонку
ALTER TYPE <ИМЯ_ТИПА>
RENAME <ИМЯ_КОЛОНКИ> TO <НОВОЕ_ИМЯ_КОЛОНКИ>;
Например:
ALTER TYPE account RENAME description TO account_data;
Выполняем команду:
cqlsh:proselyte> DESCRIBE proselyte
CREATE KEYSPACE proselyte WITH replication = {‘class’: ‘SimpleStrategy’, ‘replication_factor’: ‘2’} AND durable_writes = true;
CREATE TYPE proselyte.account (
account_id int,
account_data text,
person_id int,
phone_number int,
email text
);
…
Как мы видим – поле description изменилось на account_data.
На этом мы заканчиваем обзор CQL типов данных в Apache Cassandra.
В следующей статье мы рассмотрим работу с коллекциями.