On Mar 8, 2009, at 9:39 AM, Chris Anderson wrote:
The second is that you have to think this way if you'll be dealing with replicated data. If you have edits on dbB and you replicate them to dbA, dbA only see the edits that dbB would still contain if it were replicated.
It is possible to preserve version history in a distributed system, though. Git, Mercurial, Bazaar etc. all do it. I imagine the same techniques they use could be implemented at the application level in CouchDB, although it seems a bit inelegant to then have two different notions of versioning on top of each other.
The "Revlog" structure used by Mercurial for this is quite elegant (it seems to have a lot in common with CouchDB's implementation!) and is nicely explained in this paper [PDF].
—Jens
