1. Реляционные базы данных
Характеристики:
- Данные организованы в таблицы
- Строгая схема данных
- Поддержка ACID-транзакций
- Язык запросов SQL
Популярные СУБД:
- MySQL
- PostgreSQL
- Oracle
- Microsoft SQL Server
Пример SQL-запроса:
SELECT * FROM users WHERE age > 25 ORDER BY name;
Когда использовать:
- Сложные запросы с JOIN
- Высокие требования к целостности данных
- Транзакционные системы (банки, ERP)
2. Документоориентированные
Характеристики:
- Хранение в формате JSON/BSON
- Гибкая схема
- Горизонтальная масштабируемость
- Высокая производительность
Популярные СУБД:
- MongoDB
- CouchDB
- Firebase Firestore
Пример документа в MongoDB:
{
"_id": "5f8d0a3b6f8d4e3f6e8d0a3b",
"name": "Alice",
"age": 30,
"addresses": [
{
"type": "home",
"city": "New York"
}
]
}
Когда использовать:
- Быстрое прототипирование
- Гибкие требования к данным
- Большие объемы неструктурированных данных
3. Ключ-значение
Характеристики:
- Простейшая модель данных
- Высокая производительность
- Используется для кэширования
Популярные СУБД:
Пример в Redis:
SET user:1000 "{'name': 'John', 'age': 28}"
GET user:1000
Когда использовать:
- Сессии пользователей
- Кэширование
- Конфигурации
4. Колоночные базы данных
Характеристики:
- Хранение по колонкам, а не строкам
- Эффективное сжатие
- Оптимизированы для аналитики
Популярные СУБД:
- Cassandra
- HBase
- ClickHouse
Когда использовать:
- Аналитика больших данных
- Системы отчетности
- Data warehouses
5. Графовые базы данных
Характеристики:
- Оптимизированы для работы со связями
- Используют теорию графов
- Языки запросов: Cypher, Gremlin
Популярные СУБД:
- Neo4j
- Amazon Neptune
- ArangoDB
Пример Cypher-запроса:
MATCH (user:User)-[:FRIENDS_WITH]->(friend)
WHERE user.name = 'Alice'
RETURN friend.name;
Когда использовать:
- Социальные сети
- Рекомендательные системы
- Fraud detection
6. Поисковые базы данных
Характеристики:
- Оптимизированы для полнотекстового поиска
- Поддержка сложных запросов
Популярные СУБД:
- Elasticsearch
- Solr
- OpenSearch
7. Временные ряды
Характеристики:
- Оптимизированы для хранения временных данных
- Эффективное сжатие временных меток
Популярные СУБД:
- InfluxDB
- TimescaleDB
- Prometheus
Когда использовать:
- IoT устройства
- Финансовые данные
- Мониторинг систем
Сравнительная таблица
Тип БД | Сильные стороны | Слабые стороны |
Реляционные | Целостность, сложные запросы | Масштабируемость |
Документные | Гибкость, производительность | Сложные JOIN-запросы |
Ключ-значение | Скорость, простота | Ограниченная функциональность |
Графовые | Работа со связями | Специфические сценарии |
Колоночные | Аналитика, сжатие | Обновления данных |
Что важно для QA-инженера?
-
Тестирование схемы данных:
- Для SQL: соответствие нормальным формам
- Для NoSQL: валидация структуры документов
-
Производительность:
- Тестирование скорости запросов
- Нагрузочное тестирование
-
Целостность данных:
- Проверка транзакций (ACID)
- Тестирование репликации
-
Безопасность:
- Проверка инъекций (SQL, NoSQL)
- Тестирование прав доступа
Резюмируем:
выбор типа базы данных зависит от требований проекта. Реляционные БД подходят для сложных транзакционных систем, NoSQL — для гибких и масштабируемых решений, а специализированные БД (графовые, временные ряды) решают конкретные классы задач. QA-инженер должен понимать особенности каждого типа для эффективного тестирования.