sql vs nosql: проблема выбора

78
Impact Mapping: планирование разработки продукта с учетом бизнес целей Александр Бындю (byndusoft.com) SQL vs NoSQL: проблема выбора Даниил Подольский CTO inCaller.org

Upload: tkconf

Post on 21-Jan-2018

179 views

Category:

Software


7 download

TRANSCRIPT

Page 1: SQL vs NoSQL: проблема выбора

Impact Mapping: планирование разработки продукта с учетом бизнес целейАлександр Бындю (byndusoft.com)

SQL vs NoSQL: проблема выбора

Даниил Подольский CTO inCaller.org

Page 2: SQL vs NoSQL: проблема выбора

Немного о докладчике• Системный администратор со стажем 20+ лет

Page 3: SQL vs NoSQL: проблема выбора

Немного о докладчике• Системный администратор со стажем 20+ лет

• CTO со стажем 3+ года

Page 4: SQL vs NoSQL: проблема выбора

Немного о докладчике• Системный администратор со стажем 20+ лет

• CTO со стажем 3+ года

• Серийный стартапер

Page 5: SQL vs NoSQL: проблема выбора

Немного о докладчике• Системный администратор со стажем 20+ лет

• CTO со стажем 3+ года

• Серийный стартапер

• Это немного суетно

Page 6: SQL vs NoSQL: проблема выбора

Немного о докладчике• Системный администратор со стажем 20+ лет

• CTO со стажем 3+ года

• Серийный стартапер

• Это немного суетно

• Но позволяет набрать весьма разнообразный опыт

Page 7: SQL vs NoSQL: проблема выбора

Введение в проблематику• Назначение баз данных

Page 8: SQL vs NoSQL: проблема выбора

Введение в проблематику• Назначение баз данных

• Что такое SQL?

Page 9: SQL vs NoSQL: проблема выбора

Введение в проблематику• Назначение баз данных.

• Что такое SQL?

• Что такое NoSQL?

Page 10: SQL vs NoSQL: проблема выбора

Введение в проблематику• Назначение баз данных.

• Что такое SQL?

• Что такое NoSQL?

• В чем разница?

Page 11: SQL vs NoSQL: проблема выбора

Введение в проблематику• Назначение баз данных.

• Что такое SQL?

• Что такое NoSQL?

• В чем разница?

• Задача выбора как задача поиска наименьшего зла.

Page 12: SQL vs NoSQL: проблема выбора

Disclamer: опыт докладчика ограничен• Mysql

Page 13: SQL vs NoSQL: проблема выбора

Disclamer: опыт докладчика ограничен• Mysql

• Postgresql

Page 14: SQL vs NoSQL: проблема выбора

Disclamer: опыт докладчика ограничен• Mysql

• Postgresql

• Cassandra

Page 15: SQL vs NoSQL: проблема выбора

Disclamer: опыт докладчика ограничен• Mysql

• Postgresql

• Cassandra

• Aerospike

Page 16: SQL vs NoSQL: проблема выбора

Опыт докладчика ограничен:почему MySQL• Прост

Page 17: SQL vs NoSQL: проблема выбора

Опыт докладчика ограничен:почему MySQL• Прост

• Быстр

Page 18: SQL vs NoSQL: проблема выбора

Опыт докладчика ограничен:почему MySQL• Прост

• Быстр

• Всем знаком

Page 19: SQL vs NoSQL: проблема выбора

Опыт докладчика ограничен:почему MySQL• Прост

• Быстр

• Всем знаком

• Вариант по умолчанию

• Буква М в аббревиатуре LAMP

Page 20: SQL vs NoSQL: проблема выбора

Опыт докладчика ограничен:почему PostgreSQL• Сложен

Page 21: SQL vs NoSQL: проблема выбора

Опыт докладчика ограничен:почему PostgreSQL• Сложен

• Близок по набору features к коммерческим базам

• Некоторые вещи на MySQL сделать просто нельзя

Page 22: SQL vs NoSQL: проблема выбора

Опыт докладчика ограничен:почему Cassandra• Write-Optimised

Page 23: SQL vs NoSQL: проблема выбора

Опыт докладчика ограничен:почему Cassandra• Write-Optimised

• Отлично масштабируется

Page 24: SQL vs NoSQL: проблема выбора

Опыт докладчика ограничен:почему Cassandra• Write-Optimised

• Отлично масштабируется

• Быстрые вторичные индексы

Page 25: SQL vs NoSQL: проблема выбора

Опыт докладчика ограничен:почему Aerospike• Read-Optimised

Page 26: SQL vs NoSQL: проблема выбора

Опыт докладчика ограничен:почему Aerospike• Read-Optimised

• Высокая производительность

Page 27: SQL vs NoSQL: проблема выбора

Опыт докладчика ограничен:почему Aerospike• Read-Optimised

• Высокая производительность

• И чтения, и записи

Page 28: SQL vs NoSQL: проблема выбора

Опыт докладчика ограничен:почему Aerospike• Read-Optimised

• Высокая производительность

• И чтения, и записи

• Отлично масштабируется

Page 29: SQL vs NoSQL: проблема выбора

Немного теории анатомия SQL AKA РСУБД• One server to rule them all

Page 30: SQL vs NoSQL: проблема выбора

Немного теории анатомия SQL AKA РСУБД• One server to rule them all

• Sharded RDBMS is not RDBMS

Page 31: SQL vs NoSQL: проблема выбора

Немного теории анатомия SQL AKA РСУБД• One server to rule them all

• Sharded RDBMS is not RDBMS

• Таблицы

Page 32: SQL vs NoSQL: проблема выбора

Немного теории анатомия SQL AKA РСУБД• One server to rule them all

• Sharded RDBMS is not RDBMS

• Таблицы

• Индексы

Page 33: SQL vs NoSQL: проблема выбора

Немного теории анатомия SQL AKA РСУБД• One server to rule them all

• Sharded RDBMS is not RDBMS

• Таблицы

• Индексы

• Foreign keys

Page 34: SQL vs NoSQL: проблема выбора

Немного теории анатомия SQL AKA РСУБД• One server to rule them all

• Sharded RDBMS is not RDBMS

• Таблицы

• Индексы

• Foreign keys

• Транзакции и логи

Page 35: SQL vs NoSQL: проблема выбора

Немного теории анатомия SQL AKA РСУБД• One server to rule them all

• Sharded RDBMS is not RDBMS

• Таблицы

• Индексы

• Foreign keys

• Транзакции и логи

• Репликация

Page 36: SQL vs NoSQL: проблема выбора

Немного теориианатомия NoSQL AKA Key-Value• Первичный индекс

Page 37: SQL vs NoSQL: проблема выбора

Немного теориианатомия NoSQL AKA Key-Value• Первичный индекс

• Строки

Page 38: SQL vs NoSQL: проблема выбора

Немного теориианатомия NoSQL AKA Key-Value• Первичный индекс

• Строки

• Иногда - таблицы

Page 39: SQL vs NoSQL: проблема выбора

Немного теориианатомия NoSQL AKA Key-Value• Первичный индекс

• Строки

• Иногда - таблицы

• Naturally shardable

Page 40: SQL vs NoSQL: проблема выбора

Немного теориианатомия NoSQL AKA Key-Value• Первичный индекс

• Строки

• Иногда - таблицы

• Naturally shardable

• Отказоустойчивость

Page 41: SQL vs NoSQL: проблема выбора

Немного теориианатомия NoSQL AKA Key-Value• Первичный индекс

• Строки

• Иногда - таблицы

• Naturally shardable

• Отказоустойчивость

• Replication factor 3 is a minimum

Page 42: SQL vs NoSQL: проблема выбора

Рациональный подход:матрица features как путь к самообману• Свойства РСУБД

Page 43: SQL vs NoSQL: проблема выбора

Рациональный подход:матрица features как путь к самообману• Свойства РСУБД

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

Page 44: SQL vs NoSQL: проблема выбора

Рациональный подход:матрица features как путь к самообману• Свойства РСУБД

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

• Связи и контроль целостности

Page 45: SQL vs NoSQL: проблема выбора

Рациональный подход:матрица features как путь к самообману• Свойства РСУБД

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

• Связи и контроль целостности

• Локальность данных и скорость

Page 46: SQL vs NoSQL: проблема выбора

Рациональный подход:матрица features как путь к самообману• Свойства NoSQL

Page 47: SQL vs NoSQL: проблема выбора

Рациональный подход:матрица features как путь к самообману• Свойства NoSQL

• Горизонтальная масштабируемость

Page 48: SQL vs NoSQL: проблема выбора

Рациональный подход:матрица features как путь к самообману• Свойства NoSQL

• Горизонтальная масштабируемость

• Отказоустойчивость

Page 49: SQL vs NoSQL: проблема выбора

Рациональный подход:матрица features как путь к самообману• Свойства NoSQL

• Горизонтальная масштабируемость

• Отказоустойчивость

• Простота и скорость

Page 50: SQL vs NoSQL: проблема выбора

Рациональный подход:матрица caveats как путь к фрустрации• Свойства РСУБД

Page 51: SQL vs NoSQL: проблема выбора

Рациональный подход:матрица caveats как путь к фрустрации• Свойства РСУБД

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

Page 52: SQL vs NoSQL: проблема выбора

Рациональный подход:матрица caveats как путь к фрустрации• Свойства РСУБД

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

• SPoF

Page 53: SQL vs NoSQL: проблема выбора

Рациональный подход:матрица caveats как путь к фрустрации• Свойства РСУБД

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

• SPoF

• Блокировки и скорость

Page 54: SQL vs NoSQL: проблема выбора

Рациональный подход:матрица caveats как путь к фрустрации• Свойства NoSQL

Page 55: SQL vs NoSQL: проблема выбора

Рациональный подход:матрица caveats как путь к фрустрации• Свойства NoSQL

• Когда-нибудь консистентность

Page 56: SQL vs NoSQL: проблема выбора

Рациональный подход:матрица caveats как путь к фрустрации• Свойства NoSQL

• Когда-нибудь консистентность

• Ни блокировок, ни автоинкремента

Page 57: SQL vs NoSQL: проблема выбора

Рациональный подход:матрица caveats как путь к фрустрации• Свойства NoSQL

• Когда-нибудь консистентность

• Ни блокировок, ни автоинкремента

• Вторичные индексы и скорость

Page 58: SQL vs NoSQL: проблема выбора

Рациональный подход:матрица caveats как путь к фрустрации• Проблема вычисления пересечения множеств

Page 59: SQL vs NoSQL: проблема выбора

Рациональный подход:задача не может быть решена• не хватает исходных данных

unknown unknowns: мы никогда до конца не знаем тот проект, который строим

Page 60: SQL vs NoSQL: проблема выбора

Интуитивный подход: что именно вы строите• Присмотритесь к тому, что вы строите

Page 61: SQL vs NoSQL: проблема выбора

Интуитивный подход: что именно вы строите• Присмотритесь к тому, что вы строите

• Деньги и транзакции

Page 62: SQL vs NoSQL: проблема выбора

Интуитивный подход: что именно вы строите• Присмотритесь к тому, что вы строите

• Деньги и транзакции

• Двухфазный коммит

Page 63: SQL vs NoSQL: проблема выбора

Интуитивный подход: что именно вы строите• Присмотритесь к тому, что вы строите

• Деньги и транзакции

• Двухфазный коммит

• Консистентность и связи

Page 64: SQL vs NoSQL: проблема выбора

Интуитивный подход: что именно вы строите• Присмотритесь к тому, что вы строите

• Деньги и транзакции

• Двухфазный коммит

• Консистентность и связи

• Сложные запросы

Page 65: SQL vs NoSQL: проблема выбора

Интуитивный подход: что именно вы строите• Присмотритесь к тому, что вы строите

• Деньги и транзакции

• Двухфазный коммит

• Консистентность и связи

• Сложные запросы

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

Page 66: SQL vs NoSQL: проблема выбора

Интуитивный подход: что именно вы строите• Присмотритесь к тому, что вы строите

• Деньги и транзакции

• Двухфазный коммит

• Консистентность и связи

• Сложные запросы

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

• Отказоустойчивость

Page 67: SQL vs NoSQL: проблема выбора

Интуитивный подход• мы не ищем хороший вариант

Page 68: SQL vs NoSQL: проблема выбора

Интуитивный подход• мы не ищем хороший вариант

• мы ищем наименее плохой

Page 69: SQL vs NoSQL: проблема выбора

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

Page 70: SQL vs NoSQL: проблема выбора

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

• иногда это очень плохой вариант

Page 71: SQL vs NoSQL: проблема выбора

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

• иногда это очень плохой вариант

• а иногда и ничего

Page 72: SQL vs NoSQL: проблема выбора

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

• иногда это очень плохой вариант

• а иногда и ничего

• но в любом случае - не надо делать это на РДБМС

Page 73: SQL vs NoSQL: проблема выбора

Практический подход к проблеме

• Гибридные СУБД

• PostgresSQL - наше все

• FDW

• Citus

• Но не надо думать, что это РСУБД

Page 74: SQL vs NoSQL: проблема выбора

Выводы• Компромис - это все, что нам осталось

Page 75: SQL vs NoSQL: проблема выбора

Выводы• Компромис - это все, что нам осталось

• Если можете - откажитесь от NoSQL

Page 76: SQL vs NoSQL: проблема выбора

Выводы• Компромис - это все, что нам осталось

• Если можете - откажитесь от NoSQL

• Если можете - откажитесь от RDBMS

Page 77: SQL vs NoSQL: проблема выбора

Выводы• Компромис - это все, что нам осталось

• Если можете - откажитесь от NoSQL

• Если можете - откажитесь от RDBMS

• Но лучше откажитесь от NoSQL

Page 78: SQL vs NoSQL: проблема выбора

Спасибо!

Вопросы?