書き込み要求はどのように実行されるか

書き込み要求の仕組み。

コーディネーターは、書き込まれる行を所有するすべてのレプリカに書き込み要求を送信します。すべてのレプリカ・ノードは、稼働していて使用可能であれば、クライアントによって指定された整合性レベルに関係なく、書き込み要求を受け取ります。書き込み整合性レベルは、書き込みが成功したと見なされるために、成功確認を応答する必要があるレプリカ・ノードの数を定めます。成功とは、「データはどのように書き込まれるか」の記載にあるように、データがコミット・ログとmemtableに書き込まれたことを意味します。

たとえば、1つのデータ・センターに10ノードのクラスターがあり、レプリケーション係数が3であった場合、受信した書き込み要求は、要求された行を所有する3つのノードすべてに送信されます。クライアントによって指定された書き込み整合性レベルがONEである場合、書き込みを完了した最初のノードがコーディネーターに応答を返すと、コーディネーターが代理で成功メッセージをクライアントに返します。整合性レベルがONEであるということは、3つのレプリカのうちの2つが、要求が行われたときにダウンしていたら、この書き込みを取りこぼす可能性があるということです。レプリカが書き込みを取りこぼした場合、Cassandraは組み込みリペア機能、つまりヒンテッド・ハンドオフ、読み取りリペア、アンチエントロピー・ノード・リペアのいずれかを使用して、後でこの行の整合性を確保します。

コーディネーター・ノードはその行のすべてのレプリカに書き込みを転送します。そして整合性レベルによって指定された数のノードから書き込み確認応答を受け取ると、クライアントに応答します。

図: 3つのレプリカ・ノードを持つ1つのデータ・センターのクラスターとONEに設定された整合性