CouchDB

http://www.couchdbwiki.com/index.php?title=Technical_Overview

分散DBって書き込みの分散はどうするんだろうと思ったら、

Conflicts
Conflict detection and management are key issues for any distributed edit system. The CouchDB storage system treats edit conflicts as a common state, not an exceptional one. The conflict handling model is simple and "non-destructive" while preserving single document semantics and allowing for decentralized conflict resolution.
CouchDB allows for any number of conflicting documents to exist simultaneously in the database, with each database instance deterministically deciding which document is the "winner" and which are conflicts. Only the winning document can appear in views, while "losing" conflicts are still accessible and remain in the database until deleted or purged during database compaction. Because conflict documents are still regular documents, they replicate just like regular documents and are subject to the same security and validation rules.
When distributed edit conflicts occur, every database replica sees the same winning revision and each has the opportunity to resolve the conflict. Resolving conflicts can be done manually or, depending on the nature of the data and the conflict, by automated agents. The system makes decentralized conflict resolution possible while maintaining single document database semantics.
Conflict management continues to work even if multiple disconnected users or agents attempt to resolve the same conflicts. If resolved conflicts result in more conflicts, the system accommodates them in the same manner, determining the same winner on each machine and maintaining single document semantics.

だそうで、そんなんありか?
conflictしないように書くのはプログラマの責任ということなのかな。

      • -

そういえば、分散ってところを除いたら、これと非常によく似たものをRDBMS上に作ったことは何度かあるな。
トランザクションがないところとか、データを上書きや削除しないところなんか、Clean Wikiの裏側も似たような感じだし。