StatisticStore
ログ データを 1 つのモデルに統合したいと考えています。現在、ログ データは 3 つのモデルに散らばっており、ごちゃごちゃしています。
3 つのモデルすべてのこれらすべてのレコードを反復処理し、新しいStatisticStore
モデルにそれぞれのコピーを作成する最良の方法は何でしょうか?
StatisticStore
ログ データを 1 つのモデルに統合したいと考えています。現在、ログ データは 3 つのモデルに散らばっており、ごちゃごちゃしています。
3 つのモデルすべてのこれらすべてのレコードを反復処理し、新しいStatisticStore
モデルにそれぞれのコピーを作成する最良の方法は何でしょうか?
モデルごとに数千のエンティティしかない場合は、データストアfetch
を使用して 3 つのモデルのそれぞれを単純に繰り返し処理し、それらを新しいStatisticStore
エンティティに格納します。リモート apiを使用してこれを行うこともできます。
モデルごとに何千ものエンティティがある場合は、MapReduce フレームワークを確認してください。MapReduce フレームワークでは、エンティティを取得してStatisticStore
. あなたの場合、「削減」の部分は不要なはずです。
この SO の質問に対する回答も、さらなるインスピレーションを提供する可能性があります。
多くの制限について説明していないので、単純なコピー操作にすぎないと思います。「最善の方法」はちょっとあいまいです。何を比較しているのかわかりません。注意が必要な唯一のことは、新しいエンティティの作成、データのコピー、古いエンティティの削除という実際の作業をトランザクションで行うことです。これは簡単に実行でき、何か問題が発生した場合に重複を作成するのを防ぎます。
リモート API シェルは、間違いなくコーディングの手間が最も少ない方法です。単純な Python 関数を記述して、トランザクション コピーを実行し、シェルで実行できます。追加のハンドラーを記述する必要はなく、アプリの新しいバージョンをデプロイする必要さえありません。リモート シェルの問題は、データストアへのアクセスがおそらく 100 倍遅いため、時間がかかる可能性があることです。一晩実行すると、インターネット接続に問題が発生した場合に停止する可能性があります。トランザクションでエンティティをコピーした場合、これは大きな問題にはなりませんが、操作を再開するだけで済みます。参考までに、私は最近、リモート API を介して 6000 エンティティをアップロードする操作を実行しましたが、おそらく 5 分かかりました。操作を一晩実行しても問題ない場合は、
負荷が多数のインスタンスに分散されるため、mapreduce API メソッドはより高速に実行されます。mapreduce をセットアップするにはもう少し手間がかかります。その機能を備えたアプリの新しいバージョンをデプロイし、開始し、完了するまで待ってから、コードを一掃し、大量のログを記録する必要があります。 mapreduce が自動的に生成するエンティティ。