Какие бывают виды баз данных
Что проверяют
Знаете ли вы классы и понимаете ли, что выбор идёт от шаблона доступа.
Как отвечать
По модели данных и назначению:
- реляционные (PostgreSQL, MySQL): таблицы, схема, связи, транзакции, SQL. Основной выбор для операционной нагрузки, где данные связаны и важна целостность;
- документные (MongoDB): документ целиком со вложениями, гибкая схема. Удобно, когда структура записи меняется и читается целиком;
- ключ-значение (Redis, Memcached): предельно быстрый доступ по ключу. Кэши, сессии, счётчики, очереди;
- колоночные (ClickHouse, Vertica): хранение по колонкам, отличное сжатие и скорость аналитических запросов по миллиардам строк. Плата это дорогие точечные изменения;
- графовые (Neo4j): связи первого класса, обход графа вместо соединений. Социальные связи, маршруты, выявление схем мошенничества;
- временных рядов (TimescaleDB, InfluxDB): метрики и события со временем как основным измерением, свёртки и удаление старых данных из коробки;
- поисковые (Elasticsearch, OpenSearch): полнотекстовый поиск, ранжирование, агрегации по тексту;
- векторные (Qdrant, pgvector): поиск ближайших соседей по эмбеддингам. Стали массовыми вместе с задачами на основе языковых моделей;
- встраиваемые (SQLite): база внутри процесса, без сервера. Мобильные приложения, настольные программы, тесты.
Поперечная классификация: операционные системы, обслуживающие много коротких транзакций, и аналитические, обслуживающие немного тяжёлых запросов по большому объёму. Это разные профили нагрузки, и одна база редко хороша в обоих.
Важная современная оговорка: границы размылись. PostgreSQL хранит и индексирует JSON, умеет полнотекстовый поиск, секционирование и векторный поиск через расширение. Поэтому правильный порядок рассуждения такой: сначала описать шаблоны доступа и объёмы, потом выбирать. Очень часто ответом оказывается одна реляционная база плюс кэш.
Где спотыкаются
Перечисляют названия продуктов вместо классов и их свойств.
Выбирают базу до того, как поняли профиль запросов.
Считают документные базы всегда более быстрыми.
Не знают, что расширения закрывают часть специализированных сценариев.