learning-notes/books/designing-data-intensive-applications.md at master · keyvanakbary/learning-notes
A fault is usually defined as one component of the system deviating from its spec, whereas failure is when the system as a whole stops providing the required service to the user. You should generally prefer tolerating faults over preventing faults. This is how do we cope with increased load. We need to succinctly describe the current load on the system; only then we can discuss growth questions. Twitter main operations Two ways of implementing those operations: Approach 1, systems struggle to keep up with the load of home timeline queries. So the company switched to approach 2. The average rate of published tweets is almost two orders of magnitude lower than the rate of home timeline reads. Downside of approach 2 is that posting a tweet now requires a lot of extra work. Some users have over 30 million followers. A single tweet may result in over 30 million writes to home timelines. Twitter moved to an hybrid of both approaches. Tweets continue to be fanned out to home timelines but a s
Designing Data-Intensive Applications Reliable, scalable, and maintainable applications Reliability Scalability Maintainability Data models and query language Relational model vs document model Query languages for data Graph-like data models Storage and retrieval Data structures that power up your database Transaction processing or analytics? Column-oriented storage Encoding and evolution Formats for encoding data Modes of dataflow Replication Leaders and followers Problems with replication lag Multi-leader replication Leaderless replication Partitioning Partitioning and replication Partition
related reading
- Everything I know about good system designseangoedecke.com
- NoSQL - Database Systemscs186berkeley.net
- Database Fundamentalstontinton.com
- From monolith to Lakebase to LTAP: rethinking the database from storage up | Databricks Blogdatabricks.com
- Building data-centric apps with a reactive relational databaseriffle.systems
- Cleaned-up transcript of Rich Hickey's talk "Deconstructing the Database" · GitHubgist.github.com
- The Beginner's Guide to Databasestechnically.substack.com
- How to design resilient and large scale data systemsblog.dataengineer.io
- Build Your Own Databasenan.fyi
- Notes on Distributed Systems for Young Bloods – Something Similarsomethingsimilar.com
- GitHub - donnemartin/system-design-primer: Learn how to design large-scale systems. Prep for the system design interview. Includes Anki flashcards.github.com
- Core Concepts for System Design Interviews | Hello Interview System Design in a Hurryhellointerview.com