
This textbook examines database systems from the viewpoint of a software developer. This perspective makes it possible to investigate why database systems are the way they are. It is of course important to be able to write queries, but it is equally important to know how they are processed. We e.g. don’t want to just use JDBC; we also want to know why the API contains the classes and methods that it does. We need a sense of how hard is it to write a disk cache or logging facility. And what exactly is a database driver, anyway? The first two chapters provide a brief overview of database systems and their use. Chapter 1 discusses the purpose and features of a database system and introduces the Derby and SimpleDB systems. Chapter 2 explains how to write a database application using Java. It presents the basics of JDBC, which is the fundamental API for Java programs that interact with a database. In turn, Chapters 3-11 examine the internals of a typical database engine. Each chapter covers a different database component, starting with the lowest level of abstraction (the disk and file manager) and ending with the highest (the JDBC client interface); further, the respective chapter explains the main issues concerning the component, and considers possible design decisions. As a result, the reader can see exactly what services each component provides and how it interacts with the other components in the system.
For actual research I'd recommend all stuff from Andy (Pavlo), Viktor Leis, Thorsten Grust, Thomas Neumann...
The author also made it available for free at https://howqueryengineswork.com/00-introduction.html
On implementation, my favourite is "Database Design and Implementation" by Ed Sciore, you write a relational DB in Java, including the parser.
You write a database in Java while having the principles explained along the way.
https://www.amazon.com/Database-Design-Implementation-Data-C...
Books that stand out to me are:
- Database Internals, Alex Petrov
- Database Design & Implementation, Edward Sciore
- How Query Engines Work, Andy Grove
These have been much more useful than IE the Cow book or "DB Systems The Complete Book" to me.
It's written in Kotlin and is very intelligible + succinct (99 pages):
https://leanpub.com/how-query-engines-work
https://github.com/andygrove/how-query-engines-work
As a self-assessment, I rewrote the entire implementation from a columnar/vector-based engine (it uses Arrow) to row-based, using JDBC types, and it took me only 2 readthroughs of the book to be able to do that.
There's also "Database Design and Implementation" by Edward Sciore