English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
シャーディングは、複数のマシンにわたってデータレコードを格納するプロセスです。これは、MongoDBがデータ成長のニーズを満たす方法です。データの大きさが増えると、単一のマシンはデータを格納するのに十分ではなく、受け入れ可能な読み書きスループットを提供することもできません。シャーディングは水平スケーリングの問題を解決します。シャーディングを通じて、データ成長と読み書き操作のニーズをサポートするために、より多くのコンピュータを追加することができます。
複製では、すべての書き込みがメインノードに転送されます
遅延に敏感なクエリはまだメインノードに転送されます
単一のレプリカセットの制限は12ノード
アクティビティデータセットが大きい場合、メモリが十分に大きくならないことがあります
ローカルディスクは十分に大きくありません
垂直エクスパンションは高価です
以下の図は、シャードクラスターを使用するMongoDBのシャードを示しています。
以下の図には、3つの主要コンポーネントがあります-
シャード
−シャードはデータのストレージに使用されます。それらは高可用性とデータの一致性を提供します。プロダクション環境では、各シャードは独立したコレクションセットです。
設定サーバー
−設定サーバーはクラスターのメタデータを保存します。このデータには、クラスターデータセットとシャードのマッピングが含まれています。クエリルータはこのメタデータを使用して操作を特定のシャードにリダイレクトします。プロダクション環境では、シャードクラスターには正確に3個の設定サーバー。
クエリルータ
−クエリルータは基本的にmongoインスタンスであり、クライアントアプリケーションインターフェースと操作を直接適切なシャードに誘導できます。クエリルータは操作を処理し、それをシャードに定位し、結果をクライアントに返します。シャードクラスターには複数のクエリルータが含まれており、クライアントのリクエスト負荷を分割できます。クライアントはリクエストを1つのクエリルータに送信します。通常、シャードクラスターには多くのクエリルータがあります。