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
CAP и согласованность

Многие NoSQL-кластеры жертвуют строгой согласованностью ради доступности и partition tolerance. Уточняйте требования бизнеса к "потере" только что записанных данных.


См. также