Миграция с DynamoDB на RDS

Я рассматриваю различные варианты переноса базы данных DynamoDB в RDS. Структура данных имеет гораздо больше смысла в реляционном формате.

Есть 8 таблиц с около 1 миллиона документов в каждой. Мы разработали отображение между первичными / внешними ключами.

Из документации, которую я прочитал на AWS, у меня есть несколько вариантов.

  • Конвейер данных AWS -> S3 -> преобразовать в csv -> Служба миграции баз данных AWS
  • Пользовательская программа записывает таблицы в S3 в формате CSV -> Миграция базы данных AWS
  • Пользовательская программа считывает данные из dynamicoDB -> и вставляет их сразу в таблицу RDS за таблицей до завершения.
  • Может быть, использовать конвейер данных AWS для прямого копирования из DynamoDB в RDS?

Кто-нибудь еще имел опыт с этим видом миграции? Есть ли другие варианты?

1 ответ

Решение

8 миллионов документов - это не так много, я бы не стал тратить слишком много времени на чрезмерную оптимизацию процесса, который в итоге может выполняться только один раз и всего несколько минут.

Если вы увеличите производительность чтения DynamoDB до 10 тыс. Единиц в секунду, вы сможете прочитать весь набор данных менее чем за 15 минут. В то же время запустите RDS на достаточно большом экземпляре, чтобы он мог поддерживать запись строк 8M без замедления. Не использовать db.t2.* Класс, который использует кредиты процессора и как только вы закончите, он замедляется. Вместо этого используйте что-то большое (например, db.r4.2xlarge) с большим объемом памяти, и как только импорт будет завершен, вы можете сразу же понизить его до уровня, необходимого для долгосрочной экономии денег. Также рассмотрите Аврору вместо старомодного RDS.

Вы можете поэкспериментировать с несколькими способами на небольшом подмножестве записей, и, как только процесс заработает, запустите его для всего набора данных. Я бы, вероятно, выбрал простую пользовательскую программу, которая читает из DynamoDB с одной стороны и пишет в RDS с другой. И я запускаю его из экземпляра EC2 для оптимизации производительности и оптимизации затрат (чтобы трафик не уходил из AWS, что стоит некоторых денег). Если вы уже не используете Data Pipeline для чего-то другого, вероятно, не стоит учиться для такой небольшой разовой работы. Но если вы уже знаете, как использовать Data Pipeline, вы используете его. В конце концов, все, что может прочитать из DynamoDB и записать в RDS, сделает эту работу, поэтому выберите то, с чем вы уже знакомы.

Надеюсь, это поможет:)

Другие вопросы по тегам