NoSQL
NoSQL (Not only SQL) — не "замена SQL", а дополнение: когда таблицы с JOIN и жёсткой 3НФ мешают скорости записи, гибкости схемы или обходу графа связей. Четыре основные модели — документная, ключ–значение, колоночная и графовая.
Документные
Гибкая схема: каждый документ в коллекции может иметь свой набор полей (BSON/JSON).
MongoDB
# Docker — быстрый стенд
docker run --name mongodb -d -p 27017:27017 mongo:7.0
# Debian/Ubuntu (официальный репозиторий)
wget -qO - https://www.mongodb.org/static/pgp/server-7.0.asc | sudo gpg --dearmor -o /etc/apt/trusted.gpg.d/mongodb.gpg
echo "deb [ arch=amd64,arm64 ] https://repo.mongodb.org/apt/ubuntu $(lsb_release -cs)/mongodb-org/7.0 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-7.0.list
sudo apt update && sudo apt install mongodb-org
Сайт: mongodb.com
CouchDB / Couchbase
| CouchDB | Couchbase | |
|---|---|---|
| Особенность | HTTP API, offline-first, P2P-репликация | SQL++ (N1QL), KV + документы |
| Установка | apt install couchdb |
couchbase.com/downloads |
Ключ–значение
In-memory или managed KV: кэш, сессии, rate limit, очереди.
Redis
sudo apt install redis-server # Linux
brew install redis # macOS
docker run -d -p 6379:6379 redis:7.2
DynamoDB (AWS)
Управляемый сервис; локально — amazon/dynamodb-local на порту 8000.
Колоночные (wide-column)
Партиции и CQL; проектируйте таблицы под запросы, а не под нормализованную ER-модель.
| Продукт | Заметка |
|---|---|
| Apache Cassandra | Распределённый кластер, eventual consistency |
| ScyllaDB | Совместимость с CQL, выше производительность |
| HBase | Поверх Hadoop/HDFS, Big Data |
docker run --name cassandra -d -p 9042:9042 cassandra:4.1
Графовые и мульти-модельные
| СУБД | Язык запросов | Сценарии |
|---|---|---|
| Neo4j | Cypher | Соцсети, рекомендации, фрод |
| ArangoDB | AQL | Документы + граф + KV в одном движке |
| RavenDB | LINQ (.NET) | ACID-документы для enterprise |
docker run -d -p 7474:7474 -p 7687:7687 -e NEO4J_AUTH=neo4j/password neo4j:5.17
Когда SQL, когда NoSQL
| Ситуация | Чаще выбирают |
|---|---|
| Отчёты с JOIN, транзакции заказа | PostgreSQL, MySQL |
| Каталог с разной структурой карточек | MongoDB |
| Кэш и TTL-сессии | Redis |
| Поток событий на узел (user_id) | Cassandra |
| "Друзья друзей", пути в сети | Neo4j |
Многие NoSQL-кластеры жертвуют строгой согласованностью ради доступности и partition tolerance. Уточняйте требования бизнеса к "потере" только что записанных данных.
См. также
- СУБД — полный ландшафт, включая SQL
- Резервное копирование —
mongodump, снапшоты Cassandra - NoSQL — о разделе — модели данных, CAP, репликация
- Основы баз данных — когда SQL, когда документы или граф