Открыть сервис

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: бессерверная конфигурация, которая автоматически масштабирует вычислительные ресурсы в зависимости от активности базы данных, идеально подходит для переменных или непредсказуемых нагрузок.

Надёжность и доступность

Совместимость и функциональность

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 →