This is a technical book at home and abroad are called the peak of the divine book!

On Chinese Douban, the rating is 9.7 out of 10.00, with nearly 90 percent of respondents giving the book five stars.

Goodreads (similar to Douban) has a rating of 4.72 out of 5.00, with nearly 80 percent giving the book a five-star rating.

The book, Designing Data-Intensive Application, also known as DDIA for short, is often translated as Designing Data-Intensive Application Systems in China.

I have always felt that this is a bit delayed by the title of the god book, we must not be “cheated” by the title.

By title alone, many people would assume that this is a book for data processing related work programs. That’s what I felt when I first read the title of the book.

No, this is a book for every backend developer, but especially for every CRUD programmer!

This book mainly covers distributed databases, data partitioning, transactions, distributed systems and so on. From data models and query languages, data encoding to data replication and partitioning, to transactions, consensus, and some of the challenges of distributed systems (such as failures and partial failures, unreliable networks and clocks), the author combines examples to provide in-depth explanations that are well balanced between industry and academia.

PostgreSQL implements snapshot-level isolation based on MVCC (Multi-version ConCurrentCY Control). PostgreSQL implements snapshot-level isolation based on MVCC.

The authors argue that:

  • Data is at the heart of back-end systems, and everything we do revolves around it;
  • Most applications today are data-intensive rather than compute-intensive, that is, the bottleneck of the system is usually the processing of data rather than the CPU;
  • Databases, message queues, caches and other middleware/software can be collectively referred to as data systems. The boundaries between them are increasingly blurred. For example, data stores can be used as message queues (Redis), while message queues have persistence guarantees similar to databases (Apache Kafka).

This book introduces a lot of concepts that you’ve probably heard before, but when you read it, you’re like, “Wow! So that’s it! Isn’t that how some technology works?” .

Here are the notes I made when I read the book for the second time:

When I read this book for the first time, I was still in my junior year. At that time, I thought the book was very dry, but I could not understand many parts of it. It is much better to wait until the second reading, and many of the concepts that are not quite understood can be clarified.

If you read this book, you will find a lot of system design courses and data-related courses at home and abroad. Many of the contents are mentioned in this book.

There are many places in this book that will give you a new perspective on this topic.

For example, in introducing the ACID properties of transactions, this book says:

Atomicity, isolation, and durability are properties of the database, whereas consis‐ tency (in the ACID sense) is a property of the application. The application may rely on the database’s atomicity and isolation properties in order to achieve consistency, but it’s not up to the database alone.

Atomicity, isolation, and persistence are attributes of the database, while consistency (in the ACID sense) is attributes of the application. Applications may rely on the atomicity and isolation properties of the database to achieve consistency, but this does not depend solely on the database. Therefore, the letter C is not ACID.

Did you feel misled by ACID for a long time?

For example, when introducing data replication, this book introduces three common replication schemes and their advantages and disadvantages.

Master-slave replication is very popular, mainly because it’s easy to understand and you don’t need to worry about conflicts. In case of node failure, network interruption or delay jitter, the replication scheme with multiple master nodes and no master nodes will be more reliable, but the cost is the complexity and weak consistency of the system.

While reading this book, you can combine the MIT6.824 Distributed Systems course. Tubing on video version of this course, address: www.youtube.com/channel/UC_… .

This course is all in English, students who are not good enough in English can hardly stick to learning.

But don’t worry! B station have the course of Chinese translation edition collection, address: www.bilibili.com/video/av917… .

After reading it, he said, I really envy MIT students for their excellent learning methods and practices in university. . I’m so fucking jealous! The Lab of this course is very good!

In addition, the book’s author, Martin Kleppmann, is a Garge research associate and lecturer in the Department of Computer Science and Technology at the University of Cambridge, a leading figure in industry and academia, Participated in several well-known open source projects including Automerge, Apache Avro and Apache Samza. Martin Kleppmann blogs at martin.kleppmann.com/.

For copyright reasons, the PDF version of the book will not be shared here. If you are interested, you can buy the hard copy or find an open source translation of the book.

I am Guide brother, focus on Java original dryware sharing, junior open source JavaGuide (” Java learning + interview Guide “a cover most Java programmers need to master the core knowledge. Prepare for Java interviews, preferably JavaGuide!) , currently has 115K + Star.

Original is not easy, welcome to like to share, welcome to pay attention to my account in nuggets, I will continue to share original dry goods! Come on, rush