
¿ For Database Systems and Database Design and Application courses offered at the junior, senior and graduate levels in Computer Science departments. Written by well-known computer scientists, this introduction to database systems offers a comprehensive approach, focusing on database design, database use, and implementation of database applications and database management systems. The first half of the book provides in-depth coverage of databases from the point of view of the database designer, user, and application programmer. It covers the latest database standards SQL:1999, SQL/PSM, SQL/CLI, JDBC, ODL, and XML, with broader coverage of SQL than most other texts. The second half of the book provides in-depth coverage of databases from the point of view of the DBMS implementor. It focuses on storage structures, query processing, and transaction management. The book covers the main techniques in these areas with broader coverage of query optimization than most other texts, along with advanced topics including multidimensional and bitmap indexes, distributed transactions, and information integration techniques. ¿ Resources: Open access Author Website ¿ http: //infolab.stanford.edu/ ullman/dscb.html¿includes Power Point slides, teaching notes, assignments, projects, Oracle Programming Guidelines, and solutions to selected exercises. Instructor only Pearson Resources: Complete Solutions Manual (click on the Resources tab above to view downloadable files) ¿ ¿ ¿
As far as books are concerend: - Database Internals
- Designing Data Intensive Applications
- Disk-Based Algorithms for Big Data
- Database Systems by Ullman et al (http://infolab.stanford.edu/~ullman/pub/dscbtoc.txt) Part IV covers implementation details of a database system.
Here is an updated edition: https://www.amazon.com/dp/129202447X/
My favorite general db book is Database Systems: The Complete Book (DS:CB), by Hector Garcia-Molina, Jeff Ullman, and Jennifer Widom. This is a good book for learning about relational modeling and how to normalize a model so that your eventual schema has as few dependencies between entities as possible. I taught an introductory class where the required (by the department) textbook was Foundations of Database Systems by Elmasri. It's definitely not my favorite book, but if you skim chapter 3 on entity-relational modeling and then chapter 9 on converting an entity-relational model to a relational model suitable for an RDBMs, that is a useful starting place. When I was teaching the class, I often had to go back to the Garcia-Molina,Ullman, Widom book for simple and clear language around concepts for my lectures.
I'll second the recommendation for Joe Celko's books for general SQL programming.
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://matt.might.net/articles/what-cs-majors-should-know/
To add a few of my own that aren't mentioned here which are more in the vein of what you're really looking for (disclaimer: I have not read most of these all the way through, some at all.)
Compilers: The Dragon Book, the dragon book is usually criticized for being outdated so try and find another compilers book if you want, what you're looking for here is switching your mindset from 'I will try to hack up a compiler.' like the other comments here seem to be recommending, which will never work, to going 'this is a complicated piece of software it wouldn't be intuitive to me how to build, is there a theory behind it?'. Quite often the answer is yes.
Operating Systems: The dinosaur book.
Databases: At the University Of Washington I was told to read Database Systems by Garcia-Molina: https://www.amazon.com/Database-Systems-Complete-Book-2nd/dp...
To talk a little bit more about what recommends this approach over other ones:
The other comments seem to be recommending a mindset that your first step to trying to understand these complex systems is to implement them from scratch with your own naive view of the problem. This is at best a good beginners exercise to teach you the value of humility and learning from the work of others, or perhaps to get some practical experience in why the problem is hard. In general, you are never going to be able to have one of these systems spring forth from your brow on its own strength, unless you are a genius beyond genius who can in days or weeks replicate the hard work of years of study by some of the smartest people in your field.