Hacker News Comments on
Database Internals: A Deep Dive into How Distributed Data Systems Work
Hacker News Stories and CommentsAll the comments and stories posted to Hacker News that reference this book.
I know two DB bibles which explain how a DB engine actually works. It's much more interesting reading than another SQL manual. But it's not awfully practical if you have no particular interest in DB technology. And both are pretty dense. * https://www.amazon.com/Database-Systems-Complete-Book-2nd/dp * https://www.amazon.com/Database-System-Concepts-Abraham-Silb...
There's a very cool not-quite-alternativE: https://leanpub.com/how-query-engines-work. It covers a fair chunk of DB technology but not storage. Definitely check out their repository at https://github.com/andygrove/how-query-engines-work/tree/mai... .
A companion to DDIA would be https://www.amazon.com/Database-Internals-Deep-Distributed-S... (especially its treatment of LSM trees which is harder to come by).
The book referenced on the blog post seems interesting:
Database Internals: A Deep Dive into How Distributed Data Systems Work https://www.amazon.com/_/dp/1492040347
Sure, I mostly went through this playlist https://www.youtube.com/playlist?list=PLSE8ODhjZXjbohkNBWQs_... (I haven't seen all the videos yet).
Also some parts of this book https://www.amazon.com/Database-Internals-Deep-Distributed-S... were very useful when working on the file structure.
I also just recently saw this project https://cstack.github.io/db_tutorial/ which builds a database in C. I have not gone through it but it seems like quite a good resource.
For the overall design the CMU playlist is the most helpful.
⬐ zd123Thank you!!
+10 for this. I will elaborate further, hoping this gives you a good starting template.
- Programming: Learn two languages: Python and C
- Algorithms and Data Structures: Implement each data structure in the two languages above and implement a few algorithms of each type.
- Computer Architecture: For the referred excellent book, implement all assignments in any one language. Go head and burn the design on an FPGA, get the computer running on real hardware.
- OS: Having done ECS above, you should be in good shape to write your own OS: there is xv6, Xinu, Minix and many to choose from. Again have your OS running at least in a VM.
- Computer Networking: Write your own HTTP server in C.
- Math for CS: I would say focus on learning math essential for games, some linear algebra and leave it there. When you encounter a relevant field; AI or games, you should be in a position to pick up more math if required.
- Databases: Recently a book has been published on database internals, which is strongly recommended. Work through this book.
- Languages and Compilers: Learn a lisp, write a lisp interpreter (should introduce you to some FP concepts) and then working through Concepts, Techniques and Models of Computer Programming should be a good foundation.
Whether you are a student or working full time, these above are time consuming but well worth the ROI if you put in the effort. Be creative and ensure that you publish all your work as part of your portfolio. Good luck!!!
⬐ avremelHow would you compare Database Internals to Designing Data Intensive Applications?⬐ deepaksurti⬐ 8589934591The book you refer to is really kind of system design for applications which handle large data volumes. OTOH, the book I refer to talks about how database software can be developed from ground up thus helping you understand the internals.⬐ avremelThat book does cover many implemention details of a database. However, sometimes at a high level, and as you mention, specifically in the context of distributed systems.Thank you for your reply. It was very helpful. I will include your suggestions into my learning path.
I had difficulty implementing data structures in C, not in python. Python I was able to think in terms of classes and attributes. But I was finding it difficult to do the same in C since there is no concept of classes. I am still trying to learn pointers properly to have an understanding how to implement data structures and algorithms effectively.
I came across the book you have recommended and it is a very nice book. I would recommend that along with Designing Data Intensive Applications.
I have three things for you
1. Designing data intenstive applications
2. Database internals https://www.amazon.com/Database-Internals-deep-dive-distribu...
3. Andy Pavlo's database course videos at cmu and guest lecture series https://www.youtube.com/channel/UCHnBsf2rH-K7pn09rb3qvkA