2. План
1) Что такое Apache Cassandra
2) Типы данных
3) Как хранятся данные
4) Ключ
5) CQL
6) CQLSH
7) Создание индексов
8) Запись на диск
9) Конфиг файл
3. Что такое Кассандра
Касса́ндра (Cassandra, др.-греч.
Κασσάνδρα) — в древнегреческой
мифологии дочь последнего троянского
царя Приама и его второй супруги Гекубы.
Получила пророческий дар от
влюбившегося в неё Аполлона, однако за
то, что она, обманув, не ответила ему
взаимностью, он сделал так, что
предсказаниям Кассандры никто не верил.
4. Apache Cassandra
● NOSQL database
● Free, Open source
● Лицензия: Apache License 2.0
● Написана на Java в Facebook (2009)
● 4GB ram минимум (32GB рекоменд.)
● Разработа для хранения больших
объемов данных и для частой записи
● Предназначена:
○ Запись данных с устройств
○ Аналитика соц. медиа
5. Типы данных
● int
● bigint
● boolean
● float
● double
● text
● UUID
● timestamp
● blob
● Collections: list, set, map
6. Модель данных
Модель данных Cassandra состоит из:
1) Пространства ключей (keyspace)
2) Семейств столбцов (Column Family)
3) Ключ (row key)
4) Запись (row)
5) Колонка (column)
a) Имя (name)
b) Значение (value)
c) Временная метка
7. Ключ
Кассандра поддерживает композитные ключи.
● Partition key - первый ключ
● Clustering key - остальные ключи
Partition key - определяет где будет хранится запись
Clustering key - поля, по которым планируется делать поиск.
8. CQL
Что такое CQL - Cassandra query language.
Пример синтаксиса:
select * from user where id = ‘1000’’;
insert into user (id, name) values (‘1001’, ‘Sid’);
delete from user where id = ‘1001’;
10. Особенности запросов
Мы хотим взять данные в каком-то промежутке.
SELECT * FROM user WHERE balance > 5000 AND friends < 100
SELECT * FROM user WHERE balance > 5000 AND friends < 100 ALLOW FILTERING;
12. Согласованность данных
Для каждого запроса, как на чтение, так и на запись, есть возможность задать уровень
согласованности данных.
Для записи этот уровень будет влиять на количество узлов-реплик, с которых будет ожидаться
подтверждение удачного окончания операции (данные записались) перед тем, как вернуть
пользователю управление.
ONE, TWO, THREE,
QUORUM, LOCAL_QUORUM, EACH_QUORUM,
ALL, ANY
13. Распределение данных
Разные стратегии распределения данных между узлами кластера.
1) Случайный разметчик (Random partitioner)
2) Порядковый разметчик (Byte-ordered partitioner)
14.
15. CQLSH
Что такое CQLSH - командная оболочка для работы с Cassandra.
Ставится при установке Cassandra.
17. TTL
CQL поддерживает Time to live записи.
То есть записи, которые будут хранится в базе указанное время.
Пример:
INSERT INTO myTable (id, myField) VALUES (2, 9) USING TTL 86400;
18. Config file
cassandra.yaml - файл конфигурации
Что прописывается в конфигах?
● Название кластера
● Порт
● Тип авторизации
● Путь к папке с данными
● Шифрование
● Стратегию распределения данных
● Размер memtable (⅓ java heap size)