После лекции о распределенных системах я спрашиваю у инженера из Google: «Как вы принимаете решение?» «Мы смотрим на три вещи, — отвечает он, рисуя на салфетке. — Во-первых, паттерны доступа: как часто пишем, как часто читаем, нужны ли сложные запросы. Во-вторых, требования к целостности: можно ли потерять лайк в соцсети? Нет. Можно ли на секунду увидеть устаревший профиль? Да. В-третьих, масштабирование: растут ли данные равномерно или есть „горячие“ точки». Самое интересное: он признается, что 70% их внутренних систем используют реляционные базы. «NoSQL — для специфических случаев, а не для всего подряд». Опрос 112 студентов показывает: История команды, разрабатывающей мобильное приложение: «Мы думали, MongoDB решит все проблемы. Но когда понадобились транзакции для оплаты курсов... — студент делает драматическую паузу, — пришлось реализовывать их вручную. Это было больно». Шаг 1: Начните с вопроса «Что?», а не «Как?»
Не «Какую базу взять?», а «Что за данные?». Структурированные, с