Ответ
NoSQL (Not Only SQL) — это класс баз данных, не использующих реляционную (табличную) модель с фиксированными схемами и строгими связями. Они предназначены для работы с большими объемами неструктурированных, полуструктурированных данных и обеспечивают горизонтальную масштабируемость.
Основные типы NoSQL БД:
-
Документные (MongoDB, CouchDB): Хранят данные в виде документов (JSON, BSON, XML).
// Пример документа MongoDB { "_id": "user_123", "name": "Анна", "email": "anna@example.com", "preferences": { "theme": "dark", "language": "ru" } } -
Ключ-значение (Redis, Amazon DynamoDB): Простейшая модель, где данные — это пары ключ-значение. Идеально для кэширования и сессий.
SET user:session:abc123 "{"userId": 456}" GET user:session:abc123 -
Колоночные (Apache Cassandra, HBase): Данные хранятся по столбцам, а не по строкам. Оптимизированы для аналитики и обработки больших данных.
-
Графовые (Neo4j, Amazon Neptune): Хранят данные как узлы, связи и их свойства. Эффективны для сложных взаимосвязей (соцсети, рекомендации).
Преимущества перед реляционными БД:
- Гибкость схемы: Структура данных может меняться без дорогостоящих миграций.
- Горизонтальное масштабирование: Легче распределить нагрузку на множество серверов (шардирование).
- Высокая производительность для специфичных сценариев (например, операций записи или графовых запросов).
Недостатки:
- Отсутствие ACID-транзакций в чистом виде (хотя некоторые БД их поддерживают).
- Менее стандартизированный язык запросов по сравнению с SQL.