3

GAEにデプロイしているアプリケーションがあります。私は、GAEデータストアに保存しているデータをAmazonのクラウドで実行されているシステムに複製するためのオプションを考え出すという任務を負っています。

理想的には、同期のたびにデータストア全体を転送しなくてもこれを実行できます。レプリケーションはリアルタイムに近いものである必要はないため、1日に1回または2回の同期のようなもので問題なく機能します。

GAEの経験がある人は、オプションが何であるかについてここで私を助けてくれますか?これまでのところ私は思いついた:

  1. Googleが提供するbulkloader.pyを使用してデータをCSVにエクスポートし、何らかの方法でCSVをAmazonに転送してそこで処理します

  2. GAEで実行されるJavaアプリを作成し、データストアからデータを読み取り、Amazonで実行されている別のJavaアプリにデータを送信します。

それらのオプションは機能しますか?それらの落とし穴は何でしょうか?他にどのようなオプションがありますか?

4

1 に答える 1

5

AppEngineHRD移行またはバックアップツールが実行しているのと同様のロジックを使用できます。

  1. 変更されたエンティティを子エンティティマーカーでマークする
  2. App Engine mapreduceライブラリを使用してMapperPipelineを実行し、データストア入力リーダーを使用してそれらのエンティティを反復処理します
  3. マップ関数で、親エンティティをフェッチし、ファイル出力ライターを使用してGoogle Storageにシリアル化し、マーカーを削除します
  4. リモートホストにpingを実行して、GoogleストレージのURLからそれらのエンティティをインポートします

3と4の代わりに、複数のurlfetch(POST)を作成して、シリアル化された各エンティティをリモートホストに直接送信することもできますが、1回の失敗でデータインポートの整合性が損なわれる可能性があるため、より脆弱です。

インスピレーションを得るためにデータストア管理者のソースコードを見ることができます。

于 2012-05-03T15:03:45.683 に答える