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

63
СУБД Лекция 10 Станислав Ступников

Transcript of СУБД 2013 Лекция №10 "Нереляционное решение в области баз...

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

СУБД

Лекция 10

Станислав Ступников

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

Почему NoSQL?

20 лет успешного существования на рынке!

• Персистентное хранение данных• Конкурентный доступ• Shared database integration• Стандартная (практически) модель

А что там с РСУБД?

Почему NoSQL?

А что там с РСУБД?

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

Почему NoSQL?

Impedance Mismatch

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

Почему NoSQL?

80ые: Мейнфреймы

Приложение

БД

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

БД

Почему NoSQL?

90ые: Shared database

ПриложениеПриложение Приложение

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

Почему NoSQL?

2000ые: Web applications

БД

ПриложениеПриложениеПриложение

БД БД

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

Почему NoSQL?

Данных стало больше

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

Почему NoSQL?

Данные стали сложнее

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

Почему NoSQL?

Attack of the Clusters

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

Почему NoSQL?

Производительность РСУБД

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

NoSQL Rising

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

NoSQL

• Не используют реляционную модель• Хорошо подходят для развертывания на кластере• Open-source

• Schemaless

Общие характеристика NoSQL БД:

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

NoSQL

Aggregate orientation

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

NoSQL

Aggregate orientation

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

NoSQL

Aggregate orientation

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

NoSQL

Aggregate orientation

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

NoSQL

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

• навеяны Dynamo DB от Amazon

• модель данных: множество пар ключ-значение• для БД содержание значение непрозрачно (просто какой-то BLOB)

Примеры:• Voldemort• Redis• Riak

Виды NoSQL БД

Key-Value Store

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

Виды NoSQL БД

Document-oriented store

• навеяны Lotus Notes от IBM

• модель данных: множество множеств ключ-значение• для БД содержание значение прозрачно

Примеры:• CouchDB• MongoDB

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

Виды NoSQL БД

Column-oriented store

• навеяны BigTable от Google• похожи на column-oriented реляционные БД, но с особенностями• модель данных: ключ строки –> семейство колонок –> колонка –>значение

Примеры:• HBase• Cassandra• Hypertable

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

Column-oriented store

Виды NoSQL БД

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

Виды NoSQL БД

Graph database

• навеяны теорией графов G=(V, E) от математиков 18го века• хорошо моделируют сложные данные• модель данных: узлы, ребра и их атрибуты

Примеры:• Neo4j• AllegroGraph

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

Теоретические основы NoSQL

CAP Theorem

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

CAP Theorem

Теоретические основы NoSQL

Page 29: СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — 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

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

Теоретические основы NoSQL

MapReduce

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

MapReduce

Теоретические основы NoSQL

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

Теоретические основы NoSQL

Anti-Entropy Protocols, Gossips

• Поддержание консистентности (eventual consistency) и

синхронизация состояния кластера

• проблему можно решить за счет глобального координатора

• Каждый узел по расписанию выбирает другой случайный узел

и обменивается информацией• тут возможно 3 стратегии

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

Теоретические основы NoSQL

Anti-Entropy Protocols, Gossips

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

• 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

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

Теоретические основы NoSQL

Сonsistency

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

Теоретические основы NoSQL

Eventual Сonsistency

• vector clock – список пар (узел, счетчик)

• Один вектор на каждую версию каждого объекта

• Конфликт улаживает клиент

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

• Устойчивая к отлючениям электричества миграция (напр.,

расширение кластера)

• MongoDB и Redis Cluster

Теоретические основы NoSQL

Rebalancing

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

Теоретические основы NoSQL

Partitioning and replication

• NodeID = hash(key) % TotalNodes

- плохая идея, если вы планируете

добавлять и убирать узлы

• Consistent hashing – хорошая идея

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

• Автоматическая адаптация – tradeoff

между временем опредления отказа и вероятностью ложной тревоги• Гибкость – не только «жив», «мертв» (разные состояния, как в MapReduce)• Масштабируемость• Phi Accrual Failure Detector -

Cassandra

Теоретические основы NoSQL

Failure Detection

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

• Выбор лидера среди реплик

• Bully algorithm • MongoDB

Теоретические основы NoSQL

Coordinator Election

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

Недостатки NoSQL решений

• 3 config сервера – узкое место при шардинге

• MapReduce – однопоточный, read\write locks, на JS O_o

• Молодой продукт, в нем встречаются баги (бывает

Segmentation fault, core dumped, socket exception 9001 (?!) ) –

используйте 2.2 и выше

• По-умолчанию максимальный размер объекта — 4

мегабайта.

• На 32-битных машинах, максимальный размер одной базы

данных — 2 гигабайта

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

Недостатки NoSQL решений

• Все должно помещаться в RAM (есть VirtualMemory, но все

ключи все равно в RAM!). Количетсво требуемой памяти

пропорционально размеру dataset’у

• Персистентность либо снепшотная, либо append-only с

помощью fsync. Требуется очень много I/O ресурсов.

• Операция сохранения требует доп. памяти (до 2х максимум)

для успешного завершения, иногда асинхронные сохранения

могут заблокировать сервер на время

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

Недостатки NoSQL решений

• Архитектура подразумевает tradeoff памяти на скорость. Для

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

количество байт переданное на хранение и количество

памяти, используемое Redis

• Поиск только по ключам

• Один инстанс не масштабируем (одно ядро, один поток).

Нужно запускать несколько и на стороне приложения

заниматься шардингом и балансировкой

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

Недостатки NoSQL решений

• Все на одной машине

• Бесплатно: GPLv3 AGPL

• Коммерческое использование: 6-24k $ в год

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

Недостатки NoSQL решений

• Особенности консистентности

• Нет индексов

• Нет аd-hoc querying (создаете БД под запросы)

• Может быть высокая read/write latency на больших нагрузках

за счет Java Garbage Collection

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

Сравнение NoSQL решений

Масштабируемость

• HBase, Hypertable – много данных, не нужны произвольные

запросы и транзакции

• Cassandra, Riak – при высокой нагрузке на запись и если

подходит слабая консистентность

• MongoDB, Redis – «быстрые» данные (клики, биржа)

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

Сравнение NoSQL решений

Транзакционность

• Может лучше РСУБД?

• HBase, Hypertable – атомарность на уровне строк,

консистентность за счет Paxos

• Cassandra, Riak – слабоконсистентны

• MongoDB, Redis – атомарность на уровне документа\записи

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

Сравнение NoSQL решений

YCSB. 50/50 Read and Update

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

Сравнение NoSQL решений

YCSB. 95/5 Read and Update

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

Сравнение NoSQL решений

YCSB. Short scans

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

Сравнение NoSQL решений

YCSB. Read performance as cluster size increases

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

Tarantool - расширяемая, транзакционная высокопроизводительная СУБД

для хранения наиболее запрашиваемых и часто меняющихся данных.

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

• Индексы: простые, составные, уникальные, неуникальные

• Операции: INSERT/UPDATE/SELEC/REPLACE/DELETE

• Поддерживает простой SQL

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

Обзор архитектуры и особенности

• Все данные в RAM

• + на диске за счет write-ahead log (WAL)

• WAL растет → делаем снепшоты c copy-on-write

• lock-free - кооперативная многозадачность (coroutines,

fibers). Типичная нагрузка на ЦПУ < 10%

• Асинхронная репликация

• Хранимые процедуры на Lua

• Фоновые процедуры

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

Use case

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

Use case

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

Use case

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

One database to rule them all

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

Silver Bullet

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

No Silver Bullet

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

Для каждого типа данных следует

использовать хранилище наиболее

для него подходящее

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

Спасибо за вниманиеСтанислав Ступников

[email protected]