I'm currently writing a book for PragProg called Building Distributed Services with Go (though it mostly applies to other languages too) that's walks you through building a distributed database from scratch. You can sign up on this mailing list to know when it's available: https://travisjeffery.us4.list-manage.com/subscribe?u=1e3ff7...
Yeah---each chapter begins with background on the chapter's topic, some theory, covers how and where you'd use what's we're talking about in the chapter and then we use it to build a part of the project we're building throughout the book. For example, in the consensus chapter we talk about what problems it solves and how you can use it in your projects,and then we implement Raft in the service for leader election and replication.
This one, it covers all the aspects deeper. The next book, if you want to go deeper, can be an upcoming 4th edition of Principles of Distributed Database Systems https://www.springer.com/gp/book/9783030262525
I've been reading this book for the last few days - it is way above what you expect these days for a technical book from a popular publisher in terms of its description of underlying data structures and algorithms. It's also easy to read. The depth of a text book with the approachability of a typical working programmer's book.
There's nothing stopping you from just writing code following the lectures. What else would a practical/lab part be? \
There are tons of open-source databases on github that you can hack on so I don't think there's a major issue with getting practical experience if you want it.
You can try the homework assignments. They aren't trivial and you'll probably learn a bunch more by not being spoon fed the answers. Admittedly, the only bummer is not having someone review your work.
The topical overview certainly sounds interesting, but sounds extremely similar to Designing Data Intensive Applications which also covers modern DB internals.
There is some overlap, but they complement each other. This one (Database Internals) has much more of a technical deep dive on storage engines, especially B-tree implementation details.
If I was mentoring someone learning this stuff, I'd advise reading Designing Data Intensive Applications first, which is certainly the best for giving the big picture, and follow up with this one for more detail on certain topics.
Given the previous dearth of books on this important subject, I think it's wonderful that we have two.
Database Design and Implementation by Edward Sciore implements a fully working relational database from buffer manager up to parser and beyond. It's very much in the spirit of Tanenbaum's OS book.
Author here. Thanks for the heads up, it did look a bit bleak on the mobile. Increased the font size, made grey much more dark, and increased heading sizes. Hope it's easier to read now!
I don't know if I'm seeing the old version or the new version, but this is still very hard to read.
Advice to all web designers: Please do not use "font-weight: 300" for body text, ever. Simply changing that to 400 in the developer tools made it much more readable. The font was still bugging me, so I tried killing the "font-family: futura pt" too.
Wow! What a world of difference. Now it is super easy to read, instead of looking like it's trying to show off some design style.
Know your audience: you are addressing potential database developers with this book, not graphic designers.
Preferring one font over the other is more a question of taste, but I think you're right about font-weight: it does read better with 400. Thanks for the tip!
Database internals books are not worth reading if you want to work on implementing real world database engines. You are better off checking out internals and documentation of various implementations and also research papers in that field. And you would be doing your own research anyway.
But if you are just starting out in programming, it's probably as good book as any to learn something new and practical about algorithms and data structures.
I completely agree that it always depends on the goal. I'd also add a second vector: experience. If you've already worked with distributed and/or storage systems and have understanding of the field, you can jump straight to papers and code. However, for people who are just starting, it may be beneficial to read an overview book and get familiar with a field. This book attempts to be that a starting point that can help to navigate database papers and code.
Some of the folks I talked to who have already worked with databases a lot mentioned they've benefited from the book as well, since there were some concepts they were less familiar with or never had to learn (for example, transactional processing for the folks who have mostly worked with on eventually consistent databases; or B-Tree details for the folks who have mostly worked on LSM-Based storage engine)
Is this a full fee paid course for on campus students?
Because if it is, I would be miffed and feel short changed to be told to watch youtube lectures on my own time. I value face to face time and interactivity with my professor or lecturer. If this is a heavily discounted course due to the crippled way it is taught then I have no issue.
From the syllabus:
CS144 is taught using a combination of lectures and videos. In previous years, it was entirely “flipped”; i.e. all the lecture material was taught by videos. This year things are different and we are going to mix things up: Some weeks, including the first week, will be based on recorded videos that you are required to watch in your own time. We will call these Video Weeks. Other weeks, including the second week, are based entirely on in-class lectures, and you don’t need to watch any videos. We will call these Lecture-only Weeks. So why mix things up? We are teaching this way because we have found that some of the material (e.g. the basic principles you learn in week 1) are most efficiently learned by watching videos - the concepts are fairly simple and the material is descriptive; a video is a more efficient use of your time. Other material, such as when you learn about congestion control in week 4, is best learned in person, interactively in a lecture.
Ostensibly. Some may want the paper and an actual learning experience that isn't virtualised. I must be asking for too much.
I also might not understand the purpose of the video lectures. If they supplant face to face time but get rid of the tedium, then I would say it should also accompany course/lecture notes, reading texts, and/or supplemental documents.
I just think forcing people to watch youtube videos is a much lower quality experience for a student. If it's a required course I'd want a refund for being forced into a lazy teaching format.
Designing Data-Intensive Applications https://dataintensive.net/
Streaming Systems http://shop.oreilly.com/product/0636920073994.do
and this one.