読み取りリペア:読み取りパス中のリペア

読み取りリペア、読み取りパス中のリペアの説明。

読み取りリペアは、読み取り要求が発生するたびに整合性を改善する機会が得られるため、Cassandraクラスターのデータの整合性を確保するうえで重要な要素です。バックグラウンドでは一般的に、読み取りリペアによってクラスターへの負担が減ります。

データが読み取られ、クエリ条件を満たし、結果が返されると、すべてのレプリカが必要なデータに対してクエリーされます。最初のレプリカ・ノードが直接読み取り要求を受け取って、完全なデータを提供します。接続された他のノードは、ダイジェスト要求を受け取って、ダイジェストまたはデータのハッシュを返します。一般的に、ハッシュがデータ自体より小さいため、ダイジェストが要求されます。ダイジェストの比較によって、コーディネーターは最も新しいデータをクエリに返すことができます。ダイジェストが整合性レベルを満たすのに十分なレプリカと同じである場合、データは返されます。読み取りクエリの整合性レベルがALLである場合、結果が返される前に比較が完了する必要があります。そうしないと、整合性レベルの低いすべてのクエリはバックグラウンドで実行されます。

コーディネーターは、ダイジェストを比較し、不整合が見つかった場合は、完全なデータの要求が不整合ノードに送信されます。完全なデータの比較で見つかった最新のデータを使用して他のレプリカの不整合データを解消することができます。

読み取りリペアは、非QUORUM整合性レベルについて、テーブルごとに構成することができ(read_repair_chanceを使用)、デフォルトで有効になっています。

比較ストラテジ、DateTieredCompactionStrategyでは、DTCSコンパクションについてタイムスタンプをチェックするため、読み取りリペアを使用する必要がありません。この場合、read_repair_chanceをゼロに設定する必要があります。他の比較ストラテジの場合、読み取りリペアは通常のread_repair_chance値(0.2)を使用して有効にしてください。