Репликация данных: от Amazon DynamoDB к Amazon Aurora
Amazon DynamoDB — это полностью управляемая, серверная, NoSQL база данных с ключевым значением, предназначенная для работы с высокопроизводительными приложениями любого масштаба. Amazon Aurora — это совместимая с MySQL и PostgreSQL реляционная база данных, созданная для облака. Aurora сочетает в себе производительность и доступность традиционных корпоративных баз данных с простотой и экономичностью баз данных с открытым исходным кодом. Серверные технологии устраняют задачи управления инфраструктурой, такие как планирование емкости и установка исправлений, и увеличивают гибкость всего вашего стека приложений.
В этом посте мы представляем решение, которое обрабатывает изменения данных в реальном времени в масштабе, реплицируя данные из DynamoDB в Amazon Aurora PostgreSQL-совместимое издание с использованием Amazon DynamoDB Streams и AWS Lambda.
Использование
В нашем случае клиент имел устаревшие отчетные приложения, инструменты бизнес-аналитики (BI) и хранилище данных, работающие в их локальной среде. В качестве долгосрочного плана они хотели модернизировать свое хранилище данных до Amazon Redshift. Тем временем, чтобы поддерживать устаревшую отчетную среду, они реплицировали данные из DynamoDB в Amazon Aurora PostgreSQL-совместимое издание, что позволяло пользователям выполнять одноразовые и агрегированные запросы. Хотя это не является обычной практикой репликации данных из DynamoDB в Amazon Aurora PostgreSQL, они предпочли переносить данные в Amazon Aurora PostgreSQL, что временно позволило им продолжать использовать свои существующие устаревшие приложения, а также начать процесс миграции в Amazon Redshift.
Обзор решения
С DynamoDB вам нужно только определить ключ раздела и, при необходимости, ключ сортировки для работы с данными. В отличие от этого, с реляционной базой данных, такой как Amazon Aurora, вам нужно определить схему таблицы для каждого атрибута, с которым вы планируете работать. Чтобы реплицировать изменения из таблицы DynamoDB, вы используете DynamoDB Streams для захвата последовательности изменений на уровне элементов и хранения этой информации в журнале до 24 часов. Репликация начнется только после включения потоков DynamoDB. Это означает, что если у вас есть существующие данные в таблице DynamoDB и их нужно реплицировать в Aurora, это должно быть обработано через одноразовую загрузку, такую как экспорт данных DynamoDB в Amazon S3 или экспорт и импорт данных DynamoDB с использованием AWS Data Pipeline.
DynamoDB не имеет схемы, поэтому вы несете ответственность за поддержание структуры реляционной базы данных в актуальном состоянии в случае добавления нового атрибута в DynamoDB, чтобы избежать нарушения репликации. Хотя Aurora может обрабатывать сотни тысяч транзакций в секунду (TPS), если входящий TPS в DynamoDB превышает этот показатель, может возникнуть задержка на стороне Aurora. Важно понимать требования к TPS и согласовывать их с SLA по задержке перед внедрением решения.
Работая с клиентом, мы также обсудили возможность…