Базы данных Azure
Azure предоставляет управляемые сервисы баз данных на любой вкус -- от классических реляционных до глобально распределенных NoSQL. Все они являются PaaS-решениями: Azure берет на себя резервное копирование, обновления и масштабирование.
Azure SQL Database
Azure SQL Database -- это полностью управляемая реляционная база данных, совместимая с Microsoft SQL Server. Это самый популярный сервис баз данных в Azure.
Ключевые возможности:
- Полная совместимость с T-SQL
- Встроенный AI для автоматической оптимизации запросов (Intelligent Performance)
- Автоматическое резервное копирование (каждые 5-10 минут)
- Поддержка георепликации
- Встроенная защита от угроз (Advanced Threat Protection)
Модели ценообразования:
| Модель | Описание | Когда использовать |
|---|---|---|
| DTU (Basic/Standard/Premium) | Фиксированные пакеты CPU + IO + Memory | Простые приложения, предсказуемая нагрузка |
| vCore (General Purpose / Business Critical) | Выбор CPU и памяти отдельно | Гибкий контроль, Azure Hybrid Benefit |
| Serverless | Автопауза при простое, автомасштабирование | Dev/test, непредсказуемые нагрузки |
SLA: 99.99% -- максимальный простой около 52 минут в год.
# Создание Azure SQL Database
az sql server create \
--name sql-myapp \
--resource-group rg-demo \
--location westeurope \
--admin-user sqladmin \
--admin-password "SecureP@ss123!"
az sql db create \
--resource-group rg-demo \
--server sql-myapp \
--name MyDatabase \
--service-objective S1
Azure Cosmos DB
Cosmos DB -- это глобально распределенная NoSQL база данных с гарантированной задержкой менее 10 мс для операций чтения и записи на 99-м процентиле.
Уникальные характеристики:
- Мульти-регионная запись (multi-region writes) -- данные реплицируются по всему миру
- Мульти-модель -- поддерживает несколько API в одном сервисе
- Гарантия задержки < 10 мс для чтения и записи
- SLA 99.999% -- максимальный простой 5.26 минуты в год
- Автоматическое индексирование всех свойств
Поддерживаемые API:
| API | Тип данных | Когда использовать |
|---|---|---|
| SQL (Core) | Документы (JSON) | Новые проекты, универсальный выбор |
| MongoDB | Документы (BSON) | Миграция с MongoDB |
| Cassandra | Wide-column | Миграция с Apache Cassandra |
| Gremlin | Графы | Социальные сети, связи между объектами |
| Table | Ключ-значение | Миграция с Azure Table Storage |
Основные концепции:
- Request Units (RU) -- единица измерения пропускной способности. Чтение документа 1 KB = 1 RU
- Partition Key -- ключ для распределения данных между серверами. Выбор правильного partition key критически важен для производительности
- Consistency Levels -- 5 уровней согласованности от Strong до Eventual
Бесплатный уровень: 1000 RU/s + 25 GB хранения -- достаточно для небольших проектов и прототипов.
Azure Database for PostgreSQL
Управляемый PostgreSQL в Azure. Три варианта развертывания:
- Single Server -- один сервер (устаревший вариант)
- Flexible Server -- рекомендуемый вариант, поддерживает зоны доступности
- Cosmos DB for PostgreSQL (ранее Hyperscale / Citus) -- распределенный PostgreSQL для масштабных нагрузок
Когда выбирать: проекты, требующие совместимости с PostgreSQL, open-source стек, опыт команды с PostgreSQL.
Azure Database for MySQL
Управляемый MySQL в Azure. Аналогично PostgreSQL, доступен в вариантах Single Server и Flexible Server.
Когда выбирать: существующие MySQL-приложения, WordPress и другие CMS, LAMP-стек.
Azure Cache for Redis
Redis -- это in-memory хранилище ключ-значение, используемое как кеш, брокер сообщений и хранилище сессий.
Сценарии использования:
- Кеширование -- хранение результатов дорогих запросов к БД
- Сессии -- хранение данных сессий пользователей
- Pub/Sub -- обмен сообщениями в реальном времени
- Очереди -- легковесные очереди задач
- Распределенные блокировки -- координация между экземплярами
Уровни:
| Уровень | Описание |
|---|---|
| Basic | Один узел, без SLA. Для dev/test |
| Standard | Реплицированный (primary/replica), SLA 99.9% |
| Premium | Кластеризация, сохранение на диск, VNet |
| Enterprise | Redis Labs, модули (RedisSearch, RedisJSON) |
Как выбрать базу данных
| Сценарий | Рекомендуемый сервис |
|---|---|
| OLTP, бизнес-приложения, SQL Server | Azure SQL Database |
| Глобальные приложения, низкая задержка, NoSQL | Cosmos DB |
| Open-source стек, PostgreSQL совместимость | Azure Database for PostgreSQL |
| WordPress, PHP, LAMP | Azure Database for MySQL |
| Кеширование, сессии, real-time | Azure Cache for Redis |
| Аналитика, OLAP, хранилище данных | Azure Synapse Analytics |