Warp: Lightweight Multi-Key Transactions for Key-Value Stores
muratbuffalo.blogspot.com
muratbuffalo.blogspot.com
While the technology is impressive, the author seems to have lost interest, and moved on to working on something called Consus [2], which has also been abandoned (no activity 2018).
Hyperdex never became popular, and a problem all along was that the author — a very talented developer, from what I can tell — seemed more invested in his projects from the perspective of academic research (he developed Hyperdex at Cornell, I believe) than in delivering a practical, living open source project. He tried to form a company around Hyperdex (the transactional Warp add-on was commercial) even though nobody seemed to be using it; and he was the sole developer. I actually submitted a PR at one point to fix a build problem, but the author was completely unresponsive; you can't really do open source that way.
I think the Warp code was actually open sourced when the author realized they had failed to commercialize it, but I'm not sure; it's been a long time.
The ability to allow contributors to conttibute code is a bonus of it being open source but even if it doesn't accept or merge pull requests, it's just as well imo.
Too many projects just dump the code onto Github with no attempt to create a community around it. Community participation is ultimately what makes or breaks an open source project. I'm not saying one has an obligation to the world to service pull requests, but if you release something and make zero effort to engage, then don't be surprised if your project dies.
In this case, the codebase is also sufficiently complex/arcane that it's hard for anyone to just pick it up and evolve it meaningfully without any aid from the original author. Without knowing all the details of Hyperdex's internals, I do think that it might be a worthwhile thing for someone with sufficient time and interest to resurrect it, though.
You need to be an invested person to casually read the sourcecode of postgres or random database project.
I have some ideas on HTTPS://GitHub.com/samsquire/ideas4 of how I would cause programming to be easier to pick up and run with a piece of mature software. There is inevitably A LOT to learn to onboard yourself with a large codebase, it takes months or years to get familiar at work so it would take the same or longer for open source.
PolarDb sets commit timestamp to null and asynchronously changes the commit timestamp after a commit but has a CTS ring buffer for transactions that are still active. The reading transactions has to check this to see if the transaction is part way through committing.
The getting the behaviour of all at once or not at all is an interesting problem to have.
I use a database timestamp to solve this problem which is the latest transaction to have committed.
I think postgres does something clever with minimum and maximum timestamps on each tuple.
[1]: HTTPS://GitHub.com/samsquire/multiversiom-concurrency-control
A key-value store would only store "key values."
https://redis.com/nosql/key-value-databases/
https://www.mongodb.com/databases/key-value-database
https://aws.amazon.com/nosql/key-value/
https://etcd.io/docs/v3.4/learning/why/
https://riak.com/products/riak-kv/
Besides, the slash is arguably more often used to mean "or" (think "he/she") than "and".
And here we were just making fun of Reddit for this kind of infantile behavior.