Хранение данных
Данные переживают отдельный запрос
Приложение может быть stateless, но сама система почти всегда хранит состояние: пользователей, заказы, события, файлы, настройки и другие данные. Поэтому выбор хранилища — это не вопрос «какая база быстрее», а решение о том, какие свойства данных и нагрузки должна поддерживать система.
В этом разделе разберём основные типы хранилищ и научимся выбирать их от требований, а не от популярности технологии.
Что разберём
- Требования к хранилищу. Определим объём данных, характер чтений и записей, требования к задержке, доступности, согласованности и сроку хранения.
- SQL vs NoSQL. Разберём, какие задачи естественно решаются реляционной моделью, а когда полезнее выбрать другую модель данных.
- Реляционные базы данных. Посмотрим на таблицы, связи, ограничения и транзакции как на инструменты поддержания структурированных данных.
- Key-Value хранилища. Увидим модель «ключ → значение» и сценарии, где простой доступ по ключу важнее сложных запросов.
- Документные базы данных. Разберём хранение агрегированных объектов в виде документов и гибкую структуру записей.
- Колоночные базы данных. Посмотрим, почему хранение по столбцам удобно для аналитики и чтения небольшого набора полей из большого объёма данных.
- Object Storage. Поймём, где хранить крупные бинарные объекты — изображения, видео, архивы и резервные копии.
- Выбор хранилища. Соберём требования и ограничения вместе и научимся выбирать подходящий тип хранилища для конкретной части системы.
Темы идут от требований к конкретным моделям хранения, а заканчиваются выбором. Так проще не привязывать задачу к одной технологии заранее и видеть, что в реальной системе разные данные могут жить в разных хранилищах.
Универсальной базы данных нет.
Хорошее хранилище — то, чьи свойства совпадают с требованиями конкретных данных и операций.