I'm looking for a database that achieves the following:

  1. fully ACID.
  2. relational with joins.
  3. has transactions.
  4. allows the administrator to specify sharding rules (for example: users from Europe should be located in the european data center).
  5. the toughest requirement: upon network partition, like two datacenters disconnected from each other, each datacenter should be able to read and write to the nodes in it. Basically, I'm willing to sacrifice partial availability to partition tolerance. Sadly, most solutions will stall all reads and writes in case of a split-brain. (thus, preferring availability over partition tolerance)

I prefer an open source solution but willing to consider proprietary solutions as well.

  • Also the location specific connecting can be an infrastructure design that can be handled by more than just the database. You could have connection gateways that only connect to local servers. So while your sharding example is good, try to think of that one from an infrastructure whole. More than one way to do things. – Chris Aldrich Jan 29 '13 at 17:05

I suggest you take a very close look at this :


It explains fairly well why "stall all reads and writes" is nothing more than an inevitable logical consequence if you want partitions and the data they contain to be consistent.

| improve this answer | |

Not the answer you're looking for? Browse other questions tagged or ask your own question.