SlideShare a Scribd company logo
СУБД
Лекция 10
Станислав Ступников
Почему NoSQL?
20 лет успешного существования на рынке!
• Персистентное хранение данных
• Конкурентный доступ
• Shared database integration
• Стандартная (практически) модель
А что там с РСУБД?
Почему NoSQL?
А что там с РСУБД?
Почему NoSQL?
Impedance Mismatch
Почему NoSQL?
80ые: Мейнфреймы
Приложение
БД
БД
Почему NoSQL?
90ые: Shared database
ПриложениеПриложение Приложение
Почему NoSQL?
2000ые: Web applications
БД
ПриложениеПриложениеПриложение
БД БД
Почему NoSQL?
Данных стало больше
Почему NoSQL?
Данные стали сложнее
Почему NoSQL?
Attack of the Clusters
Почему NoSQL?
Производительность РСУБД
NoSQL Rising
NoSQL
• Не используют реляционную модель
• Хорошо подходят для развертывания на кластере
• Open-source
• Schemaless
Общие характеристика NoSQL БД:
NoSQL
Aggregate orientation
NoSQL
Aggregate orientation
NoSQL
Aggregate orientation
NoSQL
Aggregate orientation
NoSQL
• навеяны Dynamo DB от Amazon
• модель данных: множество пар ключ-значение
• для БД содержание значение непрозрачно (просто какой-то BLOB)
Примеры:
• Voldemort
• Redis
• Riak
Виды NoSQL БД
Key-Value Store
Виды NoSQL БД
Document-oriented store
• навеяны Lotus Notes от IBM
• модель данных: множество множеств
ключ-значение
• для БД содержание значение
прозрачно
Примеры:
• CouchDB
• MongoDB
Виды NoSQL БД
Column-oriented store
• навеяны BigTable от Google
• похожи на column-oriented реляционные БД, но с особенностями
• модель данных: ключ строки –> семейство колонок –> колонка –>
значение
Примеры:
• HBase
• Cassandra
• Hypertable
Column-oriented store
Виды NoSQL БД
Виды NoSQL БД
Graph database
• навеяны теорией графов G=(V, E) от математиков 18го века
• хорошо моделируют сложные данные
• модель данных: узлы, ребра и их атрибуты
Примеры:
• Neo4j
• AllegroGraph
Теоретические основы NoSQL
CAP Theorem
CAP Theorem
Теоретические основы NoSQL
• MapReduce: Simplified Data Processing on Large Clusters.
Jeffrey Dean and Sanjay Ghemawat
• Вычисления простые, но данных очень много
• Не надо связывать самому с распределенными вычислениями
• Просто определить две функции:
• map (k1, v1) → k2,v2
• reduce (k2, list(v2)) → v3
• За распределение данных, обработку отказов, планирование
и запуск параллельных задач отвечает сам фреймворк
MapReduce
Теоретические основы NoSQL
Теоретические основы NoSQL
MapReduce
MapReduce
Теоретические основы NoSQL
Теоретические основы NoSQL
Anti-Entropy Protocols, Gossips
• Поддержание консистентности (eventual consistency) и
синхронизация состояния кластера
• проблему можно решить за счет глобального координатора
• Каждый узел по расписанию выбирает другой случайный узел
и обменивается информацией
• тут возможно 3 стратегии
Теоретические основы NoSQL
Anti-Entropy Protocols, Gossips
• Read-Write consistency – минимизировать время сходимости
реплик
• Read-after-write consistency
• Read-after-read consistency
• Write-Write consistency – обработка конкурентной записи
• Atomic Writes – пишем «самое новое» значение
(Cassandra)
• Atomic Read-modify-write
• Conflict prevention - distributed locking или
консенсус-протоколы, как PAXOS (РСУБД,
HBase, MongoDB)
• Conflict detection – в случае конфликта
откатываемся или храним историю, пока не
разрешим (Riak, Voldemort, CouchDB)
Теоретические основы NoSQL
Сonsistency
Теоретические основы NoSQL
Сonsistency
Теоретические основы NoSQL
Eventual Сonsistency
• vector clock – список пар (узел, счетчик)
• Один вектор на каждую версию каждого объекта
• Конфликт улаживает клиент
• Устойчивая к отлючениям электричества миграция (напр.,
расширение кластера)
• MongoDB и Redis Cluster
Теоретические основы NoSQL
Rebalancing
Теоретические основы NoSQL
Partitioning and replication
• NodeID = hash(key) % TotalNodes
- плохая идея, если вы планируете
добавлять и убирать узлы
• Consistent hashing – хорошая идея
• Автоматическая адаптация – tradeoff
между временем опредления отказа
и вероятностью ложной тревоги
• Гибкость – не только «жив», «мертв»
(разные состояния, как в MapReduce)
• Масштабируемость
• Phi Accrual Failure Detector -
Cassandra
Теоретические основы NoSQL
Failure Detection
• Выбор лидера
среди реплик
• Bully algorithm
• MongoDB
Теоретические основы NoSQL
Coordinator Election
Недостатки NoSQL решений
• 3 config сервера – узкое место при шардинге
• MapReduce – однопоточный, readwrite locks, на JS O_o
• Молодой продукт, в нем встречаются баги (бывает
Segmentation fault, core dumped, socket exception 9001 (?!) ) –
используйте 2.2 и выше
• По-умолчанию максимальный размер объекта — 4
мегабайта.
• На 32-битных машинах, максимальный размер одной базы
данных — 2 гигабайта
Недостатки NoSQL решений
• Все должно помещаться в RAM (есть VirtualMemory, но все
ключи все равно в RAM!). Количетсво требуемой памяти
пропорционально размеру dataset’у
• Персистентность либо снепшотная, либо append-only с
помощью fsync. Требуется очень много I/O ресурсов.
• Операция сохранения требует доп. памяти (до 2х максимум)
для успешного завершения, иногда асинхронные сохранения
могут заблокировать сервер на время
Недостатки NoSQL решений
• Архитектура подразумевает tradeoff памяти на скорость. Для
определенных нагрузок в разы может отличаться
количество байт переданное на хранение и количество
памяти, используемое Redis
• Поиск только по ключам
• Один инстанс не масштабируем (одно ядро, один поток).
Нужно запускать несколько и на стороне приложения
заниматься шардингом и балансировкой
Недостатки NoSQL решений
• Все на одной машине
• Бесплатно: GPLv3 AGPL
• Коммерческое использование: 6-24k $ в год
Недостатки NoSQL решений
• Особенности консистентности
• Нет индексов
• Нет аd-hoc querying (создаете БД под запросы)
• Может быть высокая read/write latency на больших нагрузках
за счет Java Garbage Collection
Сравнение NoSQL решений
Масштабируемость
• HBase, Hypertable – много данных, не нужны произвольные
запросы и транзакции
• Cassandra, Riak – при высокой нагрузке на запись и если
подходит слабая консистентность
• MongoDB, Redis – «быстрые» данные (клики, биржа)
Сравнение NoSQL решений
Транзакционность
• Может лучше РСУБД?
• HBase, Hypertable – атомарность на уровне строк,
консистентность за счет Paxos
• Cassandra, Riak – слабоконсистентны
• MongoDB, Redis – атомарность на уровне документазаписи
Сравнение NoSQL решений
YCSB. 50/50 Read and Update
Сравнение NoSQL решений
YCSB. 95/5 Read and Update
Сравнение NoSQL решений
YCSB. Short scans
Сравнение NoSQL решений
YCSB. Read performance as cluster size increases
Tarantool - расширяемая, транзакционная высокопроизводительная СУБД
для хранения наиболее запрашиваемых и часто меняющихся данных.
• Индексы: простые, составные, уникальные, неуникальные
• Операции: INSERT/UPDATE/SELEC/REPLACE/DELETE
• Поддерживает простой SQL
Обзор архитектуры и особенности
• Все данные в RAM
• + на диске за счет write-ahead log (WAL)
• WAL растет → делаем снепшоты c copy-on-write
• lock-free - кооперативная многозадачность (coroutines,
fibers). Типичная нагрузка на ЦПУ < 10%
• Асинхронная репликация
• Хранимые процедуры на Lua
• Фоновые процедуры
Use case
Use case
Use case
One database to rule them all
Silver Bullet
No Silver Bullet
Для каждого типа данных следует
использовать хранилище наиболее
для него подходящее
Спасибо за внимание
Станислав Ступников
s.stupnikov@corp.mail.ru

More Related Content

What's hot

Мастер-класс по BigData Tools для HappyDev'15
Мастер-класс по BigData Tools для HappyDev'15Мастер-класс по BigData Tools для HappyDev'15
Мастер-класс по BigData Tools для HappyDev'15
Alexey Zinoviev
 
NoSQL - взрыв возможностей
NoSQL - взрыв возможностейNoSQL - взрыв возможностей
NoSQL - взрыв возможностей
Aleksey Solntsev
 
Выступление Александра Крота из "Вымпелком" на Hadoop Meetup в рамках RIT++
Выступление Александра Крота из "Вымпелком" на Hadoop Meetup в рамках RIT++Выступление Александра Крота из "Вымпелком" на Hadoop Meetup в рамках RIT++
Выступление Александра Крота из "Вымпелком" на Hadoop Meetup в рамках RIT++
Антон Шестаков
 
Cassandra: быстрая запись данных в высоконагруженных системах
Cassandra: быстрая запись данных в высоконагруженных системахCassandra: быстрая запись данных в высоконагруженных системах
Cassandra: быстрая запись данных в высоконагруженных системахAlexander Mezhov
 
Введение в Apache Cassandra
Введение в Apache CassandraВведение в Apache Cassandra
Введение в Apache Cassandra
Alexander Tivelkov
 
Лекция 12. Spark
Лекция 12. SparkЛекция 12. Spark
Лекция 12. Spark
Technopark
 
Алексей Чумаков. Apache Cassandra на реальном проекте
Алексей Чумаков. Apache Cassandra на реальном проектеАлексей Чумаков. Apache Cassandra на реальном проекте
Алексей Чумаков. Apache Cassandra на реальном проектеVolha Banadyseva
 
Apache Cassandra. Ещё одно NoSQL хранилище (Владимир Климонтович)
Apache Cassandra. Ещё одно NoSQL хранилище (Владимир Климонтович)Apache Cassandra. Ещё одно NoSQL хранилище (Владимир Климонтович)
Apache Cassandra. Ещё одно NoSQL хранилище (Владимир Климонтович)Ontico
 
MongoDB. Области применения, преимущества и узкие места, тонкости использован...
MongoDB. Области применения, преимущества и узкие места, тонкости использован...MongoDB. Области применения, преимущества и узкие места, тонкости использован...
MongoDB. Области применения, преимущества и узкие места, тонкости использован...phpdevby
 
Александр Соловьёв, Griddynamics.com
Александр Соловьёв, Griddynamics.comАлександр Соловьёв, Griddynamics.com
Александр Соловьёв, Griddynamics.com
Ontico
 
Pulsedb — система хранения временных рядов
Pulsedb — система хранения временных рядовPulsedb — система хранения временных рядов
Pulsedb — система хранения временных рядов
Max Lapshin
 
HappyDev'15 Keynote: Когда все данные станут большими...
HappyDev'15 Keynote: Когда все данные станут большими...HappyDev'15 Keynote: Когда все данные станут большими...
HappyDev'15 Keynote: Когда все данные станут большими...
Alexey Zinoviev
 
Распределённый кэш или хранилище данных. Что выбрать?
Распределённый кэш или хранилище данных. Что выбрать?Распределённый кэш или хранилище данных. Что выбрать?
Распределённый кэш или хранилище данных. Что выбрать?
aragozin
 
Архитектура HAWQ / Алексей Грищенко (Pivotal)
Архитектура HAWQ / Алексей Грищенко (Pivotal)Архитектура HAWQ / Алексей Грищенко (Pivotal)
Архитектура HAWQ / Алексей Грищенко (Pivotal)
Ontico
 
MongoDB в продакшен - миф или реальность?
MongoDB в продакшен - миф или реальность?MongoDB в продакшен - миф или реальность?
MongoDB в продакшен - миф или реальность?Alexey Tokar
 
MongoDB basics in Russian
MongoDB basics in RussianMongoDB basics in Russian
MongoDB basics in Russian
Oleg Kachan
 
Блеск и нищета распределённых кэшей
Блеск и нищета распределённых кэшейБлеск и нищета распределённых кэшей
Блеск и нищета распределённых кэшей
aragozin
 
Hadoop > cascading -> cascalog (very short)
Hadoop  > cascading -> cascalog (very short)Hadoop  > cascading -> cascalog (very short)
Hadoop > cascading -> cascalog (very short)Andrew Panfilov
 
Применение в Enterprise-приложении графовой базы данных Neo4j - Антон Максимо...
Применение в Enterprise-приложении графовой базы данных Neo4j - Антон Максимо...Применение в Enterprise-приложении графовой базы данных Neo4j - Антон Максимо...
Применение в Enterprise-приложении графовой базы данных Neo4j - Антон Максимо...
Dev2Dev
 
Машинное обучение в электронной коммерции — практика использования и подводны...
Машинное обучение в электронной коммерции — практика использования и подводны...Машинное обучение в электронной коммерции — практика использования и подводны...
Машинное обучение в электронной коммерции — практика использования и подводны...
Ontico
 

What's hot (20)

Мастер-класс по BigData Tools для HappyDev'15
Мастер-класс по BigData Tools для HappyDev'15Мастер-класс по BigData Tools для HappyDev'15
Мастер-класс по BigData Tools для HappyDev'15
 
NoSQL - взрыв возможностей
NoSQL - взрыв возможностейNoSQL - взрыв возможностей
NoSQL - взрыв возможностей
 
Выступление Александра Крота из "Вымпелком" на Hadoop Meetup в рамках RIT++
Выступление Александра Крота из "Вымпелком" на Hadoop Meetup в рамках RIT++Выступление Александра Крота из "Вымпелком" на Hadoop Meetup в рамках RIT++
Выступление Александра Крота из "Вымпелком" на Hadoop Meetup в рамках RIT++
 
Cassandra: быстрая запись данных в высоконагруженных системах
Cassandra: быстрая запись данных в высоконагруженных системахCassandra: быстрая запись данных в высоконагруженных системах
Cassandra: быстрая запись данных в высоконагруженных системах
 
Введение в Apache Cassandra
Введение в Apache CassandraВведение в Apache Cassandra
Введение в Apache Cassandra
 
Лекция 12. Spark
Лекция 12. SparkЛекция 12. Spark
Лекция 12. Spark
 
Алексей Чумаков. Apache Cassandra на реальном проекте
Алексей Чумаков. Apache Cassandra на реальном проектеАлексей Чумаков. Apache Cassandra на реальном проекте
Алексей Чумаков. Apache Cassandra на реальном проекте
 
Apache Cassandra. Ещё одно NoSQL хранилище (Владимир Климонтович)
Apache Cassandra. Ещё одно NoSQL хранилище (Владимир Климонтович)Apache Cassandra. Ещё одно NoSQL хранилище (Владимир Климонтович)
Apache Cassandra. Ещё одно NoSQL хранилище (Владимир Климонтович)
 
MongoDB. Области применения, преимущества и узкие места, тонкости использован...
MongoDB. Области применения, преимущества и узкие места, тонкости использован...MongoDB. Области применения, преимущества и узкие места, тонкости использован...
MongoDB. Области применения, преимущества и узкие места, тонкости использован...
 
Александр Соловьёв, Griddynamics.com
Александр Соловьёв, Griddynamics.comАлександр Соловьёв, Griddynamics.com
Александр Соловьёв, Griddynamics.com
 
Pulsedb — система хранения временных рядов
Pulsedb — система хранения временных рядовPulsedb — система хранения временных рядов
Pulsedb — система хранения временных рядов
 
HappyDev'15 Keynote: Когда все данные станут большими...
HappyDev'15 Keynote: Когда все данные станут большими...HappyDev'15 Keynote: Когда все данные станут большими...
HappyDev'15 Keynote: Когда все данные станут большими...
 
Распределённый кэш или хранилище данных. Что выбрать?
Распределённый кэш или хранилище данных. Что выбрать?Распределённый кэш или хранилище данных. Что выбрать?
Распределённый кэш или хранилище данных. Что выбрать?
 
Архитектура HAWQ / Алексей Грищенко (Pivotal)
Архитектура HAWQ / Алексей Грищенко (Pivotal)Архитектура HAWQ / Алексей Грищенко (Pivotal)
Архитектура HAWQ / Алексей Грищенко (Pivotal)
 
MongoDB в продакшен - миф или реальность?
MongoDB в продакшен - миф или реальность?MongoDB в продакшен - миф или реальность?
MongoDB в продакшен - миф или реальность?
 
MongoDB basics in Russian
MongoDB basics in RussianMongoDB basics in Russian
MongoDB basics in Russian
 
Блеск и нищета распределённых кэшей
Блеск и нищета распределённых кэшейБлеск и нищета распределённых кэшей
Блеск и нищета распределённых кэшей
 
Hadoop > cascading -> cascalog (very short)
Hadoop  > cascading -> cascalog (very short)Hadoop  > cascading -> cascalog (very short)
Hadoop > cascading -> cascalog (very short)
 
Применение в Enterprise-приложении графовой базы данных Neo4j - Антон Максимо...
Применение в Enterprise-приложении графовой базы данных Neo4j - Антон Максимо...Применение в Enterprise-приложении графовой базы данных Neo4j - Антон Максимо...
Применение в Enterprise-приложении графовой базы данных Neo4j - Антон Максимо...
 
Машинное обучение в электронной коммерции — практика использования и подводны...
Машинное обучение в электронной коммерции — практика использования и подводны...Машинное обучение в электронной коммерции — практика использования и подводны...
Машинное обучение в электронной коммерции — практика использования и подводны...
 

Viewers also liked

Лекция 11. Вычислительная модель Pregel
Лекция 11. Вычислительная модель PregelЛекция 11. Вычислительная модель Pregel
Лекция 11. Вычислительная модель Pregel
Technopark
 
СУБД 2013 Лекция №1 "Введение и начало проектирования"
СУБД 2013 Лекция №1 "Введение и начало проектирования"СУБД 2013 Лекция №1 "Введение и начало проектирования"
СУБД 2013 Лекция №1 "Введение и начало проектирования"
Technopark
 
СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL" Час...
СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL" Час...СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL" Час...
СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL" Час...
Technopark
 
СУБД 2013 Лекция №7 "Оптимизация запросов и индексирование"
СУБД 2013 Лекция №7 "Оптимизация запросов и индексирование"СУБД 2013 Лекция №7 "Оптимизация запросов и индексирование"
СУБД 2013 Лекция №7 "Оптимизация запросов и индексирование"
Technopark
 
Лекция 9. ZooKeeper
Лекция 9. ZooKeeperЛекция 9. ZooKeeper
Лекция 9. ZooKeeper
Technopark
 
СУБД 2013 Лекция №9 "Безопасность баз данных"
СУБД 2013 Лекция №9 "Безопасность баз данных"СУБД 2013 Лекция №9 "Безопасность баз данных"
СУБД 2013 Лекция №9 "Безопасность баз данных"
Technopark
 
Лекция 10. Apache Mahout
Лекция 10. Apache MahoutЛекция 10. Apache Mahout
Лекция 10. Apache Mahout
Technopark
 
СУБД 2013 Лекция №5 "Определение узких мест"
СУБД 2013 Лекция №5 "Определение узких мест"СУБД 2013 Лекция №5 "Определение узких мест"
СУБД 2013 Лекция №5 "Определение узких мест"
Technopark
 
Лекция 7. Введение в Pig и Hive
Лекция 7. Введение в Pig и HiveЛекция 7. Введение в Pig и Hive
Лекция 7. Введение в Pig и Hive
Technopark
 
СУБД 2013 Лекция №8 "Конфигурирование базы данных"
СУБД 2013 Лекция №8 "Конфигурирование базы данных"СУБД 2013 Лекция №8 "Конфигурирование базы данных"
СУБД 2013 Лекция №8 "Конфигурирование базы данных"
Technopark
 
Лекция 4. MapReduce в Hadoop (введение)
Лекция 4. MapReduce в Hadoop (введение)Лекция 4. MapReduce в Hadoop (введение)
Лекция 4. MapReduce в Hadoop (введение)
Technopark
 
СУБД 2013 Лекция №2 "Модификация данных. Выборка данных (начало)"
СУБД 2013 Лекция №2 "Модификация данных. Выборка данных (начало)"СУБД 2013 Лекция №2 "Модификация данных. Выборка данных (начало)"
СУБД 2013 Лекция №2 "Модификация данных. Выборка данных (начало)"
Technopark
 
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
Shamim bhuiyan
 
Oracle NoSQL Database
Oracle NoSQL DatabaseOracle NoSQL Database
Oracle NoSQL Database
Andrey Akulov
 
Лекция 5. MapReduce в Hadoop (алгоритмы)
Лекция 5. MapReduce в Hadoop (алгоритмы)Лекция 5. MapReduce в Hadoop (алгоритмы)
Лекция 5. MapReduce в Hadoop (алгоритмы)
Technopark
 
Преимущества NoSQL баз данных на примере MongoDB
Преимущества NoSQL баз данных на примере MongoDBПреимущества NoSQL баз данных на примере MongoDB
Преимущества NoSQL баз данных на примере MongoDB
UNETA
 
Лекция 6. MapReduce в Hadoop (графы)
Лекция 6. MapReduce в Hadoop (графы)Лекция 6. MapReduce в Hadoop (графы)
Лекция 6. MapReduce в Hadoop (графы)
Technopark
 
NoSQL - коротко о главном / Сергей Туленцев (TextMaster)
NoSQL - коротко о главном / Сергей Туленцев (TextMaster)NoSQL - коротко о главном / Сергей Туленцев (TextMaster)
NoSQL - коротко о главном / Сергей Туленцев (TextMaster)
Ontico
 
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
 

Viewers also liked (20)

Лекция 11. Вычислительная модель Pregel
Лекция 11. Вычислительная модель PregelЛекция 11. Вычислительная модель Pregel
Лекция 11. Вычислительная модель Pregel
 
СУБД 2013 Лекция №1 "Введение и начало проектирования"
СУБД 2013 Лекция №1 "Введение и начало проектирования"СУБД 2013 Лекция №1 "Введение и начало проектирования"
СУБД 2013 Лекция №1 "Введение и начало проектирования"
 
СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL" Час...
СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL" Час...СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL" Час...
СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL" Час...
 
СУБД 2013 Лекция №7 "Оптимизация запросов и индексирование"
СУБД 2013 Лекция №7 "Оптимизация запросов и индексирование"СУБД 2013 Лекция №7 "Оптимизация запросов и индексирование"
СУБД 2013 Лекция №7 "Оптимизация запросов и индексирование"
 
Лекция 9. ZooKeeper
Лекция 9. ZooKeeperЛекция 9. ZooKeeper
Лекция 9. ZooKeeper
 
СУБД 2013 Лекция №9 "Безопасность баз данных"
СУБД 2013 Лекция №9 "Безопасность баз данных"СУБД 2013 Лекция №9 "Безопасность баз данных"
СУБД 2013 Лекция №9 "Безопасность баз данных"
 
Лекция 10. Apache Mahout
Лекция 10. Apache MahoutЛекция 10. Apache Mahout
Лекция 10. Apache Mahout
 
СУБД 2013 Лекция №5 "Определение узких мест"
СУБД 2013 Лекция №5 "Определение узких мест"СУБД 2013 Лекция №5 "Определение узких мест"
СУБД 2013 Лекция №5 "Определение узких мест"
 
Лекция 7. Введение в Pig и Hive
Лекция 7. Введение в Pig и HiveЛекция 7. Введение в Pig и Hive
Лекция 7. Введение в Pig и Hive
 
СУБД 2013 Лекция №8 "Конфигурирование базы данных"
СУБД 2013 Лекция №8 "Конфигурирование базы данных"СУБД 2013 Лекция №8 "Конфигурирование базы данных"
СУБД 2013 Лекция №8 "Конфигурирование базы данных"
 
Лекция 4. MapReduce в Hadoop (введение)
Лекция 4. MapReduce в Hadoop (введение)Лекция 4. MapReduce в Hadoop (введение)
Лекция 4. MapReduce в Hadoop (введение)
 
СУБД 2013 Лекция №2 "Модификация данных. Выборка данных (начало)"
СУБД 2013 Лекция №2 "Модификация данных. Выборка данных (начало)"СУБД 2013 Лекция №2 "Модификация данных. Выборка данных (начало)"
СУБД 2013 Лекция №2 "Модификация данных. Выборка данных (начало)"
 
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
 
Oracle NoSQL Database
Oracle NoSQL DatabaseOracle NoSQL Database
Oracle NoSQL Database
 
Лекция 5. MapReduce в Hadoop (алгоритмы)
Лекция 5. MapReduce в Hadoop (алгоритмы)Лекция 5. MapReduce в Hadoop (алгоритмы)
Лекция 5. MapReduce в Hadoop (алгоритмы)
 
Преимущества NoSQL баз данных на примере MongoDB
Преимущества NoSQL баз данных на примере MongoDBПреимущества NoSQL баз данных на примере MongoDB
Преимущества NoSQL баз данных на примере MongoDB
 
Лекция 6. MapReduce в Hadoop (графы)
Лекция 6. MapReduce в Hadoop (графы)Лекция 6. MapReduce в Hadoop (графы)
Лекция 6. MapReduce в Hadoop (графы)
 
NoSQL - коротко о главном / Сергей Туленцев (TextMaster)
NoSQL - коротко о главном / Сергей Туленцев (TextMaster)NoSQL - коротко о главном / Сергей Туленцев (TextMaster)
NoSQL - коротко о главном / Сергей Туленцев (TextMaster)
 
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
 

Similar to СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL"

Опыт использования NoSQL-хранилищ (Андрей Новиков)
Опыт использования NoSQL-хранилищ (Андрей Новиков)Опыт использования NoSQL-хранилищ (Андрей Новиков)
Опыт использования NoSQL-хранилищ (Андрей Новиков)Olga Lavrentieva
 
NoSQL thumbtack experience, Анатолий Никулин
NoSQL thumbtack experience, Анатолий НикулинNoSQL thumbtack experience, Анатолий Никулин
NoSQL thumbtack experience, Анатолий Никулин
Anatoliy Nikulin
 
Андрей Зайчиков "Архитектура распределенных кластеров NoSQL на AWS"
Андрей Зайчиков "Архитектура распределенных кластеров NoSQL на AWS"Андрей Зайчиков "Архитектура распределенных кластеров NoSQL на AWS"
Андрей Зайчиков "Архитектура распределенных кластеров NoSQL на AWS"
IT Event
 
Cравнительный анализ хранилищ данных (Олег Царев, Кирилл Коринский)
Cравнительный анализ хранилищ данных (Олег Царев, Кирилл Коринский)Cравнительный анализ хранилищ данных (Олег Царев, Кирилл Коринский)
Cравнительный анализ хранилищ данных (Олег Царев, Кирилл Коринский)Ontico
 
2014-01-04 02 Алексей Зиновьев. Выбор NoSQL базы данных
2014-01-04 02 Алексей Зиновьев. Выбор NoSQL базы данных2014-01-04 02 Алексей Зиновьев. Выбор NoSQL базы данных
2014-01-04 02 Алексей Зиновьев. Выбор NoSQL базы данных
Омские ИТ-субботники
 
NoSQL: issues and progress, current status and prospects
NoSQL: issues and progress, current status and prospectsNoSQL: issues and progress, current status and prospects
NoSQL: issues and progress, current status and prospects
Andrei Nikolaenko
 
NewSQL: SQL никуда не уходит / Константин Осипов (tarantool.org)
NewSQL: SQL никуда не уходит / Константин Осипов (tarantool.org)NewSQL: SQL никуда не уходит / Константин Осипов (tarantool.org)
NewSQL: SQL никуда не уходит / Константин Осипов (tarantool.org)
Ontico
 
кри 2014 elastic search рациональный подход к созданию собственной системы а...
кри 2014 elastic search  рациональный подход к созданию собственной системы а...кри 2014 elastic search  рациональный подход к созданию собственной системы а...
кри 2014 elastic search рациональный подход к созданию собственной системы а...
Vyacheslav Nikulin
 
High load2007 scaling-web-applications-rus
High load2007 scaling-web-applications-rusHigh load2007 scaling-web-applications-rus
High load2007 scaling-web-applications-rus
Vladd Ev
 
Константин Осипов
Константин ОсиповКонстантин Осипов
Константин Осипов
CodeFest
 
Cassandra db
Cassandra dbCassandra db
Cassandra db
Andrei Poliakov
 
IBM Cloudant и Apache CouchDB: NoSQL базы данных эпохи облаков
IBM Cloudant и Apache CouchDB: NoSQL базы данных эпохи облаковIBM Cloudant и Apache CouchDB: NoSQL базы данных эпохи облаков
IBM Cloudant и Apache CouchDB: NoSQL базы данных эпохи облаков
Maxim Zinal
 
IOP202 Redis in Azure
IOP202 Redis in AzureIOP202 Redis in Azure
IOP202 Redis in Azure
mourhoon
 
Нереляционный SQL
Нереляционный SQLНереляционный SQL
Нереляционный SQL
Andrei Nikolaenko
 
Нереляционный SQL / Андрей Николаенко (IBS)
Нереляционный SQL / Андрей Николаенко (IBS)Нереляционный SQL / Андрей Николаенко (IBS)
Нереляционный SQL / Андрей Николаенко (IBS)
Ontico
 
MySQL® и MongoDB® - когда что лучше использовать? / Петр Зайцев (Percona)
MySQL® и MongoDB® - когда что лучше использовать? / Петр Зайцев (Percona)MySQL® и MongoDB® - когда что лучше использовать? / Петр Зайцев (Percona)
MySQL® и MongoDB® - когда что лучше использовать? / Петр Зайцев (Percona)
Ontico
 
11 - Hadoop. NoSQL
11 - Hadoop. NoSQL11 - Hadoop. NoSQL
11 - Hadoop. NoSQL
Roman Brovko
 
Architecture of NoSQL distributed clusters on AWS
Architecture of NoSQL distributed clusters on AWSArchitecture of NoSQL distributed clusters on AWS
Architecture of NoSQL distributed clusters on AWS
Aleksandr Maklakov
 

Similar to СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL" (20)

Nosql and Mongodb
Nosql and MongodbNosql and Mongodb
Nosql and Mongodb
 
Опыт использования NoSQL-хранилищ (Андрей Новиков)
Опыт использования NoSQL-хранилищ (Андрей Новиков)Опыт использования NoSQL-хранилищ (Андрей Новиков)
Опыт использования NoSQL-хранилищ (Андрей Новиков)
 
NoSQL thumbtack experience, Анатолий Никулин
NoSQL thumbtack experience, Анатолий НикулинNoSQL thumbtack experience, Анатолий Никулин
NoSQL thumbtack experience, Анатолий Никулин
 
Андрей Зайчиков "Архитектура распределенных кластеров NoSQL на AWS"
Андрей Зайчиков "Архитектура распределенных кластеров NoSQL на AWS"Андрей Зайчиков "Архитектура распределенных кластеров NoSQL на AWS"
Андрей Зайчиков "Архитектура распределенных кластеров NoSQL на AWS"
 
Cравнительный анализ хранилищ данных (Олег Царев, Кирилл Коринский)
Cравнительный анализ хранилищ данных (Олег Царев, Кирилл Коринский)Cравнительный анализ хранилищ данных (Олег Царев, Кирилл Коринский)
Cравнительный анализ хранилищ данных (Олег Царев, Кирилл Коринский)
 
2014-01-04 02 Алексей Зиновьев. Выбор NoSQL базы данных
2014-01-04 02 Алексей Зиновьев. Выбор NoSQL базы данных2014-01-04 02 Алексей Зиновьев. Выбор NoSQL базы данных
2014-01-04 02 Алексей Зиновьев. Выбор NoSQL базы данных
 
NoSQL: issues and progress, current status and prospects
NoSQL: issues and progress, current status and prospectsNoSQL: issues and progress, current status and prospects
NoSQL: issues and progress, current status and prospects
 
NewSQL: SQL никуда не уходит / Константин Осипов (tarantool.org)
NewSQL: SQL никуда не уходит / Константин Осипов (tarantool.org)NewSQL: SQL никуда не уходит / Константин Осипов (tarantool.org)
NewSQL: SQL никуда не уходит / Константин Осипов (tarantool.org)
 
кри 2014 elastic search рациональный подход к созданию собственной системы а...
кри 2014 elastic search  рациональный подход к созданию собственной системы а...кри 2014 elastic search  рациональный подход к созданию собственной системы а...
кри 2014 elastic search рациональный подход к созданию собственной системы а...
 
High load2007 scaling-web-applications-rus
High load2007 scaling-web-applications-rusHigh load2007 scaling-web-applications-rus
High load2007 scaling-web-applications-rus
 
Константин Осипов
Константин ОсиповКонстантин Осипов
Константин Осипов
 
Cassandra db
Cassandra dbCassandra db
Cassandra db
 
IBM Cloudant и Apache CouchDB: NoSQL базы данных эпохи облаков
IBM Cloudant и Apache CouchDB: NoSQL базы данных эпохи облаковIBM Cloudant и Apache CouchDB: NoSQL базы данных эпохи облаков
IBM Cloudant и Apache CouchDB: NoSQL базы данных эпохи облаков
 
No sql.mongodb scaling
No sql.mongodb scalingNo sql.mongodb scaling
No sql.mongodb scaling
 
IOP202 Redis in Azure
IOP202 Redis in AzureIOP202 Redis in Azure
IOP202 Redis in Azure
 
Нереляционный SQL
Нереляционный SQLНереляционный SQL
Нереляционный SQL
 
Нереляционный SQL / Андрей Николаенко (IBS)
Нереляционный SQL / Андрей Николаенко (IBS)Нереляционный SQL / Андрей Николаенко (IBS)
Нереляционный SQL / Андрей Николаенко (IBS)
 
MySQL® и MongoDB® - когда что лучше использовать? / Петр Зайцев (Percona)
MySQL® и MongoDB® - когда что лучше использовать? / Петр Зайцев (Percona)MySQL® и MongoDB® - когда что лучше использовать? / Петр Зайцев (Percona)
MySQL® и MongoDB® - когда что лучше использовать? / Петр Зайцев (Percona)
 
11 - Hadoop. NoSQL
11 - Hadoop. NoSQL11 - Hadoop. NoSQL
11 - Hadoop. NoSQL
 
Architecture of NoSQL distributed clusters on AWS
Architecture of NoSQL distributed clusters on AWSArchitecture of NoSQL distributed clusters on AWS
Architecture of NoSQL distributed clusters on AWS
 

More from Technopark

СУБД 2013 Лекция №6 "Профилирование запросов. Сложноструктурированные SQL-зап...
СУБД 2013 Лекция №6 "Профилирование запросов. Сложноструктурированные SQL-зап...СУБД 2013 Лекция №6 "Профилирование запросов. Сложноструктурированные SQL-зап...
СУБД 2013 Лекция №6 "Профилирование запросов. Сложноструктурированные SQL-зап...
Technopark
 
СУБД 2013 Лекция №4 "Расширенные возможности работы с базами данных. Триггеры...
СУБД 2013 Лекция №4 "Расширенные возможности работы с базами данных. Триггеры...СУБД 2013 Лекция №4 "Расширенные возможности работы с базами данных. Триггеры...
СУБД 2013 Лекция №4 "Расширенные возможности работы с базами данных. Триггеры...
Technopark
 
СУБД 2013 Лекция №3 "Выборка данных (продолжение). Транзакции"
СУБД 2013 Лекция №3 "Выборка данных (продолжение). Транзакции"СУБД 2013 Лекция №3 "Выборка данных (продолжение). Транзакции"
СУБД 2013 Лекция №3 "Выборка данных (продолжение). Транзакции"
Technopark
 
Java осень 2014 занятие 8
Java осень 2014 занятие 8Java осень 2014 занятие 8
Java осень 2014 занятие 8
Technopark
 
Java осень 2014 занятие 7
Java осень 2014 занятие 7Java осень 2014 занятие 7
Java осень 2014 занятие 7
Technopark
 
Java осень 2014 занятие 6
Java осень 2014 занятие 6Java осень 2014 занятие 6
Java осень 2014 занятие 6
Technopark
 
Java осень 2014 занятие 5
Java осень 2014 занятие 5Java осень 2014 занятие 5
Java осень 2014 занятие 5
Technopark
 
Java осень 2014 занятие 3
Java осень 2014 занятие 3Java осень 2014 занятие 3
Java осень 2014 занятие 3
Technopark
 
Java осень 2014 занятие 1
Java осень 2014 занятие 1Java осень 2014 занятие 1
Java осень 2014 занятие 1
Technopark
 
Java осень 2014 занятие 2
Java осень 2014 занятие 2Java осень 2014 занятие 2
Java осень 2014 занятие 2
Technopark
 

More from Technopark (10)

СУБД 2013 Лекция №6 "Профилирование запросов. Сложноструктурированные SQL-зап...
СУБД 2013 Лекция №6 "Профилирование запросов. Сложноструктурированные SQL-зап...СУБД 2013 Лекция №6 "Профилирование запросов. Сложноструктурированные SQL-зап...
СУБД 2013 Лекция №6 "Профилирование запросов. Сложноструктурированные SQL-зап...
 
СУБД 2013 Лекция №4 "Расширенные возможности работы с базами данных. Триггеры...
СУБД 2013 Лекция №4 "Расширенные возможности работы с базами данных. Триггеры...СУБД 2013 Лекция №4 "Расширенные возможности работы с базами данных. Триггеры...
СУБД 2013 Лекция №4 "Расширенные возможности работы с базами данных. Триггеры...
 
СУБД 2013 Лекция №3 "Выборка данных (продолжение). Транзакции"
СУБД 2013 Лекция №3 "Выборка данных (продолжение). Транзакции"СУБД 2013 Лекция №3 "Выборка данных (продолжение). Транзакции"
СУБД 2013 Лекция №3 "Выборка данных (продолжение). Транзакции"
 
Java осень 2014 занятие 8
Java осень 2014 занятие 8Java осень 2014 занятие 8
Java осень 2014 занятие 8
 
Java осень 2014 занятие 7
Java осень 2014 занятие 7Java осень 2014 занятие 7
Java осень 2014 занятие 7
 
Java осень 2014 занятие 6
Java осень 2014 занятие 6Java осень 2014 занятие 6
Java осень 2014 занятие 6
 
Java осень 2014 занятие 5
Java осень 2014 занятие 5Java осень 2014 занятие 5
Java осень 2014 занятие 5
 
Java осень 2014 занятие 3
Java осень 2014 занятие 3Java осень 2014 занятие 3
Java осень 2014 занятие 3
 
Java осень 2014 занятие 1
Java осень 2014 занятие 1Java осень 2014 занятие 1
Java осень 2014 занятие 1
 
Java осень 2014 занятие 2
Java осень 2014 занятие 2Java осень 2014 занятие 2
Java осень 2014 занятие 2
 

СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL"

  • 2.
  • 3.
  • 4.
  • 5. Почему NoSQL? 20 лет успешного существования на рынке! • Персистентное хранение данных • Конкурентный доступ • Shared database integration • Стандартная (практически) модель А что там с РСУБД? Почему NoSQL? А что там с РСУБД?
  • 8. БД Почему NoSQL? 90ые: Shared database ПриложениеПриложение Приложение
  • 9. Почему NoSQL? 2000ые: Web applications БД ПриложениеПриложениеПриложение БД БД
  • 15. NoSQL • Не используют реляционную модель • Хорошо подходят для развертывания на кластере • Open-source • Schemaless Общие характеристика NoSQL БД:
  • 20.
  • 21. NoSQL
  • 22. • навеяны Dynamo DB от Amazon • модель данных: множество пар ключ-значение • для БД содержание значение непрозрачно (просто какой-то BLOB) Примеры: • Voldemort • Redis • Riak Виды NoSQL БД Key-Value Store
  • 23. Виды NoSQL БД Document-oriented store • навеяны Lotus Notes от IBM • модель данных: множество множеств ключ-значение • для БД содержание значение прозрачно Примеры: • CouchDB • MongoDB
  • 24. Виды NoSQL БД Column-oriented store • навеяны BigTable от Google • похожи на column-oriented реляционные БД, но с особенностями • модель данных: ключ строки –> семейство колонок –> колонка –> значение Примеры: • HBase • Cassandra • Hypertable
  • 26. Виды NoSQL БД Graph database • навеяны теорией графов G=(V, E) от математиков 18го века • хорошо моделируют сложные данные • модель данных: узлы, ребра и их атрибуты Примеры: • Neo4j • AllegroGraph
  • 29. • MapReduce: Simplified Data Processing on Large Clusters. Jeffrey Dean and Sanjay Ghemawat • Вычисления простые, но данных очень много • Не надо связывать самому с распределенными вычислениями • Просто определить две функции: • map (k1, v1) → k2,v2 • reduce (k2, list(v2)) → v3 • За распределение данных, обработку отказов, планирование и запуск параллельных задач отвечает сам фреймворк MapReduce Теоретические основы NoSQL
  • 32. Теоретические основы NoSQL Anti-Entropy Protocols, Gossips • Поддержание консистентности (eventual consistency) и синхронизация состояния кластера • проблему можно решить за счет глобального координатора • Каждый узел по расписанию выбирает другой случайный узел и обменивается информацией • тут возможно 3 стратегии
  • 34. • Read-Write consistency – минимизировать время сходимости реплик • Read-after-write consistency • Read-after-read consistency • Write-Write consistency – обработка конкурентной записи • Atomic Writes – пишем «самое новое» значение (Cassandra) • Atomic Read-modify-write • Conflict prevention - distributed locking или консенсус-протоколы, как PAXOS (РСУБД, HBase, MongoDB) • Conflict detection – в случае конфликта откатываемся или храним историю, пока не разрешим (Riak, Voldemort, CouchDB) Теоретические основы NoSQL Сonsistency
  • 36. Теоретические основы NoSQL Eventual Сonsistency • vector clock – список пар (узел, счетчик) • Один вектор на каждую версию каждого объекта • Конфликт улаживает клиент
  • 37. • Устойчивая к отлючениям электричества миграция (напр., расширение кластера) • MongoDB и Redis Cluster Теоретические основы NoSQL Rebalancing
  • 38. Теоретические основы NoSQL Partitioning and replication • NodeID = hash(key) % TotalNodes - плохая идея, если вы планируете добавлять и убирать узлы • Consistent hashing – хорошая идея
  • 39. • Автоматическая адаптация – tradeoff между временем опредления отказа и вероятностью ложной тревоги • Гибкость – не только «жив», «мертв» (разные состояния, как в MapReduce) • Масштабируемость • Phi Accrual Failure Detector - Cassandra Теоретические основы NoSQL Failure Detection
  • 40. • Выбор лидера среди реплик • Bully algorithm • MongoDB Теоретические основы NoSQL Coordinator Election
  • 41. Недостатки NoSQL решений • 3 config сервера – узкое место при шардинге • MapReduce – однопоточный, readwrite locks, на JS O_o • Молодой продукт, в нем встречаются баги (бывает Segmentation fault, core dumped, socket exception 9001 (?!) ) – используйте 2.2 и выше • По-умолчанию максимальный размер объекта — 4 мегабайта. • На 32-битных машинах, максимальный размер одной базы данных — 2 гигабайта
  • 42. Недостатки NoSQL решений • Все должно помещаться в RAM (есть VirtualMemory, но все ключи все равно в RAM!). Количетсво требуемой памяти пропорционально размеру dataset’у • Персистентность либо снепшотная, либо append-only с помощью fsync. Требуется очень много I/O ресурсов. • Операция сохранения требует доп. памяти (до 2х максимум) для успешного завершения, иногда асинхронные сохранения могут заблокировать сервер на время
  • 43. Недостатки NoSQL решений • Архитектура подразумевает tradeoff памяти на скорость. Для определенных нагрузок в разы может отличаться количество байт переданное на хранение и количество памяти, используемое Redis • Поиск только по ключам • Один инстанс не масштабируем (одно ядро, один поток). Нужно запускать несколько и на стороне приложения заниматься шардингом и балансировкой
  • 44. Недостатки NoSQL решений • Все на одной машине • Бесплатно: GPLv3 AGPL • Коммерческое использование: 6-24k $ в год
  • 45. Недостатки NoSQL решений • Особенности консистентности • Нет индексов • Нет аd-hoc querying (создаете БД под запросы) • Может быть высокая read/write latency на больших нагрузках за счет Java Garbage Collection
  • 46. Сравнение NoSQL решений Масштабируемость • HBase, Hypertable – много данных, не нужны произвольные запросы и транзакции • Cassandra, Riak – при высокой нагрузке на запись и если подходит слабая консистентность • MongoDB, Redis – «быстрые» данные (клики, биржа)
  • 47. Сравнение NoSQL решений Транзакционность • Может лучше РСУБД? • HBase, Hypertable – атомарность на уровне строк, консистентность за счет Paxos • Cassandra, Riak – слабоконсистентны • MongoDB, Redis – атомарность на уровне документазаписи
  • 51. Сравнение NoSQL решений YCSB. Read performance as cluster size increases
  • 52. Tarantool - расширяемая, транзакционная высокопроизводительная СУБД для хранения наиболее запрашиваемых и часто меняющихся данных.
  • 53. • Индексы: простые, составные, уникальные, неуникальные • Операции: INSERT/UPDATE/SELEC/REPLACE/DELETE • Поддерживает простой SQL
  • 54. Обзор архитектуры и особенности • Все данные в RAM • + на диске за счет write-ahead log (WAL) • WAL растет → делаем снепшоты c copy-on-write • lock-free - кооперативная многозадачность (coroutines, fibers). Типичная нагрузка на ЦПУ < 10% • Асинхронная репликация • Хранимые процедуры на Lua • Фоновые процедуры
  • 58.
  • 59. One database to rule them all
  • 62. Для каждого типа данных следует использовать хранилище наиболее для него подходящее
  • 63. Спасибо за внимание Станислав Ступников s.stupnikov@corp.mail.ru