-1

JMSサーバーを使用してロギングメッセージを送信するロギングシステムがあります。メッセージがキューに到達すると、キューレシーバーはメッセージを解析してOracle DBに挿入します。クライアントプロセスによって生成されるメッセージは膨大で何度も、DBのクエリに時間がかかります。Root原因は、DBの挿入がメッセージの生成に比べて非常に遅いことです(メッセージの生成は膨大です-平均して1日あたり130万メッセージ)。MongoDBがOracleではなくこのシステムに適合するかどうかを確認したかったのです。ロギング/例外スキーマは非常に単純で、それぞれ10/15列です。ロギングメッセージごとに、トランザクションデータ(平均サイズ-50〜100KB)を添付します。保存と検索(および後でパージ)がロギングに関連する3つのアクティビティのみである場合、例外として、MongoDBはより良いオプションですか?(ロギングにJMSを使用することは適切な設計ではないこともここで読みました。

4

1 に答える 1

0

データが日ごとに大きくなる場合は、もちろん、MongoDB を検討できます。

その主な理由は 2 つあります。

データは単なるログ メッセージであり、いくつかのメッセージが失われたとしてもそれほど重要ではない可能性があるため、要件に基づいてデータについてあまり心配する必要はありません。ポイントは、MongoDB ではデフォルトで発生しないドキュメント間のトランザクションを試みている場合です。そのようなトランザクションがない場合は、MongoDB を使用しても問題なく、メッセージを失うことはありません。ただし、MongoDB の操作はドキュメント内で本質的にアトミックであることを忘れないでください。

これはロギングであるため、MongoDB に非常に適したいくつかの列を追加することをお勧めします。これらは完全にスキーマレスであり、必要に応じて古いデータにパッチを適用せずに新しい要素を追加できるはずです (必ずしもそうとは限りません)。

データの増加に合わせて Shard サーバーをいくつでも追加でき、ノード間で (水平方向に) スケーリングできるはずです。

幸運を!

于 2012-12-26T16:48:45.507 に答える