これはシステムに大きく依存しますが、任意の崖を越えてスケールし、実際のトラブルに陥る可能性はほぼ確実です。RAMとディスク領域の比率を適切にするには、どのような経験則が存在するのか興味があります。次のラウンドのシステムを計画しており、RAM、SSD、および各新規ノードの取得量に関していくつかの選択を行う必要があります。
しかし、今度はパフォーマンスの詳細について説明します!
単一のプロジェクト実行の通常のワークフロー中に、MongoDBは非常に高い割合の書き込み(70〜80%)でヒットします。処理パイプラインの2番目のステージがヒットすると、処理の前半で識別されたレコードを重複排除する必要があるため、読み取りが非常に高くなります。これは、「ワーキングセットをRAMに保持する」ためのワークフローであり、その前提に基づいて設計しています。
データセット全体は、エンドユーザーから派生したソースからのランダムクエリで継続的にヒットします。頻度は不規則ですが、サイズは通常かなり小さい(10個のドキュメントのグループ)。これはユーザー向けであるため、返信は「退屈」しきい値の3秒未満である必要があります。このアクセスパターンはキャッシュ内にある可能性がはるかに低いため、ディスクヒットが発生する可能性が非常に高くなります。
二次処理ワークフローは、数日、数週間、さらには数か月前に実行された前の処理実行の読み取り値が高く、実行頻度は低いですが、依然としてジッピーである必要があります。前の処理実行で最大100%のドキュメントにアクセスします。これを助けることができるキャッシュウォーミングの量はないと思います。
完成したドキュメントのサイズは大きく異なりますが、サイズの中央値は約8Kです。
通常のプロジェクト処理の読み取り率が高い部分は、読み取りトラフィックの分散に役立つレプリカの使用を強く示唆しています。私は別の場所で、1/10のRAM-GBからHD-GBが低速ディスクの経験則であることを読んだことがあります。高速ディスクの大まかな目安。
私は、キャッシュのすべてが実際に飛行しない方法でMongoを使用していることを知っています。そのため、このような使用に耐えられるシステムを設計する方法を検討しています。全体のデータセットは、おそらく半年以内TBの最も可能と成長を維持します。