5. Немного о докладе
● Фактически - обзорный
● Цель - продемонстрировать отличия
от “традиционных” AKA
реляционных СУБД
6. Немного о докладе
● Фактически - обзорный
● Цель - продемонстрировать отличия
от “традиционных” AKA
реляционных СУБД
● Чтобы дать представление о круге
задач, для которых Cassandra
подходит хорошо
7. Немного о докладе
● Фактически - обзорный
● Цель - продемонстрировать отличия
от “традиционных” AKA
реляционных СУБД
● Чтобы дать представление о круге
задач, для которых Cassandra
подходит хорошо
○ Спойлер: этот круг довольно узок
15. Cassandra, как она есть
● NoSQL DBMS
○ схема данных и язык CQL
● Отказоустойчивая
16. Cassandra, как она есть
● NoSQL DBMS
○ схема данных и язык CQL
● Отказоустойчивая
● Распределенная
17. Cassandra, как она есть
● NoSQL DBMS
○ схема данных и язык CQL
● Отказоустойчивая
● Распределенная
● Быстрая
18. Cassandra, как она есть
● NoSQL DBMS
○ схема данных и язык CQL
● Отказоустойчивая
● Распределенная
● Быстрая
● Eventually consistent
19. Cassandra, как она есть
● NoSQL DBMS
○ схема данных и язык CQL
● Отказоустойчивая
● Распределенная
● Быстрая
● Eventually consistent
○ Time based, со всеми вытекающими
21. В сравнении с RDBMS
Отсутствуют
● Relations (foreign keys, joins, etc)
22. В сравнении с RDBMS
Отсутствуют
● Relations (foreign keys, joins, etc)
● Транзакции
23. В сравнении с RDBMS
Отсутствуют
● Relations (foreign keys, joins, etc)
● Транзакции
○ есть в рамках одной строки
24. В сравнении с RDBMS
Отсутствуют
● Relations (foreign keys, joins, etc)
● Транзакции
○ есть в рамках одной строки
● Вторичные индексы
25. В сравнении с RDBMS
Отсутствуют
● Relations (foreign keys, joins, etc)
● Транзакции
○ есть в рамках одной строки
● Вторичные индексы
○ Они есть
26. В сравнении с RDBMS
Отсутствуют
● Relations (foreign keys, joins, etc)
● Транзакции
○ есть в рамках одной строки
● Вторичные индексы
○ Они есть
○ Но работают иначе
30. Скорость
● Кассандра быстро пишет
○ И расходует при этом много iops
● Cassandra читает как-то
○ Никаких гарантий
31. Скорость
● Кассандра быстро пишет
○ И расходует при этом много iops
● Cassandra читает как-то
○ Никаких гарантий
○ Но обычно - быстро
32. Скорость
● Кассандра быстро пишет
○ И расходует при этом много iops
● Cassandra читает как-то
○ Никаких гарантий
○ Но обычно - быстро
■ Если не перегружена
40. Об архитектуре хранения данных
● PRIMARY KEY
○ Обязателен
○ Уникален
○ Определяет шард
■ Который определяет сервер, на
котором хранятся данные
41. Об архитектуре хранения данных
● PRIMARY KEY
○ Обязателен
○ Уникален
○ Определяет шард
■ Который определяет сервер, на
котором хранятся данные
○ Двухчастный
45. Об архитектуре хранения данных
● Двухчастный PRIMARY KEY
○ Partition Key
○ Clustering Key
● Ключевой фактор, влияющий на
производительность
46. Об архитектуре хранения данных
● Двухчастный PRIMARY KEY
○ Partition Key
○ Clustering Key
● Ключевой фактор, влияющий на
производительность
○ Трудно понять, как правильно
47. Об архитектуре хранения данных
● Двухчастный PRIMARY KEY
○ Partition Key
○ Clustering Key
● Ключевой фактор, влияющий на
производительность
○ Трудно понять, как правильно
○ Невозможно поменять
51. О вторичных ключах
● Чисто маркетинговая фишка
○ Не нужны
● Работают плохо
● Запрос по вторичному ключу
достает данные со всех нод
кластера
52. О вторичных ключах
● Чисто маркетинговая фишка
○ Не нужны
● Работают плохо
● Запрос по вторичному ключу
достает данные со всех нод
кластера
○ Производительность падает при
расширении кластера
53. Еще о первичном ключе
● UPDATE для колонок, в него
включенных, невозможен
54. Еще о первичном ключе
● UPDATE для колонок, в него
включенных, невозможен
○ Потому, что первичный ключ
определяет физическое
расположение данных
55. Еще о первичном ключе
● UPDATE для колонок, в него
включенных, невозможен
○ Потому, что первичный ключ
определяет физическое
расположение данных
○ А DELETE-INSERT нельзя
сделать транзакционным в
распределенной системе
58. Отказоустойчивость
● Ключевой фактор - replication factor
○ Определяет, сколько полных
копий всех данных вы храните
○ При значениях меньше 3 не
обеспечивает отказоустойчивости
59. Отказоустойчивость
● Ключевой фактор - replication factor
○ Определяет, сколько полных
копий всех данных вы храните
○ При значениях меньше 3 не
обеспечивает отказоустойчивости
● Выбор ноды реализован на клиенте
60. Отказоустойчивость
● Ключевой фактор - replication factor
○ Определяет, сколько полных
копий всех данных вы храните
○ При значениях меньше 3 не
обеспечивает отказоустойчивости
● Выбор ноды реализован на клиенте
● Rebalancing может быть болью
61. Отказоустойчивость
● Ключевой фактор - replication factor
○ Определяет, сколько полных
копий всех данных вы храните
○ При значениях меньше 3 не
обеспечивает отказоустойчивости
● Выбор ноды реализован на клиенте
● Rebalancing может быть болью
○ и унижением
64. Memory mapped files
● Штатный способ доступа к данным
со стороны cassandra
● Но:
○ Невидимы для iostat
65. Memory mapped files
● Штатный способ доступа к данным
со стороны cassandra
● Но:
○ Невидимы для iostat
○ Неэффективно используют кеш
66. Memory mapped files
● Штатный способ доступа к данным
со стороны cassandra
● Но:
○ Невидимы для iostat
○ Неэффективно используют кеш
■ Личные наблюдения
67. Memory mapped files
● Штатный способ доступа к данным
со стороны cassandra
● Но:
○ Невидимы для iostat
○ Неэффективно используют кеш
■ Личные наблюдения
● Должно сильно зависеть
от данных
69. ScyllaDB
● Disclaimer: чистая теория
● Scylla is a drop-in Apache Cassandra
replacement that powers your
applications with ultra-low latency and
extreme throughput.
70. ScyllaDB
● Disclaimer: чистая теория
● Scylla is a drop-in Apache Cassandra
replacement that powers your
applications with ultra-low latency and
extreme throughput.
● http://www.scylladb.com/
72. ScyllaDB: о совместимости
● Scylla is compatible with Apache
Cassandra, version 2.1.8
● Самая важная страница
73. ScyllaDB: о совместимости
● Scylla is compatible with Apache
Cassandra, version 2.1.8
● Самая важная страница
○ http://docs.scylladb.com/cassandra-
compatibility/