web-dev-qa-db-ja.com

DynamoDBからRDSへの移行

DynamoDBデータベースをRDSに移行するために利用できるさまざまなオプションを検討しています。データ構造は、リレーショナル形式の方がはるかに理にかなっています。

8つのテーブルがあり、それぞれに約100万のドキュメントがあります。主キーと外部キーの間のマッピングを作成しました。

AWSで読んだドキュメントから、いくつかのオプションがあります。

  • AWSデータパイプライン-> S3-> csvに変換-> AWSデータベース移行サービス
  • カスタムプログラムは、テーブルをcsv形式でS3に書き込みます-> AWSデータベースの移行
  • カスタムプログラムはdynamoDBから読み取り、完了するまでテーブルごとにRDSにすぐに挿入します。
  • たぶんAWSデータパイプラインを使用してDynamoDBからRDSに直接コピーしますか?

他の誰かがこの種の移行の経験がありますか?他に選択肢はありますか?

1
Peter Grainger

800万のドキュメントはそれほど多くはありません。プロセスを最適化しすぎて、最終的には1回だけ、数分間しか実行されない可能性があるため、あまり時間をかけません。

DynamoDBの読み取りパフォーマンスをスケールアップ 1秒あたり10kの容量ユニットにすると、15分以内にデータセット全体を読み取ることができるはずです。同時に、RDSを十分な大きさのインスタンスで実行して、速度を落とさずに8M行の書き込みを維持できるようにします。 db.t2.*クラスはCPUクレジットを使用するため、使用しないでください。使用すると速度が低下します。代わりに、大量のメモリを備えた大きなもの(db.r4.2xlargeなど)を使用します。インポートが完了すると、コストを節約するために長期的に必要なものにすぐにダウングレードできます。また、昔ながらの[〜#〜] rds [〜#〜]の代わりにAuroraを検討してください。

レコードの小さなサブセットでさまざまな方法を試して、プロセスが機能したら、データセット全体で実行できます。おそらく、一方の側でDynamoDBから読み取り、もう一方の側でRDSに書き込む単純なカスタムプログラムを選択します。そして、パフォーマンスとコストの最適化の理由から、EC2インスタンスから実行します(トラフィックがAWSを離れるのを防ぐためで、コストがかかります)。すでにデータパイプラインを他の目的で使用しているのでない限り、このような小さな1回限りの仕事で学ぶ価値はないでしょう。ただし、使用方法をすでに知っている場合はデータパイプライン使用します。結局、DynamoDBから読み取り、RDSに書き込むことができるものなら何でも機能するので、既に使い慣れているものを選択してください。

お役に立てば幸いです:)

3
MLu