Application Performance Optimization Summary. Contribute to sjtuhjh/appdocs development by creating an account on GitHub. The O'Reilly logo is a registered trademark of O'Reilly Media, Inc. Designing Data -Intensive Applications, the cover .. open-access PDF files. This Preview Edition of Designing Data-Intensive Applications, Chapters 1 and 2, is a work in progress. The final book is currently scheduled for release in July.
|Language:||English, French, Japanese|
|Genre:||Politics & Laws|
|ePub File Size:||28.66 MB|
|PDF File Size:||8.37 MB|
|Distribution:||Free* [*Register to download]|
Technology is a powerful force in our society. Data, software, and communication can be used for bad: to entrench unfair power structures, to undermine human. When looking for good references for improving my software architecture skills, I came to the book “Designing Data-Intensive Applications,”. Designing Data-Intensive Applications: The Big Ideas Behind Reliable, Scalable, and Read online, or download in DRM-free EPUB or DRM-free PDF format.
The aim is to help you think about data systems in new ways — not just how they work, but why they were designed that way. Your own software will be better as a result.
What people are saying This book is awesome. It bridges the huge gap between distributed systems theory and practical engineering. I wish it had existed a decade ago, so I could have read it then and saved myself all the mistakes along the way. Jay Kreps , creator of Apache Kafka and Project Voldemort This book should be required reading for software engineers.
Designing Data-Intensive Applications
The explosion of data and its increased importance to the applications we build has created a new set of complex challenges. Designing Data-Intensive Applications is a rare resource that bridges theory and practice to help developers make smart decisions as they design and implement data infrastructure and systems.
Kevin Scott , Chief Technology Officer at Microsoft The essence of building reliable and scalable distributed data systems and efficiently using them to solve real world problems is in mastering the tradeoffs associated with the design choices.
Designing Data Intensive applications explores them like none other and provides a unbiased view of how distributed systems have made these choices over time. This is one of the best technical books I've read.
It offers very helpful context, historical and current, to understanding the key issues in the text. It is now available in print and ebook formats from your favorite bookstore.
Books & Videos
Previously he was a software engineer and entrepreneur at Internet companies including LinkedIn and Rapportive , where he worked on large-scale data infrastructure. Following the building blocks and foundations comes "Part II", and this is where things start to get really interesting because now the reader starts to learn about challenging topic of distributed systems: how to use the basic building blocks in a setting where anything can go wrong in the most unexpected ways. Part II is the most complex of part the book: you learn about how to replicate your data, what happens when replication lags behind, how you provide a consistent picture to the end-user or the end-programmer, what algorithms are used for leader election in consensus systems, and how leaderless replication works.
One of the primary purpose of using a distributed system is to have an advantage over a single, central system, and that advantage is to provide better service, meaning a more resilient service with an acceptable level of responsiveness. This means you need to distribute the load and your data, and there a lot of schemes for partitioning your data.
Chapter 6 of Part II provides a lot of details on partitioning, keys, indexes, secondary indexes and how to handle data queries when your data is partitioned using various methods. No data systems book can be complete without touching the topic of transactions, and this book is not an exception to the rule.
You learn about the fuzziness surrounding the definition of ACID, isolation levels, and serializability.
The remaining two chapters of Part II, Chapter 8 and 9 is probably the most interesting part of the book. You are now ready to learn the gory details of how to deal with all kinds of network and other types of faults to keep your data system in usable and consistent state, the problems with the CAP theorem, version vectors and that they are not vector clocks, Byzantine faults, how to have a sense of causality and ordering in a distributed system, why algorithms such as Paxos, Raft, and ZAB used in ZooKeeper exist, distributed transactions, and many more topics.
The rest of the book, that is Part III, is dedicated to batch and stream processing. The author describes the famous Map Reduce batch processing model in detail, and briefly touches upon the modern frameworks for processing distributed data processing such as Apache Spark.
The final chapter discusses event streams and messaging systems and challenges that arise when trying to process this "data in motion". You might not be in the business of building the next generation streaming system, but you'll definitely need to have a handle on these topics because you'll encounter the described issues in the practical stream processing systems that you deal with daily as a data engineer.
As I said in the opening of this review, consider this a mini-encyclopedia for the modern data engineer, and also don't be surprised if you see more than references at the end of some chapters; if the author tried to include most of them in the text itself, the book would well go beyond pages!
Designing Data-Intensive Applications, a Free eBook from O’Reilly and Mesosphere
As for me, it'll definitely be my go-to reference for the upcoming years for these topics.Use Cases. The author describes the famous Map Reduce batch processing model in detail, and briefly touches upon the modern frameworks for processing distributed data processing such as Apache Spark.
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.
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. What is the difference between "fault" and "failure"? The free preview edition features two chapters from Designing Data-Intensive Applications: Designing Data-Intensive Applications is a rare resource that bridges theory and practice to help developers make smart decisions as they design and implement data infrastructure and systems.