Designing Data-Intensive Applications: The Big Ideas Behind Reliable, Scalable, and Maintainable Systems (Paperback)

Martin Kleppmann



Data is at the center of many great challenges in system design. There are so many tools to choose from: databases, NoSQL datastores, stream and batch processors, caches, indexes, message brokers, and so on. Moreover, there are so many issues to consider: scalability, consistency, reliability, efficiency, maintainability. How do you make the right choices for your application? How do you make sense of all the buzzwords?

Designing Data-Intensive Applications is a comprehensive guide to the landscape of systems for storing and processing data. In this book, Martin Kleppmann covers a wide range of popular technologies, comparing their pros and cons. Although software keeps changing, the fundamental ideas behind it stay the same. Through this book, you’ll understand those principles, how they apply in practice, and how make full use of data in your applications.

With this book, you will:

  • Look under the hood of the systems you already use, so that you can use them more effectively and diagnose any issues
  • Know the strengths and weaknesses of different tools, letting you make informed decisions
  • Learn to navigate the trade-offs around consistency, scalability, fault tolerance, and complexity
  • Understand the distributed systems research upon which modern databases are built
  • Peek behind the scenes of major online services, and learn from their experience


資料是系統設計中許多重大挑戰的核心。有很多工具可供選擇:資料庫、NoSQL 資料存儲、流式和批處理器、快取、索引、訊息代理等等。此外,還有很多問題需要考慮:可擴展性、一致性、可靠性、效率和可維護性。你如何為你的應用程序做出正確的選擇?你如何理解所有這些流行詞彙?

《設計資料密集型應用》是一本全面介紹存儲和處理資料系統的指南。在這本書中,Martin Kleppmann涵蓋了各種流行技術,並比較了它們的優缺點。儘管軟體不斷變化,但背後的基本理念保持不變。通過這本書,你將了解這些原則,以及它們在實踐中的應用,並如何充分利用資料在你的應用程序中。

- 深入了解你已經使用的系統,以便更有效地使用它們並診斷任何問題
- 了解不同工具的優點和缺點,讓你能夠做出明智的決策
- 學會在一致性、可擴展性、容錯性和複雜性之間取得平衡
- 理解現代資料庫建立在分散式系統研究基礎上的原理
- 從主要線上服務的幕後情況中獲取經驗教訓