Cassandra では、1 つ以上のホストを定義してクラスターに接続します。そのため、そのうちの 1 つがダウンしたり、削除されたりした場合でも、変更を反映してコード/構成が更新される前に、クラスター全体に接続できます。私のホストの IP アドレスの。
RethinkDB では、クラスター内のノードに接続することでクラスターに接続します。そのノードは、クラスター内の他のすべてのノードとの通信を処理します。そのノードがクラスターから切断された場合、クラスターのシャーディングとレプリケーションによっては、書き込みまたは読み取りを実行できない場合があります。そのノードに障害が発生すると、何もできなくなります。その時点で、別のノードへの接続を試すことができます。
私が理解している限り、RethinkDB にはそのようなロジックはなく、自分で実装する必要があります。
はい、ノードに障害が発生した場合、RethinkDB はクラスター内の別のノードに自動的に再接続しません。そうは言っても、これは複数の接続を持ち、それらを切り替えるのと同じくらい簡単かもしれません (何かが欠けていない限り!)。
データベースを作成するとき、それはクラスター全体に対して作成される「一種の」ものであり、それを処理する正確なサーバーを指定する方法はなく、その必要もありません。
はい、データベースを作成すると、クラスター全体に対して作成されます。データベースは実際には特定のノードに「住んでいる」わけではありません。特定のノードに存在するのはテーブルのみです。
テーブルを作成し、プライマリ レプリカ タグを指定しない場合、どのサーバーがプライマリ レプリカになりますか?
RethinkDB は自動的にそれを処理します。以下に基づいて、プライマリ レプリカが存在するサーバーが選択されます。
- サーバー分散負荷 (どのサーバーがより多くのテーブルとデータを持っているか)。
- 特定のサーバーがすでにそのテーブルのプライマリ/セカンダリであったかどうか。
table_config
プライマリまたはセカンダリが終了するサーバーを手動で制御する場合は、データベース内のテーブルを介して手動で設定できrethinkdb
ます。(そのデータベースを見てみましょう。RethinkDB がどのように機能するかをよりよく理解できます!)
複数のサーバーに割り当てられているタグを指定すると、同じ質問が適用されます。
同上。
メイン レプリカとなる最終サーバーはどのように選択されますか?
同上。
ドキュメントに関しては、次のことをお勧めします。
シャーディングとレプリケーション: http://rethinkdb.com/docs/sharding-and-replication/ (あなたの質問は、おそらくすでにこれを読んでいることを示唆していますが:))