NoSQL (Not Only SQL) — собирательный термин для систем управления базами данных, отходящих от реляционной модели. Объединяет разнородные технологии: документные, ключ-значение, колоночные, графовые и временные БД. Общие черты: горизонтальное масштабирование, отсутствие жёсткой схемы, приоритет скорости/масштаба над строгой консистентностью.
Основные типы NoSQL
- Key-Value — простейшая модель. Ключ → значение. Примеры: Redis, Memcached, DynamoDB. Применение: сессии, кеш, очереди.
- Документные — хранят JSON/BSON-документы без фиксированной схемы. Примеры: MongoDB, CouchDB, Firestore. Применение: каталоги, контент-системы.
- Колоночные (wide-column) — данные организованы по колонкам, а не строкам. Примеры: Cassandra, HBase. Применение: аналитика, IoT-телеметрия, миллиарды записей.
- Графовые — хранят вершины и рёбра графа. Примеры: Neo4j, Amazon Neptune. Применение: социальные сети, рекомендательные системы.
- Временные ряды (time-series) — оптимизированы для метрик. Примеры: InfluxDB, TimescaleDB.
CAP-теорема
Распределённые системы не могут одновременно гарантировать Consistency (согласованность), Availability (доступность) и Partition Tolerance (устойчивость к разделению). NoSQL-БД обычно жертвуют строгой согласованностью ради доступности и масштабируемости (AP в терминах CAP).
История
Термин NoSQL предложен Эриком Эвансом в 2009 году для Twitter-хэштега конференции о нереляционных БД. Сами NoSQL-системы появились раньше: Redis — 2009, MongoDB — 2009, Cassandra (Facebook, 2008). Горизонтальное масштабирование стало необходимым после публикации статьи Google Bigtable (2006) и Amazon Dynamo (2007).
Связь с хостингом
На хостинге NoSQL чаще всего представлен Redis (кеш, сессии) и MongoDB (основная БД). На VDS MongoDB устанавливается из официального репозитория. На облачных платформах доступны управляемые сервисы: MongoDB Atlas, AWS DynamoDB. Для приложений с реляционными данными (финансы, e-commerce) лучше подходят PostgreSQL или MySQL.
NoSQL vs SQL в хостинге
Реляционные СУБД (MySQL, PostgreSQL) хранят данные в таблицах со строгой схемой. NoSQL (Not Only SQL) -- общее название для нереляционных СУБД с гибкой схемой. Преимущества NoSQL для хостинга: горизонтальное масштабирование (шардирование), хранение документов с произвольной структурой, высокая запись без транзакционных блокировок. Недостаток -- слабые транзакции (eventual consistency вместо ACID). Для интернет-магазинов с точными балансами и заказами SQL обязателен. Для каталогов, аналитики, кэша -- NoSQL эффективнее.
Типы NoSQL
- Document stores: MongoDB, CouchDB -- JSON-документы с индексами
- Key-Value stores: Redis, Memcached -- быстрые операции по ключу
- Column-family: Apache Cassandra, HBase -- для аналитики и временных рядов
- Graph databases: Neo4j, Amazon Neptune -- для социальных графов
- Time-series: InfluxDB, TimescaleDB -- для метрик и мониторинга
История NoSQL
Термин NoSQL использовался с 1998 года, стал популярным около 2009 года после публичных докладов Google (BigTable) и Amazon (Dynamo). MongoDB выпущен в 2009 году, Redis -- в 2009 году. В 2010--2015 годах NoSQL стал мейнстримом для стартапов. К 2020 году выяснилось, что многие сценарии лучше решаются гибридным подходом: PostgreSQL с JSONB хранит документы внутри реляционной БД. Шардирование (sharding) -- одна из ключевых особенностей NoSQL-систем.