5

複数のデータフィードからの更新を処理する製品を計画しています。入力データは、100バイトサイズのメッセージを含む合計100Mbpsのストリームであると推測されます。これらのメッセージには、アプリケーション内の既存のデータセットとの相関関係を確認する必要があるいくつかのデータフィールドが含まれています。input-messageが既存のデータレコードと相関している場合、input-messageは既存のデータレコードを更新します。そうでない場合は、新しいレコードを作成します。データは平均3秒ごとに更新されると想定されています。

相関プロセスはボトルネックであると想定されているため、必要に応じて(ほとんどの場合、別のハードウェアまたはVMで)複数のプロセスで製品をバランスよく実行できるようにする予定です。やや宇宙ベースの建築の近く。次に、既存のすべてのデータレコードが実行中のすべてのプロセスに表示されるように、プロセス間で共有ストレージが必要です。共有ストレージは、いくつかの属性(標高など)に基づいたクエリ/検索を通じて、相関の可能性のある候補をフェッチする必要があります。ウォーム冗長性の構成と、ロギングのために5分ごとにスナップショットを保存する可能性を提供する必要があります。

すべてがMongoDBを指しているようですが、MongoDBが私のニーズを満たすことを確認してください。それで、あなたはそれが成功だと思いますか?-ありがとうございました

注意:システムのパフォーマンスを最適化するために別の環境で「ストアドプロシージャ」/「関数」を作成するのではなく、アプリケーションにすべてのコーディングを集中させたいので、リレーショナルデータベースを検討していません。さらに、データは多様であり、スキーマに正規化してみたくありません。

4

1 に答える 1

3

はい、MongoDBはあなたのニーズを満たします。あなたの説明の次の側面は、DB選択の決定に特に関連していると思います。

1.3秒ごとに更新が行われます

MongoDBには、読み取り操作をブロックするデータベースレベルの書き込みロック通常は短命)があります。これは、ワーキングセットに適合するのに十分なメモリがあることを確認する必要があることを意味し、通常、書き込みロックの問題が発生することはありません。バルクインサートは書き込みロックをより長く保持することに注意してください。

シャーディングを行う場合は、書き込みスケーリングを可能にするシャードキーを検討する必要があります。つまり、異なるシャードに書き込みを分散します。

2.複数のプロセス用の共有ストレージ

これはかなり一般的なシナリオです。実際、多くのMongoDBデプロイメントは、複数のプロセスから同時にアクセスされることが期待されています。書き込みロックとは異なり、読み取りロックは他の読み取りをブロックしません。

3.ウォーム冗長性

MongoDBレプリケーションを介してサポートされます。セカンダリサーバーから読み取りを行う場合は、ドライバーで[読み取り設定]をに設定する必要があります。secondaryPreferred

于 2013-02-27T21:54:49.310 に答える