Типы баз данных

Тип БД выбирают по модели доступа, гарантиям и эксплуатации. Слова SQL/NoSQL не образуют шкалу «старое — новое»: разные модели решают разные задачи.

Реляционные

Данные представлены таблицами и отношениями, схема и ограничения формализованы.

Подходят, когда важны:

  • транзакции над связанными данными;
  • join и гибкие запросы;
  • constraints;
  • зрелые средства резервирования и анализа планов.

Пример модели: users -> orders -> items.

Key-value

key: session:7f...
value: serialized session

Очень быстрый доступ по ключу, но сложные выборки и связи обычно строятся на стороне приложения или дополнительными структурами.

Документные

Объект хранится документом с вложенными полями. Удобно, когда агрегат читается целиком и его схема эволюционирует. Дублирование данных и обновление нескольких документов требуют осознанной модели согласованности.

Wide-column

Оптимизированы под большие распределенные наборы и заранее известные шаблоны запросов. Модель часто проектируют от запросов, допуская денормализацию.

Графовые

Вершины и ребра — объекты первого класса. Полезны для обходов переменной глубины: связи, маршруты, зависимости, рекомендации.

Временные ряды

Оптимизированы под события со временем: append-heavy запись, retention, downsampling, агрегаты по интервалам.

Поисковые движки

Inverted index дает полнотекстовый поиск, ранжирование и агрегации. Обычно это не единственный источник истины для транзакционного домена.

OLTP и OLAP

  • OLTP — короткие конкурентные операции над небольшим числом строк;
  • OLAP — сканирование и агрегация больших объемов, часто колоночное хранение.

Одна организация часто использует несколько моделей: relational source of truth, cache key-value, поисковый индекс и аналитическое хранилище.

Как выбирать

  1. Какие запросы и объемы?
  2. Какие транзакционные границы?
  3. Допустима ли задержка согласования?
  4. Как делать backup, restore, миграцию и наблюдаемость?
  5. Есть ли компетенции эксплуатировать систему?

Связано: Оперативная обработка транзакций, Нормализация денормализация, Шардирование базы данных.

Вопросы

NoSQL означает отсутствие запросов? Нет; это семейство нереляционных моделей, у каждой свой язык и ограничения.

Когда документная БД удобна? Когда агрегат естественно хранится и читается целым документом.

Почему поисковый индекс редко source of truth? Обновление проекции обычно асинхронно, а транзакционные ограничения слабее.

Можно ли использовать несколько БД? Да, но каждое дополнительное хранилище увеличивает сложность согласования и эксплуатации.