Mongodb-sharding

提供:Dev Guides
移動先:案内検索

MongoDB-シャーディング

シャーディングは、複数のマシンにデータレコードを保存するプロセスであり、データ増加の要求を満たすためのMongoDBのアプローチです。 データのサイズが大きくなると、1台のマシンではデータを保存したり、読み取りおよび書き込みのスループットを許容したりするのに十分ではなくなる場合があります。 シャーディングは、水平スケーリングで問題を解決します。 シャーディングでは、データの増加と読み取りおよび書き込み操作の要求をサポートするマシンを追加します。

なぜシャーディングなのか?

  • レプリケーションでは、すべての書き込みはマスターノードに送信されます
  • 遅延に敏感なクエリはまだマスターになります
  • 単一のレプリカセットには12ノードの制限があります
  • アクティブなデータセットが大きい場合、メモリを十分に大きくすることはできません
  • ローカルディスクが十分に大きくありません
  • 垂直スケーリングは高すぎる

MongoDBのシャーディング

次の図は、分割クラスターを使用したMongoDBの分割を示しています。

MongoDBシャーディング

次の図では、3つの主要なコンポーネントがあります-

  • シャード-シャードはデータの保存に使用されます。 高可用性とデータの一貫性を提供します。 実稼働環境では、各シャードは個別のレプリカセットです。
  • 構成サーバー-構成サーバーはクラスターのメタデータを保存します。 このデータには、クラスターのデータセットとシャードのマッピングが含まれています。 クエリルーターは、このメタデータを使用して、操作のターゲットを特定のシャードにします。 実稼働環境では、シャードクラスターには正確に3つの構成サーバーがあります。
  • クエリルーター-クエリルーターは、基本的にmongoインスタンスであり、クライアントアプリケーションとのインターフェイスであり、適切なシャードへの直接操作です。 クエリルーターは、操作を処理してシャードを対象とし、結果をクライアントに返します。 シャードクラスターには、クライアント要求の負荷を分割するために複数のクエリルーターを含めることができます。 クライアントは、1つのクエリルーターに要求を送信します。 一般に、シャードクラスターには多くのクエリルーターがあります。