[Book] Designing Data-Intensive Applications

wonderful world·2022년 12월 25일

author: martin kleppmann
https://www.amazon.com/Designing-Data-Intensive-Applications-Reliable-Maintainable/dp/1449373321
https://public.nikhil.io/Designing%20Data%20Intensive%20Applications.pdf

update: 2022/12/26 12:32 목차 정리

Part I. Foundations of Data Systesm

1. Reliable, Scalable, and Maintainable Applications

Thinking About Data Systems

a data-intensive application is typically built from standard building blocks

  • store data (database)
  • remember the result of an expensive operation (caches)
  • allow users to search data (search indexes)
  • send a message to another process asynchronously (stream processing)
  • periodically crunch a large amount of data (batch processing)

In this book, we focus on three concerns that are important in most software systems:

Reliability
The system should continue to work correctly even in face of adversity(h/w or s/w faults, human error)

Scalability
As the system grows, there should be reasonable ways of dealing with that growth.

Maintainability
over time, many different people will work on the system and they should all be able to work on it productively.

UPDATE: 2022/12/27 23:45

Reliability

The things that can go wrong are called faults, and systems that anticipate faults and can cope with them are called fault-tolerant or resilient. The former term is slightly misleading: it suggests that we could make a system tolerant of every possible kind of fault, which in reality is not feasible.

So it only makes sens to talk about tolerating certain types of faults.

Note that a fault is not the same as a failure. A fault is usually defined as one component of the system deviating from its spec, whereas a failure is when the system as a whole stops providing the required service to the user. It is impossible to reduce the probability of a fault to zero; therefore it is usually best to design fault-tolerance mechanisms that prevent faults from causing failures. In this book we cover several techniques for building reliable system from unreliable parts.

UPDATE: 2022/12/28 22:50

Hardware Faults

Software Errors

Human Erros

How Important is Reliability

Scalability

Maintainability

Summary

2. Data Models and Query Languages

3. Storage and Retrieval

4. Encoding and Evolution

Part II. Distributed Data

5. Replication

6. Partitioning

7. Transactions

8. The Trouble with Distributed Systems

9. Consistency and Consensus

Part III. Derived Data

10. Batch Processing

11. Stream Processing

12. The Future of Data Systems

profile
hello wirld

0개의 댓글