Externally indexed torrent
If you are the original uploader, contact staff to have it moved to your account
Textbook in PDF format
Learn databases from the bottom up by coding your own, in small steps, and with simple Go code (language agnostic).
Database literature is full of confusing, overloaded jargon with no consistent meaning. It’s easy to get lost when reading about it. On the other hand, Feymann once said, “what I can’t build, I don’t understand”. Can you build a database by reading about databases? Test your understanding! While there is a lot to learn, not all knowledge is equally important, it takes only a few principles to build a DB, so anyone can try.
SQL is almost a synonym for database. But SQL is just a user interface, it’s not fundamental to a DB. What’s important is the functionalities underneath. Another much simpler interface is key-value (KV). You can get, set, and delete a single key, and most importantly, list a range of keys in sorted order. KV is simpler than SQL because it’s one layer lower. Relational DBs are built on top of KV-like interfaces called storage engines. Query languages: parsers and interpreters: The last step is easy, despite the larger LoC. Both the parser and the interpreter are coded with nothing but recursion! The lesson can be applied to almost any computer language, or creating your own programming language or DSL.
Atomicity & durability. A DB is more than files!
Persist data with fsync.
Crash recovery.
KV store based on B-tree.
Disk-based data structures.
Space management with a free list.
Relational DB on top of KV.
Learn how tables and indexes are related to B-trees.
SQL-like query language parser & interpreter.
Concurrent transactions with copy-on-write data structures.
00. Introduction
01. From Files To Databases
02. Indexing Data Structures
03. B-Tree & Crash Recovery
04. B Tree Node and Insertion
05. B Tree Deletion and Testing
06. Append-Only KV Store
07. Free List: Recyle & Reuse
08. Tables on KV
09. Range Queries
10. Secondary Indexes
11. Atomic Transactions
12. Concurrency Control
13. SQL Parser
14. Query Language