MySQL vs MongoDB - percona.com · MySQL vs MongoDB Что лучше использовать в...

46
MySQL vs MongoDB Что лучше использовать в каких случаях Петр Зайцев CEO, Percona 7 November 2016

Transcript of MySQL vs MongoDB - percona.com · MySQL vs MongoDB Что лучше использовать в...

Page 1: MySQL vs MongoDB - percona.com · MySQL vs MongoDB Что лучше использовать в каких случаях Петр Зайцев CEO, Percona 7 November 2016

MySQL vs MongoDBЧто лучше использовать в каких случаях

Петр ЗайцевCEO, Percona

7 November 2016

Page 2: MySQL vs MongoDB - percona.com · MySQL vs MongoDB Что лучше использовать в каких случаях Петр Зайцев CEO, Percona 7 November 2016

2

MySQL vs MongoDB

VS

Page 3: MySQL vs MongoDB - percona.com · MySQL vs MongoDB Что лучше использовать в каких случаях Петр Зайцев CEO, Percona 7 November 2016

3

Реальный Выбор

Какиеизоткрытыхбазданныхимеетсмыслиспользоватьдля

проекта

Page 4: MySQL vs MongoDB - percona.com · MySQL vs MongoDB Что лучше использовать в каких случаях Петр Зайцев CEO, Percona 7 November 2016

4

Открытые Базы Данных ?

МногиелидирующиекомпанииидругиеорганизациивыбираютОткрытыетехнологиивпервуюочередь

Нетребуетсялицензия– легкоэкспериментировать

Вопросыадекватноеподдержкивстаютпозжепризапускеприложения

Page 5: MySQL vs MongoDB - percona.com · MySQL vs MongoDB Что лучше использовать в каких случаях Петр Зайцев CEO, Percona 7 November 2016

5

Тренд популярности открытых баз данных

Page 6: MySQL vs MongoDB - percona.com · MySQL vs MongoDB Что лучше использовать в каких случаях Петр Зайцев CEO, Percona 7 November 2016

6

Открытые БД доминируют в новых подходах

Page 7: MySQL vs MongoDB - percona.com · MySQL vs MongoDB Что лучше использовать в каких случаях Петр Зайцев CEO, Percona 7 November 2016

7

Несколько баз данных. Несколько подходов

ВыбираетсяНесколько«БазДанных»чтобыиспользоватьихсильныестороны

Найтибаланстаккакмноготехнологий

сложноподдерживать

Page 8: MySQL vs MongoDB - percona.com · MySQL vs MongoDB Что лучше использовать в каких случаях Петр Зайцев CEO, Percona 7 November 2016

8

Подходы к Архитектуре

ОсновноеОперационноеХранилищеданных+дополнительныесервисы

МикросервисысразнымиОсновнымиХранилищами

Page 9: MySQL vs MongoDB - percona.com · MySQL vs MongoDB Что лучше использовать в каких случаях Петр Зайцев CEO, Percona 7 November 2016

9

Пример

ОсновноеХранилищенаMySQL

Redis/Memcacheдлякэширования

ElasticSearch/Sphinxдляпоиска

Kafkaдляпередачиданныхвсистемуаналитики

Page 10: MySQL vs MongoDB - percona.com · MySQL vs MongoDB Что лучше использовать в каких случаях Петр Зайцев CEO, Percona 7 November 2016

10

Выбор для Основного Хранилища Данных

Реляционное(SQL)

НеРеляционное

(NoSQL)

Page 11: MySQL vs MongoDB - percona.com · MySQL vs MongoDB Что лучше использовать в каких случаях Петр Зайцев CEO, Percona 7 November 2016

11

NoSQL – Модели данных

KeyValue

•Memcache

Document

•MongoDB

WideColumn

•Cassandra

Page 12: MySQL vs MongoDB - percona.com · MySQL vs MongoDB Что лучше использовать в каких случаях Петр Зайцев CEO, Percona 7 November 2016

12

Почему MySQL vs MongoDB

Page 13: MySQL vs MongoDB - percona.com · MySQL vs MongoDB Что лучше использовать в каких случаях Петр Зайцев CEO, Percona 7 November 2016

13

Почему MySQL vs MongoDB

ВPerconaмынаиболееплотнозанимаемсяэтимитехнологиями

Обетехнологииизначальноориентированынаразработчиковпростыхприложений

MongoDBизначальнофокусироваласьнапользователяхMySQL

Page 14: MySQL vs MongoDB - percona.com · MySQL vs MongoDB Что лучше использовать в каких случаях Петр Зайцев CEO, Percona 7 November 2016

14

MySQL & MongoDB в Percona

MySQL

• PerconaServerforMySQL• PerconaXtraDBCluster• PerconaToolkit• PerconaXtrabackup• PerconaMonitoringandManagement

• RocksDBStorageEngine(MyRocksвразработке)

• TokuDBStorageEngine

MongoDB

• PerconaServerforMongoDB• MongoDBConsistentBackup(builtin)• PerconaToolkitforMongoDB(вразработке)

• PerconaMonitoringandManagement

• RocksDBStorageEngine(MongoRocks)

• PerconaMemoryStorageEngine

Page 15: MySQL vs MongoDB - percona.com · MySQL vs MongoDB Что лучше использовать в каких случаях Петр Зайцев CEO, Percona 7 November 2016

15

Для полной прозрачности

ЯзнаюMySQLкудалучшечемMongoDBи

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

Page 16: MySQL vs MongoDB - percona.com · MySQL vs MongoDB Что лучше использовать в каких случаях Петр Зайцев CEO, Percona 7 November 2016

16

Выбор MySQL vs MongoDB

Опытипредпочтениякоманды

Подходкразработкеициклжизниприложения

МодельДанных

ТранзакциииКонсистентность(ACID)

Производительность

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

Администрирование

Page 17: MySQL vs MongoDB - percona.com · MySQL vs MongoDB Что лучше использовать в каких случаях Петр Зайцев CEO, Percona 7 November 2016

17

Опыт и предпочтение Команды

Ключевойвопрос!

Многиезадачиможнорешитьразнымиспособами

Оригинальнаяразработкаисопровождение

Page 18: MySQL vs MongoDB - percona.com · MySQL vs MongoDB Что лучше использовать в каких случаях Петр Зайцев CEO, Percona 7 November 2016

18

Опыт и Предпочтения Команды

MySQL

• Проверенныетехнологии• SQLстандарт• ВозможностьмиграциинадругиеSQLбазыданных

• Транзакции• Возможноститонкойнастройки• СложныезапросычерезSQL

MongoDB

• ГибкийJSON форматдокументов• НенужноучитьсложныйSQL• Простыезапросырежесоздаютпроблемы

• Можнодинамическименятьсхемудокумента

• ВстроеннаяМасштабируемость• Сложныезапросынасторонеприложения

Page 19: MySQL vs MongoDB - percona.com · MySQL vs MongoDB Что лучше использовать в каких случаях Петр Зайцев CEO, Percona 7 November 2016

19

Подход к Разработке и Жизненный Цикл Приложений

БыстраяРазработкаилиБольшийКонтроль

Уданныхвсегдаестьсхема

Еслисданнымиработаетодноприложениетосхемуможнодержатьвприложенииеслинеттовбазе

ВремяЖизниприложений

ВремяАктивнойРазработкиприложений

Page 20: MySQL vs MongoDB - percona.com · MySQL vs MongoDB Что лучше использовать в каких случаях Петр Зайцев CEO, Percona 7 November 2016

20

Разработка MySQL vs MongoDB

MySQL

• Реляционнаяструктуратребуетбольшегопланированияиконтроля

• Данныелегкоиспользоватьизразныхприложений

• Многоприложений15+лет• Гибкость

MongoDB

• Скоростьразработки• Ненужносинхронизироватьсхемувбазеданныхиприложении

• Понятныйпутькмасштабируемости

• Простыепредписанныерешения

Page 21: MySQL vs MongoDB - percona.com · MySQL vs MongoDB Что лучше использовать в каких случаях Петр Зайцев CEO, Percona 7 November 2016

21

Модель данных

Оптимальнаямодельзависитотприложенияиопытакоманды

Page 22: MySQL vs MongoDB - percona.com · MySQL vs MongoDB Что лучше использовать в каких случаях Петр Зайцев CEO, Percona 7 November 2016

22

Модель Данных MySQL vs MongoDB

MySQL

• Реляционнаямодельданных• Легкоотображатьсвязимеждуданными

• Изменениеданныхводномместе

• Результатвсегдатаблица

MongoDB

• Модельданныхоснованнаянадокументах

• Простоотображатьданныевебприложений

• НетребуетсясложныхJOIN• Результатсписокдокументов(разнойструктуры)

Page 23: MySQL vs MongoDB - percona.com · MySQL vs MongoDB Что лучше использовать в каких случаях Петр Зайцев CEO, Percona 7 November 2016

23

Модель Данных Пример – Контакт Лист

РеляционнаяБазаДанных

•Имя,Фамилия,Датарождения• Учеловекаможетбытьнесколькотелефоновиадресов

• Надосоздатьдлянихотдельныетаблицы

•МассивыJSON–нетрадиционныерасширения

Документориентированная базаданных

• Хранитсявсеводной«коллекции»

•Массивы, вложенныедокументы

Page 24: MySQL vs MongoDB - percona.com · MySQL vs MongoDB Что лучше использовать в каких случаях Петр Зайцев CEO, Percona 7 November 2016

24

Термины

MySQL

• БазаДанных• Таблица• Строка• Колонка• Индекс• ПервичныйКлюч• JOIN• Ограничения(CheckConstraints)

MongoDB

• БазаДанных• Коллекция• Документ• Поле• Индекс• ПервичныйКлюч• СcылкаилиВстроенныйДокумент• ПравилаВалидации

Page 25: MySQL vs MongoDB - percona.com · MySQL vs MongoDB Что лучше использовать в каких случаях Петр Зайцев CEO, Percona 7 November 2016

25

CRUD

CREATE– Создаватьдокумент

READ– Читатьдокумент

UPDATE– Изменятьдокумент

DELETE– Удалятьдокумент

Page 26: MySQL vs MongoDB - percona.com · MySQL vs MongoDB Что лучше использовать в каких случаях Петр Зайцев CEO, Percona 7 November 2016

26

SQL vs CRUD - Insert

• SQL • CRUD

Page 27: MySQL vs MongoDB - percona.com · MySQL vs MongoDB Что лучше использовать в каких случаях Петр Зайцев CEO, Percona 7 November 2016

27

SQL vs CRUD Update

Page 28: MySQL vs MongoDB - percona.com · MySQL vs MongoDB Что лучше использовать в каких случаях Петр Зайцев CEO, Percona 7 November 2016

28

SQL vs CRUD - Delete

Page 29: MySQL vs MongoDB - percona.com · MySQL vs MongoDB Что лучше использовать в каких случаях Петр Зайцев CEO, Percona 7 November 2016

29

SQL vs CRUD - Search

Page 30: MySQL vs MongoDB - percona.com · MySQL vs MongoDB Что лучше использовать в каких случаях Петр Зайцев CEO, Percona 7 November 2016

30

SQL vs CRUD - Count

Page 31: MySQL vs MongoDB - percona.com · MySQL vs MongoDB Что лучше использовать в каких случаях Петр Зайцев CEO, Percona 7 November 2016

31

SQL vs CRUD - Aggregation

Page 32: MySQL vs MongoDB - percona.com · MySQL vs MongoDB Что лучше использовать в каких случаях Петр Зайцев CEO, Percona 7 November 2016

32

Транзакции и Консистентность (ACID)

Какиеоперациимогутбытьатомарными(A)

Гарантируютлиоперацииконсистентоесостояниебазыданных (C)

Какразныеоперацииизолируютсядруготдруга(I)

Наскольконадежносохраняютсярезультатыоперации(D)

Page 33: MySQL vs MongoDB - percona.com · MySQL vs MongoDB Что лучше использовать в каких случаях Петр Зайцев CEO, Percona 7 November 2016

33

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

MySQL

• Поддерживаеттранзакциипроизвольногоразмера

• Атомарностьвсмыслетранзакций• Консистентностьнауровнетранзакцийдляодногоузла.

• ВыборуровнейизоляцииREADUNCOMMITTED…SERIALIZABLE

• Конфигурируетсянауровнеузла(дляодиночногоузлаирепликации)

MongoDB

• Неподдерживаеттранзакцииноатомарныеоперациинаддокументом

• Консистентностьнауровнедокументов.Гибкаяконсистентностьвкластере

• Науронедокументов.Чтениенесколькихдокументов«Изолировано»отобновлений

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

Page 34: MySQL vs MongoDB - percona.com · MySQL vs MongoDB Что лучше использовать в каких случаях Петр Зайцев CEO, Percona 7 November 2016

34

Производительность

Производительностьоченьсложносравниватьнапрямую

Зависитотдизайнаприложениявпервуюочередь

ТаккакMongoDBхорошомасштабируетсяменьшевниманияуделяетсяэффективности

Page 35: MySQL vs MongoDB - percona.com · MySQL vs MongoDB Что лучше использовать в каких случаях Петр Зайцев CEO, Percona 7 November 2016

35

Производительность MySQL vs MongoDB

Mark Callaghan: http://bit.ly/2epDJqD

Page 36: MySQL vs MongoDB - percona.com · MySQL vs MongoDB Что лучше использовать в каких случаях Петр Зайцев CEO, Percona 7 November 2016

36

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

Наскольколегкосделатьизмаленькогоприложениябольшое

Масштабируемостьврамкаходноймашиныимногихмашин

Масштабируемостьврамкахчтения,записи,объемаданных

Page 37: MySQL vs MongoDB - percona.com · MySQL vs MongoDB Что лучше использовать в каких случаях Петр Зайцев CEO, Percona 7 November 2016

37

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

MySQL

• Хорошаямасштабируемостьврамкаходногоузла

• Легкомасштабировать«средние»приложения

• Масштабированиечтениярепликацией• МасштабированиезаписииразмераданныхчерезШардинг

• Шардинг выполняетсявручнуюичастотребуетпривлеченияразработчиков

MongoDB

• Изначальныйфокуснамасштабируемостинамногихузлах

• Обычноиспользуетсяшардингизначально

• Встроенныйипростойшардинг• Шардинг - основнойспособмасштабируемости

Page 38: MySQL vs MongoDB - percona.com · MySQL vs MongoDB Что лучше использовать в каких случаях Петр Зайцев CEO, Percona 7 November 2016

38

Администрирование

ОчемНЕдумаютразработчики

Покрайнеймереневпервуюочередь

Автоматизациядеплоймента

Резервноекопирование

ОбновлениеВерсий

Мониторинг

Восстановлениеприсбоях

Анализпроизводительности

Page 39: MySQL vs MongoDB - percona.com · MySQL vs MongoDB Что лучше использовать в каких случаях Петр Зайцев CEO, Percona 7 November 2016

39

Администрирование MySQL vs MongoDB

MySQL

• Гибкость• Многоразныхподходовирешений• ЕстьOpenSourceреализациидлявсего

• Многовариантовпорождаетсложность

MongoDB

• Минимизацияадминистрирования• Автоматическоевосстановлениеприсбоях

• Идея– датьодинстандартныйподход

• МалохорошихOpenSourceрешений

• Сильнаяпривязкак MongoDBOpsManagerвподходах

Page 40: MySQL vs MongoDB - percona.com · MySQL vs MongoDB Что лучше использовать в каких случаях Петр Зайцев CEO, Percona 7 November 2016

40

Это было в прошлом

MySQL

• Поддержкатолькореляционнойструктуры

• ПоддержкатолькоязыкаSQLдляинтерфейса

MongoDB

• БольшиепроблемыспроизводительностьюзаписивMMAP

• Неэффективноеиспользованиедисковогопростанства MMAP

• Нетконтролясхемы• Нетаналога“JOIN”

Page 41: MySQL vs MongoDB - percona.com · MySQL vs MongoDB Что лучше использовать в каких случаях Петр Зайцев CEO, Percona 7 November 2016

41

Типичный пример: MySQL

• Важныполноценныетранзакции• Реляционнаямодельхорошоподходит• Полезнообновлениеданныхводномместе• Неоченьбольшойобъемданныхиопераций– ненуженшардинг

• Постояннаяразработкаприложениявтечениемногихлет

• Многиеприложенияиспользуютиизменяютодниитежеданные

СайтЭлектроннойКоммерции

Page 42: MySQL vs MongoDB - percona.com · MySQL vs MongoDB Что лучше использовать в каких случаях Петр Зайцев CEO, Percona 7 November 2016

42

Типичный пример: MongoDB

• Масштабируемостьоченьважна, еслиигра«выстрелит»

• Единственноеприложениеиспользуетданные• Схемаданныхсложнаяинехорошоложитсянареляционную

• Консистентностьданнынауровнеобъектовдостаточна

• Неоченьактивнаяразработкапослезапускаигры

Бэкендбольшойонлайнигры

Page 43: MySQL vs MongoDB - percona.com · MySQL vs MongoDB Что лучше использовать в каких случаях Петр Зайцев CEO, Percona 7 November 2016

43

Дополнительная Информация

• http://www.mongodb-is-web-scale.com/

Page 44: MySQL vs MongoDB - percona.com · MySQL vs MongoDB Что лучше использовать в каких случаях Петр Зайцев CEO, Percona 7 November 2016

44

Percona Live: Call for Papers Deadline - November 13

PerconaLiveSantaClaratotakeplaceApril24-27inSantaClara,CA.

Submission Guidelines:http://bit.ly/2exss8u

Submission Form: http://bit.ly/2e01oT2

Page 45: MySQL vs MongoDB - percona.com · MySQL vs MongoDB Что лучше использовать в каких случаях Петр Зайцев CEO, Percona 7 November 2016

45

Page 46: MySQL vs MongoDB - percona.com · MySQL vs MongoDB Что лучше использовать в каких случаях Петр Зайцев CEO, Percona 7 November 2016

Thank You!