Архитектура растущего проекта, на примере ВКонтакте
SQL vs NoSQL: проблема выбора
1. Impact Mapping: планирование
разработки продукта с учетом
бизнес целей
Александр Бындю (byndusoft.com)
SQL vs NoSQL:
проблема выбора
Даниил Подольский
CTO inCaller.org
4. Немного о докладчике
• Системный администратор со стажем 20+ лет
• CTO со стажем 3+ года
• Серийный стартапер
5. Немного о докладчике
• Системный администратор со стажем 20+ лет
• CTO со стажем 3+ года
• Серийный стартапер
• Это немного суетно
6. Немного о докладчике
• Системный администратор со стажем 20+ лет
• CTO со стажем 3+ года
• Серийный стартапер
• Это немного суетно
• Но позволяет набрать весьма разнообразный
опыт
10. Введение в проблематику
• Назначение баз данных.
• Что такое SQL?
• Что такое NoSQL?
• В чем разница?
11. Введение в проблематику
• Назначение баз данных.
• Что такое SQL?
• Что такое NoSQL?
• В чем разница?
• Задача выбора как задача поиска наименьшего
зла.
21. Опыт докладчика ограничен:
почему PostgreSQL
• Сложен
• Близок по набору features к коммерческим базам
• Некоторые вещи на MySQL сделать просто
нельзя
32. Немного теории
анатомия SQL AKA РСУБД
• One server to rule them all
• Sharded RDBMS is not RDBMS
• Таблицы
• Индексы
33. Немного теории
анатомия SQL AKA РСУБД
• One server to rule them all
• Sharded RDBMS is not RDBMS
• Таблицы
• Индексы
• Foreign keys
34. Немного теории
анатомия SQL AKA РСУБД
• One server to rule them all
• Sharded RDBMS is not RDBMS
• Таблицы
• Индексы
• Foreign keys
• Транзакции и логи
35. Немного теории
анатомия SQL AKA РСУБД
• One server to rule them all
• Sharded RDBMS is not RDBMS
• Таблицы
• Индексы
• Foreign keys
• Транзакции и логи
• Репликация
40. Немного теории
анатомия NoSQL AKA Key-Value
• Первичный индекс
• Строки
• Иногда - таблицы
• Naturally shardable
• Отказоустойчивость
41. Немного теории
анатомия NoSQL AKA Key-Value
• Первичный индекс
• Строки
• Иногда - таблицы
• Naturally shardable
• Отказоустойчивость
• Replication factor 3 is a minimum
45. Рациональный подход:
матрица features как путь к самообману
• Свойства РСУБД
• Транзакционность и консистентность
• Связи и контроль целостности
• Локальность данных и скорость
49. Рациональный подход:
матрица features как путь к самообману
• Свойства NoSQL
• Горизонтальная масштабируемость
• Отказоустойчивость
• Простота и скорость
57. Рациональный подход:
матрица caveats как путь к фрустрации
• Свойства NoSQL
• Когда-нибудь консистентность
• Ни блокировок, ни автоинкремента
• Вторичные индексы и скорость
59. Рациональный подход:
задача не может быть решена
• не хватает исходных данных
unknown unknowns: мы никогда до конца не
знаем тот проект, который строим
62. Интуитивный подход:
что именно вы строите
• Присмотритесь к тому, что вы строите
• Деньги и транзакции
• Двухфазный коммит
63. Интуитивный подход:
что именно вы строите
• Присмотритесь к тому, что вы строите
• Деньги и транзакции
• Двухфазный коммит
• Консистентность и связи
64. Интуитивный подход:
что именно вы строите
• Присмотритесь к тому, что вы строите
• Деньги и транзакции
• Двухфазный коммит
• Консистентность и связи
• Сложные запросы
65. Интуитивный подход:
что именно вы строите
• Присмотритесь к тому, что вы строите
• Деньги и транзакции
• Двухфазный коммит
• Консистентность и связи
• Сложные запросы
• Масштабируемость
66. Интуитивный подход:
что именно вы строите
• Присмотритесь к тому, что вы строите
• Деньги и транзакции
• Двухфазный коммит
• Консистентность и связи
• Сложные запросы
• Масштабируемость
• Отказоустойчивость
72. Практический подход к
проблеме
• связи всегда можно спрятать в приложение
• иногда это очень плохой вариант
• а иногда и ничего
• но в любом случае - не надо делать это на
РДБМС
75. Выводы
• Компромис - это все, что нам осталось
• Если можете - откажитесь от NoSQL
76. Выводы
• Компромис - это все, что нам осталось
• Если можете - откажитесь от NoSQL
• Если можете - откажитесь от RDBMS
77. Выводы
• Компромис - это все, что нам осталось
• Если можете - откажитесь от NoSQL
• Если можете - откажитесь от RDBMS
• Но лучше откажитесь от NoSQL