9

スケーリング/フェイルオーバーのために、mongodb は、プライマリ サーバーと 1 つ以上のセカンダリ サーバーが存在する「レプリカ セット」を使用します。プライマリは書き込みに使用されます。セカンダリは読み取りに使用されます。これは、SQL プログラミングで使用されるほとんどのマスター スレーブ パターンです。プライマリがダウンすると、セカンダリのクラスタ内のセカンダリが代わりになります。したがって、水平方向のスケーリングとフェイルオーバーの問題は処理されます。ただし、これはシャーディングを可能にするソリューションではないようです。真のシャードはデータ全体の一部のみを保持するため、レプリカ セットのセカンダリがシャードである場合、リクエストを処理するために必要なすべてのデータを持っていない場合、どうすればプライマリとしての資格を得ることができるでしょうか?

シャードごとにレプリカを設定する必要はありませんか?

これは明らかに初心者の質問なので、これがどのように行われるかを視覚的またはその他の方法で示すリンクが役立ちます.

4

3 に答える 3

6

あなたの仮定は正しいです、各シャードは別々のレプリカセットを含んでいます。書き込み要求が着信すると、MongoSはシャードキーに基づいて適切なシャードを見つけ、データはそのシャードに含まれるレプリカセットのプライマリに書き込まれます。(適切に選択された)シャードキーはすべてのシャードに書き込みを分散する必要があるため、これにより書き込みスケーリングが発生します。

于 2013-02-06T21:57:39.423 に答える
1

シャードはプライマリとセカンダリ(レプリカセット)の合計であるため、はい、各シャードにレプリカセットを設定する必要があります。

データ全体の一部はプライマリに保持され、整合性を維持するためにセカンダリと共有されます。プライマリが消えると、セカンダリが新しいプライマリとして選出され、前のデータと同じデータがすぐに提供を開始します。これは、シャーディングされたデータがまだ存在し、失われていないことを意味します。

于 2013-02-06T21:59:09.207 に答える
0

You would typically map individual shards to separate replica sets. See http://docs.mongodb.org/manual/core/sharded-clusters/ for an overview of MongoDB sharding.

于 2013-02-06T21:50:51.157 に答える