Mongodb-sharding
提供:Dev Guides
MongoDB-シャーディング
シャーディングは、複数のマシンにデータレコードを保存するプロセスであり、データ増加の要求を満たすためのMongoDBのアプローチです。 データのサイズが大きくなると、1台のマシンではデータを保存したり、読み取りおよび書き込みのスループットを許容したりするのに十分ではなくなる場合があります。 シャーディングは、水平スケーリングで問題を解決します。 シャーディングでは、データの増加と読み取りおよび書き込み操作の要求をサポートするマシンを追加します。
なぜシャーディングなのか?
- レプリケーションでは、すべての書き込みはマスターノードに送信されます
- 遅延に敏感なクエリはまだマスターになります
- 単一のレプリカセットには12ノードの制限があります
- アクティブなデータセットが大きい場合、メモリを十分に大きくすることはできません
- ローカルディスクが十分に大きくありません
- 垂直スケーリングは高すぎる
MongoDBのシャーディング
次の図は、分割クラスターを使用したMongoDBの分割を示しています。
次の図では、3つの主要なコンポーネントがあります-
- シャード-シャードはデータの保存に使用されます。 高可用性とデータの一貫性を提供します。 実稼働環境では、各シャードは個別のレプリカセットです。
- 構成サーバー-構成サーバーはクラスターのメタデータを保存します。 このデータには、クラスターのデータセットとシャードのマッピングが含まれています。 クエリルーターは、このメタデータを使用して、操作のターゲットを特定のシャードにします。 実稼働環境では、シャードクラスターには正確に3つの構成サーバーがあります。
- クエリルーター-クエリルーターは、基本的にmongoインスタンスであり、クライアントアプリケーションとのインターフェイスであり、適切なシャードへの直接操作です。 クエリルーターは、操作を処理してシャードを対象とし、結果をクライアントに返します。 シャードクラスターには、クライアント要求の負荷を分割するために複数のクエリルーターを含めることができます。 クライアントは、1つのクエリルーターに要求を送信します。 一般に、シャードクラスターには多くのクエリルーターがあります。