私は最近 Web アプリを立ち上げましたが、まだあまり生産規模が拡大していませんが、近い将来にはそうなることを期待しています (願っています ;)。
現在の実稼働システムのスナップショットを開発環境にコピーする機能が非常に便利であることがわかりましたdb.copyDatabase()
。実稼働データベースが大きくなったり、負荷が高くなったりすると、どのような問題が発生する可能性があるのか疑問に思っています。
ドキュメントは、コマンドがブロックされていることを示しているようには見えません (具体的には、コマンドの実行中にいずれかのデータベースにデータが追加された場合、データセットが同期しなくなるという参照があります)。
データベースは開発(またはステージング)サーバーにコピーされているため、インデックスなどの再構築にかかる時間は(少なくともしばらくの間)大きな問題にはなりません。
この場合、ドキュメントはガイドラインに少し軽いので、次のアドバイスを得たいと思っています。
- 運用中のライブ データベースからコピーするために db.copyDatabase を実行することは適切ですか?
- ソース データベースにパフォーマンス ヒットはありますか?
- 実行可能でなくなるサイズに実際的な制限はありますか? (この質問 hereに基づいて、その制限は非常に大きいように見えます)
参考までに、アプリとデータベースは別々にホストされています ( heroku / mongolab )。db.dropDatabase()
コマンドの前にローカルで実行copyDatabase()
して、完全に新しいデータベースを取得しています。