tk conf daniel-podolsky-sqlvsnosql

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

Upload: daniel-podolsky

Post on 16-Apr-2017

1.541 views

Category:

Software


0 download

TRANSCRIPT

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

• Что такое SQL?

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

• Что такое SQL?

• Что такое NoSQL?

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

• Что такое SQL?

• Что такое NoSQL?

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

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

• Что такое SQL?

• Что такое NoSQL?

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

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

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

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

• Postgresql

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

• Postgresql

• Cassandra

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

• Postgresql

• Cassandra

• Aerospike

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

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

• Быстр

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

• Быстр

• Всем знаком

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

• Быстр

• Всем знаком

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

• Sharded RDBMS is not RDBMS

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

• Sharded RDBMS is not RDBMS

• Таблицы

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

• Sharded RDBMS is not RDBMS

• Таблицы

• Индексы

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

• Sharded RDBMS is not RDBMS

• Таблицы

• Индексы

• Foreign keys

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

• Sharded RDBMS is not RDBMS

• Таблицы

• Индексы

• Foreign keys

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

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

• Sharded RDBMS is not RDBMS

• Таблицы

• Индексы

• Foreign keys

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

• Репликация

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

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

• Строки

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

• Строки

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

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

• Строки

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

• Naturally shardable

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

• Строки

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

• Naturally shardable

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

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

• Строки

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

• Naturally shardable

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

• Replication factor 3 is a minimum

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

• SPoF

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

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

• SPoF

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

• PostgresSQL - наше все

• FDW

• Citus

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

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

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

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

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

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

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

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

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

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

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

Спасибо!

Вопросы?