Назад | Перейти на главную страницу

Переход с DynamoDB на RDS

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

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

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

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

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

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

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

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