In two posts, the Tokutek guys are explaining how transactions work on TokuMX, the replacement engine they are proposing to MongoDB users—remember that Vadim Tkachenko (“MySQL Performance blog“) called TokuMX the InnoDB for MongoDB?:
- For each statement that tries to modify a TokuMX collection, either the entire statement is applied, or none of the statement is applied. A statement is never partially applied.
`, androllbackTransaction` have been added to allow users to perform multi-statement transactions.
- TokuMX queries use multi-version concurrency control (MVCC). That is, queries operate on a snapshot of the system that does not change for the duration of the query. Concurrent inserts, updates, and deletes do not affect query results (note this does not include file operations like removing a collection).
- cursors represent a true snapshot of the system
- simpler to batch inserts together for performance
- simpler for applications to update multiple documents with a single statement
- no need to combine documents together for the purpose of atomicity
✚ I’d find TokuMX’s transactions even more interesting if they would work by default at a shard level instead of cluster level. Users would need to manually configure cluster-wise transaction thus remaining in control of the performance and availability.
✚ I still have my doubts about TokuMK’s positioning, but that’s a business & marketing story.
Original title and link: TokuMX transactions for MongoDB ( ©myNoSQL)