* master-slave
* a tree
* a ring
* a ring with overlaps
* completely connected graph
Well basically any graph topology you like. Replications can be pull or push. The downside is you are in charge of handling and setting up proxies and deciding how memebership is handled. Whether you have a proxy or not and if so how do client pick were to write etc.
Also CouchDB only offers atomic document transaction. If you need atomic multi-document transactions you have to use a transaction log based on single docs.
But you get continuous replication, a nice browser GUI that helps you debug as you develop, and most of all, a well defined conflict model when there are conflicts in your database.
It would seem to be Jepsen like test doesn't make sense for CDB as it doesn't ship with a default single cluster setup.
1. Code to provision a five cluster database (using Aphyr's Salticid deployment system)
2. Code to do some reads and writes to the database (this is run by Jepsen)
It might be helpful to look through the pull request I submitted to Aphyr for FoundationDB's test, so you can see the pieces: https://github.com/aphyr/jepsen/pull/10
The clustering layer is getting merged into CouchDB and will provide semantics closer to other Dynamo-style systems (e.g. Cassandra, Riak).