Amazon Aurora PostgreSQL
Amazon Aurora PostgreSQL — это реляционная база данных, совместимая с PostgreSQL, предоставляемая как часть облачного сервиса Amazon Web Services (AWS). Она сочетает в себе производительность и надёжность коммерческих баз данных с простотой и экономичностью open-source-систем, будучи специально разработанной для облачной инфраструктуры. Aurora PostgreSQL полностью совместима с существующими приложениями, написанными для PostgreSQL, и поддерживает стандартные драйверы и инструменты.
История и происхождение
Amazon Aurora была анонсирована в ноябре 2014 года как высокопроизводительная реляционная база данных, совместимая с MySQL и PostgreSQL. Первоначально Aurora была доступна только с совместимостью с MySQL, а поддержка PostgreSQL была добавлена в октябре 2016 года. Основной целью разработки было преодоление ограничений традиционных СУБД в облачной среде, таких как ограниченная пропускная способность ввода-вывода и сложность управления репликацией. Aurora была создана с нуля для облака, используя распределённое хранилище и отделение вычислительных ресурсов от хранения данных.
Архитектура и устройство
Разделение вычислений и хранения
Ключевая особенность Aurora PostgreSQL — разделение слоя вычислений (экземпляры базы данных) и слоя хранения. Это позволяет масштабировать их независимо. Слой хранения представляет собой распределённую, самовосстанавливающуюся подсистему, которая автоматически реплицирует данные в шесть копий в трёх зонах доступности (Availability Zones) одного региона AWS. Это обеспечивает высокую отказоустойчивость и долговечность данных без необходимости настройки традиционной репликации.
Кластер Aurora PostgreSQL
Кластер Aurora состоит из одного основного экземпляра (primary instance), который обрабатывает операции записи и чтения, и до 15 реплик только для чтения (read replicas). Реплики могут быть использованы для масштабирования нагрузки чтения и повышения доступности. В случае отказа основного экземпляра, одна из реплик автоматически повышается до роли основного за время, обычно не превышающее 30 секунд.
Хранилище Aurora
Хранилище Aurora распределено по нескольким узлам и зонам доступности. Данные автоматически реплицируются на уровне блоков, а не на уровне базы данных. Это обеспечивает:
- Долговечность: данные считаются сохранёнными после записи в 4 из 6 копий.
- Непрерывное резервное копирование: автоматическое резервное копирование в Amazon S3 без влияния на производительность.
- Восстановление до любой точки во времени (Point-in-Time Recovery, PITR) в пределах периода хранения (до 35 дней).
Ключевые характеристики
Производительность
Aurora PostgreSQL обеспечивает значительно более высокую производительность по сравнению со стандартной PostgreSQL, развёрнутой на аналогичных ресурсах. Это достигается за счёт:
- Оптимизированного сетевого стека: уменьшение задержек при передаче данных между вычислительным узлом и хранилищем.
- Кэширования на уровне хранилища: часто используемые данные хранятся в кэше на узлах хранения.
- Асинхронной записи: операции записи подтверждаются быстрее, так как данные сначала записываются в распределённое хранилище, а не на локальный диск.
Масштабируемость
- Автомасштабирование хранилища: размер хранилища автоматически увеличивается по мере добавления данных, до 128 ТБ.
- Масштабирование чтения: до 15 реплик только для чтения, каждая из которых может иметь собственные вычислительные ресурсы.
- Aurora Auto Scaling: автоматическое добавление или удаление реплик чтения в зависимости от нагрузки.
- Aurora Serverless: бессерверная конфигурация, которая автоматически масштабирует вычислительные ресурсы в зависимости от активности базы данных, идеально подходит для переменных или непредсказуемых нагрузок.
Надёжность и доступность
- Автоматическое восстановление после сбоев: при отказе основного экземпляра или узла хранения система автоматически восстанавливает работоспособность.
- Мульти-зональное развертывание: данные реплицируются в три зоны доступности, что обеспечивает устойчивость к сбоям целой зоны.
- Соглашение об уровне обслуживания (SLA): AWS гарантирует доступность Aurora PostgreSQL на уровне 99,99% для мульти-зональных развертываний.
Совместимость и функциональность
Aurora PostgreSQL полностью совместима с PostgreSQL 11, 12, 13, 14, 15 и 16. Это означает, что существующие приложения, использующие стандартные драйверы (psycopg2, libpq), ORM (SQLAlchemy, Django ORM) и инструменты (pgAdmin, pg_dump), могут работать с Aurora без изменений.
Расширения и возможности
Aurora PostgreSQL поддерживает большинство популярных расширений PostgreSQL, включая:
- PostGIS: для работы с геопространственными данными.
- pgAudit: для детального аудита.
- pg_stat_statements: для мониторинга производительности запросов.
- pg_hint_plan: для управления планами выполнения запросов.
Кроме того, Aurora предлагает собственные расширения и функции, такие как:
- Aurora Global Database: позволяет создать глобальную базу данных, которая реплицируется между несколькими регионами AWS с задержкой менее 1 секунды.
- Aurora Machine Learning: интеграция с сервисами AWS SageMaker и Amazon Comprehend для выполнения прогнозов и анализа текста непосредственно в SQL-запросах.
- Aurora Parallel Query: ускоряет выполнение аналитических запросов за счёт параллельной обработки на узлах хранения.
- Babelfish for Aurora PostgreSQL: позволяет запускать приложения, написанные для Microsoft SQL Server, с минимальными изменениями.
Применение
Amazon Aurora PostgreSQL используется в широком спектре сценариев:
- Веб-приложения и SaaS: благодаря высокой производительности и масштабируемости.
- Системы электронной коммерции: для обработки транзакций с высокой нагрузкой.
- Мобильные приложения: для обеспечения низкой задержки и высокой доступности.
- Аналитика и отчётность: с использованием реплик чтения и параллельных запросов.
- Геопространственные приложения: с помощью расширения PostGIS.
- Миграция с Microsoft SQL Server: через Babelfish.
Управление и безопасность
Управление
Aurora PostgreSQL управляется через консоль AWS, AWS CLI, SDK или инфраструктуру как код (Terraform, CloudFormation). Основные задачи управления включают:
- Создание и настройка кластеров.
- Управление резервными копиями и восстановлением.
- Мониторинг производительности через Amazon CloudWatch и Performance Insights.
- Автоматическое обновление версий базы данных.
Безопасность
- Шифрование: шифрование данных в покое (с использованием AWS KMS) и в транзите (SSL/TLS).
- Сетевая изоляция: размещение в виртуальном частном облаке (VPC) с использованием security groups и network ACLs.
- Аутентификация и авторизация: поддержка IAM-аутентификации, интеграция с AWS Secrets Manager и AWS Directory Service.
- Аудит: детальный аудит действий с базой данных через pgAudit и AWS CloudTrail.
Стоимость
Модель ценообразования Aurora PostgreSQL основана на оплате за фактически используемые ресурсы:
- Вычислительные ресурсы: оплата за час работы экземпляра (например, db.r5.large).
- Хранилище: оплата за гигабайт в месяц за фактически занятое место.
- I/O: оплата за количество операций ввода-вывода (для некоторых типов хранилищ).
- Резервные копии: оплата за хранение резервных копий сверх бесплатного лимита (100% размера базы данных).
Aurora Serverless позволяет платить только за потреблённые ресурсы, что может быть выгодно для приложений с переменной нагрузкой.
Критика и ограничения
Несмотря на преимущества, Aurora PostgreSQL имеет некоторые ограничения:
- Привязка к вендору: полная зависимость от AWS, что может затруднить миграцию в другое облако или локальную среду.
- Ограниченная совместимость с расширениями: некоторые расширения PostgreSQL, особенно те, которые требуют прямого доступа к файловой системе или ядру ОС, могут не поддерживаться.
- Сложность ценообразования: модель оплаты за I/O может быть непредсказуемой для приложений с интенсивным вводом-выводом.
- Задержки при глобальной репликации: хотя Aurora Global Database обеспечивает низкие задержки, они всё же существуют и могут быть критичны для некоторых приложений.
Источники
- Официальная документация Amazon Web Services (AWS) по Amazon Aurora PostgreSQL.
- Whitepaper «Amazon Aurora: Design Considerations for High Throughput Cloud-Native Relational Databases» (2017).
- Документация по расширениям PostgreSQL, поддерживаемым в Aurora.
- Материалы AWS re:Invent и других конференций, посвящённые Aurora.
BFOmetr — база данных и аналитика по компаниям России.
На главную BFOmetr →