Apache Cassandra: чудеса и заблуждения

Apache Cassandra: чудеса и заблуждения

Владимир Панарин,
Менеджер проектов Exactpro

1 октября 2020
Online Dev Meetup

Владимир Панарин расскажет
✔ о своем опыте использования Apache Cassandra,
✔ об основных заблуждениях, связанных с этой системой управления базами данных, а также
✔ о последствиях таких заблуждений.

---
Подписывайтесь на Exactpro в социальных сетях:

LinkedIn https://www.linkedin.com/company/exactpro-systems-llc
Twitter https://twitter.com/exactpro
Facebook https://www.facebook.com/exactpro/
Instagram https://www.instagram.com/exactpro/

Подписывайтесь на YouTube канал Exactpro http://www.youtube.com/c/ExactproVlog

5206c19df417b8876825b5561344c1a0?s=128

Exactpro

October 01, 2020
Tweet

Transcript

  1. Build Software to Test Software exactpro.com Apache Cassandra: чудеса и

    заблуждения 01.10.2020 Владимир Панарин
  2. 2 Build Software to Test Software exactpro.com Реляционные БД Плюсы:

    • модель entity-relationship • понятное устройство (таблицы, строки, колонки) • гибкий язык запросов (SQL) Минусы: • чем больше данных, тем дольше выполняются запросы • масштабирование стоит дорого
  3. 3 Build Software to Test Software exactpro.com Apache Cassandra •

    для любого объема данных без потери производительности • распределена по множеству нод и датацентров • данные реплицируются между нодами и датацентрами • нет единой точки отказа • ноды работают на обычном железе (commodity hardware) • привычное устройство (таблицы, строки, колонки) • имеет язык запросов – CQL
  4. 4 Build Software to Test Software exactpro.com Apache Cassandra Особенности:

    • данные из таблиц распределены по нодам • дизайн БД разрабатывается под возможные запросы • хороший запрос работает с одной нодой • данные дублируются • нет join’ов • CQL – не SQL
  5. 5 Build Software to Test Software exactpro.com Partitions Таблицы делятся

    на разделы (partitions, партишены), которые могут находиться на разных нодах. Каждая запись имеет primary key. primary key = partition key + clustering key (необязателен) Partition key определяет расположение партишена (ноду). Clustering key определяет положение записи в партишене. В хороших запросах указан partition key, данные берутся с одной ноды.
  6. 6 Build Software to Test Software exactpro.com Partitions Datacenter N1

    N2 N4 N5 N3 city P ID C name NY 22222 John NY 11111 Mary CH 33333 Bob LA 44444 Bob LA 55555 Mary … … … P – partition key C – clustering key
  7. 7 Build Software to Test Software exactpro.com Partitions SELECT *

    FROM user_comments WHERE login=‘Bob’ AND comment_date=‘2020-10-01’ AND comment_time>’15:00:00’; partition key clustering key
  8. 8 Build Software to Test Software exactpro.com Partitions Требования к

    primary key: • идентифицировать запись • разделять данные по партишенам • партишены должны иметь небольшой размер (<500 Мб) • исключать появление hot-spots • отвечать запросам на чтение
  9. 9 Build Software to Test Software exactpro.com Схема в реляционной

    БД users userID login password posts postID userID title timestamp content comments commentID userID postID timestamp content SELECT title, login, comments.timestamp AS timestamp, comments.content AS content FROM posts INNER JOIN comments ON posts.postID=comments.postID INNER JOIN users ON users.userID=comments.userID WHERE users.login='Bob';
  10. 10 Build Software to Test Software exactpro.com Схема в Apache

    Cassandra user_password login P password post_comments post_title P comment_date P comment_time C login comment_content user_comments login P comment_date P comment_time C post_title comment_content P – partition key C – clustering key user_posts login P post_date P post_time C post_title post_content
  11. 11 Build Software to Test Software exactpro.com CQL Cassandra Query

    Language (CQL) похож на SQL, но не так гибок. Запросы работают иначе. 1. нет join’ов 2. partition key обязателен для эффективных запросов 3. partition key работает только с = 4. условия в WHERE нужно делать по partition key и clustering key 5. SELECT COUNT(*) FROM table_name; – тяжелый запрос 6. нужны аналитические запросы – используйте Cassandra+Spark
  12. 12 Build Software to Test Software exactpro.com Использование Apache Cassandra

    1. много ли будет данных? 2. какие будут запросы? 3. пользователи географически разделены? 4. будет ли кластер и его поддержка?
  13. 13 Build Software to Test Software exactpro.com Спасибо за внимание!