1

I'm looking for a way to have several physical front-end servers with ACID data access.

In a setup where several servers gets load-balanced using DNS-round robin, the problem is that whatever server you land on the data must be ACID. E.g. when sharding data you need to have the shard-mapping ACID across servers, right?

How can I achieve this using open-source software?

One solution is MySQL Cluster but Google or Facebook does not use this(?). Is there an alternative?

HopelessN00b
  • 53,385
  • 32
  • 133
  • 208
Gustav
  • 133
  • 1
  • 7

2 Answers2

2

Google and Facebook almost always don't need ACID data. If your Facebook news feed is out of date by a few seconds (or minutes, or more) or you're seeing yesterday's Google search index it's not the end of the world.

For anything that does absolutely need to be ACID, you'd likely want to look into sharding, where specific servers are masters for specific subsets of the database.

ceejayoz
  • 32,469
  • 7
  • 81
  • 105
  • Google offers ACIDish on [Cloud Storage](https://developers.google.com/storage/) – Gustav Mar 15 '12 at 21:46
  • The sharding part is good but the initial "id to shard"-lookup need to be ACID right? That's what I mean by front-end. – Gustav Mar 15 '12 at 22:14
  • Depends. Some sharding strategies do some of the sharding on the application side. There are a number of different methods. – ceejayoz Mar 16 '12 at 00:05
1

I'm not sure if Percona's XtraDB Cluster meets a strict definition of ACID compliance (the XtraDB engine does) but it is a synchronous solution like MySQL Cluster that is suitable for web applications. Note that it is not production ready but development/progress is rapid so I'd check it out if I were you. You may want to touch base with the Percona folks about your business need.

Hope this helps.

HTTP500
  • 4,827
  • 4
  • 22
  • 31
  • It meets ACID requirements. Every committed transaction is guaranteed to be durable on all servers in the cluster, guaranteeing A and D. C and I are handled by clusterwide transaction certification at commit time. –  Mar 16 '12 at 10:43
  • @BaronSchwartz: although contract based replication is a lot more robust than async replication, I am not aware of it offering any guarantees that a write completes, only that the request has been accepted and will be run by the target node. Hence far from ACID but enough to meet the requirements of most applications. But happy to be proved wrong if you have any hrefs – symcbean Jun 11 '15 at 22:17