2

レプリカセット構成で本番環境にmongo(バージョン2)があります(次のステップはシャーディングを追加することです)。

以下を実装する必要があります。

  • 1 日に 1 回、数百万行のファイルを受け取り、それを mongo にロードします。
  • このコレクションから常に読み取るランタイム アプリケーションがあります。非常に大量の読み取りがあり、そのパフォーマンスは非常に重要です。コレクションにはインデックスが付けられ、すべての読み取りで readByIndex 操作が実行されます。

現在のロードの実装は次のとおりです。

  1. コレクションをドロップ
  2. コレクションを作成
  3. コレクションの新しいドキュメントに挿入

私が目にすることの 1 つは、mongoDB ロックが原因で、読み込み中に全体的なパフォーマンスが低下することです。コレクションをチェックしたところ、最大 1000 万件のエントリがありました。そのサイズ以上については、シャーディングの使用を開始する必要があると思います

そのような問題を愛するための最良の方法は何ですか? それとも、別のソリューション戦略を使用する必要がありますか?

4

1 に答える 1

1

2 つのコレクションを使用できます :)

  • collectionA にはこの日のデータが含まれています
  • 新しいデータが到着
  • 新しいコレクション (collectionB) を作成し、データを挿入します
  • collectionB をデータとして使用します

次に、翌日、AとBを交換するだけで上記を繰り返します:)

これにより、collectionB が更新されている間、collectionA はまだサービス リクエストを処理できます。

PSこの質問への回答が約1年遅れていることに気付きました:)

于 2013-04-03T11:58:50.100 に答える