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.

closed as not a real question by Gaius, RolandoMySQLDBA, dezso, Mark Storey-Smith, Leigh Riffel Jan 30 '13 at 15:20

It's difficult to tell what is being asked here. This question is ambiguous, vague, incomplete, overly broad, or rhetorical and cannot be reasonably answered in its current form. For help clarifying this question so that it can be reopened, visit the help center. If this question can be reworded to fit the rules in the help center, please edit the question.

  • 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.

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