Easy📖Теория2 min

Базы данных Azure

Azure SQL Database, Cosmos DB, PostgreSQL, MySQL, Redis Cache

Базы данных 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

Проверь себя

🧪

Какой Azure-сервис лучше всего подходит для кеширования результатов запросов к базе данных?

🧪

Какая модель ценообразования Azure SQL Database рекомендуется для dev/test с непредсказуемой нагрузкой?

🧪

Cosmos DB поддерживает API для работы с графовыми данными. Какой это API?

🧪

Что измеряется в Request Units (RU) в Cosmos DB?

🧪

Какой SLA обеспечивает Azure Cosmos DB?