sql vs nosql: проблема выбора
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
Спасибо!
Вопросы?