English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

MongoDB シャーディング

シャーディングは、複数のマシンにわたってデータレコードを格納するプロセスです。これは、MongoDBがデータ成長のニーズを満たす方法です。データの大きさが増えると、単一のマシンはデータを格納するのに十分ではなく、受け入れ可能な読み書きスループットを提供することもできません。シャーディングは水平スケーリングの問題を解決します。シャーディングを通じて、データ成長と読み書き操作のニーズをサポートするために、より多くのコンピュータを追加することができます。

なぜシャーディングが必要ですか?

  • 複製では、すべての書き込みがメインノードに転送されます

  • 遅延に敏感なクエリはまだメインノードに転送されます

  • 単一のレプリカセットの制限は12ノード

  • アクティビティデータセットが大きい場合、メモリが十分に大きくならないことがあります

  • ローカルディスクは十分に大きくありません

  • 垂直エクスパンションは高価です

MongoDBのシャード

以下の図は、シャードクラスターを使用するMongoDBのシャードを示しています。

以下の図には、3つの主要コンポーネントがあります-

  • シャード−シャードはデータのストレージに使用されます。それらは高可用性とデータの一致性を提供します。プロダクション環境では、各シャードは独立したコレクションセットです。

  • 設定サーバー−設定サーバーはクラスターのメタデータを保存します。このデータには、クラスターデータセットとシャードのマッピングが含まれています。クエリルータはこのメタデータを使用して操作を特定のシャードにリダイレクトします。プロダクション環境では、シャードクラスターには正確に3個の設定サーバー。

  • クエリルータ−クエリルータは基本的にmongoインスタンスであり、クライアントアプリケーションインターフェースと操作を直接適切なシャードに誘導できます。クエリルータは操作を処理し、それをシャードに定位し、結果をクライアントに返します。シャードクラスターには複数のクエリルータが含まれており、クライアントのリクエスト負荷を分割できます。クライアントはリクエストを1つのクエリルータに送信します。通常、シャードクラスターには多くのクエリルータがあります。