Live data from Hacker News

Which modern databases support ACID transactions?

foundationdb.com

51–55 of 55 posts

Re: Which modern databases support ACID transactions?

#51
post #49

Earlier quoted context omitted.

I know very little about Galera replication, but its FAQ states that it provides only snapshot isolation. You are certainly correct that we have not provided a complete overview of the DB market! That is a very ambitious project. We built this page largely to call out the use of "ACID" terminology by vendors that don't actually provide it.

I personally think that "provides only snapshot isolation" and "provides ACID transactions on a single machine, but sharding, caching, and failover will likely violate them as you try to scale" are very different statements. The different isolation modes does not violate ACID transactions and only describe the semantic in more details. I would make a claim that majority of applications can use any isolation mode with…

Isolation levels describe the degree of compliance with the I in ACID. Full compliance is called serializable isolation. Are there valuable uses for lower degrees of isolation? Yes, and a good database should allow applications to selectively reduce isolation. But the inability to support serializable isolation greatly limits the power and composability of a system.

Galera looks like an extremely useful tool, and a big improvement on usual (and extremely dangerous) ad hoc failover. Besides the limited isolation level, though, it only really solves failover. Typical large scale database deployments will sacrifice even more ACID properties by sharding (which loses A, C, and I for shard-spanning transactions) and frequently by incoherent caching (which sacrifices isolation for reads that use the cache).

Re: Which modern databases support ACID transactions?

#53

> MySQL provides ACID transactions on a single machine That made me chortle. If you can't roll back an `ALTER TABLE` command (e.g., to back out of a failed schema migration), you don't really have good ACID semantics. Here's a list of other fun MySQL commands that sidestep transactions: http://dev.mysql.com/doc/refman/5.5/en/implicit-commit.html

Transactional DDL is a dangerous game with any DBMS. You must know the idioms of the systems you use, and use them accordingly. You would be a fool otherwise.

I think that's exactly why we must have correct ACID transaction around DDL…
Post reply on HN