Microsoft Azure SQL Database
Azure SQL Database — это облачная реляционная база данных как услуга (DBaaS), предоставляемая в рамках платформы Microsoft Azure. Она основана на стабильной версии ядра СУБД Microsoft SQL Server, но полностью управляется провайдером: задачи по администрированию, обеспечению отказоустойчивости, резервному копированию и обновлению программного обеспечения берёт на себя облачная платформа.
Служба относится к семейству решений Azure SQL, в которое также входят Управляемый экземпляр Azure SQL (SQL Managed Instance) и Azure SQL Server на виртуальных машинах. Основное отличие Azure SQL Database от классического SQL Server — модель потребления «плати за то, что используешь» (pay-as-you-go) и полная программная абстракция от аппаратного обеспечения.
История
Проект Azure SQL Database был запущен под кодовым названием «CloudSQL» и вышел в коммерческую эксплуатацию в феврале 2010 года. Первоначально сервис назывался SQL Azure. В 2012 году, в рамках ребрендинга платформы Windows Azure в Microsoft Azure, сервис получил текущее название.
Ключевые этапы развития:
- 2010 — запуск с ограниченным набором функций (максимальный размер базы — 1 ГБ).
- 2012 — увеличение лимита до 150 ГБ, появление поддержки пространственных данных.
- 2014 — внедрение уровня Elastic Pool для управления несколькими базами с общими ресурсами.
- 2017 — выпуск гибридного решения Azure SQL Managed Instance.
- 2020 — массовое внедрение конфигурации Hyperscale, позволяющей увеличивать размер хранилища до 100 ТБ без перераспределения ресурсов.
- 2023 — интеграция с Azure OpenAI Service и возможностями встраивания ИИ-запросов (Vector Search).
Архитектура и модель предоставления
Логическая структура
Azure SQL Database не предоставляет прямого доступа к операционной системе или файловой системе сервера. Пользователь получает логический сервер (logical server) — абстрактную точку подключения, внутри которой могут располагаться одна или несколько изолированных баз данных. Логический сервер управляется через портал Azure, интерфейс командной строки (Azure CLI) или REST API.
Модели развертывания
Служба предлагает три основных варианта развертывания:
- Одиночная база данных (Single Database) — изолированная база со своим набором выделенных ресурсов. Подходит для простых приложений или сервисов с предсказуемой нагрузкой.
- Эластичный пул (Elastic Pool) — набор баз данных, разделяющих фиксированный пул ресурсов (vCores, память, хранилище). Позволяет эффективно обслуживать множество малоактивных баз, сглаживая пиковые нагрузки каждой.
- Управляемый экземпляр (Managed Instance) — отдельный экземпляр SQL Server в облачной среде, предоставляющий почти стопроцентную совместимость с локальным SQL Server (включая CLR, Service Broker, SQL Agent, поддержку межбазовых запросов). Предназначен для миграции существующих приложений с минимальными изменениями.
Уровни обслуживания (Service Tiers)
В рамках Single Database и Elastic Pool выделяют три основных уровня производительности:
| Уровень | Краткое описание | Типичная нагрузка |
|---|---|---|
| General Purpose | Сбалансированный вариант, подходит для большинства рабочих нагрузок. Отказоустойчивость за счёт гео-избыточных копий на серверах с отдельным хранилищем. | ERP, CRM, веб-приложения. |
| Business Critical | Высокая производительность и минимальное время восстановления (RPO). Использует кластеризацию Always On Availability Groups напрямую на узлах. | Высоконагруженные транзакционные системы (OLTP), финансовые операции. |
| Hyperscale | Архитектура с разделением вычислительных и накопительных мощностей. Хранилище может достигать 100 ТБ, при этом добавление вычислительных узлов происходит почти мгновенно. | Хранилища данных, SaaS-сервисы с большими объёмами запросов. |
Ключевые характеристики
Автоматическое управление
- Резервное копирование: создаётся автоматически каждые 5–10 минут (транзакционные журналы), полные и дифференциальные — раз в сутки. Срок хранения по умолчанию — от 7 до 35 дней в зависимости от уровня обслуживания, для Hyperscale — до 14 дней.
- Восстановление на момент времени (Point-in-Time Restore, PITR): позволяет откатить базу на любую секунду в пределах срока хранения резервных копий.
- Авто-настройка (Automatic Tuning): служба может самостоятельно назначать индексы (создание или удаление), корректировать планы запросов на основе статистики выполнения.
- Обновления: все применимые обновления ядра SQL Server устанавливаются Microsoft без участия клиента в рамках ежемесячного цикла обновлений Azure.
Безопасность и соответствие требованиям
Azure SQL Database поддерживает ряд встроенных механизмов защиты:
- Шифрование данных: прозрачное шифрование на уровне страниц (Transparent Data Encryption, TDE) включено по умолчанию для всех новых баз. Ключи могут управляться Microsoft или клиентом через хранилище ключей Azure Key Vault.
- Обнаружение угроз (Advanced Threat Protection): анализ логов аудита для выявления аномальной активности (SQL-инъекции, попытки подбора паролей, инъекции с необычных IP-адресов).
- Аутентификация: поддержка как логинов SQL (логин/пароль), так и встроенной аутентификации Microsoft Entra ID (ранее Azure Active Directory).
- Аудит: запись всех операций изменения схемы и данных в журнал, который может быть передан в аналитическую платформу Azure Log Analytics или сохранён в хранилище BLOB-объектов.
Производительность и масштабирование
Масштабирование ресурсов (вычислительных ядер и памяти) осуществляется без остановки сервиса, хотя на короткое время может наблюдаться переключение (failover) продолжительностью до нескольких секунд. За счёт использования архитектуры Hyperscale возможно масштабирование вверх (scale-up) для одного узла и масштабирование наружу (scale-out) с добавлением реплик только для чтения (read-only replicas).
Применение
Azure SQL Database используется в широком спектре сценариев:
- Корпоративные приложения: ядро для систем учёта, управления посетителями, складских систем.
- Веб-сервисы и SaaS-платформы: хранение данных пользователей через Elastic Pool, что позволяет оптимизировать затраты при арендной модели.
- Платформы электронной коммерции: организация транзакций, для которых критична консистентность (ACID).
- Мобильные и IoT-решения: лёгкая интеграция с серверной частью (Azure Functions, App Service), хранение телеметрии с коротким сроком жизни.
- Хранилища данных малого и среднего объёма: пакетная загрузка данных, составление отчётов (в паре с Power BI).
Ограничения и особенности
При использовании Azure SQL Database следует учитывать ряд ограничений по сравнению с локальным SQL Server:
- Отсутствие прямого доступа к файловой системе.
- Ограниченная поддержка скомпилированных в .NET сборок (CLR) — функции доступны, но работают в «песочнице».
- Нельзя установить сторонние расширения или изменить параметры на уровне экземпляра (sp_configure) — все настройки конфигурации управляются уровнем обслуживания.
- Максимальный размер базы в режиме General Purpose — 4 ТБ, в Business Critical — 4 ТБ, в Hyperscale — 100 ТБ.
Критика и альтернативы
Основные нарекания пользователей связаны с возможным ростом стоимости при неконтролируемом росте запросов (скрытые затраты на потребляемые ресурсы в устаревшей модели DTU, сложность прогнозирования стоимости при переменной нагрузке). Также критикуется ограниченная совместимость с некоторыми устаревшими функциями SQL Server, что затрудняет миграцию старых приложений.
В качестве альтернативных облачных реляционных баз данных выступают Amazon Aurora (совместима с MySQL и PostgreSQL) и Google Cloud SQL (для продуктов на MySQL, PostgreSQL и SQL Server). В нише баз данных с полной управляемостью и схожими требованиями к совместимости с SQL Server основными конкурентами считаются Amazon RDS for SQL Server и Управляемый экземпляр Azure SQL, который, в отличие от Azure SQL Database, является отдельным продуктом.
Источники
- Microsoft Learn: «What is Azure SQL Database?» (актуальная документация на русском языке).
- Microsoft. (2023). Azure SQL Documentation.
- Руководство по выбору уровней обслуживания Azure SQL.
- Техническая документация по архитектуре Hyperscale (Azure).
BFOmetr — база данных и аналитика по компаниям России.
На главную BFOmetr →