ACIDとBASEは層をなす

ACIDという整合性をもたせた同期的なトランザクションと、BASEというメッセージングを使った非同期なトランザクションは、層をなすのではないかと思います。
koichkさんから、「リソースレベルのトランザクションが ACID で,アプリケーションレベルのトランザクションが BASE になってる」という指摘をうけました。
そして、ではそのリソースレベルのトランザクションでのACIDがどのように実装されるかというと、たとえばデータの変更を一旦ログに書き込んでコミットされたものだけをデータベースに反映するというやりかたが行われます。WAL(Write Ahead Log)というやりかたですが、そのトランザクションログをメッセージキューと考えると、やはりBASEのような形になっているといえなくもありません。さらにその下のファイルシステムも、ファイルの書き込みは同期的で整合性がありますが、ファイルシステムではジャーナルというメッセージキューを使ってACIDを実現していたりします。


このように、ACIDの下にはBASEが、BASEの下にはACIDがという形がいろいろな層に見ることができます。
そう考えると、こんどはメッセージサーバーでのメッセージキューをトランザクションログとみなしてアプリケーションを作成し、全体としてのACIDを実現するというWALのような考え方が使えるのかもしれません。
WALでのトランザクションログが2重化されるようにメッセージングサーバーも2重化されたり、データベースでのトランザクションを実装するときのノウハウが、アプリケーションレベルでも必要になる時期が来るのではないかと思ってみました。