Earlier today there was a thread on Twitter asking about what degrees and academic background people have who work on SQL Server. I volunteered to put together a reading list for those wanting to know more of the theory behind a relational database management system, rather than just how to use one.
Here I present a reading list that will take you from how to program well up to how to architect multi-threaded database servers. I’ve read all of these at some point between finishing my CS/EE degree in Edinburgh in 1994 and stopping dev work in 2005, and they’re sitting on my bookshelf as I type this. They’re all the best books I could find on the subject at the time, and they’re all absolutely excellent. I’ve included Amazon.com links to the most up-to-date editions (because I’m nice like that :-).
Programming
-
Algorithms in C++, Parts 1-4 (Sedgewick, 752pp)
-
The C++ Programming Language: Special Edition (Stroustrup, 1030pp)
-
The Design and Analysis of Computer Algorithms (Aho/Hopcroft/Ullman, 470pp)
-
Design Patterns: Elements of Reusable Object-Oriented Software (Gamma/Helm/Johnson/Vlissides, 416pp)
-
How to Solve It: Modern Heuristics (Michalewicz/Fogel, 554pp)
Underneath the RDBMS
-
Computer Networks (Tanenbaum, 912pp)
-
Modern Operating Systems (Tanenbaum, 1104pp)
-
Distributed Systems: Principles and Paradigms (Tanenbaum, 704pp)
-
Computer Architecture and Organization (Hayes, 624pp)
-
Computer Architecture: A Quantative Approach (Hennessy/Patterson, 704pp)
-
Cryptography and Network Security (Stallings, 744pp)
Concepts
-
Decision Support Systems and Intelligent Systems (Turban/Aronson/Liang/Sharda, 850pp)
-
Distributed Algorithms (Lynch, 904pp)
- Transactional Information Systems: Theory, Algorithms, and the Practice of Concurrency Control and Recovery (Weikum/Vossen, 852pp)
-
Transaction Processing: Concepts and Techniques (Gray/Reuter, 1070pp)
RDBMS architecture
-
Database Management Systems (Ramakrishnan/Gehrke, 936pp)
-
Introduction to Database Systems (Date, 1024pp)
-
Database: Principles, Programming, and Performance (O’Neil/O’Neil, 870pp)
-
Readings in Database Systems (Stonebraker/Hellerstein, 877pp)
You should also checkout the ACM Special Interest Group on Management of Data (SIGMOD), and the VLDB Conference – these are the premier academic conferences to do with database management systems.
This should keep you busy.. happy reading!
7 thoughts on “So you want to write a Storage Engine…”
And just when my reading list was getting under control….. I think I’ll be needing more bookshelves.
The three Tanenbaum books were used as textbooks at the university I studied at and they’re among the few textbooks that I still have. Excellent all three.
Do you have any recommended books on File Systems and IO?
Good work, No Doubt, i was thinking to myself these long years, what was i missing? and there was the answer.. Everything that has to be read.
… and for those "sick" enough to contemplate this, that’s 18,219 total pages and a cost of $1,943.04. At 20 pages a day, EVERY SINGLE DAY – that would be about 2 1/2 years – sounds like a MBA with emphasis in DBA – happy reading.
Yeah – but these were stretched out over probably 12-13 years – much more palatable. Wait till you read my 100-book-this-year post in a few days…
Gail – Windows NT File Systems Internals is a good one, but any operating system book should have info on file systems. Nothing specific I know of.
There is a quote attributed to Albert Einstein saying "Any man who reads too much and uses his own brain too little falls into lazy habits of thinking".
Having done my share of reading too (went to college in 1998), I wouldn’t recommend reading too many advanced topics without a plan on how to make use of it. Time spent reading has an opportunity cost, and if reading feels boring and useless, one should probably do something else.
That being said, it is cool to see that there are respected people in the industry promoting self-education and academic literacy.
Excellent list, many thanks.
Small omission though: the list of all background reading necessary to understand main portion :-)