決定論的データベース
同じトランザクション群を同じ順序で実行すれば、どのレプリカでもまったく同じ結果になることが保証されるデータベース。乱数や時刻に依存したずれがなく、結果を調整せずにレプリカの同期を保てる性質である。
考え方はこうだ。実行が完全に決定論的なら、すべてのレプリカが入力(トランザクション)の順序さえ合意すれば、結果は自動的にどこでも同一になる。これによりレプリケーションが劇的に単純になり(結果ではなくトランザクションの流れだけを送ればよい)、分散コミットの調整が不要になり、リカバリもストリームの再生で済む。条件は非決定性の排除で、NOW()、RANDOM()、順序の定まらない並行処理は、扱いを決めるか禁止するか決定論的にしなければならない。
代表例はCalvinで、同じ原理がイベントソーシング、ステートマシンレプリケーション(Raftは決定論的なログを適用する)、ブロックチェーンのコンセンサスを支えている。調整の手間を、あらかじめ決めた順序と引き換えにする強力な方法である。