Ask HN: Which books should I to read to become a storage engine designer?
I want to focus on database storage layer such as different data structures, concurrency techniques, file layouts, ... I really need some concurrent examples on these topics. Since many books says use B-tree for indexing. How to store it? How to increase concurrency? How to merge memory buffer with on-disk files while DBMS is working? How to do crash recovery?
6 comments
[ 3.9 ms ] story [ 24.4 ms ] threadGood luck.
On the other hand, another way to approach storage is from the bottom up using file systems. My understanding is that this (files on disk) is what Hacker News has traditionally used. There are 'state of the art' systems that use this approach, notably Hadoop and the Hadoop Distributed File System [HDFS].
That brings me to my last point which is 'skating to where the puck is going' and by that I mean that much of what matters in data storage today are more related to distributed systems and less related to how data is stored on disk because storage of files on disk is best treated as a solved problem in almost every case. Partly because getting block level storage correct is hard and partly because storage is cheap and fast relative to engineering for high efficiency.
Lastly, my direct advice is to that the best 'Hello World' for running Database Management Systems [DBMS] is to install and run several DBMS's. On Linux, this it is highly practical to run production quality systems on a laptop even for a hobbyist. And that reminds me that running Linux is probably a valuable first step if it is not your current operating system because Linux is the most common operating system for running DBMS's in production and competency in 'the next layer down' is going to be useful.
http://www.redbook.io/
In other series he also covers Voron, his alternative to Microsoft Esent engine. https://ayende.com/blog/posts/series/175074/voron-internals