SlideShare a Scribd company logo
1 of 41
Введение в Apache
Cassandra


                      Александр Тивельков
                      Mirantis Cloud Service
                    © MIRANTIS 2013            PAGE 1
«Без умолку безумная девица
               Кричала: "Ясно вижу Трою павшей в прах!"
               Но ясновидцев - впрочем, как и очевидцев -
                   Во все века сжигали люди на кострах»
                            В. Высоцкий. Песня о вещей Кассандре




«...Он у Приама Кассандры, прекраснейшей дочери старца,
     Гордый просил без даров, но сам совершить обещал он
    Подвиг великий: из Трои изгнать меднолатных данаев.
              Старец ему обещал и уже за него согласился
      Выдать Кассандру,- и ратовал он, на обет положася»
                                              Гомер. Иллиада




  © MIRANTIS 2013                                         PAGE 2
О чем вообще речь?


 800

 700

 600

 500

 400                                                                        Объем данных в сети, ЭБ

 300

 200

 100

  0
  1998   2000   2002   2004   2006       2008          2010   2012   2014




                                     © MIRANTIS 2013                                         PAGE 3
Масштабирование




                  © MIRANTIS 2013   PAGE 4
Бывает и так




               © MIRANTIS 2013   PAGE 5
NoSQL

   HBase                            Hypertable
   MongoDB                          HyperGraphDB
   Riak                             Memcached
   Voldemort                        Tokyo Cabinet
   Neo4J                            Redis
    Cassandra
                                      CouchDB

                                  




                © MIRANTIS 2013                       PAGE 6
CAP-теорема Брюера




                © MIRANTIS 2013   PAGE 7
CAP-теорема Брюера




                © MIRANTIS 2013   PAGE 8
CAP-теорема Брюера




                © MIRANTIS 2013   PAGE 9
NoSQLBigData

   HBase                            Hypertable
   MongoDB                          HyperGraphDB
   Riak                             Memcached
   Voldemort                        Tokyo Cabinet
   Neo4J                            Redis
    Cassandra
                                      CouchDB

                                  




                © MIRANTIS 2013                       PAGE 10
Amazon Dynamo + Google BigTable = ???

 Из Amazon Dynamo возьмем
    инфраструктуру:
    Согласованное хэширование
     PK
    Шардирование
                                      ...а из Google BigTable оставим
     Репликацию по кольцу
                                          схему данных:
 


     Роутинг за О(1)
                                       Схему данных, состоящую из
 


                                         «семейств колонок»
                                       In-memory хранение данных в
                                          Memtable
                                       On-disk хранение данных в
                                         SSTables

                             © MIRANTIS 2013                            PAGE 11
Amazon Dynamo + Google BigTable = Apache Cassandra

   Разрабатывалась в Facebook до 2008го года
   Выпущена в свободное open-source плавание на
    GoogleCode в июле 2008 года
   С марта 2009 года — в инкубаторе проектов Apache
    Software Foundation
   Выделение в полноценный продукт — 17 февраля 2010
   6 основных релизов с тех пор...


Последний активный релиз — 2 января 2013 года, версия 1.2

                            © MIRANTIS 2013             PAGE 12
Apache Cassandra – это...
Распределенное,
    отказоустойчивое,
       масштабируемое,
          колонко-ориентированное,
             управляемо-согласованное

                  хранилище данных.


                        © MIRANTIS 2013   PAGE 13
Apache Cassandra – это...
Распределенное,
    отказоустойчивое,
       масштабируемое,
          колонко-ориентированное,
             управляемо-согласованное

                  хранилище данных.


                        © MIRANTIS 2013   PAGE 14
Топология Token Ring

   Кластер из проивольного количества узлов (ну, от 1 до 2127-1 :))

    Каждому узлу сопоставляется токен в некоем пространстве
    значений

    Хэш-ключ записи лежит в том же пространстве значений
    токенов

    Запись направляется на ноду с ближайшим к этому значению
    токеном

    Последующая репликация поддается настройке и учитывает
    сетевую топологию кластера

                               © MIRANTIS 2013                    PAGE 15
Топология Token Ring




                  © MIRANTIS 2013   PAGE 16
Apache Cassandra – это...
Распределенное,
отказоустойчивое,
       масштабируемое,
           колонко-ориентированное,
              управляемо-согласованное

                    хранилище данных.


                        © MIRANTIS 2013   PAGE 17
Отказоустойчивость

   Все узлы равны — нету «главной
    ноды», «управляющей ноды», «мастер-узла» и
    прочих Single-point-of-failure

   При выбывании ноды перебалансировка кольца
    происходит так, чтобы минимизировать
    перемещение данных

    Функция Read-Repair позволяет восстановить
    устаревшие данные после возвращения ноды в
    строй при наличии достаточного количества реплик


                        © MIRANTIS 2013           PAGE 18
Apache Cassandra – это...
Распределенное,
    отказоустойчивое,
масштабируемое,
          колонко-ориентированное,
             управляемо-согласованное

                  хранилище данных.


                        © MIRANTIS 2013   PAGE 19
Мсштабируем

• Горизонтально
• Легко и просто
• Автоматизированно




                      © MIRANTIS 2013   PAGE 20
Apache Cassandra – это...
Распределенное,
    отказоустойчивое,
масштабируемое,
колонко-ориентированное,
             управляемо-согласованное

                  хранилище данных.


                        © MIRANTIS 2013   PAGE 21
Модель данных
   Нет фиксированной схемы
   ALTER TABLE? Забудьте как страшный сон
    Разреженные (sparse) таблицы — у каждой строки
    свой набор колонок
    Имена колонок — любого типа данных, в том числе
    композитные
    Всѐ что нужно выбрать — порядок сортировки
    колонок в «таблице»


                        © MIRANTIS 2013               PAGE 22
Модель данных

   Keyspace

          ColumnFamily
                  Row
                        Ключ
                        Колонка
                              Имя
                              Значение
                        Колонка
                     …
               …            © MIRANTIS 2013   PAGE 23
Модель данных

• Ячейка




                © MIRANTIS 2013   PAGE 24
Модель данных

• Ячейка


• Строка




                © MIRANTIS 2013   PAGE 25
Модель данных

• Ячейка


• Строка


• Column Family




                  © MIRANTIS 2013   PAGE 26
Запись данных

• Данные сохраняются в in-memory структуру данных —
 memtable — и в commit log на диск

• Периодически memtable сохраняется на диск в SSTable файл
 (SortedStringsTable). Commit log при этом очищается.

• SSTable — immutable, т. е. каждая операция flush создает
 новый файл




                           © MIRANTIS 2013                   PAGE 27
Запись данных




                © MIRANTIS 2013   PAGE 28
Чтение данных

   Данные читаются и из memtable (из памяти), и с диска (из
    SSTable-файлов)

   Так как SSTable-файл являются immutable, то различные
    колонки одной строки могут находиться в разных файлах

   Существуют несколько механизмов кэширования и
    дополнительной индексации


                           © MIRANTIS 2013                PAGE 29
Чтение данных




                © MIRANTIS 2013   PAGE 30
Apache Cassandra – это...
Распределенное,
    отказоустойчивое,
масштабируемое,
          колонко-ориентированное,
управляемо-согласованное

                  хранилище данных.


                        © MIRANTIS 2013   PAGE 31
Совсем без "С" – плохо




                   © MIRANTIS 2013   PAGE 32
Eventual Consistency
 Невозможно гарантировать, что непосредственно после
 завершения обновления данных операция чтения вернѐт
 обновленное значение.
 Гарантируется, что при отсутствии повторных обновлений через
 некоторое время данный станут доступны.
 Окно несогласованности(inconsistency window) -
 время, проходящее между операцией обновления и
 доступностью обновленных данных для чтения.


 Задача: минимизировать окно несогласованности при
 минимальных жертвах со стороны доступности и устойчивости к
 потере связи между сегментами сети.



                          © MIRANTIS 2013                  PAGE 33
Управляемая согласованность

  Replication Factor (N) - количество узлов
 хранящих реплики данных
  Read Consistency Level (R) — количество

 (идентичных) реплик данных, которых
 необходимо получить для того, чтобы операция
 чтения считалась успешной
  Write Consistency Level (W) — количество

 реплик данных, которые необходимо успешно
 записать на узлах для того, чтобы операция
 записи считалась успешной

                   © MIRANTIS 2013         PAGE 34
Управляемая согласованность




          R + W >N

                 © MIRANTIS 2013   PAGE 35
Реализация в Cassandra

    Replication Factor (N) задается на уровне
    конфигурации

    Consistency Level можно установить
    отдельно для каждой операции




                       © MIRANTIS 2013           PAGE 36
Реализация в Cassandra

           Запись                                    Чтение
Уровень   Значение                       Уровень   Значение
Zero      Пустил-и-забыл                 One       Чтение одной реплики
Any       Доставка на кластер            Quorum    Чтение N/2+1реплик
One       Коммит на одну ноду            All       Чтение всех реплик
Quorum    Коммит на N/2+1 нод
All       Коммит на все ноды




                                © MIRANTIS 2013                           PAGE 37
Реализация в Cassandra

           Запись                                    Чтение
Уровень   Значение                       Уровень   Значение
Zero      Пустил-и-забыл                 One       Чтение одной реплики
Any       Доставка на кластер            Quorum    Чтение N/2+1реплик
One       Коммит на одну ноду            All       Чтение всех реплик
Quorum    Коммит на N/2+1 нод
All       Коммит на все ноды

                        Слабая согласованность




                                © MIRANTIS 2013                           PAGE 38
Реализация в Cassandra

           Запись                                    Чтение
Уровень   Значение                       Уровень   Значение
Zero      Пустил-и-забыл                 One       Чтение одной реплики
Any       Доставка на кластер            Quorum    Чтение N/2+1реплик
One       Коммит на одну ноду            All       Чтение всех реплик
Quorum    Коммит на N/2+1 нод
All       Коммит на все ноды

                        Сильная согласованность




                                © MIRANTIS 2013                           PAGE 39
Использование

• Низкий уровень
  • Thrift – интерфейсный протокол низкого уровня
  • CQL и cqlsh – язык запросов и shell для их выполнения
  • Cassandra-cli – простая утилита для простых запросов
• Высокий уровень
  • Десятки разных клиентов для разных платформ:
  • http://wiki.apache.org/cassandra/ClientOptions
  • MirantisCassandrom – в следующей части



                         © MIRANTIS 2013                PAGE 40
Спасибо за внимание
      Вопросы?




       © MIRANTIS 2013   PAGE 41

More Related Content

What's hot

NoSQL - взрыв возможностей
NoSQL - взрыв возможностейNoSQL - взрыв возможностей
NoSQL - взрыв возможностейAleksey Solntsev
 
MongoDB первые впечатления
MongoDB первые впечатленияMongoDB первые впечатления
MongoDB первые впечатленияfudz1k
 
Оптимизация программ для современных процессоров и Linux, Александр Крижановс...
Оптимизация программ для современных процессоров и Linux, Александр Крижановс...Оптимизация программ для современных процессоров и Linux, Александр Крижановс...
Оптимизация программ для современных процессоров и Linux, Александр Крижановс...Ontico
 
Tempesta FW: challenges, internals, use cases / Александр Крижановский (Tempe...
Tempesta FW: challenges, internals, use cases / Александр Крижановский (Tempe...Tempesta FW: challenges, internals, use cases / Александр Крижановский (Tempe...
Tempesta FW: challenges, internals, use cases / Александр Крижановский (Tempe...Ontico
 
NoSQL - коротко о главном / Сергей Туленцев (TextMaster)
NoSQL - коротко о главном / Сергей Туленцев (TextMaster)NoSQL - коротко о главном / Сергей Туленцев (TextMaster)
NoSQL - коротко о главном / Сергей Туленцев (TextMaster)Ontico
 
MongoDB. Области применения, преимущества и узкие места, тонкости использован...
MongoDB. Области применения, преимущества и узкие места, тонкости использован...MongoDB. Области применения, преимущества и узкие места, тонкости использован...
MongoDB. Области применения, преимущества и узкие места, тонкости использован...phpdevby
 
Защита данных и датацентров от катастроф. Подход Nutanix / Максим Шапошников ...
Защита данных и датацентров от катастроф. Подход Nutanix / Максим Шапошников ...Защита данных и датацентров от катастроф. Подход Nutanix / Максим Шапошников ...
Защита данных и датацентров от катастроф. Подход Nutanix / Максим Шапошников ...Ontico
 
Принципы и приёмы обработки очередей / Константин Осипов (Mail.ru)
Принципы и приёмы обработки очередей / Константин Осипов (Mail.ru)Принципы и приёмы обработки очередей / Константин Осипов (Mail.ru)
Принципы и приёмы обработки очередей / Константин Осипов (Mail.ru)Ontico
 
phpConf 2010 Классификация систем хранения
phpConf 2010 Классификация систем храненияphpConf 2010 Классификация систем хранения
phpConf 2010 Классификация систем храненияSlach
 
Chronicle Map — key-value хранилище для трейдинга на Java / Левентов Роман (C...
Chronicle Map — key-value хранилище для трейдинга на Java / Левентов Роман (C...Chronicle Map — key-value хранилище для трейдинга на Java / Левентов Роман (C...
Chronicle Map — key-value хранилище для трейдинга на Java / Левентов Роман (C...Ontico
 
MongoDB basics in Russian
MongoDB basics in RussianMongoDB basics in Russian
MongoDB basics in RussianOleg Kachan
 
MongoDB в продакшен - миф или реальность?
MongoDB в продакшен - миф или реальность?MongoDB в продакшен - миф или реальность?
MongoDB в продакшен - миф или реальность?Alexey Tokar
 
Погружение в виртуальную память и большие страницы / Константин Новаковский (...
Погружение в виртуальную память и большие страницы / Константин Новаковский (...Погружение в виртуальную память и большие страницы / Константин Новаковский (...
Погружение в виртуальную память и большие страницы / Константин Новаковский (...Ontico
 
NoSQL thumbtack experience, Анатолий Никулин
NoSQL thumbtack experience, Анатолий НикулинNoSQL thumbtack experience, Анатолий Никулин
NoSQL thumbtack experience, Анатолий НикулинAnatoliy Nikulin
 
Couchbase, что за зверь и на что способен.
Couchbase, что за зверь и на что способен.Couchbase, что за зверь и на что способен.
Couchbase, что за зверь и на что способен.Alexey Rusnak
 
10 способов достижения HighLoad'а и BigData на ровном месте / Илья Космодемья...
10 способов достижения HighLoad'а и BigData на ровном месте / Илья Космодемья...10 способов достижения HighLoad'а и BigData на ровном месте / Илья Космодемья...
10 способов достижения HighLoad'а и BigData на ровном месте / Илья Космодемья...Ontico
 
MongoDB. Как готовить, с чем едят?
MongoDB. Как готовить, с чем едят?MongoDB. Как готовить, с чем едят?
MongoDB. Как готовить, с чем едят?Tim Mironov
 
MySQL® и MongoDB® - когда что лучше использовать? / Петр Зайцев (Percona)
MySQL® и MongoDB® - когда что лучше использовать? / Петр Зайцев (Percona)MySQL® и MongoDB® - когда что лучше использовать? / Петр Зайцев (Percona)
MySQL® и MongoDB® - когда что лучше использовать? / Петр Зайцев (Percona)Ontico
 

What's hot (20)

NoSQL - взрыв возможностей
NoSQL - взрыв возможностейNoSQL - взрыв возможностей
NoSQL - взрыв возможностей
 
MongoDB первые впечатления
MongoDB первые впечатленияMongoDB первые впечатления
MongoDB первые впечатления
 
SECON.Посиделки #16: Cassandra (презентация)
SECON.Посиделки #16: Cassandra (презентация) SECON.Посиделки #16: Cassandra (презентация)
SECON.Посиделки #16: Cassandra (презентация)
 
Оптимизация программ для современных процессоров и Linux, Александр Крижановс...
Оптимизация программ для современных процессоров и Linux, Александр Крижановс...Оптимизация программ для современных процессоров и Linux, Александр Крижановс...
Оптимизация программ для современных процессоров и Linux, Александр Крижановс...
 
Tempesta FW: challenges, internals, use cases / Александр Крижановский (Tempe...
Tempesta FW: challenges, internals, use cases / Александр Крижановский (Tempe...Tempesta FW: challenges, internals, use cases / Александр Крижановский (Tempe...
Tempesta FW: challenges, internals, use cases / Александр Крижановский (Tempe...
 
NoSQL - коротко о главном / Сергей Туленцев (TextMaster)
NoSQL - коротко о главном / Сергей Туленцев (TextMaster)NoSQL - коротко о главном / Сергей Туленцев (TextMaster)
NoSQL - коротко о главном / Сергей Туленцев (TextMaster)
 
MongoDB. Области применения, преимущества и узкие места, тонкости использован...
MongoDB. Области применения, преимущества и узкие места, тонкости использован...MongoDB. Области применения, преимущества и узкие места, тонкости использован...
MongoDB. Области применения, преимущества и узкие места, тонкости использован...
 
Защита данных и датацентров от катастроф. Подход Nutanix / Максим Шапошников ...
Защита данных и датацентров от катастроф. Подход Nutanix / Максим Шапошников ...Защита данных и датацентров от катастроф. Подход Nutanix / Максим Шапошников ...
Защита данных и датацентров от катастроф. Подход Nutanix / Максим Шапошников ...
 
Принципы и приёмы обработки очередей / Константин Осипов (Mail.ru)
Принципы и приёмы обработки очередей / Константин Осипов (Mail.ru)Принципы и приёмы обработки очередей / Константин Осипов (Mail.ru)
Принципы и приёмы обработки очередей / Константин Осипов (Mail.ru)
 
phpConf 2010 Классификация систем хранения
phpConf 2010 Классификация систем храненияphpConf 2010 Классификация систем хранения
phpConf 2010 Классификация систем хранения
 
Chronicle Map — key-value хранилище для трейдинга на Java / Левентов Роман (C...
Chronicle Map — key-value хранилище для трейдинга на Java / Левентов Роман (C...Chronicle Map — key-value хранилище для трейдинга на Java / Левентов Роман (C...
Chronicle Map — key-value хранилище для трейдинга на Java / Левентов Роман (C...
 
MongoDB basics in Russian
MongoDB basics in RussianMongoDB basics in Russian
MongoDB basics in Russian
 
MongoDB в продакшен - миф или реальность?
MongoDB в продакшен - миф или реальность?MongoDB в продакшен - миф или реальность?
MongoDB в продакшен - миф или реальность?
 
Погружение в виртуальную память и большие страницы / Константин Новаковский (...
Погружение в виртуальную память и большие страницы / Константин Новаковский (...Погружение в виртуальную память и большие страницы / Константин Новаковский (...
Погружение в виртуальную память и большие страницы / Константин Новаковский (...
 
NoSQL thumbtack experience, Анатолий Никулин
NoSQL thumbtack experience, Анатолий НикулинNoSQL thumbtack experience, Анатолий Никулин
NoSQL thumbtack experience, Анатолий Никулин
 
Mysql vs postgresql
Mysql vs postgresqlMysql vs postgresql
Mysql vs postgresql
 
Couchbase, что за зверь и на что способен.
Couchbase, что за зверь и на что способен.Couchbase, что за зверь и на что способен.
Couchbase, что за зверь и на что способен.
 
10 способов достижения HighLoad'а и BigData на ровном месте / Илья Космодемья...
10 способов достижения HighLoad'а и BigData на ровном месте / Илья Космодемья...10 способов достижения HighLoad'а и BigData на ровном месте / Илья Космодемья...
10 способов достижения HighLoad'а и BigData на ровном месте / Илья Космодемья...
 
MongoDB. Как готовить, с чем едят?
MongoDB. Как готовить, с чем едят?MongoDB. Как готовить, с чем едят?
MongoDB. Как готовить, с чем едят?
 
MySQL® и MongoDB® - когда что лучше использовать? / Петр Зайцев (Percona)
MySQL® и MongoDB® - когда что лучше использовать? / Петр Зайцев (Percona)MySQL® и MongoDB® - когда что лучше использовать? / Петр Зайцев (Percona)
MySQL® и MongoDB® - когда что лучше использовать? / Петр Зайцев (Percona)
 

Viewers also liked

Cassandra @JEEConf March 21, 2011 (Kiev, Ukraine)
Cassandra @JEEConf  March 21, 2011 (Kiev, Ukraine)Cassandra @JEEConf  March 21, 2011 (Kiev, Ukraine)
Cassandra @JEEConf March 21, 2011 (Kiev, Ukraine)Pavel Yaskevich
 
Александр Соловьёв, Griddynamics.com
Александр Соловьёв, Griddynamics.comАлександр Соловьёв, Griddynamics.com
Александр Соловьёв, Griddynamics.comOntico
 
Технологии и продукты Oracle для обработки и анализа Больших Данных
Технологии и продукты Oracle для обработки и анализа Больших ДанныхТехнологии и продукты Oracle для обработки и анализа Больших Данных
Технологии и продукты Oracle для обработки и анализа Больших ДанныхAndrey Akulov
 
Создание географически-распределенных датацентров на базе инженерных систем
Создание географически-распределенных датацентров на базе инженерных системСоздание географически-распределенных датацентров на базе инженерных систем
Создание географически-распределенных датацентров на базе инженерных системAndrey Akulov
 
FOSS Sea 2014_DataWarehouse & BigData_Владимир Слободянюк ( Luxoft)
FOSS Sea 2014_DataWarehouse & BigData_Владимир Слободянюк ( Luxoft)FOSS Sea 2014_DataWarehouse & BigData_Владимир Слободянюк ( Luxoft)
FOSS Sea 2014_DataWarehouse & BigData_Владимир Слободянюк ( Luxoft)GeeksLab Odessa
 
SSAS: multidemention vs tabular mode
SSAS: multidemention vs tabular modeSSAS: multidemention vs tabular mode
SSAS: multidemention vs tabular modeAndrey Korshikov
 
DataTalks #4: Построение хранилища данных на основе платформы hadoop / Игорь ...
DataTalks #4: Построение хранилища данных на основе платформы hadoop / Игорь ...DataTalks #4: Построение хранилища данных на основе платформы hadoop / Игорь ...
DataTalks #4: Построение хранилища данных на основе платформы hadoop / Игорь ...WG_ Events
 
За гранью NoSQL: NewSQL на Cassandra
За гранью NoSQL: NewSQL на CassandraЗа гранью NoSQL: NewSQL на Cassandra
За гранью NoSQL: NewSQL на Cassandraodnoklassniki.ru
 
Движение по хрупкому дну / Сергей Караткевич (servers.ru)
Движение по хрупкому дну / Сергей Караткевич (servers.ru)Движение по хрупкому дну / Сергей Караткевич (servers.ru)
Движение по хрупкому дну / Сергей Караткевич (servers.ru)Ontico
 
Data Lake vs. Data Warehouse: Which is Right for Healthcare?
Data Lake vs. Data Warehouse: Which is Right for Healthcare?Data Lake vs. Data Warehouse: Which is Right for Healthcare?
Data Lake vs. Data Warehouse: Which is Right for Healthcare?Health Catalyst
 

Viewers also liked (11)

Cassandra @JEEConf March 21, 2011 (Kiev, Ukraine)
Cassandra @JEEConf  March 21, 2011 (Kiev, Ukraine)Cassandra @JEEConf  March 21, 2011 (Kiev, Ukraine)
Cassandra @JEEConf March 21, 2011 (Kiev, Ukraine)
 
Александр Соловьёв, Griddynamics.com
Александр Соловьёв, Griddynamics.comАлександр Соловьёв, Griddynamics.com
Александр Соловьёв, Griddynamics.com
 
Технологии и продукты Oracle для обработки и анализа Больших Данных
Технологии и продукты Oracle для обработки и анализа Больших ДанныхТехнологии и продукты Oracle для обработки и анализа Больших Данных
Технологии и продукты Oracle для обработки и анализа Больших Данных
 
Создание географически-распределенных датацентров на базе инженерных систем
Создание географически-распределенных датацентров на базе инженерных системСоздание географически-распределенных датацентров на базе инженерных систем
Создание географически-распределенных датацентров на базе инженерных систем
 
FOSS Sea 2014_DataWarehouse & BigData_Владимир Слободянюк ( Luxoft)
FOSS Sea 2014_DataWarehouse & BigData_Владимир Слободянюк ( Luxoft)FOSS Sea 2014_DataWarehouse & BigData_Владимир Слободянюк ( Luxoft)
FOSS Sea 2014_DataWarehouse & BigData_Владимир Слободянюк ( Luxoft)
 
SSAS: multidemention vs tabular mode
SSAS: multidemention vs tabular modeSSAS: multidemention vs tabular mode
SSAS: multidemention vs tabular mode
 
DataTalks #4: Построение хранилища данных на основе платформы hadoop / Игорь ...
DataTalks #4: Построение хранилища данных на основе платформы hadoop / Игорь ...DataTalks #4: Построение хранилища данных на основе платформы hadoop / Игорь ...
DataTalks #4: Построение хранилища данных на основе платформы hadoop / Игорь ...
 
3 ibm bdw2015
3 ibm bdw20153 ibm bdw2015
3 ibm bdw2015
 
За гранью NoSQL: NewSQL на Cassandra
За гранью NoSQL: NewSQL на CassandraЗа гранью NoSQL: NewSQL на Cassandra
За гранью NoSQL: NewSQL на Cassandra
 
Движение по хрупкому дну / Сергей Караткевич (servers.ru)
Движение по хрупкому дну / Сергей Караткевич (servers.ru)Движение по хрупкому дну / Сергей Караткевич (servers.ru)
Движение по хрупкому дну / Сергей Караткевич (servers.ru)
 
Data Lake vs. Data Warehouse: Which is Right for Healthcare?
Data Lake vs. Data Warehouse: Which is Right for Healthcare?Data Lake vs. Data Warehouse: Which is Right for Healthcare?
Data Lake vs. Data Warehouse: Which is Right for Healthcare?
 

Similar to Введение в Apache Cassandra

Data as a service base
Data as a service baseData as a service base
Data as a service baseSergii Stukan
 
Andrii Bereznikov ITEM 2018
Andrii Bereznikov ITEM 2018Andrii Bereznikov ITEM 2018
Andrii Bereznikov ITEM 2018ITEM
 
Максим Шапошников, Nutanix
Максим Шапошников, NutanixМаксим Шапошников, Nutanix
Максим Шапошников, NutanixOntico
 
Introduction to MongoDB
Introduction to MongoDBIntroduction to MongoDB
Introduction to MongoDBIurii Ogiienko
 
Cравнительный анализ хранилищ данных (Олег Царев, Кирилл Коринский)
Cравнительный анализ хранилищ данных (Олег Царев, Кирилл Коринский)Cравнительный анализ хранилищ данных (Олег Царев, Кирилл Коринский)
Cравнительный анализ хранилищ данных (Олег Царев, Кирилл Коринский)Ontico
 
Новые возможности распределенной обработки данных в памяти (Coherence)
Новые возможности распределенной обработки данных в памяти (Coherence)Новые возможности распределенной обработки данных в памяти (Coherence)
Новые возможности распределенной обработки данных в памяти (Coherence)Andrey Akulov
 
Hosting for forbes.ru_
Hosting for forbes.ru_Hosting for forbes.ru_
Hosting for forbes.ru_drupalconf
 
Проектируем облачный веб-сервис "по-взрослому" (Сергей Рыжиков)
Проектируем облачный веб-сервис "по-взрослому" (Сергей Рыжиков)Проектируем облачный веб-сервис "по-взрослому" (Сергей Рыжиков)
Проектируем облачный веб-сервис "по-взрослому" (Сергей Рыжиков)Ontico
 
Велосипед уже изобретен. Что умеют промышленные СХД? / Антон Жбанков (Nutanix)
Велосипед уже изобретен. Что умеют промышленные СХД? / Антон Жбанков (Nutanix)Велосипед уже изобретен. Что умеют промышленные СХД? / Антон Жбанков (Nutanix)
Велосипед уже изобретен. Что умеют промышленные СХД? / Антон Жбанков (Nutanix)Ontico
 
Сравнительный анализ хранилищ данных, Олег Царев, Кирилл Коринский
Сравнительный анализ хранилищ данных, Олег Царев, Кирилл КоринскийСравнительный анализ хранилищ данных, Олег Царев, Кирилл Коринский
Сравнительный анализ хранилищ данных, Олег Царев, Кирилл КоринскийFuenteovejuna
 
Машины баз данных: таксономия, анатомия, эволюция, ареал, воспроизведение / А...
Машины баз данных: таксономия, анатомия, эволюция, ареал, воспроизведение / А...Машины баз данных: таксономия, анатомия, эволюция, ареал, воспроизведение / А...
Машины баз данных: таксономия, анатомия, эволюция, ареал, воспроизведение / А...Ontico
 
Машины баз данных на Web-scale IT — 2017 (РИТ++)
Машины баз данных на Web-scale IT — 2017 (РИТ++)Машины баз данных на Web-scale IT — 2017 (РИТ++)
Машины баз данных на Web-scale IT — 2017 (РИТ++)Andrei Nikolaenko
 
MySQL - checklist для новичка в Highload
MySQL - checklist для новичка в HighloadMySQL - checklist для новичка в Highload
MySQL - checklist для новичка в HighloadSveta Smirnova
 
MySQL: чек-лист для новичка в highload / Анастасия Распопина, Света Смирнова ...
MySQL: чек-лист для новичка в highload / Анастасия Распопина, Света Смирнова ...MySQL: чек-лист для новичка в highload / Анастасия Распопина, Света Смирнова ...
MySQL: чек-лист для новичка в highload / Анастасия Распопина, Света Смирнова ...Ontico
 
MySQL: чек-лист для новичка в highload (Cвета Cмирнова, Aнастасия Распопина ...
MySQL:  чек-лист для новичка в highload (Cвета Cмирнова, Aнастасия Распопина ...MySQL:  чек-лист для новичка в highload (Cвета Cмирнова, Aнастасия Распопина ...
MySQL: чек-лист для новичка в highload (Cвета Cмирнова, Aнастасия Распопина ...Anastasia Rostova
 
Дмитрий Лазаренко-«Живая миграция и отказоустойчивость контейнеров в гибридно...
Дмитрий Лазаренко-«Живая миграция и отказоустойчивость контейнеров в гибридно...Дмитрий Лазаренко-«Живая миграция и отказоустойчивость контейнеров в гибридно...
Дмитрий Лазаренко-«Живая миграция и отказоустойчивость контейнеров в гибридно...Tanya Denisyuk
 

Similar to Введение в Apache Cassandra (20)

Nosql and Mongodb
Nosql and MongodbNosql and Mongodb
Nosql and Mongodb
 
Cassandra db
Cassandra dbCassandra db
Cassandra db
 
02 1c-bitrix-cloud-storage
02 1c-bitrix-cloud-storage02 1c-bitrix-cloud-storage
02 1c-bitrix-cloud-storage
 
Data as a service base
Data as a service baseData as a service base
Data as a service base
 
Andrii Bereznikov ITEM 2018
Andrii Bereznikov ITEM 2018Andrii Bereznikov ITEM 2018
Andrii Bereznikov ITEM 2018
 
Максим Шапошников, Nutanix
Максим Шапошников, NutanixМаксим Шапошников, Nutanix
Максим Шапошников, Nutanix
 
Веб-кластер
Веб-кластерВеб-кластер
Веб-кластер
 
Introduction to MongoDB
Introduction to MongoDBIntroduction to MongoDB
Introduction to MongoDB
 
Cравнительный анализ хранилищ данных (Олег Царев, Кирилл Коринский)
Cравнительный анализ хранилищ данных (Олег Царев, Кирилл Коринский)Cравнительный анализ хранилищ данных (Олег Царев, Кирилл Коринский)
Cравнительный анализ хранилищ данных (Олег Царев, Кирилл Коринский)
 
Новые возможности распределенной обработки данных в памяти (Coherence)
Новые возможности распределенной обработки данных в памяти (Coherence)Новые возможности распределенной обработки данных в памяти (Coherence)
Новые возможности распределенной обработки данных в памяти (Coherence)
 
Hosting for forbes.ru_
Hosting for forbes.ru_Hosting for forbes.ru_
Hosting for forbes.ru_
 
Проектируем облачный веб-сервис "по-взрослому" (Сергей Рыжиков)
Проектируем облачный веб-сервис "по-взрослому" (Сергей Рыжиков)Проектируем облачный веб-сервис "по-взрослому" (Сергей Рыжиков)
Проектируем облачный веб-сервис "по-взрослому" (Сергей Рыжиков)
 
Велосипед уже изобретен. Что умеют промышленные СХД? / Антон Жбанков (Nutanix)
Велосипед уже изобретен. Что умеют промышленные СХД? / Антон Жбанков (Nutanix)Велосипед уже изобретен. Что умеют промышленные СХД? / Антон Жбанков (Nutanix)
Велосипед уже изобретен. Что умеют промышленные СХД? / Антон Жбанков (Nutanix)
 
Сравнительный анализ хранилищ данных, Олег Царев, Кирилл Коринский
Сравнительный анализ хранилищ данных, Олег Царев, Кирилл КоринскийСравнительный анализ хранилищ данных, Олег Царев, Кирилл Коринский
Сравнительный анализ хранилищ данных, Олег Царев, Кирилл Коринский
 
Машины баз данных: таксономия, анатомия, эволюция, ареал, воспроизведение / А...
Машины баз данных: таксономия, анатомия, эволюция, ареал, воспроизведение / А...Машины баз данных: таксономия, анатомия, эволюция, ареал, воспроизведение / А...
Машины баз данных: таксономия, анатомия, эволюция, ареал, воспроизведение / А...
 
Машины баз данных на Web-scale IT — 2017 (РИТ++)
Машины баз данных на Web-scale IT — 2017 (РИТ++)Машины баз данных на Web-scale IT — 2017 (РИТ++)
Машины баз данных на Web-scale IT — 2017 (РИТ++)
 
MySQL - checklist для новичка в Highload
MySQL - checklist для новичка в HighloadMySQL - checklist для новичка в Highload
MySQL - checklist для новичка в Highload
 
MySQL: чек-лист для новичка в highload / Анастасия Распопина, Света Смирнова ...
MySQL: чек-лист для новичка в highload / Анастасия Распопина, Света Смирнова ...MySQL: чек-лист для новичка в highload / Анастасия Распопина, Света Смирнова ...
MySQL: чек-лист для новичка в highload / Анастасия Распопина, Света Смирнова ...
 
MySQL: чек-лист для новичка в highload (Cвета Cмирнова, Aнастасия Распопина ...
MySQL:  чек-лист для новичка в highload (Cвета Cмирнова, Aнастасия Распопина ...MySQL:  чек-лист для новичка в highload (Cвета Cмирнова, Aнастасия Распопина ...
MySQL: чек-лист для новичка в highload (Cвета Cмирнова, Aнастасия Распопина ...
 
Дмитрий Лазаренко-«Живая миграция и отказоустойчивость контейнеров в гибридно...
Дмитрий Лазаренко-«Живая миграция и отказоустойчивость контейнеров в гибридно...Дмитрий Лазаренко-«Живая миграция и отказоустойчивость контейнеров в гибридно...
Дмитрий Лазаренко-«Живая миграция и отказоустойчивость контейнеров в гибридно...
 

Введение в Apache Cassandra

  • 1. Введение в Apache Cassandra Александр Тивельков Mirantis Cloud Service © MIRANTIS 2013 PAGE 1
  • 2. «Без умолку безумная девица Кричала: "Ясно вижу Трою павшей в прах!" Но ясновидцев - впрочем, как и очевидцев - Во все века сжигали люди на кострах» В. Высоцкий. Песня о вещей Кассандре «...Он у Приама Кассандры, прекраснейшей дочери старца, Гордый просил без даров, но сам совершить обещал он Подвиг великий: из Трои изгнать меднолатных данаев. Старец ему обещал и уже за него согласился Выдать Кассандру,- и ратовал он, на обет положася» Гомер. Иллиада © MIRANTIS 2013 PAGE 2
  • 3. О чем вообще речь? 800 700 600 500 400 Объем данных в сети, ЭБ 300 200 100 0 1998 2000 2002 2004 2006 2008 2010 2012 2014 © MIRANTIS 2013 PAGE 3
  • 4. Масштабирование © MIRANTIS 2013 PAGE 4
  • 5. Бывает и так © MIRANTIS 2013 PAGE 5
  • 6. NoSQL  HBase  Hypertable  MongoDB  HyperGraphDB  Riak  Memcached  Voldemort  Tokyo Cabinet  Neo4J  Redis Cassandra CouchDB   © MIRANTIS 2013 PAGE 6
  • 7. CAP-теорема Брюера © MIRANTIS 2013 PAGE 7
  • 8. CAP-теорема Брюера © MIRANTIS 2013 PAGE 8
  • 9. CAP-теорема Брюера © MIRANTIS 2013 PAGE 9
  • 10. NoSQLBigData  HBase  Hypertable  MongoDB  HyperGraphDB  Riak  Memcached  Voldemort  Tokyo Cabinet  Neo4J  Redis Cassandra CouchDB   © MIRANTIS 2013 PAGE 10
  • 11. Amazon Dynamo + Google BigTable = ??? Из Amazon Dynamo возьмем инфраструктуру:  Согласованное хэширование PK  Шардирование ...а из Google BigTable оставим Репликацию по кольцу схему данных:  Роутинг за О(1) Схему данных, состоящую из  «семейств колонок» In-memory хранение данных в Memtable On-disk хранение данных в SSTables © MIRANTIS 2013 PAGE 11
  • 12. Amazon Dynamo + Google BigTable = Apache Cassandra  Разрабатывалась в Facebook до 2008го года  Выпущена в свободное open-source плавание на GoogleCode в июле 2008 года  С марта 2009 года — в инкубаторе проектов Apache Software Foundation  Выделение в полноценный продукт — 17 февраля 2010  6 основных релизов с тех пор... Последний активный релиз — 2 января 2013 года, версия 1.2 © MIRANTIS 2013 PAGE 12
  • 13. Apache Cassandra – это... Распределенное, отказоустойчивое, масштабируемое, колонко-ориентированное, управляемо-согласованное хранилище данных. © MIRANTIS 2013 PAGE 13
  • 14. Apache Cassandra – это... Распределенное, отказоустойчивое, масштабируемое, колонко-ориентированное, управляемо-согласованное хранилище данных. © MIRANTIS 2013 PAGE 14
  • 15. Топология Token Ring  Кластер из проивольного количества узлов (ну, от 1 до 2127-1 :))  Каждому узлу сопоставляется токен в некоем пространстве значений  Хэш-ключ записи лежит в том же пространстве значений токенов  Запись направляется на ноду с ближайшим к этому значению токеном  Последующая репликация поддается настройке и учитывает сетевую топологию кластера © MIRANTIS 2013 PAGE 15
  • 16. Топология Token Ring © MIRANTIS 2013 PAGE 16
  • 17. Apache Cassandra – это... Распределенное, отказоустойчивое, масштабируемое, колонко-ориентированное, управляемо-согласованное хранилище данных. © MIRANTIS 2013 PAGE 17
  • 18. Отказоустойчивость  Все узлы равны — нету «главной ноды», «управляющей ноды», «мастер-узла» и прочих Single-point-of-failure  При выбывании ноды перебалансировка кольца происходит так, чтобы минимизировать перемещение данных  Функция Read-Repair позволяет восстановить устаревшие данные после возвращения ноды в строй при наличии достаточного количества реплик © MIRANTIS 2013 PAGE 18
  • 19. Apache Cassandra – это... Распределенное, отказоустойчивое, масштабируемое, колонко-ориентированное, управляемо-согласованное хранилище данных. © MIRANTIS 2013 PAGE 19
  • 20. Мсштабируем • Горизонтально • Легко и просто • Автоматизированно © MIRANTIS 2013 PAGE 20
  • 21. Apache Cassandra – это... Распределенное, отказоустойчивое, масштабируемое, колонко-ориентированное, управляемо-согласованное хранилище данных. © MIRANTIS 2013 PAGE 21
  • 22. Модель данных  Нет фиксированной схемы  ALTER TABLE? Забудьте как страшный сон  Разреженные (sparse) таблицы — у каждой строки свой набор колонок  Имена колонок — любого типа данных, в том числе композитные  Всѐ что нужно выбрать — порядок сортировки колонок в «таблице» © MIRANTIS 2013 PAGE 22
  • 23. Модель данных  Keyspace  ColumnFamily  Row  Ключ  Колонка  Имя  Значение  Колонка … … © MIRANTIS 2013 PAGE 23
  • 24. Модель данных • Ячейка © MIRANTIS 2013 PAGE 24
  • 25. Модель данных • Ячейка • Строка © MIRANTIS 2013 PAGE 25
  • 26. Модель данных • Ячейка • Строка • Column Family © MIRANTIS 2013 PAGE 26
  • 27. Запись данных • Данные сохраняются в in-memory структуру данных — memtable — и в commit log на диск • Периодически memtable сохраняется на диск в SSTable файл (SortedStringsTable). Commit log при этом очищается. • SSTable — immutable, т. е. каждая операция flush создает новый файл © MIRANTIS 2013 PAGE 27
  • 28. Запись данных © MIRANTIS 2013 PAGE 28
  • 29. Чтение данных  Данные читаются и из memtable (из памяти), и с диска (из SSTable-файлов)  Так как SSTable-файл являются immutable, то различные колонки одной строки могут находиться в разных файлах  Существуют несколько механизмов кэширования и дополнительной индексации © MIRANTIS 2013 PAGE 29
  • 30. Чтение данных © MIRANTIS 2013 PAGE 30
  • 31. Apache Cassandra – это... Распределенное, отказоустойчивое, масштабируемое, колонко-ориентированное, управляемо-согласованное хранилище данных. © MIRANTIS 2013 PAGE 31
  • 32. Совсем без "С" – плохо © MIRANTIS 2013 PAGE 32
  • 33. Eventual Consistency Невозможно гарантировать, что непосредственно после завершения обновления данных операция чтения вернѐт обновленное значение. Гарантируется, что при отсутствии повторных обновлений через некоторое время данный станут доступны. Окно несогласованности(inconsistency window) - время, проходящее между операцией обновления и доступностью обновленных данных для чтения. Задача: минимизировать окно несогласованности при минимальных жертвах со стороны доступности и устойчивости к потере связи между сегментами сети. © MIRANTIS 2013 PAGE 33
  • 34. Управляемая согласованность  Replication Factor (N) - количество узлов хранящих реплики данных  Read Consistency Level (R) — количество (идентичных) реплик данных, которых необходимо получить для того, чтобы операция чтения считалась успешной  Write Consistency Level (W) — количество реплик данных, которые необходимо успешно записать на узлах для того, чтобы операция записи считалась успешной © MIRANTIS 2013 PAGE 34
  • 35. Управляемая согласованность R + W >N © MIRANTIS 2013 PAGE 35
  • 36. Реализация в Cassandra  Replication Factor (N) задается на уровне конфигурации  Consistency Level можно установить отдельно для каждой операции © MIRANTIS 2013 PAGE 36
  • 37. Реализация в Cassandra Запись Чтение Уровень Значение Уровень Значение Zero Пустил-и-забыл One Чтение одной реплики Any Доставка на кластер Quorum Чтение N/2+1реплик One Коммит на одну ноду All Чтение всех реплик Quorum Коммит на N/2+1 нод All Коммит на все ноды © MIRANTIS 2013 PAGE 37
  • 38. Реализация в Cassandra Запись Чтение Уровень Значение Уровень Значение Zero Пустил-и-забыл One Чтение одной реплики Any Доставка на кластер Quorum Чтение N/2+1реплик One Коммит на одну ноду All Чтение всех реплик Quorum Коммит на N/2+1 нод All Коммит на все ноды Слабая согласованность © MIRANTIS 2013 PAGE 38
  • 39. Реализация в Cassandra Запись Чтение Уровень Значение Уровень Значение Zero Пустил-и-забыл One Чтение одной реплики Any Доставка на кластер Quorum Чтение N/2+1реплик One Коммит на одну ноду All Чтение всех реплик Quorum Коммит на N/2+1 нод All Коммит на все ноды Сильная согласованность © MIRANTIS 2013 PAGE 39
  • 40. Использование • Низкий уровень • Thrift – интерфейсный протокол низкого уровня • CQL и cqlsh – язык запросов и shell для их выполнения • Cassandra-cli – простая утилита для простых запросов • Высокий уровень • Десятки разных клиентов для разных платформ: • http://wiki.apache.org/cassandra/ClientOptions • MirantisCassandrom – в следующей части © MIRANTIS 2013 PAGE 40
  • 41. Спасибо за внимание Вопросы? © MIRANTIS 2013 PAGE 41