2

1つのサーバーで書き込みと読み取りを行うよりも、書き込みと読み取りを個別に行う方が優れている理由がわかりません。

たとえば、node1、node2、node3 の 3 つのマシンを含む mysql クラスターがあるとします。

1 つの可能なアーキテクチャは次のとおりです。

  • すべての書き込み要求はノード 1 に送信されますが、すべての読み取り要求はノード 2 とノード 3 に送信されます。

2 番目に考えられるアーキテクチャは次のとおりです。

  • これら 3 つのノードはすべて、書き込みと読み取りの両方を処理します。

アーキテクチャ 1 では、ノード 1 への書き込みが非常に大きな負担になることがわかります。そのため、アーキテクチャ 2 を好みます。

また、mongodb がプライマリ ノードへの書き込みとセカンダリ ノードへの読み取りを分離するのはなぜですか。

4

2 に答える 2

2

これは、MySQL と MongoDB の両方のスケールの問題です。データセットが小さく、トラフィック量が少ない最も単純なアプリケーションでは、すべての書き込みと読み取りを 1 つのサーバーに送信すると、アーキテクチャが単純になります。少量の書き込みを伴う非常に大量の読み取りアプリケーションでは、単一の書き込みノードが複数の読み取りノードにレプリケートされるため、別のノードを追加するだけで読み取りをスケーリングできます。読み取りと書き込みの量が多いアプリケーションでは、シャーディングを検討する場合があります (MySQL では、自分で行うか、役立つツールを見つけます)。mongodb では、シャーディングを処理する mongos を実行します。シャーディングは、定義したキーに基づいて特定のインスタンスにレコードを配置します。キーは、各レコードを保存する必要があるインスタンスを決定します。シャーディングは、読み取り/書き込みアクセス用の単一サーバーよりも管理が複雑になることが想像できます。

于 2012-09-05T03:27:50.133 に答える
1

MySQL Cluster は自動シャーディングもサポートしています。デフォルトでは主キーをハッシュしますが、ユーザーは独自のキーをフィードして、より多くのディストリビューションを認識できるようにすることができます。クラスター内の各ノードはマスターであり、内部負荷分散によりノード間で負荷が分散されます

非常に高レベルですが、ここに投稿された短いデモでは、MySQL Cluster でのシャーディングの概念を紹介しています: http://www.oracle.com/pls/ebn/swf_viewer.load?p_shows_id=11464419

于 2012-09-05T19:41:31.973 に答える