Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

For historical reasons, most databases are made/configured around the assumption that it is better to fail loudly and completely rather than fudge the ACID guarantees silently.

It's the opposite, actually. The default install of modern databases (Oracle, MySQL, and Postgres are all guilty) is to silently corrupt data rather than to abort transactions. If you want data integrity, you have to explicitly ask for it:

http://search.cpan.org/~nuffin/KiokuDB-Backend-DBI-1.10/lib/...

Presumably this is because people get really scared when transactions fail. (Except that's the whole point of transactions -- optimize for success, and clean up a few failures here and there.)

Also, most NoSQL databases are fully ACID. OK, CouchDB isn't, but nobody uses that anymore, right? What people "give up" with NoSQL is the strict structure of the relational model. Things like sets and transactions still exist -- it's just that sets can be polymorphic, or you can use some other collection structure!



Your last claim is not true. Most NoSQLs don't have transactions thus can't have any ACID properties. ACID is all about transactions in the first place.


BDB and Tokyo Cabinet have transactions, and so does everything built on top of these (KiokuDB, Memcachedb, etc.)

Mongo, Couch, and Cassandra don't have transactions over the entire database, but documents must be self-contained and must not refer to other documents. Following those rules, operations are atomic, consistent, isolated, and durable. "Useful" is not one of the ACID qualifiers, however :)




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: