SlideShare a Scribd company logo
1 of 39
Apache Cassandra Еще одно NoSQLхранилище
О чем будет идти речь? Пару слов про NoSQL Amazon Dynamo Google Big Table Cassandra снаружи Cassandra кассандра изнутри Наш опыт использования
NoSQL - WTF? Казалось бы, причем тут ЛужковSQL? Абсолютно не причем! SQL – просто язык запросов Под “SQL” понимают MySQL/InnoDB, MSSQL и аналоги (row oriented, b-tree индексы). NoSQL== No MySQL Некоторые из NoSQLхранилищ предоставляют SQL-синтаксис. Например, Apache Hive
CAP-теорема Consistency: в один момент времени, все клиенты видят один и тот же набор данных Availability: на каждый запрос будет дан ответ (включая сообщение об ошибке) Partition tolerance: система продолжает работать при нарушении связи между любыми двумя узлами Можно выбрать только два!
NoSQLхранилища – тысячи их! MongoDBтот же MySQL, только в профиль.  Apache Hadoop: offline, MapReduce Google BigTable family: Hbase Amazon Dynamo: Riak Google BigTable + Amazon Dynamo= Apache Cassandra
Dynamo
Amazon Dynamo Описана в статье 2007-ого года Две операции: get(key), put(key, value) Область использования в Amazon: session management, shopping cart, etc Полная распределенность Отсутствует master node: клиент общается сразу со всеми серверами в кластере Ближайший родственник – DHT в BitTorrent
Token Ring
Replication
Запись Клиент не знает ничего о топологии кластера Команда на запись отправляется на произвольный сервер, который становится координатором данной операции Координатор записывает данные на нужные сервера Клиент выбирает критерий успешности записи Если одна из реплик недоступна, запись будет завершена позже
Чтение Команда на чтение оправляется произвольному серверу в кластере Сервер знает опрашивает нужные реплики Критерий успешности чтений (количество живых реплик) настраивается клиентом
BigTable
BigTable У каждой строки может быть индивидуальный набор колонок Схема данных отсутствует
Пример схемы данных Будем хранить список друзей в социальной сети Ключ – имя пользователя Колонка – тоже имя пользователя! Значение: 1/2/3 в зависимости от взаимности дружбы f(key, column_name) ->column_value – более удобное представление модели данных SELECT WHERE key >= start AND key <= end AND name<=maxColumn AND name<minColumn
Хранение данных
Данные внутри tablet server’а Memtable – данные, которые были добавлены недавно Memtableдублируется commit log’ом на диске SSTable – неизменяемая структура данных на диске с O(1) временем доступа к ключу Bloomfilterдля каждой SSTable SSTable compaction – переодическийmerge маленьких SSTable
Тандем BigTableи Dynamo
Что взяли из Dynamo Token ring Алгоритм записи/чтения
Что взяли из BigTable? Модель данных: key/column Локальную структуру данных на серверах Memtable/commit log – временное хранилище SSTable/Bloomfilter – постоянное хранилище SSTable compaction Вместо put/get доступны сложные запросы: SELECT WHERE key>=start AND key <= end AND columnName >= c1 AND columnName <= c2 Индексы!
Терминология Cassandra Cluster. Глобальные настройки: тип ключей, partitioning (ordered, md5), размер кэша, топология кластера Keyspace. Аналог в MySQL: база данных. Настройки уровня keyspace: replication factor Column family. Аналог в MySQL: таблица.размер кэша, индексы Super columns.
Super column Еще один уровень вложенности
Операции mutation(key, column, value)  get(key, column) multi_get([k1, k2,…], column) get_slice(key, column_predicate). column_predicate: набор колонок или интервал get_range_slices(start_key, end_key, column_predicate) multi_get_slice Counters: add/remove(key, column)
Запись Команда идет на произвольный сервер в кластере. Сервер находит нужные реплики (ReplicationStrategy) Сервер сохраняет данные локально(Hinted handoff) Критерий успешности записи определяет клиент согласно настройки ConsistencyLevel
Репликация: один датацентр
Репликация: два датацентра
Запись: внутренности Memtable: хранилище новых записей. Настраиваемый flush-критерий (по таймауту, по размеру) Commit-log: дублирует memtableна случай падения сервера Memtable flush -> SSTable SSTable: data + index + bloomfilter SSTable compaction – борьба с фрагметнацией
Чтение Команду на чтение обрабатывает произвольный сервер Сервер определяет ближайшую реплику на основе настройки snitch: Simple, Topology, Dynamic Клиент определяет критерий успешности чтения Read repair (optional): убедится, что все реплики содержат свежие данные
Конфликты Каждое значение в колонке имеет timstamp Timestamp проставляется клиентом как текущее время Можно переопределить timestamp на любое 64-х битное число Клиент получает всегда последний timestamp
Кеширование запросов Key cache: кеширование позиции ключей внутри SSTable Row cache: кеширование ключей и их значений в памяти Принцип кеширования: LIFO. Настраивается для каждой column family отдельно Но! Кассандра использует mmapдля чтения файлов Настройки кеширования использовать не рекомендуется. Лучше полагаться на кеширование файловой системы
Индексы Secondary Indexes: на columns, но не на super columns! При полностью распределенной архитектуре сложно реализовать индексы Чтобы найти значение по индексу, нужно опросить все сервера Ограничение реализации: можно делать запросы только по строгому сравнению (SELECT … WHERE column>value– не поддерживается) Индексы сильно замедляют вставку данных Итого: индексы довольно бесполезная фича
Масштабирование: как добавить сервера в кластер? У каждого сервера есть операцияmove token. Можно переназначит token у любого сервера Топология кластера измениться, миграция данных будет происходить в фоне Пока миграция не закончена, сервер будет отвечать за старый кусок данных Аналогично будет отработана ситуация добавления нового сервера в token ring
Проще всего масштабироватьсяв 2 раза
Преимущества Быстрый write, особенно когда не нужна consistency Легкость в администрировании. Один daemon с одним конфигурационным файлом В HBase: четыре daemon’а на каждый сервер
Недостатки Плохо реализован range scan: кассандра не умеет передавать данные поточно. Слишком много настроек вынесено на cluster-level: вид и стратегия хранения ключей, и т.д. Compaction существенно замедляет запросы Протоколобщения между нодами: Thrift
Наш опыт Храним события в online рекламы: показы/клики/конверсии Типичный клиент: 1 миллиард событий в месяц, 100 миллионов уникальных пользователей (ключей) Ключ: ID пользователя. Имя колонки:ID  события Вопрос N1: сколько уникальных пользователей было в каждом городе Вопрос N2: сколько уникальных пользователей видели баннер X, но не видели баннер Y; какое распределение таких пользователей по городам Вопрос N3: на какие объявления нажимал конкретный пользователь
Плюсы и минусы + Быстрая запись, группировка по пользователям во время записи + Нет проблемы дубликации данных - Плохо реализованный range scan - Нельзя выполнять логику прямо на серверах
Решение проблем Аггрегация данных на сервере. Опции: Hadoop/MapReduce, кастомное решение Минусы Hadoop: операционные расходы, возможность использовать лишь один column family как источник данных Свое решение: кастомный демон на каждом сервере (аналог map), финальная аггрегация на клиенте.
Наши цифры на тестовых данных Кластер: 3 x (m1.large EC2: 7.5Gb RAM, 2CPU) Скорость записи: 12тысяч событий в секунду Скорость чтения: 9 тысяч событий в секунду Объем данных: 600Gb за 1.5 месяца, 1.5 миллиарда событий (значений колонок), 100 миллионов ключей

More Related Content

What's hot

Защита данных и датацентров от катастроф. Подход Nutanix / Максим Шапошников ...
Защита данных и датацентров от катастроф. Подход Nutanix / Максим Шапошников ...Защита данных и датацентров от катастроф. Подход Nutanix / Максим Шапошников ...
Защита данных и датацентров от катастроф. Подход Nutanix / Максим Шапошников ...Ontico
 
Выбор NoSQL базы данных для вашего проекта: "Не в свои сани не садись"
Выбор NoSQL базы данных для вашего проекта: "Не в свои сани не садись"Выбор NoSQL базы данных для вашего проекта: "Не в свои сани не садись"
Выбор NoSQL базы данных для вашего проекта: "Не в свои сани не садись"Alexey Zinoviev
 
MongoDB. Области применения, преимущества и узкие места, тонкости использован...
MongoDB. Области применения, преимущества и узкие места, тонкости использован...MongoDB. Области применения, преимущества и узкие места, тонкости использован...
MongoDB. Области применения, преимущества и узкие места, тонкости использован...phpdevby
 
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 первые впечатления
MongoDB первые впечатленияMongoDB первые впечатления
MongoDB первые впечатленияfudz1k
 
Flashcache в mamba.ru / Яковлев Александр Юрьевич (ЗАО Мамба)
Flashcache в mamba.ru / Яковлев Александр Юрьевич (ЗАО Мамба)Flashcache в mamba.ru / Яковлев Александр Юрьевич (ЗАО Мамба)
Flashcache в mamba.ru / Яковлев Александр Юрьевич (ЗАО Мамба)Ontico
 
MongoDB basics in Russian
MongoDB basics in RussianMongoDB basics in Russian
MongoDB basics in RussianOleg Kachan
 
"YT — новая платформа распределённых вычислений". Максим Бабенко, Яндекс.
"YT — новая платформа распределённых вычислений". Максим Бабенко, Яндекс. "YT — новая платформа распределённых вычислений". Максим Бабенко, Яндекс.
"YT — новая платформа распределённых вычислений". Максим Бабенко, Яндекс. Yandex
 
MongoDB в продакшен - миф или реальность?
MongoDB в продакшен - миф или реальность?MongoDB в продакшен - миф или реальность?
MongoDB в продакшен - миф или реальность?Alexey Tokar
 
СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL"
СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL"СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL"
СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL"Technopark
 
NoSQL - взрыв возможностей
NoSQL - взрыв возможностейNoSQL - взрыв возможностей
NoSQL - взрыв возможностейAleksey Solntsev
 
phpConf 2010 Классификация систем хранения
phpConf 2010 Классификация систем храненияphpConf 2010 Классификация систем хранения
phpConf 2010 Классификация систем храненияSlach
 
Погружение в виртуальную память и большие страницы / Константин Новаковский (...
Погружение в виртуальную память и большие страницы / Константин Новаковский (...Погружение в виртуальную память и большие страницы / Константин Новаковский (...
Погружение в виртуальную память и большие страницы / Константин Новаковский (...Ontico
 
Лекция 10. Apache Mahout
Лекция 10. Apache MahoutЛекция 10. Apache Mahout
Лекция 10. Apache MahoutTechnopark
 
Чему мы научились разрабатывая микросервисы?
Чему мы научились разрабатывая микросервисы?Чему мы научились разрабатывая микросервисы?
Чему мы научились разрабатывая микросервисы?Vadim Madison
 
ClickHouse: очень быстро и очень удобно / Виктор Тарнавский, Алексей Миловидо...
ClickHouse: очень быстро и очень удобно / Виктор Тарнавский, Алексей Миловидо...ClickHouse: очень быстро и очень удобно / Виктор Тарнавский, Алексей Миловидо...
ClickHouse: очень быстро и очень удобно / Виктор Тарнавский, Алексей Миловидо...Ontico
 

What's hot (20)

Защита данных и датацентров от катастроф. Подход Nutanix / Максим Шапошников ...
Защита данных и датацентров от катастроф. Подход Nutanix / Максим Шапошников ...Защита данных и датацентров от катастроф. Подход Nutanix / Максим Шапошников ...
Защита данных и датацентров от катастроф. Подход Nutanix / Максим Шапошников ...
 
Выбор NoSQL базы данных для вашего проекта: "Не в свои сани не садись"
Выбор NoSQL базы данных для вашего проекта: "Не в свои сани не садись"Выбор NoSQL базы данных для вашего проекта: "Не в свои сани не садись"
Выбор NoSQL базы данных для вашего проекта: "Не в свои сани не садись"
 
SECON.Посиделки #16: Cassandra (презентация)
SECON.Посиделки #16: Cassandra (презентация) SECON.Посиделки #16: Cassandra (презентация)
SECON.Посиделки #16: Cassandra (презентация)
 
MongoDB. Области применения, преимущества и узкие места, тонкости использован...
MongoDB. Области применения, преимущества и узкие места, тонкости использован...MongoDB. Области применения, преимущества и узкие места, тонкости использован...
MongoDB. Области применения, преимущества и узкие места, тонкости использован...
 
No sql.mongodb scaling
No sql.mongodb scalingNo sql.mongodb scaling
No sql.mongodb scaling
 
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 первые впечатления
MongoDB первые впечатленияMongoDB первые впечатления
MongoDB первые впечатления
 
Flashcache в mamba.ru / Яковлев Александр Юрьевич (ЗАО Мамба)
Flashcache в mamba.ru / Яковлев Александр Юрьевич (ЗАО Мамба)Flashcache в mamba.ru / Яковлев Александр Юрьевич (ЗАО Мамба)
Flashcache в mamba.ru / Яковлев Александр Юрьевич (ЗАО Мамба)
 
MongoDB basics in Russian
MongoDB basics in RussianMongoDB basics in Russian
MongoDB basics in Russian
 
"YT — новая платформа распределённых вычислений". Максим Бабенко, Яндекс.
"YT — новая платформа распределённых вычислений". Максим Бабенко, Яндекс. "YT — новая платформа распределённых вычислений". Максим Бабенко, Яндекс.
"YT — новая платформа распределённых вычислений". Максим Бабенко, Яндекс.
 
MongoDB в продакшен - миф или реальность?
MongoDB в продакшен - миф или реальность?MongoDB в продакшен - миф или реальность?
MongoDB в продакшен - миф или реальность?
 
СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL"
СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL"СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL"
СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL"
 
NoSQL - взрыв возможностей
NoSQL - взрыв возможностейNoSQL - взрыв возможностей
NoSQL - взрыв возможностей
 
Mysql vs postgresql
Mysql vs postgresqlMysql vs postgresql
Mysql vs postgresql
 
phpConf 2010 Классификация систем хранения
phpConf 2010 Классификация систем храненияphpConf 2010 Классификация систем хранения
phpConf 2010 Классификация систем хранения
 
Погружение в виртуальную память и большие страницы / Константин Новаковский (...
Погружение в виртуальную память и большие страницы / Константин Новаковский (...Погружение в виртуальную память и большие страницы / Константин Новаковский (...
Погружение в виртуальную память и большие страницы / Константин Новаковский (...
 
Лекция 10. Apache Mahout
Лекция 10. Apache MahoutЛекция 10. Apache Mahout
Лекция 10. Apache Mahout
 
Чему мы научились разрабатывая микросервисы?
Чему мы научились разрабатывая микросервисы?Чему мы научились разрабатывая микросервисы?
Чему мы научились разрабатывая микросервисы?
 
HBase inside
HBase insideHBase inside
HBase inside
 
ClickHouse: очень быстро и очень удобно / Виктор Тарнавский, Алексей Миловидо...
ClickHouse: очень быстро и очень удобно / Виктор Тарнавский, Алексей Миловидо...ClickHouse: очень быстро и очень удобно / Виктор Тарнавский, Алексей Миловидо...
ClickHouse: очень быстро и очень удобно / Виктор Тарнавский, Алексей Миловидо...
 

Viewers also liked

Александр Соловьёв, 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
 
2015-12-05 Данил Никифоров - NoSQL для мобайла с синхронизацией данных
2015-12-05 Данил Никифоров - NoSQL для мобайла с синхронизацией данных2015-12-05 Данил Никифоров - NoSQL для мобайла с синхронизацией данных
2015-12-05 Данил Никифоров - NoSQL для мобайла с синхронизацией данныхHappyDev
 
Getting Started with Couchbase Ruby
Getting Started with Couchbase RubyGetting Started with Couchbase Ruby
Getting Started with Couchbase RubySergey Avseyev
 
Web весна 2012 лекция 6
Web весна 2012 лекция 6Web весна 2012 лекция 6
Web весна 2012 лекция 6Technopark
 
Опыт использования NoSQL-хранилищ (Андрей Новиков)
Опыт использования NoSQL-хранилищ (Андрей Новиков)Опыт использования NoSQL-хранилищ (Андрей Новиков)
Опыт использования NoSQL-хранилищ (Андрей Новиков)Olga Lavrentieva
 
Спасение 6 млн файлов в условиях полного хецнера (Даниил Подольский, Дмитрий ...
Спасение 6 млн файлов в условиях полного хецнера (Даниил Подольский, Дмитрий ...Спасение 6 млн файлов в условиях полного хецнера (Даниил Подольский, Дмитрий ...
Спасение 6 млн файлов в условиях полного хецнера (Даниил Подольский, Дмитрий ...Ontico
 
DataTalks #4: Построение хранилища данных на основе платформы hadoop / Игорь ...
DataTalks #4: Построение хранилища данных на основе платформы hadoop / Игорь ...DataTalks #4: Построение хранилища данных на основе платформы hadoop / Игорь ...
DataTalks #4: Построение хранилища данных на основе платформы hadoop / Игорь ...WG_ Events
 
NoSQL - World IT Planet, Saint Petersburg 2015
NoSQL - World IT Planet, Saint Petersburg 2015NoSQL - World IT Planet, Saint Petersburg 2015
NoSQL - World IT Planet, Saint Petersburg 2015Shamim bhuiyan
 
Как устроен NoSQL, Андрей Аксенов (Sphinx)
Как устроен NoSQL, Андрей Аксенов (Sphinx)Как устроен NoSQL, Андрей Аксенов (Sphinx)
Как устроен NoSQL, Андрей Аксенов (Sphinx)Ontico
 
Oracle NoSQL Database
Oracle NoSQL DatabaseOracle NoSQL Database
Oracle NoSQL DatabaseAndrey Akulov
 
NoSQL и Zend Framework (Ростислав Михайлив)
NoSQL и Zend Framework (Ростислав Михайлив)NoSQL и Zend Framework (Ростислав Михайлив)
NoSQL и Zend Framework (Ростислав Михайлив)zfconfua
 
NoSQL - коротко о главном / Сергей Туленцев (TextMaster)
NoSQL - коротко о главном / Сергей Туленцев (TextMaster)NoSQL - коротко о главном / Сергей Туленцев (TextMaster)
NoSQL - коротко о главном / Сергей Туленцев (TextMaster)Ontico
 
Движение по хрупкому дну / Сергей Караткевич (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
 
NoNoSQL = Not Only NoSQL, HappyDev'13
NoNoSQL = Not Only NoSQL, HappyDev'13NoNoSQL = Not Only NoSQL, HappyDev'13
NoNoSQL = Not Only NoSQL, HappyDev'13chaltaj
 

Viewers also liked (20)

Александр Соловьёв, 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
 
2015-12-05 Данил Никифоров - NoSQL для мобайла с синхронизацией данных
2015-12-05 Данил Никифоров - NoSQL для мобайла с синхронизацией данных2015-12-05 Данил Никифоров - NoSQL для мобайла с синхронизацией данных
2015-12-05 Данил Никифоров - NoSQL для мобайла с синхронизацией данных
 
Getting Started with Couchbase Ruby
Getting Started with Couchbase RubyGetting Started with Couchbase Ruby
Getting Started with Couchbase Ruby
 
Web весна 2012 лекция 6
Web весна 2012 лекция 6Web весна 2012 лекция 6
Web весна 2012 лекция 6
 
Опыт использования NoSQL-хранилищ (Андрей Новиков)
Опыт использования NoSQL-хранилищ (Андрей Новиков)Опыт использования NoSQL-хранилищ (Андрей Новиков)
Опыт использования NoSQL-хранилищ (Андрей Новиков)
 
Спасение 6 млн файлов в условиях полного хецнера (Даниил Подольский, Дмитрий ...
Спасение 6 млн файлов в условиях полного хецнера (Даниил Подольский, Дмитрий ...Спасение 6 млн файлов в условиях полного хецнера (Даниил Подольский, Дмитрий ...
Спасение 6 млн файлов в условиях полного хецнера (Даниил Подольский, Дмитрий ...
 
DataTalks #4: Построение хранилища данных на основе платформы hadoop / Игорь ...
DataTalks #4: Построение хранилища данных на основе платформы hadoop / Игорь ...DataTalks #4: Построение хранилища данных на основе платформы hadoop / Игорь ...
DataTalks #4: Построение хранилища данных на основе платформы hadoop / Игорь ...
 
NoSQL - World IT Planet, Saint Petersburg 2015
NoSQL - World IT Planet, Saint Petersburg 2015NoSQL - World IT Planet, Saint Petersburg 2015
NoSQL - World IT Planet, Saint Petersburg 2015
 
Как устроен NoSQL, Андрей Аксенов (Sphinx)
Как устроен NoSQL, Андрей Аксенов (Sphinx)Как устроен NoSQL, Андрей Аксенов (Sphinx)
Как устроен NoSQL, Андрей Аксенов (Sphinx)
 
Oracle NoSQL Database
Oracle NoSQL DatabaseOracle NoSQL Database
Oracle NoSQL Database
 
NoSQL и Zend Framework (Ростислав Михайлив)
NoSQL и Zend Framework (Ростислав Михайлив)NoSQL и Zend Framework (Ростислав Михайлив)
NoSQL и Zend Framework (Ростислав Михайлив)
 
3 ibm bdw2015
3 ibm bdw20153 ibm bdw2015
3 ibm bdw2015
 
NoSQL - коротко о главном / Сергей Туленцев (TextMaster)
NoSQL - коротко о главном / Сергей Туленцев (TextMaster)NoSQL - коротко о главном / Сергей Туленцев (TextMaster)
NoSQL - коротко о главном / Сергей Туленцев (TextMaster)
 
Движение по хрупкому дну / Сергей Караткевич (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?
 
NoNoSQL = Not Only NoSQL, HappyDev'13
NoNoSQL = Not Only NoSQL, HappyDev'13NoNoSQL = Not Only NoSQL, HappyDev'13
NoNoSQL = Not Only NoSQL, HappyDev'13
 

Similar to Apache Cassandra. Ещё одно NoSQL хранилище (Владимир Климонтович)

Быстрое масштабирование систем
Быстрое масштабирование системБыстрое масштабирование систем
Быстрое масштабирование системMedia Gorod
 
Smirnov Memcached High Load 2008
Smirnov Memcached High Load 2008Smirnov Memcached High Load 2008
Smirnov Memcached High Load 2008Ontico
 
Smirnov Memcached Highload 2008
Smirnov Memcached Highload 2008Smirnov Memcached Highload 2008
Smirnov Memcached Highload 2008Ontico
 
Oracle Timesten
Oracle TimestenOracle Timesten
Oracle TimestenOntico
 
Дмитрий Еманов — Под капотом серверного ПО
Дмитрий Еманов — Под капотом серверного ПОДмитрий Еманов — Под капотом серверного ПО
Дмитрий Еманов — Под капотом серверного ПОDaria Oreshkina
 
Android Telegram S Optimizations
Android Telegram S OptimizationsAndroid Telegram S Optimizations
Android Telegram S OptimizationsStepan Korshakov
 
Introduction to MongoDB
Introduction to MongoDBIntroduction to MongoDB
Introduction to MongoDBIurii Ogiienko
 
12 - Hadoop. HBase и Cassandra
12 - Hadoop. HBase и Cassandra12 - Hadoop. HBase и Cassandra
12 - Hadoop. HBase и CassandraRoman Brovko
 
Cравнительный анализ хранилищ данных (Олег Царев, Кирилл Коринский)
Cравнительный анализ хранилищ данных (Олег Царев, Кирилл Коринский)Cравнительный анализ хранилищ данных (Олег Царев, Кирилл Коринский)
Cравнительный анализ хранилищ данных (Олег Царев, Кирилл Коринский)Ontico
 
Практика использования NoSQL в высоконагруженном проекте (Дмитрий Ананьев)
Практика использования NoSQL в высоконагруженном проекте (Дмитрий Ананьев)Практика использования NoSQL в высоконагруженном проекте (Дмитрий Ананьев)
Практика использования NoSQL в высоконагруженном проекте (Дмитрий Ананьев)Ontico
 
XML Native Database на примере SednaXML
XML Native Database на примере SednaXMLXML Native Database на примере SednaXML
XML Native Database на примере SednaXMLSlach
 
Проектируем облачный веб-сервис "по-взрослому" (Сергей Рыжиков)
Проектируем облачный веб-сервис "по-взрослому" (Сергей Рыжиков)Проектируем облачный веб-сервис "по-взрослому" (Сергей Рыжиков)
Проектируем облачный веб-сервис "по-взрослому" (Сергей Рыжиков)Ontico
 
Sef Trubach V1.2
Sef Trubach V1.2Sef Trubach V1.2
Sef Trubach V1.2sef2009
 
Управление свободным пространством на файловой системе в UNIX и Linux
Управление свободным пространством на файловой системе в UNIX и LinuxУправление свободным пространством на файловой системе в UNIX и Linux
Управление свободным пространством на файловой системе в UNIX и LinuxSQALab
 
Ukraine, Kharkiv, Java Club. Day 2
Ukraine, Kharkiv, Java Club. Day 2Ukraine, Kharkiv, Java Club. Day 2
Ukraine, Kharkiv, Java Club. Day 2Andrew Gusev
 
Redis: возможности, выгоды, примеры использования
Redis: возможности, выгоды, примеры использованияRedis: возможности, выгоды, примеры использования
Redis: возможности, выгоды, примеры использованияAlexey Kachayev
 
Оптимизация – стоимость владения
Оптимизация – стоимость владенияОптимизация – стоимость владения
Оптимизация – стоимость владенияАнастасия Масенко
 
Максим Шапошников, Nutanix
Максим Шапошников, NutanixМаксим Шапошников, Nutanix
Максим Шапошников, NutanixOntico
 

Similar to Apache Cassandra. Ещё одно NoSQL хранилище (Владимир Климонтович) (20)

Быстрое масштабирование систем
Быстрое масштабирование системБыстрое масштабирование систем
Быстрое масштабирование систем
 
Smirnov Memcached High Load 2008
Smirnov Memcached High Load 2008Smirnov Memcached High Load 2008
Smirnov Memcached High Load 2008
 
Smirnov Memcached Highload 2008
Smirnov Memcached Highload 2008Smirnov Memcached Highload 2008
Smirnov Memcached Highload 2008
 
Oracle Timesten
Oracle TimestenOracle Timesten
Oracle Timesten
 
Дмитрий Еманов — Под капотом серверного ПО
Дмитрий Еманов — Под капотом серверного ПОДмитрий Еманов — Под капотом серверного ПО
Дмитрий Еманов — Под капотом серверного ПО
 
Android Telegram S Optimizations
Android Telegram S OptimizationsAndroid Telegram S Optimizations
Android Telegram S Optimizations
 
Introduction to MongoDB
Introduction to MongoDBIntroduction to MongoDB
Introduction to MongoDB
 
12 - Hadoop. HBase и Cassandra
12 - Hadoop. HBase и Cassandra12 - Hadoop. HBase и Cassandra
12 - Hadoop. HBase и Cassandra
 
Cравнительный анализ хранилищ данных (Олег Царев, Кирилл Коринский)
Cравнительный анализ хранилищ данных (Олег Царев, Кирилл Коринский)Cравнительный анализ хранилищ данных (Олег Царев, Кирилл Коринский)
Cравнительный анализ хранилищ данных (Олег Царев, Кирилл Коринский)
 
Cassandra db
Cassandra dbCassandra db
Cassandra db
 
Практика использования NoSQL в высоконагруженном проекте (Дмитрий Ананьев)
Практика использования NoSQL в высоконагруженном проекте (Дмитрий Ананьев)Практика использования NoSQL в высоконагруженном проекте (Дмитрий Ананьев)
Практика использования NoSQL в высоконагруженном проекте (Дмитрий Ананьев)
 
XML Native Database на примере SednaXML
XML Native Database на примере SednaXMLXML Native Database на примере SednaXML
XML Native Database на примере SednaXML
 
Проектируем облачный веб-сервис "по-взрослому" (Сергей Рыжиков)
Проектируем облачный веб-сервис "по-взрослому" (Сергей Рыжиков)Проектируем облачный веб-сервис "по-взрослому" (Сергей Рыжиков)
Проектируем облачный веб-сервис "по-взрослому" (Сергей Рыжиков)
 
Sef Trubach V1.2
Sef Trubach V1.2Sef Trubach V1.2
Sef Trubach V1.2
 
Управление свободным пространством на файловой системе в UNIX и Linux
Управление свободным пространством на файловой системе в UNIX и LinuxУправление свободным пространством на файловой системе в UNIX и Linux
Управление свободным пространством на файловой системе в UNIX и Linux
 
Ukraine, Kharkiv, Java Club. Day 2
Ukraine, Kharkiv, Java Club. Day 2Ukraine, Kharkiv, Java Club. Day 2
Ukraine, Kharkiv, Java Club. Day 2
 
Redis: возможности, выгоды, примеры использования
Redis: возможности, выгоды, примеры использованияRedis: возможности, выгоды, примеры использования
Redis: возможности, выгоды, примеры использования
 
Nosql and Mongodb
Nosql and MongodbNosql and Mongodb
Nosql and Mongodb
 
Оптимизация – стоимость владения
Оптимизация – стоимость владенияОптимизация – стоимость владения
Оптимизация – стоимость владения
 
Максим Шапошников, Nutanix
Максим Шапошников, NutanixМаксим Шапошников, Nutanix
Максим Шапошников, Nutanix
 

More from Ontico

One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...
One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...
One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...Ontico
 
Масштабируя DNS / Артем Гавриченков (Qrator Labs)
Масштабируя DNS / Артем Гавриченков (Qrator Labs)Масштабируя DNS / Артем Гавриченков (Qrator Labs)
Масштабируя DNS / Артем Гавриченков (Qrator Labs)Ontico
 
Создание BigData-платформы для ФГУП Почта России / Андрей Бащенко (Luxoft)
Создание BigData-платформы для ФГУП Почта России / Андрей Бащенко (Luxoft)Создание BigData-платформы для ФГУП Почта России / Андрей Бащенко (Luxoft)
Создание BigData-платформы для ФГУП Почта России / Андрей Бащенко (Luxoft)Ontico
 
Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...
Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...
Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...Ontico
 
Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...
Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...
Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...Ontico
 
PostgreSQL Configuration for Humans / Alvaro Hernandez (OnGres)
PostgreSQL Configuration for Humans / Alvaro Hernandez (OnGres)PostgreSQL Configuration for Humans / Alvaro Hernandez (OnGres)
PostgreSQL Configuration for Humans / Alvaro Hernandez (OnGres)Ontico
 
Inexpensive Datamasking for MySQL with ProxySQL — Data Anonymization for Deve...
Inexpensive Datamasking for MySQL with ProxySQL — Data Anonymization for Deve...Inexpensive Datamasking for MySQL with ProxySQL — Data Anonymization for Deve...
Inexpensive Datamasking for MySQL with ProxySQL — Data Anonymization for Deve...Ontico
 
Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...
Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...
Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...Ontico
 
ProxySQL Use Case Scenarios / Alkin Tezuysal (Percona)
ProxySQL Use Case Scenarios / Alkin Tezuysal (Percona)ProxySQL Use Case Scenarios / Alkin Tezuysal (Percona)
ProxySQL Use Case Scenarios / Alkin Tezuysal (Percona)Ontico
 
MySQL Replication — Advanced Features / Петр Зайцев (Percona)
MySQL Replication — Advanced Features / Петр Зайцев (Percona)MySQL Replication — Advanced Features / Петр Зайцев (Percona)
MySQL Replication — Advanced Features / Петр Зайцев (Percona)Ontico
 
Внутренний open-source. Как разрабатывать мобильное приложение большим количе...
Внутренний open-source. Как разрабатывать мобильное приложение большим количе...Внутренний open-source. Как разрабатывать мобильное приложение большим количе...
Внутренний open-source. Как разрабатывать мобильное приложение большим количе...Ontico
 
Подробно о том, как Causal Consistency реализовано в MongoDB / Михаил Тюленев...
Подробно о том, как Causal Consistency реализовано в MongoDB / Михаил Тюленев...Подробно о том, как Causal Consistency реализовано в MongoDB / Михаил Тюленев...
Подробно о том, как Causal Consistency реализовано в MongoDB / Михаил Тюленев...Ontico
 
Балансировка на скорости проводов. Без ASIC, без ограничений. Решения NFWare ...
Балансировка на скорости проводов. Без ASIC, без ограничений. Решения NFWare ...Балансировка на скорости проводов. Без ASIC, без ограничений. Решения NFWare ...
Балансировка на скорости проводов. Без ASIC, без ограничений. Решения NFWare ...Ontico
 
Перехват трафика — мифы и реальность / Евгений Усков (Qrator Labs)
Перехват трафика — мифы и реальность / Евгений Усков (Qrator Labs)Перехват трафика — мифы и реальность / Евгений Усков (Qrator Labs)
Перехват трафика — мифы и реальность / Евгений Усков (Qrator Labs)Ontico
 
И тогда наверняка вдруг запляшут облака! / Алексей Сушков (ПЕТЕР-СЕРВИС)
И тогда наверняка вдруг запляшут облака! / Алексей Сушков (ПЕТЕР-СЕРВИС)И тогда наверняка вдруг запляшут облака! / Алексей Сушков (ПЕТЕР-СЕРВИС)
И тогда наверняка вдруг запляшут облака! / Алексей Сушков (ПЕТЕР-СЕРВИС)Ontico
 
Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)
Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)
Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)Ontico
 
Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)
Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)
Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)Ontico
 
100500 способов кэширования в Oracle Database или как достичь максимальной ск...
100500 способов кэширования в Oracle Database или как достичь максимальной ск...100500 способов кэширования в Oracle Database или как достичь максимальной ск...
100500 способов кэширования в Oracle Database или как достичь максимальной ск...Ontico
 
Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает...
Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает...Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает...
Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает...Ontico
 
Механизмы мониторинга баз данных: взгляд изнутри / Дмитрий Еманов (Firebird P...
Механизмы мониторинга баз данных: взгляд изнутри / Дмитрий Еманов (Firebird P...Механизмы мониторинга баз данных: взгляд изнутри / Дмитрий Еманов (Firebird P...
Механизмы мониторинга баз данных: взгляд изнутри / Дмитрий Еманов (Firebird P...Ontico
 

More from Ontico (20)

One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...
One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...
One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...
 
Масштабируя DNS / Артем Гавриченков (Qrator Labs)
Масштабируя DNS / Артем Гавриченков (Qrator Labs)Масштабируя DNS / Артем Гавриченков (Qrator Labs)
Масштабируя DNS / Артем Гавриченков (Qrator Labs)
 
Создание BigData-платформы для ФГУП Почта России / Андрей Бащенко (Luxoft)
Создание BigData-платформы для ФГУП Почта России / Андрей Бащенко (Luxoft)Создание BigData-платформы для ФГУП Почта России / Андрей Бащенко (Luxoft)
Создание BigData-платформы для ФГУП Почта России / Андрей Бащенко (Luxoft)
 
Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...
Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...
Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...
 
Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...
Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...
Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...
 
PostgreSQL Configuration for Humans / Alvaro Hernandez (OnGres)
PostgreSQL Configuration for Humans / Alvaro Hernandez (OnGres)PostgreSQL Configuration for Humans / Alvaro Hernandez (OnGres)
PostgreSQL Configuration for Humans / Alvaro Hernandez (OnGres)
 
Inexpensive Datamasking for MySQL with ProxySQL — Data Anonymization for Deve...
Inexpensive Datamasking for MySQL with ProxySQL — Data Anonymization for Deve...Inexpensive Datamasking for MySQL with ProxySQL — Data Anonymization for Deve...
Inexpensive Datamasking for MySQL with ProxySQL — Data Anonymization for Deve...
 
Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...
Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...
Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...
 
ProxySQL Use Case Scenarios / Alkin Tezuysal (Percona)
ProxySQL Use Case Scenarios / Alkin Tezuysal (Percona)ProxySQL Use Case Scenarios / Alkin Tezuysal (Percona)
ProxySQL Use Case Scenarios / Alkin Tezuysal (Percona)
 
MySQL Replication — Advanced Features / Петр Зайцев (Percona)
MySQL Replication — Advanced Features / Петр Зайцев (Percona)MySQL Replication — Advanced Features / Петр Зайцев (Percona)
MySQL Replication — Advanced Features / Петр Зайцев (Percona)
 
Внутренний open-source. Как разрабатывать мобильное приложение большим количе...
Внутренний open-source. Как разрабатывать мобильное приложение большим количе...Внутренний open-source. Как разрабатывать мобильное приложение большим количе...
Внутренний open-source. Как разрабатывать мобильное приложение большим количе...
 
Подробно о том, как Causal Consistency реализовано в MongoDB / Михаил Тюленев...
Подробно о том, как Causal Consistency реализовано в MongoDB / Михаил Тюленев...Подробно о том, как Causal Consistency реализовано в MongoDB / Михаил Тюленев...
Подробно о том, как Causal Consistency реализовано в MongoDB / Михаил Тюленев...
 
Балансировка на скорости проводов. Без ASIC, без ограничений. Решения NFWare ...
Балансировка на скорости проводов. Без ASIC, без ограничений. Решения NFWare ...Балансировка на скорости проводов. Без ASIC, без ограничений. Решения NFWare ...
Балансировка на скорости проводов. Без ASIC, без ограничений. Решения NFWare ...
 
Перехват трафика — мифы и реальность / Евгений Усков (Qrator Labs)
Перехват трафика — мифы и реальность / Евгений Усков (Qrator Labs)Перехват трафика — мифы и реальность / Евгений Усков (Qrator Labs)
Перехват трафика — мифы и реальность / Евгений Усков (Qrator Labs)
 
И тогда наверняка вдруг запляшут облака! / Алексей Сушков (ПЕТЕР-СЕРВИС)
И тогда наверняка вдруг запляшут облака! / Алексей Сушков (ПЕТЕР-СЕРВИС)И тогда наверняка вдруг запляшут облака! / Алексей Сушков (ПЕТЕР-СЕРВИС)
И тогда наверняка вдруг запляшут облака! / Алексей Сушков (ПЕТЕР-СЕРВИС)
 
Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)
Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)
Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)
 
Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)
Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)
Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)
 
100500 способов кэширования в Oracle Database или как достичь максимальной ск...
100500 способов кэширования в Oracle Database или как достичь максимальной ск...100500 способов кэширования в Oracle Database или как достичь максимальной ск...
100500 способов кэширования в Oracle Database или как достичь максимальной ск...
 
Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает...
Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает...Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает...
Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает...
 
Механизмы мониторинга баз данных: взгляд изнутри / Дмитрий Еманов (Firebird P...
Механизмы мониторинга баз данных: взгляд изнутри / Дмитрий Еманов (Firebird P...Механизмы мониторинга баз данных: взгляд изнутри / Дмитрий Еманов (Firebird P...
Механизмы мониторинга баз данных: взгляд изнутри / Дмитрий Еманов (Firebird P...
 

Apache Cassandra. Ещё одно NoSQL хранилище (Владимир Климонтович)

  • 1. Apache Cassandra Еще одно NoSQLхранилище
  • 2. О чем будет идти речь? Пару слов про NoSQL Amazon Dynamo Google Big Table Cassandra снаружи Cassandra кассандра изнутри Наш опыт использования
  • 3.
  • 4. NoSQL - WTF? Казалось бы, причем тут ЛужковSQL? Абсолютно не причем! SQL – просто язык запросов Под “SQL” понимают MySQL/InnoDB, MSSQL и аналоги (row oriented, b-tree индексы). NoSQL== No MySQL Некоторые из NoSQLхранилищ предоставляют SQL-синтаксис. Например, Apache Hive
  • 5. CAP-теорема Consistency: в один момент времени, все клиенты видят один и тот же набор данных Availability: на каждый запрос будет дан ответ (включая сообщение об ошибке) Partition tolerance: система продолжает работать при нарушении связи между любыми двумя узлами Можно выбрать только два!
  • 6. NoSQLхранилища – тысячи их! MongoDBтот же MySQL, только в профиль. Apache Hadoop: offline, MapReduce Google BigTable family: Hbase Amazon Dynamo: Riak Google BigTable + Amazon Dynamo= Apache Cassandra
  • 8. Amazon Dynamo Описана в статье 2007-ого года Две операции: get(key), put(key, value) Область использования в Amazon: session management, shopping cart, etc Полная распределенность Отсутствует master node: клиент общается сразу со всеми серверами в кластере Ближайший родственник – DHT в BitTorrent
  • 11. Запись Клиент не знает ничего о топологии кластера Команда на запись отправляется на произвольный сервер, который становится координатором данной операции Координатор записывает данные на нужные сервера Клиент выбирает критерий успешности записи Если одна из реплик недоступна, запись будет завершена позже
  • 12. Чтение Команда на чтение оправляется произвольному серверу в кластере Сервер знает опрашивает нужные реплики Критерий успешности чтений (количество живых реплик) настраивается клиентом
  • 14. BigTable У каждой строки может быть индивидуальный набор колонок Схема данных отсутствует
  • 15. Пример схемы данных Будем хранить список друзей в социальной сети Ключ – имя пользователя Колонка – тоже имя пользователя! Значение: 1/2/3 в зависимости от взаимности дружбы f(key, column_name) ->column_value – более удобное представление модели данных SELECT WHERE key >= start AND key <= end AND name<=maxColumn AND name<minColumn
  • 17. Данные внутри tablet server’а Memtable – данные, которые были добавлены недавно Memtableдублируется commit log’ом на диске SSTable – неизменяемая структура данных на диске с O(1) временем доступа к ключу Bloomfilterдля каждой SSTable SSTable compaction – переодическийmerge маленьких SSTable
  • 19. Что взяли из Dynamo Token ring Алгоритм записи/чтения
  • 20. Что взяли из BigTable? Модель данных: key/column Локальную структуру данных на серверах Memtable/commit log – временное хранилище SSTable/Bloomfilter – постоянное хранилище SSTable compaction Вместо put/get доступны сложные запросы: SELECT WHERE key>=start AND key <= end AND columnName >= c1 AND columnName <= c2 Индексы!
  • 21. Терминология Cassandra Cluster. Глобальные настройки: тип ключей, partitioning (ordered, md5), размер кэша, топология кластера Keyspace. Аналог в MySQL: база данных. Настройки уровня keyspace: replication factor Column family. Аналог в MySQL: таблица.размер кэша, индексы Super columns.
  • 22. Super column Еще один уровень вложенности
  • 23. Операции mutation(key, column, value) get(key, column) multi_get([k1, k2,…], column) get_slice(key, column_predicate). column_predicate: набор колонок или интервал get_range_slices(start_key, end_key, column_predicate) multi_get_slice Counters: add/remove(key, column)
  • 24. Запись Команда идет на произвольный сервер в кластере. Сервер находит нужные реплики (ReplicationStrategy) Сервер сохраняет данные локально(Hinted handoff) Критерий успешности записи определяет клиент согласно настройки ConsistencyLevel
  • 27. Запись: внутренности Memtable: хранилище новых записей. Настраиваемый flush-критерий (по таймауту, по размеру) Commit-log: дублирует memtableна случай падения сервера Memtable flush -> SSTable SSTable: data + index + bloomfilter SSTable compaction – борьба с фрагметнацией
  • 28. Чтение Команду на чтение обрабатывает произвольный сервер Сервер определяет ближайшую реплику на основе настройки snitch: Simple, Topology, Dynamic Клиент определяет критерий успешности чтения Read repair (optional): убедится, что все реплики содержат свежие данные
  • 29. Конфликты Каждое значение в колонке имеет timstamp Timestamp проставляется клиентом как текущее время Можно переопределить timestamp на любое 64-х битное число Клиент получает всегда последний timestamp
  • 30. Кеширование запросов Key cache: кеширование позиции ключей внутри SSTable Row cache: кеширование ключей и их значений в памяти Принцип кеширования: LIFO. Настраивается для каждой column family отдельно Но! Кассандра использует mmapдля чтения файлов Настройки кеширования использовать не рекомендуется. Лучше полагаться на кеширование файловой системы
  • 31. Индексы Secondary Indexes: на columns, но не на super columns! При полностью распределенной архитектуре сложно реализовать индексы Чтобы найти значение по индексу, нужно опросить все сервера Ограничение реализации: можно делать запросы только по строгому сравнению (SELECT … WHERE column>value– не поддерживается) Индексы сильно замедляют вставку данных Итого: индексы довольно бесполезная фича
  • 32. Масштабирование: как добавить сервера в кластер? У каждого сервера есть операцияmove token. Можно переназначит token у любого сервера Топология кластера измениться, миграция данных будет происходить в фоне Пока миграция не закончена, сервер будет отвечать за старый кусок данных Аналогично будет отработана ситуация добавления нового сервера в token ring
  • 34. Преимущества Быстрый write, особенно когда не нужна consistency Легкость в администрировании. Один daemon с одним конфигурационным файлом В HBase: четыре daemon’а на каждый сервер
  • 35. Недостатки Плохо реализован range scan: кассандра не умеет передавать данные поточно. Слишком много настроек вынесено на cluster-level: вид и стратегия хранения ключей, и т.д. Compaction существенно замедляет запросы Протоколобщения между нодами: Thrift
  • 36. Наш опыт Храним события в online рекламы: показы/клики/конверсии Типичный клиент: 1 миллиард событий в месяц, 100 миллионов уникальных пользователей (ключей) Ключ: ID пользователя. Имя колонки:ID события Вопрос N1: сколько уникальных пользователей было в каждом городе Вопрос N2: сколько уникальных пользователей видели баннер X, но не видели баннер Y; какое распределение таких пользователей по городам Вопрос N3: на какие объявления нажимал конкретный пользователь
  • 37. Плюсы и минусы + Быстрая запись, группировка по пользователям во время записи + Нет проблемы дубликации данных - Плохо реализованный range scan - Нельзя выполнять логику прямо на серверах
  • 38. Решение проблем Аггрегация данных на сервере. Опции: Hadoop/MapReduce, кастомное решение Минусы Hadoop: операционные расходы, возможность использовать лишь один column family как источник данных Свое решение: кастомный демон на каждом сервере (аналог map), финальная аггрегация на клиенте.
  • 39. Наши цифры на тестовых данных Кластер: 3 x (m1.large EC2: 7.5Gb RAM, 2CPU) Скорость записи: 12тысяч событий в секунду Скорость чтения: 9 тысяч событий в секунду Объем данных: 600Gb за 1.5 месяца, 1.5 миллиарда событий (значений колонок), 100 миллионов ключей