5 ms·
A database is an abstract concept, and ACID transactions on databases have nothing to do with the interface semantics used to interact with the shared state bei
by socmag 10y ago
A database is an abstract concept, and ACID transactions on databases have nothing to do with the interface semantics used to interact with the shared state being managed.
You can have non-ACIDic SQL databases and ACID NoSQL databases.
While it is true that many KV stores do not present a fully consistent view over distributed data, there are some that do.
It is very important that people shed this idea that only SQL databases can have strong consistency, that's for sure.
- brandur 10y ago> It is very important that people shed this idea that only SQL databases can have strong consistency, that's for sure. Why? In practice, people are going to be building things using the same common paths: Postgres, Mongo, MySQL, Redis, etc., and from a purely pragmatic standpoint, the SQL databases that you're likely to use come with strong ACID guarantees while the NoSQL databases don't. If you can point me to a NoSQL data store that provides high availability, similar atomicity, consistency, and isolation properties provided by a strong isolation level in Postgres/MySQL/Oracle/SQL Server, and has a good track record of production use, I'm all ears.
- rubber_duck 10y agohttps://cloud.google.com/datastore/ https://cloud.google.com/datastore/ I haven't used it in a few years, but from what I remember you could have ACID like operations on grouped entries because grouping them makes their physical storage the same so ACID transaction becomes a localized operation.
- Negitivefrags 10y agoBerkeley DB. I use it in production for a game that supports over 100,000 concurrent users and it's been around for a very long time. It's fully ACID by default but you get the ability to drop elements of ACID in exchange for greater performance in a per table or transaction level. It also supports two different isolation approaches on a per table level. Locking or MVCC (like postgres). It's a really great NoSQL database from the days before the term NoSQL existed.
- amalcon 10y agoBerkeleyDB is great. I'm honestly surprised it doesn't see more use. It's right in the sweet spot for software that doesn't quite need a relational model, and that seems to be a lot of software.
- ddorian43 10y agoCheck out lmdb for a better alternative to it.
- nickpsecurity 10y agoHow did I not know about this awesome-looking tool? Thanks for the mention! Wikipedia link for others: https://en.wikipedia.org/wiki/Lightning_Memory-Mapped_Database https://en.wikipedia.org/wiki/Lightning_Memory-Mapped_Databa...
- socmag 10y agoYup, and we used to have FoundationDB, sadly not any more, but don't get me started on that. Still there are plenty of highly distributed stores to go around, and it's good to know that people are actively using them with great success. It's very nice to have fine control over consistency vs performance even if you do have to think about it as a developer, but then that's our job :-)
- hyc_symas 10y agoBerkeley DB was great, but Oracle killed it by changing the license to AGPL. That change meant many projects that use it couldn't update to the latest version without violating the license. LMDB has taken its place in a lot of projects that used to use Berkeley.
- platform 10y agohttp://www.marklogic.com/what-is-marklogic/features/ http://www.marklogic.com/what-is-marklogic/features/ ACID transactions
- mesmerizingsnow 10y agohttps://github.com/cockroachdb/cockroach https://github.com/cockroachdb/cockroach which was inspired by this paper: http://research.google.com/archive/spanner.html http://research.google.com/archive/spanner.html which google made available for all in form of it's cloud datastore: https://cloud.google.com/datastore/ https://cloud.google.com/datastore/ "We believe it is better to have application programmers deal with performance problems due to overuse of transactions as bottlenecks arise, rather than always coding around the lack of transactions." [1] [1] http://highscalability.com/blog/2012/9/24/google-spanners-most-surprising-revelation-nosql-is-out-and.html http://highscalability.com/blog/2012/9/24/google-spanners-mo...
- jinjin2 10y agoA bit out of the scope, since it is an embedded database designed to run on mobile devices, but Realm[1] is a NoSQL database (in this case Object Database) with full ACID transactions, and is running on millions of devices. [1] http://realm.io http://realm.io
- catnaroek 10y ago> While it is true that many KV stores do not present a fully consistent view over distributed data, there are some that do. Consistency is always relative to what the DBMS can enforce, which is in turn always relative to what the the DBMS's schema language can express. A KV store can be trivially consistent in that, between writes, it always presents the same view of the data. But it won't be consistent in the sense of presenting a view of the data that's guaranteed not to contradict your business rules. The latter is what users of relational databases expect.
- deleted 10y ago[deleted]