# アンチエントロピー
## 定義
アンチエントロピー(anti-entropy)とは、レプリケートされたシステムにおいてレプリカ間の状態の齟齬(エントロピー)を検出・調停し、ノードを同期された状態に戻す仕組みである。結果整合性システムにおいて、収束にかかる時間の上限を短くするために使われる。初期の書き込み配信で障害が発生しても、他のノードが情報を拡散し続けることでシステムが正常に機能し続けられるようにする役割を持ち、欠落または競合しているレコードを比較・調停するバックグラウンドプロセスまたはフォアグラウンドプロセスとして実装される。フォアグラウンド(対話型)のアプローチには読み取り修復・ダイジェスト読み取り・ヒンテッドハンドオフが、バックグラウンド型のアプローチにはMerkleツリー・ビットマップバージョンベクトルが分類される(Source: [[@2021__OReillyJapan__詳説 データベース - Chapter 12 アンチエントロピーと情報散布]] p.251)。
## 横断的知見
- **DDIAはアンチエントロピーを3つの復旧機構の1つとして一文で済ませるが、Database Internalsは章全体でその内部機構を分解する**: [[@2026__OReilly__Designing Data-Intensive Applications 2E - Chapter 6 Replication]]は、リーダーレスレプリケーションにおける復旧手段を read repair・hinted handoff・anti-entropy の3種として並列に紹介し、anti-entropyについては「バックグラウンドでレプリカ間差分を検出しコピーする処理。順序を保証せず遅延が生じうる」という定義に留める([[リーダーレスレプリケーション]]参照)。一方 [[@2021__OReillyJapan__詳説 データベース - Chapter 12 アンチエントロピーと情報散布]]は同じ3機構(および派生のダイジェスト読み取り・スロッピークォラム)を、実装アルゴリズムのレベル(Merkleツリーのハッシュ階層構造、ビットマップバージョンベクトルのdot表現、ブロッキング読み取り修復が保証する読み取り単調性)まで踏み込んで説明する。両者を突き合わせると、DDIAはアンチエントロピーを「リーダーレスレプリケーションが持つ復旧手段の1つ」という応用レベルの分類として扱うのに対し、Database Internalsはこれを「対話型・バックグラウンド型・ゴシップ型」という独立した設計軸として抽象化しており、抽象度の違いが明確になる(Source: [[@2021__OReillyJapan__詳説 データベース - Chapter 12 アンチエントロピーと情報散布]], [[@2026__OReilly__Designing Data-Intensive Applications 2E - Chapter 6 Replication]] "Catching up on missed writes")。
- **結果整合性は収束の「約束」にすぎず、収束を実際に駆動する機構がアンチエントロピーである**: [[結果整合性]]はレプリカが最終的に同一状態へ収束することを定義上の性質として述べるが、それ自体は収束のタイミングやメカニズムを規定しない。Database Internals 12章は「アンチエントロピーは、結果整合性システムにおいて、収束にかかる時間の制限を短くするために使用される」と明言しており、結果整合性という整合性モデルの宣言と、それを実際に成立させるアンチエントロピーという運用機構は別レイヤーの概念であることが分かる(Source: [[@2021__OReillyJapan__詳説 データベース - Chapter 12 アンチエントロピーと情報散布]] p.251)。
## 未解決の問い
- ブロッキング読み取り修復・ダイジェスト読み取り・ヒンテッドハンドオフ・Merkleツリー・ビットマップバージョンベクトルの各アンチエントロピー機構は、実運用でどの程度の割合で修復を担うかの定量データはDatabase Internals本文にはない。[[リーダーレスレプリケーション]]concept が抱える同種の問い(Dynamo本番実績データとの突き合わせ)と合わせて検証が必要。
- ビットマップバージョンベクトルはDCC(Dotted Causal Container)で dot が参照するデータレコードを再構築するとされるが、この再構築コストはMerkleツリーの差分検出コストと比べてどちらが実用上安いか、定量比較した文献はあるか。
- スロッピークォラムとヒンテッドハンドオフを併用する設計(Riak等)は、通常のクォーラム条件 w + r > n との整合性をどのように運用上扱っているか。[[リーダーレスレプリケーション]]concept の既存の問いと重複するため、共通の答えを探る価値がある。
## 関連
- ソース: [[@2021__OReillyJapan__詳説 データベース - Chapter 12 アンチエントロピーと情報散布]](対話型・バックグラウンド型アンチエントロピーの詳細) / [[@2026__OReilly__Designing Data-Intensive Applications 2E - Chapter 6 Replication]](リーダーレスレプリケーションの復旧手段としての位置づけ)
- 概念: [[ゴシッププロトコル]](情報散布によるアンチエントロピーの一形態) / [[結果整合性]](アンチエントロピーが収束させる整合性モデル) / [[リーダーレスレプリケーション]](アンチエントロピー機構が使われる文脈) / [[クォーラムベースレプリケーション]](読み取り修復と相互作用するクォーラム設計) / [[レプリケーションラグと読み取り整合性]](単一リーダー方式における類似の読み取り保証の問題)
- エンティティ: [[Apache Cassandra]](読み取り修復のマージリスナー実装例)
## 出典
- Alex Petrov, *詳説 データベース*, オライリー・ジャパン, 2021, 12 章.
- [[@2026__OReilly__Designing Data-Intensive Applications 2E - Chapter 6 Replication]]("Catching up on missed writes")