Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
Apache Cassandra
и подруга её Scylla
Даниил Подольский
независимый консультант
Немного о докладчике
● Эксплуатирую кассандру в разных
проектах
Немного о докладчике
● Эксплуатирую кассандру в разных
проектах
● Уже 5 лет
Немного о докладе
● Фактически - обзорный
Немного о докладе
● Фактически - обзорный
● Цель - продемонстрировать отличия
от “традиционных” AKA
реляционных СУБД
Немного о докладе
● Фактически - обзорный
● Цель - продемонстрировать отличия
от “традиционных” AKA
реляционных СУБД
● Что...
Немного о докладе
● Фактически - обзорный
● Цель - продемонстрировать отличия
от “традиционных” AKA
реляционных СУБД
● Что...
Cassandra, как мы ее себе
представляем
Cassandra
● NoSQL DBMS
Cassandra, как мы ее себе
представляем
Cassandra
● NoSQL DBMS
● Отказоустойчивая
Cassandra, как мы ее себе
представляем
Cassandra
● NoSQL DBMS
● Отказоустойчивая
● Распределенная
Cassandra, как мы ее себе
представляем
Cassandra
● NoSQL DBMS
● Отказоустойчивая
● Распределенная
● Быстрая
Cassandra, как мы ее себе
представляем
Cassandra
● NoSQL DBMS
● Отказоустойчивая
● Распределенная
● Быстрая
● Eventually c...
Cassandra, как она есть
● NoSQL DBMS
Cassandra, как она есть
● NoSQL DBMS
○ схема данных и язык CQL
Cassandra, как она есть
● NoSQL DBMS
○ схема данных и язык CQL
● Отказоустойчивая
Cassandra, как она есть
● NoSQL DBMS
○ схема данных и язык CQL
● Отказоустойчивая
● Распределенная
Cassandra, как она есть
● NoSQL DBMS
○ схема данных и язык CQL
● Отказоустойчивая
● Распределенная
● Быстрая
Cassandra, как она есть
● NoSQL DBMS
○ схема данных и язык CQL
● Отказоустойчивая
● Распределенная
● Быстрая
● Eventually ...
Cassandra, как она есть
● NoSQL DBMS
○ схема данных и язык CQL
● Отказоустойчивая
● Распределенная
● Быстрая
● Eventually ...
В сравнении с RDBMS
Отсутствуют
В сравнении с RDBMS
Отсутствуют
● Relations (foreign keys, joins, etc)
В сравнении с RDBMS
Отсутствуют
● Relations (foreign keys, joins, etc)
● Транзакции
В сравнении с RDBMS
Отсутствуют
● Relations (foreign keys, joins, etc)
● Транзакции
○ есть в рамках одной строки
В сравнении с RDBMS
Отсутствуют
● Relations (foreign keys, joins, etc)
● Транзакции
○ есть в рамках одной строки
● Вторичн...
В сравнении с RDBMS
Отсутствуют
● Relations (foreign keys, joins, etc)
● Транзакции
○ есть в рамках одной строки
● Вторичн...
В сравнении с RDBMS
Отсутствуют
● Relations (foreign keys, joins, etc)
● Транзакции
○ есть в рамках одной строки
● Вторичн...
Скорость
● Кассандра быстро пишет
Скорость
● Кассандра быстро пишет
○ И расходует при этом много iops
Скорость
● Кассандра быстро пишет
○ И расходует при этом много iops
● Cassandra читает как-то
Скорость
● Кассандра быстро пишет
○ И расходует при этом много iops
● Cassandra читает как-то
○ Никаких гарантий
Скорость
● Кассандра быстро пишет
○ И расходует при этом много iops
● Cassandra читает как-то
○ Никаких гарантий
○ Но обыч...
Скорость
● Кассандра быстро пишет
○ И расходует при этом много iops
● Cassandra читает как-то
○ Никаких гарантий
○ Но обыч...
Потому, что гладиолус LevelDB
● Append only
Потому, что гладиолус LevelDB
● Append only
● Compaction
Потому, что гладиолус LevelDB
● Append only
● Compaction
Вообще, по-настоящему хорошо это
работает, если никогда не делать...
Об архитектуре хранения данных
● PRIMARY KEY
Об архитектуре хранения данных
● PRIMARY KEY
○ Обязателен
Об архитектуре хранения данных
● PRIMARY KEY
○ Обязателен
○ Уникален
Об архитектуре хранения данных
● PRIMARY KEY
○ Обязателен
○ Уникален
○ Определяет шард
Об архитектуре хранения данных
● PRIMARY KEY
○ Обязателен
○ Уникален
○ Определяет шард
■ Который определяет сервер, на
кот...
Об архитектуре хранения данных
● PRIMARY KEY
○ Обязателен
○ Уникален
○ Определяет шард
■ Который определяет сервер, на
кот...
Об архитектуре хранения данных
● Двухчастный PRIMARY KEY
Об архитектуре хранения данных
● Двухчастный PRIMARY KEY
○ Partition Key
Об архитектуре хранения данных
● Двухчастный PRIMARY KEY
○ Partition Key
○ Clustering Key
Об архитектуре хранения данных
● Двухчастный PRIMARY KEY
○ Partition Key
○ Clustering Key
● Ключевой фактор, влияющий на
п...
Об архитектуре хранения данных
● Двухчастный PRIMARY KEY
○ Partition Key
○ Clustering Key
● Ключевой фактор, влияющий на
п...
Об архитектуре хранения данных
● Двухчастный PRIMARY KEY
○ Partition Key
○ Clustering Key
● Ключевой фактор, влияющий на
п...
О вторичных ключах
● Чисто маркетинговая фишка
О вторичных ключах
● Чисто маркетинговая фишка
○ Не нужны
О вторичных ключах
● Чисто маркетинговая фишка
○ Не нужны
● Работают плохо
О вторичных ключах
● Чисто маркетинговая фишка
○ Не нужны
● Работают плохо
● Запрос по вторичному ключу
достает данные со ...
О вторичных ключах
● Чисто маркетинговая фишка
○ Не нужны
● Работают плохо
● Запрос по вторичному ключу
достает данные со ...
Еще о первичном ключе
● UPDATE для колонок, в него
включенных, невозможен
Еще о первичном ключе
● UPDATE для колонок, в него
включенных, невозможен
○ Потому, что первичный ключ
определяет физическ...
Еще о первичном ключе
● UPDATE для колонок, в него
включенных, невозможен
○ Потому, что первичный ключ
определяет физическ...
Отказоустойчивость
● Ключевой фактор - replication factor
Отказоустойчивость
● Ключевой фактор - replication factor
○ Определяет, сколько полных
копий всех данных вы храните
Отказоустойчивость
● Ключевой фактор - replication factor
○ Определяет, сколько полных
копий всех данных вы храните
○ При ...
Отказоустойчивость
● Ключевой фактор - replication factor
○ Определяет, сколько полных
копий всех данных вы храните
○ При ...
Отказоустойчивость
● Ключевой фактор - replication factor
○ Определяет, сколько полных
копий всех данных вы храните
○ При ...
Отказоустойчивость
● Ключевой фактор - replication factor
○ Определяет, сколько полных
копий всех данных вы храните
○ При ...
Memory mapped files
● Штатный способ доступа к данным
со стороны cassandra
Memory mapped files
● Штатный способ доступа к данным
со стороны cassandra
● Но:
Memory mapped files
● Штатный способ доступа к данным
со стороны cassandra
● Но:
○ Невидимы для iostat
Memory mapped files
● Штатный способ доступа к данным
со стороны cassandra
● Но:
○ Невидимы для iostat
○ Неэффективно испо...
Memory mapped files
● Штатный способ доступа к данным
со стороны cassandra
● Но:
○ Невидимы для iostat
○ Неэффективно испо...
Memory mapped files
● Штатный способ доступа к данным
со стороны cassandra
● Но:
○ Невидимы для iostat
○ Неэффективно испо...
ScyllaDB
● Disclaimer: чистая теория
ScyllaDB
● Disclaimer: чистая теория
● Scylla is a drop-in Apache Cassandra
replacement that powers your
applications with...
ScyllaDB
● Disclaimer: чистая теория
● Scylla is a drop-in Apache Cassandra
replacement that powers your
applications with...
ScyllaDB: о совместимости
● Scylla is compatible with Apache
Cassandra, version 2.1.8
ScyllaDB: о совместимости
● Scylla is compatible with Apache
Cassandra, version 2.1.8
● Самая важная страница
ScyllaDB: о совместимости
● Scylla is compatible with Apache
Cassandra, version 2.1.8
● Самая важная страница
○ http://doc...
ScyllaDB: чего не хватает
(из важного)
● Secondary Index
ScyllaDB: чего не хватает
(из важного)
● Secondary Index
● User Define Functions
ScyllaDB: чего не хватает
(из важного)
● Secondary Index
● User Define Functions
● Triggers
Спасибо
Вопросы?
Контакты докладчика
onokonem@gmail.com
Jabber: onokonem@gmail.com
Telegram: onokonem
Skype: onokonem
You’ve finished this document.
Download and read it offline.
Upcoming SlideShare
What to Upload to SlideShare
Next
Upcoming SlideShare
What to Upload to SlideShare
Next
Download to read offline and view in fullscreen.

Share

apache cassandra и подруга её scylla

Download to read offline

Обзорный доклад об опыте применения cassandra

Related Books

Free with a 30 day trial from Scribd

See all

Related Audiobooks

Free with a 30 day trial from Scribd

See all
  • Be the first to like this

apache cassandra и подруга её scylla

  1. 1. Apache Cassandra и подруга её Scylla Даниил Подольский независимый консультант
  2. 2. Немного о докладчике ● Эксплуатирую кассандру в разных проектах
  3. 3. Немного о докладчике ● Эксплуатирую кассандру в разных проектах ● Уже 5 лет
  4. 4. Немного о докладе ● Фактически - обзорный
  5. 5. Немного о докладе ● Фактически - обзорный ● Цель - продемонстрировать отличия от “традиционных” AKA реляционных СУБД
  6. 6. Немного о докладе ● Фактически - обзорный ● Цель - продемонстрировать отличия от “традиционных” AKA реляционных СУБД ● Чтобы дать представление о круге задач, для которых Cassandra подходит хорошо
  7. 7. Немного о докладе ● Фактически - обзорный ● Цель - продемонстрировать отличия от “традиционных” AKA реляционных СУБД ● Чтобы дать представление о круге задач, для которых Cassandra подходит хорошо ○ Спойлер: этот круг довольно узок
  8. 8. Cassandra, как мы ее себе представляем Cassandra ● NoSQL DBMS
  9. 9. Cassandra, как мы ее себе представляем Cassandra ● NoSQL DBMS ● Отказоустойчивая
  10. 10. Cassandra, как мы ее себе представляем Cassandra ● NoSQL DBMS ● Отказоустойчивая ● Распределенная
  11. 11. Cassandra, как мы ее себе представляем Cassandra ● NoSQL DBMS ● Отказоустойчивая ● Распределенная ● Быстрая
  12. 12. Cassandra, как мы ее себе представляем Cassandra ● NoSQL DBMS ● Отказоустойчивая ● Распределенная ● Быстрая ● Eventually consistent
  13. 13. Cassandra, как она есть ● NoSQL DBMS
  14. 14. Cassandra, как она есть ● NoSQL DBMS ○ схема данных и язык CQL
  15. 15. Cassandra, как она есть ● NoSQL DBMS ○ схема данных и язык CQL ● Отказоустойчивая
  16. 16. Cassandra, как она есть ● NoSQL DBMS ○ схема данных и язык CQL ● Отказоустойчивая ● Распределенная
  17. 17. Cassandra, как она есть ● NoSQL DBMS ○ схема данных и язык CQL ● Отказоустойчивая ● Распределенная ● Быстрая
  18. 18. Cassandra, как она есть ● NoSQL DBMS ○ схема данных и язык CQL ● Отказоустойчивая ● Распределенная ● Быстрая ● Eventually consistent
  19. 19. Cassandra, как она есть ● NoSQL DBMS ○ схема данных и язык CQL ● Отказоустойчивая ● Распределенная ● Быстрая ● Eventually consistent ○ Time based, со всеми вытекающими
  20. 20. В сравнении с RDBMS Отсутствуют
  21. 21. В сравнении с RDBMS Отсутствуют ● Relations (foreign keys, joins, etc)
  22. 22. В сравнении с RDBMS Отсутствуют ● Relations (foreign keys, joins, etc) ● Транзакции
  23. 23. В сравнении с RDBMS Отсутствуют ● Relations (foreign keys, joins, etc) ● Транзакции ○ есть в рамках одной строки
  24. 24. В сравнении с RDBMS Отсутствуют ● Relations (foreign keys, joins, etc) ● Транзакции ○ есть в рамках одной строки ● Вторичные индексы
  25. 25. В сравнении с RDBMS Отсутствуют ● Relations (foreign keys, joins, etc) ● Транзакции ○ есть в рамках одной строки ● Вторичные индексы ○ Они есть
  26. 26. В сравнении с RDBMS Отсутствуют ● Relations (foreign keys, joins, etc) ● Транзакции ○ есть в рамках одной строки ● Вторичные индексы ○ Они есть ○ Но работают иначе
  27. 27. Скорость ● Кассандра быстро пишет
  28. 28. Скорость ● Кассандра быстро пишет ○ И расходует при этом много iops
  29. 29. Скорость ● Кассандра быстро пишет ○ И расходует при этом много iops ● Cassandra читает как-то
  30. 30. Скорость ● Кассандра быстро пишет ○ И расходует при этом много iops ● Cassandra читает как-то ○ Никаких гарантий
  31. 31. Скорость ● Кассандра быстро пишет ○ И расходует при этом много iops ● Cassandra читает как-то ○ Никаких гарантий ○ Но обычно - быстро
  32. 32. Скорость ● Кассандра быстро пишет ○ И расходует при этом много iops ● Cassandra читает как-то ○ Никаких гарантий ○ Но обычно - быстро ■ Если не перегружена
  33. 33. Потому, что гладиолус LevelDB ● Append only
  34. 34. Потому, что гладиолус LevelDB ● Append only ● Compaction
  35. 35. Потому, что гладиолус LevelDB ● Append only ● Compaction Вообще, по-настоящему хорошо это работает, если никогда не делать UPDATE
  36. 36. Об архитектуре хранения данных ● PRIMARY KEY
  37. 37. Об архитектуре хранения данных ● PRIMARY KEY ○ Обязателен
  38. 38. Об архитектуре хранения данных ● PRIMARY KEY ○ Обязателен ○ Уникален
  39. 39. Об архитектуре хранения данных ● PRIMARY KEY ○ Обязателен ○ Уникален ○ Определяет шард
  40. 40. Об архитектуре хранения данных ● PRIMARY KEY ○ Обязателен ○ Уникален ○ Определяет шард ■ Который определяет сервер, на котором хранятся данные
  41. 41. Об архитектуре хранения данных ● PRIMARY KEY ○ Обязателен ○ Уникален ○ Определяет шард ■ Который определяет сервер, на котором хранятся данные ○ Двухчастный
  42. 42. Об архитектуре хранения данных ● Двухчастный PRIMARY KEY
  43. 43. Об архитектуре хранения данных ● Двухчастный PRIMARY KEY ○ Partition Key
  44. 44. Об архитектуре хранения данных ● Двухчастный PRIMARY KEY ○ Partition Key ○ Clustering Key
  45. 45. Об архитектуре хранения данных ● Двухчастный PRIMARY KEY ○ Partition Key ○ Clustering Key ● Ключевой фактор, влияющий на производительность
  46. 46. Об архитектуре хранения данных ● Двухчастный PRIMARY KEY ○ Partition Key ○ Clustering Key ● Ключевой фактор, влияющий на производительность ○ Трудно понять, как правильно
  47. 47. Об архитектуре хранения данных ● Двухчастный PRIMARY KEY ○ Partition Key ○ Clustering Key ● Ключевой фактор, влияющий на производительность ○ Трудно понять, как правильно ○ Невозможно поменять
  48. 48. О вторичных ключах ● Чисто маркетинговая фишка
  49. 49. О вторичных ключах ● Чисто маркетинговая фишка ○ Не нужны
  50. 50. О вторичных ключах ● Чисто маркетинговая фишка ○ Не нужны ● Работают плохо
  51. 51. О вторичных ключах ● Чисто маркетинговая фишка ○ Не нужны ● Работают плохо ● Запрос по вторичному ключу достает данные со всех нод кластера
  52. 52. О вторичных ключах ● Чисто маркетинговая фишка ○ Не нужны ● Работают плохо ● Запрос по вторичному ключу достает данные со всех нод кластера ○ Производительность падает при расширении кластера
  53. 53. Еще о первичном ключе ● UPDATE для колонок, в него включенных, невозможен
  54. 54. Еще о первичном ключе ● UPDATE для колонок, в него включенных, невозможен ○ Потому, что первичный ключ определяет физическое расположение данных
  55. 55. Еще о первичном ключе ● UPDATE для колонок, в него включенных, невозможен ○ Потому, что первичный ключ определяет физическое расположение данных ○ А DELETE-INSERT нельзя сделать транзакционным в распределенной системе
  56. 56. Отказоустойчивость ● Ключевой фактор - replication factor
  57. 57. Отказоустойчивость ● Ключевой фактор - replication factor ○ Определяет, сколько полных копий всех данных вы храните
  58. 58. Отказоустойчивость ● Ключевой фактор - replication factor ○ Определяет, сколько полных копий всех данных вы храните ○ При значениях меньше 3 не обеспечивает отказоустойчивости
  59. 59. Отказоустойчивость ● Ключевой фактор - replication factor ○ Определяет, сколько полных копий всех данных вы храните ○ При значениях меньше 3 не обеспечивает отказоустойчивости ● Выбор ноды реализован на клиенте
  60. 60. Отказоустойчивость ● Ключевой фактор - replication factor ○ Определяет, сколько полных копий всех данных вы храните ○ При значениях меньше 3 не обеспечивает отказоустойчивости ● Выбор ноды реализован на клиенте ● Rebalancing может быть болью
  61. 61. Отказоустойчивость ● Ключевой фактор - replication factor ○ Определяет, сколько полных копий всех данных вы храните ○ При значениях меньше 3 не обеспечивает отказоустойчивости ● Выбор ноды реализован на клиенте ● Rebalancing может быть болью ○ и унижением
  62. 62. Memory mapped files ● Штатный способ доступа к данным со стороны cassandra
  63. 63. Memory mapped files ● Штатный способ доступа к данным со стороны cassandra ● Но:
  64. 64. Memory mapped files ● Штатный способ доступа к данным со стороны cassandra ● Но: ○ Невидимы для iostat
  65. 65. Memory mapped files ● Штатный способ доступа к данным со стороны cassandra ● Но: ○ Невидимы для iostat ○ Неэффективно используют кеш
  66. 66. Memory mapped files ● Штатный способ доступа к данным со стороны cassandra ● Но: ○ Невидимы для iostat ○ Неэффективно используют кеш ■ Личные наблюдения
  67. 67. Memory mapped files ● Штатный способ доступа к данным со стороны cassandra ● Но: ○ Невидимы для iostat ○ Неэффективно используют кеш ■ Личные наблюдения ● Должно сильно зависеть от данных
  68. 68. ScyllaDB ● Disclaimer: чистая теория
  69. 69. ScyllaDB ● Disclaimer: чистая теория ● Scylla is a drop-in Apache Cassandra replacement that powers your applications with ultra-low latency and extreme throughput.
  70. 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/
  71. 71. ScyllaDB: о совместимости ● Scylla is compatible with Apache Cassandra, version 2.1.8
  72. 72. ScyllaDB: о совместимости ● Scylla is compatible with Apache Cassandra, version 2.1.8 ● Самая важная страница
  73. 73. ScyllaDB: о совместимости ● Scylla is compatible with Apache Cassandra, version 2.1.8 ● Самая важная страница ○ http://docs.scylladb.com/cassandra- compatibility/
  74. 74. ScyllaDB: чего не хватает (из важного) ● Secondary Index
  75. 75. ScyllaDB: чего не хватает (из важного) ● Secondary Index ● User Define Functions
  76. 76. ScyllaDB: чего не хватает (из важного) ● Secondary Index ● User Define Functions ● Triggers
  77. 77. Спасибо Вопросы?
  78. 78. Контакты докладчика onokonem@gmail.com Jabber: onokonem@gmail.com Telegram: onokonem Skype: onokonem

Обзорный доклад об опыте применения cassandra

Views

Total views

266

On Slideshare

0

From embeds

0

Number of embeds

9

Actions

Downloads

1

Shares

0

Comments

0

Likes

0

×