6 ms·
“DynamoDB is the only non-relational database that supports transactions across multiple partitions and tables.” Uh... this is just not true.
by ryanworl 8y ago
“DynamoDB is the only non-relational database that supports transactions across multiple partitions and tables.”
Uh... this is just not true.
- otterley 8y agoCan you identify some others?
- monstrado 8y agoFoundationDB https://www.foundationdb.org/ https://www.foundationdb.org/ not only supports transactions, they are mandatory. They also go one step further and support atomic operations, which are especially killer.
- otterley 8y agoI don’t think FDB supports cross-database transactions, though.
- ryanworl 8y agoWhat do you mean by this? There is only one “database” in FoundationDB terms. You can write transactions over the entire keyspace regardless of which machine the data is stored on.
- otterley 8y agoMultiple clusters, then, or whatever you specify to FDB’s API to identify the instance when making a client connection.
- ryanworl 8y agoI'm still not sure what you mean in terms of contrasting this with DynamoDB's new features. You could implement the entire DynamoDB API, with even stronger semantics than the new features listed in the article, on top of FoundationDB. Additionally, the latency would be theoretically lower as they describe needing to do a read, write, and another read per key to verify isolation, whereas FoundationDB uses an optimistic concurrency control scheme to verify at commit time that transactions do not conflict. In the common case (where transactions don't conflict) this is faster.
- otterley 8y agoAll I’m trying to do here is trying to see whether the claim made in the blog post is true or not. Some commenters were claiming it was false, but I don’t think they considered all the components of the claim.
- monstrado 8y agoAgreed 100% and as someone who has had to use DDB before, nothing would make me happier than seeing this built.
- monstrado 8y agoThere's not really a concept of "Database" in FDB. There is however a concept of key spaces, and "directories", which are basically the same, and these all support transactions. i.e. /database1/key1 = foo /database2/key2 = bar
- stickfigure 8y agoThe Google Cloud Datastore (formerly the "App Engine Datastore") has had cross-entity-group transactions since 2011: https://googleappengine.blogspot.com/2011/10/app-engine-155-sdk-release.html https://googleappengine.blogspot.com/2011/10/app-engine-155-...
- otterley 8y agoThe “and tables” clause is the differentiator, I think. DynamoDB tables are roughly equivalent to Datastore namespaces; I don’t believe Google Cloud Datastore supports cross-namespace transactions.
- itcmcgrath 8y agoIt does, and has for several years.
- airwot4 8y agoThe cross group transactions are a little limited - https://cloud.google.com/appengine/docs/standard/java/datastore/transactions#what_can_be_done_in_a_transaction https://cloud.google.com/appengine/docs/standard/java/datast... I don't think it's fair to compare them. However, the more recent Google storage offerings based on Cloud Spanner do seem to offer this. I don't see how Amazon can make this statement - that doesn't stop it being an excellent enhancement to DynamoDB though.
- kevan 8y agoI don't know if the overall statement is true, but Spanner is relational and the statement was limited to non-relational databases.
- wsh91 8y agoCloud Firestore (the next generation of Cloud Datastore) removes those limitations. https://cloud.google.com/firestore/docs/manage-data/transactions https://cloud.google.com/firestore/docs/manage-data/transact... It also supports the Cloud Datastore API. (I work on it!)
- gmaster1440 8y agoMongoDB (https://www.mongodb.com/transactions https://www.mongodb.com/transactions) “Multi-document transactions can be used across multiple operations, collections, databases, and documents.”
- otterley 8y agoHowever: “Multi-document transactions are available for replica sets only. Transactions for sharded clusters are scheduled for MongoDB 4.2.” DynamoDB is sharded by design.
- gmaster1440 8y agoI see, it appears to come down to how each db interprets "partitions". If we're referring specifically to shards then "DynamoDB is the only non-relational database that supports transactions across multiple partitions and tables." no longer sounds like hyperbole.
- AaronFriel 8y agoHyperdex Warp - I'm not sure if it's still available - which purports to provide serializability over multi-key transactions. In the HyperDex model that means over all defined spaces in the cluster. That's a stronger guarantee than DynamoDB provides, which is still susceptible to phantom reads. The DynamoDB team ought to be aware of it, because it's one of the first hits for "multi-key transactions" and the paper is an important one for designing transactions on KVS. https://arxiv.org/pdf/1509.07815.pdf https://arxiv.org/pdf/1509.07815.pdf
- philliphaydon 8y agoRavenDB I think?
- airwot4 8y agoAs far as I'm aware these offerings support transactions across the entire database. Google Cloud Spanner: https://cloud.google.com/spanner/docs/transactions https://cloud.google.com/spanner/docs/transactions Google Cloud Firestore: https://firebase.google.com/docs/firestore/manage-data/transactions https://firebase.google.com/docs/firestore/manage-data/trans... Plus if you use Cloud Firestore in Datastore Mode then Google Cloud Datastore would satisfy this requirement as well.
- otterley 8y agoSpanner is not a non-relational database. As for Firestore, it’s not clear whether it supports cross-collection transactions. Cloud Datastore does not support cross-namespace transactions AFAICT.
- wsh91 8y agoa) Cloud Firestore supports transactions across the entire database. You can learn more about them here: https://cloud.google.com/firestore/docs/manage-data/transactions https://cloud.google.com/firestore/docs/manage-data/transact.... b) Given that the primary use case for namespaces was/is multitenancy, it's not clear to me why you'd want to transact across them. Nevertheless, you can. What's leading you to draw this conclusion?
- otterley 8y agoThe documentation is what led me to that conclusion, since it's not explicit as to what the transaction boundaries are, but I could be mistaken. Does this mean that the poster's claim is erroneous?
- itcmcgrath 8y agoIt does. It's not in the documentation because it doesn't have boundaries within the database.
- 8y ago
- winetraveler 8y agoFaunaDB (mentioned in previous comment) -- it is multi-model NoSQL so you can do relational queries and it supports transactions across multiple partitions, documents, replicas. json docs, not tables.
- Nican 8y agoCockroachDB And you can get pretty close to being schemlass with the json column, and maybe with the inverted index.