Hey all, I've been working on a SOLR set up with some heavy customization (using the adminHandler as a way into the system) for a research project @ Imperial College London, however I now see there has been a substantial push towards a NoSQL. For this, there needs to be some kind of optimistic fine-grained concurrency control on updates. As we have document versioning in-built into Lucene (and therefore Solr) this shouldn't be too difficult, however the push has been more of a focus on single core optimistic LOCKING.
I would like to take this toward a multi-core (and multi-node) distributed optimistic lock-free mechanism. This is gives us the ability to provide stronger guarantees than NoSQL wrt distributed transaction isolation and as we can now do soft-commits, we can also provide specific version rollbacks (http://java.dzone.com/articles/exploring-transactional-0). Some more interesting reading on this topic: (read-)snapshot isolation (http://pages.cs.wisc.edu/~cs764-1/critique.pdf) and even stronger guarantees with a slight performance hit with write-snapshot isolation (http://www.fever.ch/usbkey_eurosys12/papers/p155-yabandehA.pdf). People are starting to realize that we don't have to sacrifice guarantees for better performance and scalability (like NoSQL) but rather relax them very minimally. What I need is for someone to shed some light on this feature and the future plans of Solr wrt this is? Am I correct in thinking that a multiversion concurrency control (MVCC) locking mechanism now exist for a single core or is it lock-free and multi-core? Many thanks, Nicholas Ball (aka incunix)