SlideShare a Scribd company logo
Введение в 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

PPTX
Cassandra: быстрая запись данных в высоконагруженных системах
PPT
Алексей Чумаков. Apache Cassandra на реальном проекте
PPTX
Apache Cassandra. Ещё одно NoSQL хранилище (Владимир Климонтович)
PDF
Класс!ная Cassandra
PDF
Выбор NoSQL базы данных для вашего проекта: "Не в свои сани не садись"
PPTX
Масштабирование баз данных. (Database Scalability)
PPTX
СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL"
PPTX
No sql.mongodb scaling
Cassandra: быстрая запись данных в высоконагруженных системах
Алексей Чумаков. Apache Cassandra на реальном проекте
Apache Cassandra. Ещё одно NoSQL хранилище (Владимир Климонтович)
Класс!ная Cassandra
Выбор NoSQL базы данных для вашего проекта: "Не в свои сани не садись"
Масштабирование баз данных. (Database Scalability)
СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL"
No sql.mongodb scaling

What's hot (20)

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

Viewers also liked (11)

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

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

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

Введение в 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