cayley icon indicating copy to clipboard operation
cayley copied to clipboard

Does cayley support transactions? Is it ACID compilant?

Open robert-zaremba opened this issue 11 years ago • 5 comments

robert-zaremba avatar Jul 05 '14 12:07 robert-zaremba

It depends on the backend.

Some backends don't do ACID -- MongoDB for example. Some backends might -- the proposed Postgres backend, for example. LevelDB could probably be damned close, but may take a little tuning -- already it does work in one write batch, but a bit of extra locking is probably reasonable.

Where possible, we'll use the underlying locking primitives to provide the best consistency and atomicity we can, but, depending on your stack and architected tradeoffs, there's only so much one can do.

barakmich avatar Jul 05 '14 16:07 barakmich

Well .. it would be useful to provide info about ACID in readme

  • if it's support for any backen
  • how it is supported
  • how to make transactions...

robert-zaremba avatar Aug 27 '14 17:08 robert-zaremba

Well .. it would be useful to provide info about ACID in readme

+1

flosse avatar Nov 26 '14 21:11 flosse

+1

Stratus3D avatar Dec 05 '14 18:12 Stratus3D

An update for @barakmich answer with more details:

  • memstore: Can implement transactions as it is our own implementation (Proven by https://github.com/hashicorp/go-memdb)
  • bolt: Bolt supports ACID
  • mongo: MongoDB supports ACID since version 4
  • elastic: Elastic itself doesn't support ACID unless it is on top of a relational DB that does. See: https://dbdb.io/db/elasticsearch
  • couch: CouchDB supports ACID
  • postgres: Postgres supports ACID
  • cockroach: Cockroach supports ACID
  • mysql: Some MySQL engines support ACID and some doesn't. See: http://ronaldbradford.com/blog/q-does-mysql-support-acid-a-yes-2016-06-29/
  • sqlite: SQLite supports ACID

iddan avatar Sep 17 '19 22:09 iddan