因果整合性
システムは、通信可能なプロセスの集合として抽象化されている。あるプロセスが共有メモリに書き込むと、実装はこのイベントを他のプロセスに(共有メモリ経由またはメッセージとして)送信する。並行処理や障害のため、プロセスは任意の順序でイベントを受け取る可能性がある。実装は、イベントに因果的に先行するすべてのイベントが配信された場合にのみ、イベントを配信する、つまりプロセスに見えるようにする。このためには、メモリアクセス間の因果関係を表すメタデータを維持する必要がある。
簡単に言うと、この実装には以下のステップが含まれている。(1) 現在の状態に因果的に先行する更新内容を要約するために、すべてのプロセスで因果関係のメタデータを維持する。(2) プロセスがメモリを更新する際、更新イベントにそのプロセスの因果関係をタグ付けし、この更新に因果的に先行する更新を要約する。(3) ある更新イベントを受け取ったプロセスは、そのイベントのタグが受け取ったプロセスの因果関係に因んで先行している場合に限り、そのイベントを配信することができる。(配信の副作用として、新しいイベントを受信プロセスの因果関係に追加する)。そうでなければ、更新の受信が早すぎて、イベントがコンテキストにマッチするまでバッファリングされたままでなければならない。その間、実装は欠落したイベントを受け取るのを受動的に待つか、ソースから積極的にフェッチする。