Search code examples
mongodbscalabilitydistributedeventual-consistencydatabase

Looking for distributed/scalable database solution where all nodes are read/write? Not MongoDB?


I'm looking to implement a database that can be widely distributed geographically and such that each node can be read/write with eventual consistency to all other nodes. Where should I be looking?

I thought that MongoDB seemed like a nice option for other reasons until I came to this concern. Apparently all MongoDB nodes are readable, but only a master is writable? Is there anyway to get around this? I can't allow a single point failure for writing to the database.


Solution

  • I just finished my review of several similar databases. I ended up with Mongo for different reasons. Riak and Cassandra are both implementations of Amazon's Dynamo, which could each do a good job of that. At the Riak site, they have good comparisons of Riak and a few other databases. For your specific question, I think both Riak and Cassandra handle writes on any node with a vector clock for Riak's commits, and a timestamp for Cassandra's to handle conflicts.

    Other than that, you have a few other choices that may make sense:

    • HBase can do very big, can do concurrent writes on various nodes. It's design is good for many attributes on each document/record.
    • CouchDB has good multiple-write conflict support but with a simpler document space.
    • I read a good argument for schema-less MySQL here, with a nod to the still-green Drizzle

    I'm not sure that's a complete answer. My search took several weeks and about 50 pages of notes, but if large, distributed, and safe writes are the big criteria, that should move you along.