2011-11-28 5 views
2

私は約625,000のオブジェクトのコレクションを持っています。Mongoimport:データ消費を中断することなく夜間にコレクションを更新する

夜間にcron経由で、データプロバイダからこのデータの更新ファイル(tsv)を取得し、それらをmongodbに再インポートする必要があります。

データを消費しているウェブサイト/サービスとそのユーザーを中断することなくこれを行うには、どのような方法が最適ですか? mongoimport --upsertはコレクションの最善の方法ですか?それはちょっと遅いです。

私のコレクションのコピーを含む他の方法について考えるべきでしょうか?

+0

新しいデータを再挿入しようとしましたか?それはおそらくもっと速くなります。TSAに_idキーがありますか?そうでない場合は、あなたが指定しているupsertFieldsが索引付けされていることを確認してください。 –

+0

すべての質問にはいっています:)。再挿入を行うときには--dropを実行する必要があるので、重複するオブジェクトを追加するだけでなく、削除することでデータの使用を中断します。 – k00k

答えて

1

mongoimport --upsertはコレクションに最適な方法ですか?それはちょっと遅いです。

これはうまくいくが、私の経験ではmongoimportは遅く扱いにくい。他にもいくつかの重大な制限があります。進捗を追跡する能力がなく、チェック/検証のための場所がなく、何をしているのかのログもありません。

私のコレクションのコピーを含む他の方法について考えるべきでしょうか?

代わりに、これを行うスクリプトを作成する方法があります。ほとんどの言語でこれはかなり簡単です。

これにより、進行状況を追跡して不良データを処理することができます。インポートが特に遅い場合は、プロセスをフォークして作業を分割することもできます。スピード

について

あなたが625kのオブジェクトを更新していることを覚えています。毎秒1k更新を得ることができれば、まだ更新するのに10分です。 mongostatを実行したり、インポートプロセス中に監視を確認したりすると、どれだけの作業が完了しているかがわかるはずです。

関連する問題