Типы NoSQL-хранилищ
NoSQL — не один тип баз, а целое семейство с разной внутренней моделью данных. Выбор зависит от того, какие данные и как нужно хранить и запрашивать.
| Тип | Хранит как | Примеры | Когда используют |
|---|---|---|---|
| Key-Value | пара ключ → значение | Redis, DynamoDB | кэш, сессии, простой быстрый доступ по ключу |
| Документная | JSON-подобные документы | MongoDB | гибкая структура данных, вложенные объекты |
| Колоночная | данные по столбцам, не строкам | Cassandra | огромные объёмы, аналитика, запись больше чтения |
| Графовая | узлы и связи между ними | Neo4j | социальные связи, рекомендации, сложные взаимосвязи |
Копнуть глубже
Почему колоночные базы хороши для аналитики. Если запрос читает только пару столбцов из таблицы с десятками столбцов (SELECT AVG(age) FROM users), колоночное хранение читает с диска только нужные столбцы, а не все строки целиком — для аналитических запросов по огромным объёмам данных это даёт огромный выигрыш в скорости по сравнению со строковым (как у обычных SQL-баз) хранением.
Графовые базы решают задачи, которые в SQL требуют дорогих многократных JOIN. «Друзья друзей моих друзей» — в реляционной базе это несколько вложенных JOIN, которые становятся очень медленными на глубине больше 2-3 уровней. В графовой базе это естественная операция — прохождение по связям узлов, и она остаётся быстрой даже на большой глубине.
Выбор типа NoSQL — это выбор под конкретную форму данных и характер запросов, а не “просто взять модный NoSQL вместо SQL”. Часто в одном приложении используют несколько типов баз одновременно — Redis для кэша, MongoDB для гибких документов профиля пользователя, обычный PostgreSQL для транзакционных данных заказов.
• почему колоночные базы хороши для аналитики, а графовые — для связей (если дошёл до 2-го слоя).