DS201: Foundations of Apache Cassandra™ and DataStax Enterprise の学習記録です。
Read Repair (リードリペア)
Cassandraでは、データのレプリカ(複製)が複数のノードに分散して存在するため、それらのレプリカ間でデータの一貫性を維持することが重要です。**Read Repair(リードリペア)**は、読み取り操作が行われる際に自動的に実行され、レプリカ間のデータ不整合を修復する仕組みです。
仕組み
クライアントがデータを読み取る際、Cassandraは、そのデータのレプリカを保持する複数のノード(レプリカセット)からデータを収集します。各レプリカは、そのデータが最後に更新された時刻を示すタイムスタンプを持っています。
Cassandraは、収集したレプリカの中から最新のタイムスタンプを持つデータをクライアントに返します。同時に、収集したレプリカ間でデータのタイムスタンプや内容が異なる場合、CassandraはRead Repairを実行します。これは、古いデータを持つレプリカに対して、最新のデータで更新を行うことで、データの一貫性を回復させるプロセスです。
read_repair_chance
read_repair_chance
は、読み取り操作時にRead Repairを自動的に実行する確率を指定する設定値です。この値は0から1の範囲で設定され、以下の意味を持ちます。
0
: Read Repairは実行されません。1
: 読み取り操作のたびに必ずRead Repairが実行されます。0
と1
の間の値: 指定された確率でRead Repairが実行されます。
read_repair_chance
の値を高く設定すると、データの一貫性がより頻繁にチェックされ、不整合が早期に解消されますが、読み取り操作のレイテンシが増加する可能性があります。逆に、値を低く設定すると、読み取りパフォーマンスは向上しますが、不整合が解消されるまでに時間がかかる可能性があります。
Read Repairは、Cassandraの「結果整合性(Eventual Consistency)」モデルを補完し、データの一貫性を高めるための重要な機能の一つです。