Great Books and Papers
Books
- A Philosophy of Software Design, John Ousterhout, Professor at Stanford University
- The Innovator’s Dilemma, Clayton Christensen
- UNIX - A History and a Memorior, Brian Kernighan, Professor at Princeton University
- HOW NOT TO BE WRONG, Jordan Ellenberg, Professor of Mathematics at the University of Wisconsin-Madison
- THINKING, FAST AND SLOW, Daniel Kahneman, Professor of Psychology Emeritus at Princeton University
- China’s Economy, Arthur R. Kroeber
Papers
There are some papers that are so well written that I really enjoyed reading them. Here is a list of them.
-
In Search of an Understandable Consensus Algorithm
Decompose the consensus problem into multiple sub-problem and tackle each sub-problem individually -
Optimizing Space Amplification in RocksDB
This paper provides a great introduction on LSM-tree, how RocksDB is used as the storage engine for MySQL and some statistics of three LSM-tree based systems used in production in Facebook.
-
BlueCache: A Scalable Distributed Flash-based Key-value Store
The system design is very clear from the paper. Learned a lot about its index and data store part.
-
What’s Really New with NewSQL?
Provides a historial view of how we enter into NewSQL and did an excellent survey of state-of-art NewSQL Databases
-
NV-Tree: Reducing Consistency Cost for NVM-based Single Level Systems
Excellent analysis of overhead in keeping B+ tree consistent, followed by a clear presentation of the proposed solution.
-
The Multi-Queue Replacement Algorithm for Second Level Buffer Caches
Excellent analysis of re-use distance in second-level cache, to motivate their cache design
-
CAFTL: A Content-Aware Flash Translation Layer Enhancing the Lifespan of Flash Memory based Solid State Drives