Ответ
Нереляционные (NoSQL) базы данных классифицируются по модели данных, и каждая хранит информацию в специфическом формате.
Основные типы NoSQL БД и хранимые данные:
| Тип БД | Примеры | Модель данных (Что хранится) | Ключевая особенность |
|---|---|---|---|
| Документные | MongoDB, CouchDB | Документы в формате JSON, BSON или XML. Документ — это самостоятельная структура с парами "ключ-значение", часто вложенными. | Гибкая схема, удобство для иерархических данных. |
| Ключ-значение | Redis, Amazon DynamoDB | Пары "ключ-значение". Ключ — уникальный идентификатор (строка). Значение — данные любого типа: строка, число, JSON, бинарный объект, список. | Высокая скорость, простота, идеально для кэширования и сессий. |
| Колоночные | Cassandra, HBase | Данные организованы в семейства колонок, а не строк. Каждая запись может иметь разный набор колонок. | Оптимизированы для быстрой записи и аналитических запросов по колонкам, горизонтальное масштабирование. |
| Графовые | Neo4j, Amazon Neptune | Узлы (сущности), Связи (отношения) и их Свойства (атрибуты). | Эффективный поиск сложных взаимосвязей и паттернов в данных (соц. сети, рекомендации). |
Пример документа в MongoDB (JSON):
{
"_id": "507f1f77bcf86cd799439011",
"name": "Анна",
"email": "anna@example.com",
"orders": [
{
"order_id": "ORD123",
"product": "Ноутбук",
"price": 1500,
"status": "доставлен"
},
{
"order_id": "ORD456",
"product": "Мышь",
"price": 50,
"status": "в обработке"
}
]
}
Пример пары "ключ-значение" в Redis:
# Запись
SET user:session:abc123 '{"userId": 42, "lastActivity": 1678886400}'
# Чтение
GET user:session:abc123 Ответ 18+ 🔞
А, ну вот, блядь, классификация NoSQL баз! Это ж не просто так, а целая ёперная театральная постановка, где каждая база — актёр со своей ролью. Смотри, как они по типам разбежались, пизда с ушами!
Основные типы NoSQL БД и что они там в себе носят:
| Тип БД | Примеры | Модель данных (Что хранится) | Ключевая особенность |
|---|---|---|---|
| Документные | MongoDB, CouchDB | Документы в формате JSON, BSON или XML. Это как папка с бумажками, где каждая бумажка — самостоятельная хуйня с кучей вложенных полей. | Гибкая схема, можно хоть завтра новое поле прилепить, и никто не охуеет. Идеально для иерархических данных. |
| Ключ-значение | Redis, Amazon DynamoDB | Пары "ключ-значение". Ключ — это типа номерок в гардеробе (строка). Значение — что угодно: строка, число, JSON, бинарный объект, хоть список покупок твоей бабки. | Скорость, блядь, овердохуищная! Простота — взял по ключу и всё. Идеально для кэширования и сессий пользователей. |
| Колоночные | Cassandra, HBase | Данные организованы не по строкам, а по семействам колонок. Каждая запись может иметь свой уникальный набор колонок, как будто у всех разная анатомия. | Заточены под быструю запись и аналитические запросы, когда тебе надо посчитать что-то по одной колонке у миллиарда записей. Горизонтально масштабируются — добавляй сервера, и похуй. |
| Графовые | Neo4j, Amazon Neptune | Узлы (сущности), Связи (отношения) и их Свойства (атрибуты). Представь соцсеть: люди — узлы, дружба — связи. | Эффективный поиск сложных взаимосвязей. Хочешь найти всех, кто дружит с друзьями друзей твоего бывшего? Вот для этого. |
Вот, смотри, как выглядит документ в MongoDB (JSON):
{
"_id": "507f1f77bcf86cd799439011",
"name": "Анна",
"email": "anna@example.com",
"orders": [
{
"order_id": "ORD123",
"product": "Ноутбук",
"price": 1500,
"status": "доставлен"
},
{
"order_id": "ORD456",
"product": "Мышь",
"price": 50,
"status": "в обработке"
}
]
}
Видишь? Всё аккуратненько в одном месте: и пользователь, и его заказы. Удобно, блядь.
А вот пример пары "ключ-значение" в Redis:
# Запись
SET user:session:abc123 '{"userId": 42, "lastActivity": 1678886400}'
# Чтение
GET user:session:abc123
Всё, сука! Положил по ключу user:session:abc123 целый JSON с сессией. Получил обратно за микросекунды. Волшебство, ёпта! Главное — не перепутать ключи, а то вместо сессии пользователя получишь рецепт борща.