
When Is “ACID” ACID? Rarely (2013) - nstart
http://www.bailis.org/blog/when-is-acid-acid-rarely/
======
jhugg
One of my favorite things about VoltDB, as one of the people who built it, is
that its serializable isolation is actually a fundimental part of the
architecture.

Many of these systems get slower as you turn up the isolation. VoltDB is
faster _because_ of isolation.

More here: [http://voltdb.com/products/featuresbenefits/reasons-
behind-v...](http://voltdb.com/products/featuresbenefits/reasons-behind-
voltdb-architecture)

~~~
sargun
I've heard VoltDB has had a lot of problems with this, actually:
[https://forum.voltdb.com/showthread.php?552-Nodes-stop-
talki...](https://forum.voltdb.com/showthread.php?552-Nodes-stop-talking-to-
each-other-and-form-independent-clusters)

~~~
jhugg
Yeah, as Ryan said, no split brains possible in VoltDB for quite some time. We
originally had split brain protection something you could enable for cloud
deployments, but figured it wouldn't be worth the tradeoff if you had 5
machines in a rack connected directly. It turns out we made a bad choice and
we fixed it.

Unless you're speaking of something else you heard about on a more recent
version?

------
dgreensp
It would be more accurate to say, several SQL databases (that you may or may
not have heard) of don't provide full ACID in the strongest sense, while
MySQL, Postgres, and MS SQL Server all do if you pass the right flags.

In a world plagued by NoDBs, it seems like a very small point.

~~~
AlisdairO
I found the article pretty poor in general. It equates use of lower isolation
levels with use of NoSQL, despite the fact that RC still provides dramatically
higher guarantees than a typical NoSQL DB - particularly when you add in the
ability to use foreign keys.

Further, it counts 'well understood and quantifiable' consistency flaws as a
negative, where in fact the whole point is that you can trade off isolation
for performance in ways that are easy to mitigate for certain applications. By
contrast, the consistency tradeoffs you make when using a NoSQL DBs are
clearly rather poorly understood by the community at large.

------
ExpiredLink
> _The textbook definition of ACID Isolation is serializability_

Not really:
[https://en.wikipedia.org/wiki/ACID](https://en.wikipedia.org/wiki/ACID)

He confuses ACID and isolation levels. Typical internet FUD.

~~~
ak39
Agreed.

Also, Microsoft SQL Server does support snapshot isolation. See:
[https://msdn.microsoft.com/en-
us/library/tcbchxcb(v=vs.110)....](https://msdn.microsoft.com/en-
us/library/tcbchxcb\(v=vs.110\).aspx)

~~~
strictfp
But not for indexes...

------
shin_lao
You know you're being sold something solid if the vendor start talking about
multi-phase commit and/or multi-version currency control.

If they just splash you ACID all over as a mantra to tell you their database
is reliable, be wary.

For databases that persist to disk, it is for example not possible to do that
asynchronously and be ACID. You need, at the very least, to journal every
write before confirming the write.

Last but not least, it is not possible to have 100% bulletproof transactions.
Even with 2PC, or 3PC. There is always a windows of opportunity for a failure
to screw your transaction.

------
jeffdavis
PostgreSQL uses serializable snapshot isolation (SSI) for the SERIALIZABLE
level, which is a relatively new technique that doesn't have much of a
performance penalty.

READ COMMITTED will probably remain the default forever though, because many
applications aren't prepared for serialization failures (which should normally
be retried).

------
adamconroy
Junk article. The important vendors are ACID. Just because the default
isolation level isn't serializable doesn't warrant the conclusion.

One amusing thing is that every now and then there is an article stating that
certain relational dbs aren't webscale because the default isolation level is
too high.

------
jeffdavis
You have to consider the capabilities in addition to the
performance/guarantees trade-off.

A key/value store with SERIALIZABLE transactions isn't as useful as a system
that allows multiple-statement transactions but only offers REPEATABLE READ.

------
jeffdavis
Even though some anomalies are possible, SQL does a great job of eliminating
some of the trickiest bugs, particularly on the error paths.

------
indlebe
Did anyone else expect this to be an article about the drug LSD and the
unreliability of its composition when being purchased at the street level?

~~~
joshontheweb
Yes because this is a big issue. Many research chemicals are sold as being
LSD. Though the effects can be similar, some of them have unknown side effects
and a much lower 'overdose' level. It's practically impossible to overdose on
LSD but something like NBOME can be dangerous in as little as 10 hits.

~~~
ThreeAs
NBOME can be dangerous in two hits. And at smaller doses then you've taken
previously.

It's an interesting series though, very visual.

