以下に示すように、理論上の限界がありますが、下限でさえかなり 高い。制限を正しく計算するのは簡単ではありませんが、桁違いに十分なはずです。
mmapv1
実際の制限は、シャード名の長さなどによって異なります(数十万の名前がある場合は合計されます)が、実際のデータを使用した大まかな計算です。
各シャードには、構成データベースにいくらかのスペースが必要です。これは、他のデータベースと同様に、単一のマシンまたはレプリカセットで32TBに制限されています。私が管理しているサーバーでは、 config.shards
のエントリの平均サイズ 112バイトです。さらに、各チャンクには約250バイトのメタデータ情報が必要です。 64MBに近い最適なチャンクサイズを想定しましょう。
サーバーごとに最大500,000のチャンクを持つことができます。 500,000 * 250byteは、シャードあたりのチャンク情報の125MBに相当します。したがって、シャードごとに、すべてを最大にすると、シャードごとに125.000112MBになります。 32TBをその値で割ると、クラスター内に最大で256,000をわずかに下回るシャードを含めることができることがわかります。
各シャードは、32TB相当のデータを保持できます。 256,000*32TBは8.19200エクサバイトまたは8,192,000テラバイトです。それが私たちの例の限界です。
その8エクサバイトとしましょう。今のところ、これは「すべての実用的な目的に十分」に簡単に翻訳できます。印象を与えるために:米国議会図書館(おそらくコレクションサイズの点で世界最大の図書館の1つ)が保持するすべてのデータは、オーディオ、ビデオ、およびデジタル資料を含めて、サイズが約20TBのデータの推定サイズを保持します。これを理論上のMongoDBクラスターに約40万回適合させることができます。これは、控えめな値を使用した最大サイズの下限であることに注意してください。
WiredTiger
ここで良い部分は次のとおりです。WiredTigerストレージエンジンにはこの制限がありません。データベースのサイズに制限がないため(使用できるデータファイルの数に制限がないため)、シャードの数に制限はありません。これらのシャードをmmapv1で実行し、構成サーバーのみをWTで実行している場合でも、aのサイズはほぼ無制限になります。64ビットシステムでのRAMの16.8M TBの制限により、どこかで問題が発生し、<コードのインデックスが発生する可能性があります。> config.shard コレクションをディスクにスワップし、システムをストールさせます。私の計算機はその領域の数値を処理することを拒否しているので(そして私は手でそれを行うのが面倒なので)推測することしかできませんが、ここでは2桁のヨタバイト領域(およびそれをどこかでホストするために必要なスペース)の制限を見積もりますテキサスのサイズで)。
結論
シャード環境での最大データサイズについて心配する必要はありません。何があっても、最も保守的なアプローチでも、それで十分です。シャーディングを使用すれば完了です。ところで:32TBでさえ、非常に多くのデータです。IOPSとRAMの使用率が単一ノードの容量を超えたため、私が知っているほとんどのクラスターは、保持するデータとシャードが少なくなっています。