Dr. Cliff Click's Google talk on Lock-Free Hashtable is here: <a href="https://youtu.be/HJ-719EGIts" rel="nofollow">https://youtu.be/HJ-719EGIts</a><p>Acc to Dr. Click, if you do not have 30+ CPUs in a single machine, ConcurrentHashMap (built-in to the JDK) will do the trick more often than not. The talk is really worth it, if you're curious about the design, esp.<p>Dr. Click also had memorable debate with Rich Hickey over STMs. He works at h2o.ai and wrote about building a Key-Value store two years ago: <a href="http://blog.h2o.ai/2014/02/kv-store-memory-analytics/" rel="nofollow">http://blog.h2o.ai/2014/02/kv-store-memory-analytics/</a>
When this last came up I started looking into Split-Ordered Lists, which are fascinating.<p><a href="http://www.cs.tau.ac.il/~afek/SplitOrderListHashSS03.pdf" rel="nofollow">http://www.cs.tau.ac.il/~afek/SplitOrderListHashSS03.pdf</a>
Related thread:<p><a href="https://news.ycombinator.com/item?id=8362040" rel="nofollow">https://news.ycombinator.com/item?id=8362040</a><p>The difference appears to be that you can resize concurrently with lookups. From reading this article it seems they are not that happy with this aspect of the implementation:<p><i>Right now, if a get call encounters a Redirect, it helps complete the migration. Perhaps it would be better for scalability if it immediately read from the new table instead. That’s something worth investigating.</i>
Good to see this is alive.<p>Old thread: <a href="https://news.ycombinator.com/item?id=11016350" rel="nofollow">https://news.ycombinator.com/item?id=11016350</a>