Какие типы баз данных существуют
Что проверяют
Для аналитика это вопрос не про устройство движков, а про умение связать характер данных и нагрузки с типом хранилища. Часто следом дают сценарий и спрашивают: «Где бы вы хранили эти данные и почему».
Как отвечать
Начните с оговорки: NoSQL не тип, а зонтик для всего нереляционного. Дальше классы с примерами и задачей:
- реляционные: PostgreSQL, MySQL, Oracle, MS SQL. Таблицы, связи через ключи, SQL, ACID-транзакции. Выбор по умолчанию для заказов, учёта, денег;
- документные: MongoDB, Couchbase. Запись хранится как JSON-документ, поля могут отличаться от документа к документу. Удобны для каталогов и профилей;
- ключ-значение: Redis, etcd. Быстрый доступ по ключу, типичная роль: кеш, сессии, счётчики;
- колоночные аналитические: ClickHouse, Greenplum, Vertica. Хранят данные по столбцам и быстро считают агрегаты по миллиардам строк. Это OLAP: отчёты и дашборды;
- широкостолбцовые: Cassandra, HBase. Горизонтально масштабируются под огромный поток записи, но запросы проектируют заранее под конкретные выборки;
- графовые: Neo4j. Узлы и рёбра, сильны там, где главное это связи: рекомендации, антифрод;
- временных рядов: InfluxDB, TimescaleDB, Prometheus. Метрики и показания датчиков с меткой времени;
- поисковые и векторные: Elasticsearch и OpenSearch для полнотекстового поиска, pgvector и Qdrant для поиска по эмбеддингам.
Добавьте, что в одной системе обычно живут несколько: заказы в PostgreSQL, кеш в Redis, отчёты в ClickHouse. Работа аналитика в том, чтобы описать требования (объём, соотношение чтения и записи, нужна ли строгая согласованность), а не назвать модную базу.
Где спотыкаются
Ставят NoSQL в один ряд с документными и графовыми базами, то есть смешивают категорию и её подвиды.
Утверждают, что нереляционные базы не умеют транзакции. MongoDB поддерживает многодокументные ACID-транзакции с версии 4.0.
Путают две «колоночные» модели: Cassandra и ClickHouse так называют обе, но первая заточена под запись и чтение по ключу, а вторая под аналитические агрегаты. Отсюда и неумение объяснить разницу между OLTP и OLAP.