Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Tk conf daniel-podolsky-sqlvsnosql

1,772 views

Published on

SQL vs NoSQL

Published in: Software
  • Be the first to comment

  • Be the first to like this

Tk conf daniel-podolsky-sqlvsnosql

  1. 1. Impact Mapping: планирование разработки продукта с учетом бизнес целей Александр Бындю (byndusoft.com) SQL vs NoSQL:
 проблема выбора Даниил Подольский
 CTO inCaller.org
  2. 2. Немного о докладчике • Системный администратор со стажем 20+ лет
  3. 3. Немного о докладчике • Системный администратор со стажем 20+ лет • CTO со стажем 3+ года
  4. 4. Немного о докладчике • Системный администратор со стажем 20+ лет • CTO со стажем 3+ года • Серийный стартапер
  5. 5. Немного о докладчике • Системный администратор со стажем 20+ лет • CTO со стажем 3+ года • Серийный стартапер • Это немного суетно
  6. 6. Немного о докладчике • Системный администратор со стажем 20+ лет • CTO со стажем 3+ года • Серийный стартапер • Это немного суетно • Но позволяет набрать весьма разнообразный опыт
  7. 7. Введение в проблематику • Назначение баз данных
  8. 8. Введение в проблематику • Назначение баз данных • Что такое SQL?
  9. 9. Введение в проблематику • Назначение баз данных. • Что такое SQL? • Что такое NoSQL?
  10. 10. Введение в проблематику • Назначение баз данных. • Что такое SQL? • Что такое NoSQL? • В чем разница?
  11. 11. Введение в проблематику • Назначение баз данных. • Что такое SQL? • Что такое NoSQL? • В чем разница? • Задача выбора как задача поиска наименьшего зла.
  12. 12. Disclamer:
 опыт докладчика ограничен • Mysql
  13. 13. Disclamer:
 опыт докладчика ограничен • Mysql • Postgresql
  14. 14. Disclamer:
 опыт докладчика ограничен • Mysql • Postgresql • Cassandra
  15. 15. Disclamer:
 опыт докладчика ограничен • Mysql • Postgresql • Cassandra • Aerospike
  16. 16. Опыт докладчика ограничен:
 почему MySQL • Прост
  17. 17. Опыт докладчика ограничен:
 почему MySQL • Прост • Быстр
  18. 18. Опыт докладчика ограничен:
 почему MySQL • Прост • Быстр • Всем знаком
  19. 19. Опыт докладчика ограничен:
 почему MySQL • Прост • Быстр • Всем знаком • Вариант по умолчанию • Буква М в аббревиатуре LAMP
  20. 20. Опыт докладчика ограничен:
 почему PostgreSQL • Сложен
  21. 21. Опыт докладчика ограничен:
 почему PostgreSQL • Сложен • Близок по набору features к коммерческим базам • Некоторые вещи на MySQL сделать просто нельзя
  22. 22. Опыт докладчика ограничен:
 почему Cassandra • Write-Optimised
  23. 23. Опыт докладчика ограничен:
 почему Cassandra • Write-Optimised • Отлично масштабируется
  24. 24. Опыт докладчика ограничен:
 почему Cassandra • Write-Optimised • Отлично масштабируется • Быстрые вторичные индексы
  25. 25. Опыт докладчика ограничен:
 почему Aerospike • Read-Optimised
  26. 26. Опыт докладчика ограничен:
 почему Aerospike • Read-Optimised • Высокая производительность
  27. 27. Опыт докладчика ограничен:
 почему Aerospike • Read-Optimised • Высокая производительность • И чтения, и записи
  28. 28. Опыт докладчика ограничен:
 почему Aerospike • Read-Optimised • Высокая производительность • И чтения, и записи • Отлично масштабируется
  29. 29. Немного теории
 анатомия SQL AKA РСУБД • One server to rule them all
  30. 30. Немного теории
 анатомия SQL AKA РСУБД • One server to rule them all • Sharded RDBMS is not RDBMS
  31. 31. Немного теории
 анатомия SQL AKA РСУБД • One server to rule them all • Sharded RDBMS is not RDBMS • Таблицы
  32. 32. Немного теории
 анатомия SQL AKA РСУБД • One server to rule them all • Sharded RDBMS is not RDBMS • Таблицы • Индексы
  33. 33. Немного теории
 анатомия SQL AKA РСУБД • One server to rule them all • Sharded RDBMS is not RDBMS • Таблицы • Индексы • Foreign keys
  34. 34. Немного теории
 анатомия SQL AKA РСУБД • One server to rule them all • Sharded RDBMS is not RDBMS • Таблицы • Индексы • Foreign keys • Транзакции и логи
  35. 35. Немного теории
 анатомия SQL AKA РСУБД • One server to rule them all • Sharded RDBMS is not RDBMS • Таблицы • Индексы • Foreign keys • Транзакции и логи • Репликация
  36. 36. Немного теории
 анатомия NoSQL AKA Key-Value • Первичный индекс
  37. 37. Немного теории
 анатомия NoSQL AKA Key-Value • Первичный индекс • Строки
  38. 38. Немного теории
 анатомия NoSQL AKA Key-Value • Первичный индекс • Строки • Иногда - таблицы
  39. 39. Немного теории
 анатомия NoSQL AKA Key-Value • Первичный индекс • Строки • Иногда - таблицы • Naturally shardable
  40. 40. Немного теории
 анатомия NoSQL AKA Key-Value • Первичный индекс • Строки • Иногда - таблицы • Naturally shardable • Отказоустойчивость
  41. 41. Немного теории
 анатомия NoSQL AKA Key-Value • Первичный индекс • Строки • Иногда - таблицы • Naturally shardable • Отказоустойчивость • Replication factor 3 is a minimum
  42. 42. Рациональный подход:
 матрица features как путь к самообману • Свойства РСУБД
  43. 43. Рациональный подход:
 матрица features как путь к самообману • Свойства РСУБД • Транзакционность и консистентность
  44. 44. Рациональный подход:
 матрица features как путь к самообману • Свойства РСУБД • Транзакционность и консистентность • Связи и контроль целостности
  45. 45. Рациональный подход:
 матрица features как путь к самообману • Свойства РСУБД • Транзакционность и консистентность • Связи и контроль целостности • Локальность данных и скорость
  46. 46. Рациональный подход:
 матрица features как путь к самообману • Свойства NoSQL
  47. 47. Рациональный подход:
 матрица features как путь к самообману • Свойства NoSQL • Горизонтальная масштабируемость
  48. 48. Рациональный подход:
 матрица features как путь к самообману • Свойства NoSQL • Горизонтальная масштабируемость • Отказоустойчивость
  49. 49. Рациональный подход:
 матрица features как путь к самообману • Свойства NoSQL • Горизонтальная масштабируемость • Отказоустойчивость • Простота и скорость
  50. 50. Рациональный подход:
 матрица caveats как путь к фрустрации • Свойства РСУБД
  51. 51. Рациональный подход:
 матрица caveats как путь к фрустрации • Свойства РСУБД • Немасштабируемость
  52. 52. Рациональный подход:
 матрица caveats как путь к фрустрации • Свойства РСУБД • Немасштабируемость • SPoF
  53. 53. Рациональный подход:
 матрица caveats как путь к фрустрации • Свойства РСУБД • Немасштабируемость • SPoF • Блокировки и скорость
  54. 54. Рациональный подход:
 матрица caveats как путь к фрустрации • Свойства NoSQL
  55. 55. Рациональный подход:
 матрица caveats как путь к фрустрации • Свойства NoSQL • Когда-нибудь консистентность
  56. 56. Рациональный подход:
 матрица caveats как путь к фрустрации • Свойства NoSQL • Когда-нибудь консистентность • Ни блокировок, ни автоинкремента
  57. 57. Рациональный подход:
 матрица caveats как путь к фрустрации • Свойства NoSQL • Когда-нибудь консистентность • Ни блокировок, ни автоинкремента • Вторичные индексы и скорость
  58. 58. Рациональный подход:
 матрица caveats как путь к фрустрации • Проблема вычисления пересечения множеств
  59. 59. Рациональный подход:
 задача не может быть решена • не хватает исходных данных
 unknown unknowns: мы никогда до конца не знаем тот проект, который строим
  60. 60. Интуитивный подход:
 что именно вы строите • Присмотритесь к тому, что вы строите
  61. 61. Интуитивный подход:
 что именно вы строите • Присмотритесь к тому, что вы строите • Деньги и транзакции
  62. 62. Интуитивный подход:
 что именно вы строите • Присмотритесь к тому, что вы строите • Деньги и транзакции • Двухфазный коммит
  63. 63. Интуитивный подход:
 что именно вы строите • Присмотритесь к тому, что вы строите • Деньги и транзакции • Двухфазный коммит • Консистентность и связи
  64. 64. Интуитивный подход:
 что именно вы строите • Присмотритесь к тому, что вы строите • Деньги и транзакции • Двухфазный коммит • Консистентность и связи • Сложные запросы
  65. 65. Интуитивный подход:
 что именно вы строите • Присмотритесь к тому, что вы строите • Деньги и транзакции • Двухфазный коммит • Консистентность и связи • Сложные запросы • Масштабируемость
  66. 66. Интуитивный подход:
 что именно вы строите • Присмотритесь к тому, что вы строите • Деньги и транзакции • Двухфазный коммит • Консистентность и связи • Сложные запросы • Масштабируемость • Отказоустойчивость
  67. 67. Интуитивный подход • мы не ищем хороший вариант
  68. 68. Интуитивный подход • мы не ищем хороший вариант • мы ищем наименее плохой
  69. 69. Практический подход к проблеме • связи всегда можно спрятать в приложение
  70. 70. Практический подход к проблеме • связи всегда можно спрятать в приложение • иногда это очень плохой вариант
  71. 71. Практический подход к проблеме • связи всегда можно спрятать в приложение • иногда это очень плохой вариант • а иногда и ничего
  72. 72. Практический подход к проблеме • связи всегда можно спрятать в приложение • иногда это очень плохой вариант • а иногда и ничего • но в любом случае - не надо делать это на РДБМС
  73. 73. Практический подход к проблеме • Гибридные СУБД • PostgresSQL - наше все • FDW • Citus • Но не надо думать, что это РСУБД
  74. 74. Выводы • Компромис - это все, что нам осталось
  75. 75. Выводы • Компромис - это все, что нам осталось • Если можете - откажитесь от NoSQL
  76. 76. Выводы • Компромис - это все, что нам осталось • Если можете - откажитесь от NoSQL • Если можете - откажитесь от RDBMS
  77. 77. Выводы • Компромис - это все, что нам осталось • Если можете - откажитесь от NoSQL • Если можете - откажитесь от RDBMS • Но лучше откажитесь от NoSQL
  78. 78. Спасибо! Вопросы?

×