Vapourware
That's all very well, but I'll believe it when I see it.
FoundationDB, the ACID-compliant NoSQL specialist, is working on a document database. The firm already has a prototype that’s in the hands of early customers with plans to go public in 2015, The Register has learned. The move follows delivery of an ACID-compliant graph database for use with FoundationDB’s existing NoSQL …
Item = value, Item-ID = key.
Item composed of zero or more Attributes, separated by Attribute Marks.
Attribute composed of zero or more Values, separated by Value Marks.
Value composed of zero or more Subvalues, separated by Subvalue Marks.
And the really prescient thing is that the codes used for AM, VM and SVM are all illegal characters in Utf8, and so can still work as separators in this post-ASCII world.
-A.
"And the really prescient thing is that the codes used for AM, VM and SVM are all illegal characters in Utf8, and so can still work as separators in this post-ASCII world."
Well, you typically cant store or transmit it officially as "utf-8" because standards based systems choke on illegal bytes. ioconv to some new unicode chars solves that easily enough though.
Maybe things have changed since I last looked at NoSQL... Key-value stores can be used in an ACID manner with just the server-side feature of an atomic conditional update, right? It's the compare-and-swap technique where you build new data and apply it only if its dependencies have not changed, otherwise throw the data out and compute again. It's such a simple operation yet, at least a couple of years ago, conditional updates did not exist. The same technique is used in highly multithreaded code where blocking semaphores can not be used.
Atomic conditional update doesn't help under partitions, and continuing availability under partition is supposedly one of the main drivers of NoSQL. For partition resilience you need something like Paxos - and even then you need a quorum and you're only eventually consistent, plus clients have to be prepared to retry.
As for "highly multithreaded code": there are a number of mechanisms for lockless consistency. Some are indeed built on CaS or other conditional-update primitives, but the picture is much more complicated than simply dropping an atomic conditional update in somewhere. See for example Scaling Existing Lock-based Applications with Lock Elision and Scalability Techniques for Practical Synchronization Primitives. (Both from recent CACM issues, so full text requires ACM membership or payment. But if you're in IT and interested in algorithms you're already an ACM member, right?)