MongoDB シャーディング クラスタの仕組み
MongoDBシャードクラスタは以下のように機能します。
- データ・シャーディング:MongoDBはまず格納するデータを複数のシャードに分割します。シャードはそれぞれデータを一部保持します。データ分割方法は、指定されたシャーディング戦略(範囲ベース、ハッシュベースなど)に基づいて行われます。
- ルーティングクエリ:シャードクラスターにクエリリクエストが届くと、まずmongosプロセスと呼ばれる特別なノードに届きます。mongosプロセスは、クエリを適切なシャードにルーティングして実行する役割を果たします。
- クエリ条件とデータの分割ルールに基づき、mongosプロセスから分割された個々のチャンクに対してクエリ要求のルーティングが行われます。配置情報はmongosプロセスが管理するメタデータコレクション(configデータベース)に格納されています。
- クエリエグゼキューション:各チャンクは独立した MongoDB インスタンスで、独自のストレージ容量を持ち、クエリ要求を独立して実行できます。mongos プロセスは、クエリ要求を対応するチャンクに送信し、その結果をマージしてクライアントに返します。
- データの増減に伴い、データの再シャードまたは再バランスが必要になる場合があります。MongoDBは、シャード間でデータを移行する自動データ移行機能を提供し、データの均等な分散を実現します。
- フォルトトレランス:MongoDBのシャード化クラスタには、高可用性とフォルトトレランスがあります。各シャードは、プライマリノードと複数のセカンダリノードを含むレプリカセットとして構成できます。プライマリノードに障害が発生した場合、セカンダリノードはその作業を引き継ぐことができ、システムの可用性を保証できます。
全体として、MongoDBのシャーディングクラスタは、データを複数のチャンクに分割し、mongosプロセスを使用してクエリーとデータの移行をルーティングすることで、データの分散ストレージとクエリーを実現します。このアーキテクチャは、高性能、高可用性、および拡張性の高いデータベースソリューションを提供できます。