1. Реляционные базы данных
Характеристики:
- Данные организованы в таблицы с строгой схемой
- Поддержка ACID-транзакций
- Язык запросов SQL
Примеры:
-- Пример реляционной структуры
CREATE TABLE Users (
Id INT PRIMARY KEY,
Name NVARCHAR(100) NOT NULL,
Email NVARCHAR(255) UNIQUE
);
Использование:
- Транзакционные системы (банки, ERP)
- Когда важна целостность данных
2. Документоориентированные
Характеристики:
- Хранение JSON/BSON документов
- Гибкая схема
- Горизонтальная масштабируемость
Пример (MongoDB):
// Пример документа
{
_id: ObjectId("507f1f77bcf86cd799439011"),
name: "John Doe",
addresses: [
{ type: "home", street: "123 Main St" }
]
}
Использование:
- Каталоги продукции
- Контент-менеджмент системы
- Профили пользователей
3. Ключ-Значение
Характеристики:
- Простейшая модель данных
- Высокая производительность
- Часто используются как кэш
Пример (Redis):
SET user:1000 "{'name':'John', 'age':30}"
GET user:1000
Использование:
- Кэширование
- Сессии пользователей
- Конфигурации
4. Колоночные
Характеристики:
- Оптимизированы для аналитических запросов
- Эффективное сжатие
- Быстрые агрегации
Пример (Cassandra):
CREATE TABLE user_activity (
user_id UUID PRIMARY KEY,
activity_date TIMESTAMP,
actions MAP<TEXT, INT>
);
Использование:
- Аналитика больших данных
- Системы телеметрии
- Таблицы фактов в хранилищах данных
5. Графовые базы данных
Характеристики:
- Оптимизированы для работы со связями
- Специальные языки запросов (Cypher)
- Быстрые обходы графов
Пример (Neo4j):
CREATE (alice:Person {name:'Alice'})-[:KNOWS]->(bob:Person {name:'Bob'})
Использование:
- Социальные сети
- Рекомендательные системы
- Фрод-мониторинг
6. Поисковые движки
Характеристики:
- Инвертированные индексы
- Поддержка полнотекстового поиска
- Релевантность результатов
Пример (Elasticsearch):
{
"query": {
"match": { "content": "database types" }
}
}
Использование:
- Поиск по сайтам
- Логирование и анализ логов
- Поиск товаров
7. Временные ряды
Характеристики:
- Оптимизированы для хранения временных меток
- Эффективное сжатие временных данных
- Специальные функции агрегации
Пример (InfluxDB):
INSERT temperature,location=room value=22.1 1434055562000000000
Использование:
- IoT устройства
- Финансовые котировки
- Мониторинг систем
8. In-memory базы данных
Характеристики:
- Данные в оперативной памяти
- Экстремальная производительность
- Ограниченный объем данных
Пример:
// Использование Memcached
var cache = new MemcachedClient();
cache.Store(StoreMode.Set, "user_123", userData);
Использование:
- Кэширование
- Сессии
- Реальные системы аналитики
Критерии выбора типа БД
- Структура данных: таблицы vs документы vs графы
- Масштабируемость: вертикальная vs горизонтальная
- Производительность: задержки vs пропускная способность
- Согласованность: строгая vs eventual consistency
Резюмируем:
выбор типа базы данных зависит от конкретных требований проекта. Современные системы часто используют полиглотное хранение - комбинацию разных типов БД для различных задач в рамках одного приложения.