


Difficult issues need to be figured out, such as scalability, consistency, reliability, efficiency, and maintainability.

Partitioning Secondary Indexes by Document.Skewed Workloads and Relieving Hot Spots.

Writing to the Database When a Node Is Down.Synchronous Versus Asynchronous Replication.Dataflow Through Services: REST and RPC.Aggregation: Data Cubes and Materialized Views.Stars and Snowflakes: Schemas for Analytics.Data Structures That Power Your Database.Relational Versus Document Databases Today.Are Document Databases Repeating History?.Many-to-One and Many-to-Many Relationships.Operability: Making Life Easy for Operations.Reliable, Scalable, and Maintainable Applications Peek behind the scenes of major online services, and learn from their architectures.Understand the distributed systems research upon which modern databases are built.Navigate the trade-offs around consistency, scalability, fault tolerance, and complexity.Make informed decisions by identifying the strengths and weaknesses of different tools.Peer under the hood of the systems you already use, and learn how to use and operate them more effectively.With this book, software engineers and architects will learn how to apply those ideas in practice, and how to make full use of data in modern applications. Software keeps changing, but the fundamental principles remain the same. In this practical and comprehensive guide, author Martin Kleppmann helps you navigate this diverse landscape by examining the pros and cons of various technologies for processing and storing data. What are the right choices for your application? How do you make sense of all these buzzwords? In addition, we have an overwhelming variety of tools, including relational databases, NoSQL datastores, stream or batch processors, and message brokers. Data is at the center of many challenges in system design today.
