Back To Course Home
Grokking the Modern System Design Interview
0% completed
System Design Interviews
Getting Ready for the System Design InterviewKey Concepts to Prepare for the System Design InterviewResources to Prepare for a System Design InterviewThe Do’s and Don’ts of the System Design InterviewLet AI Evaluate your System Design Interview Preparation
Introduction
Introduction to Modern System DesignCourse Structure for Modern System Design
Abstractions
Why Are Abstractions Important?Network Abstractions: Remote Procedure CallsSpectrum of Consistency ModelsThe Spectrum of Failure Models
Non-functional System Characteristics
AvailabilityReliabilityScalabilityMaintainabilityFault ToleranceLet AI Evaluate Your Understanding of Non-Functional Requirements
Back-of-the-envelope Calculations
Put Back-of-the-envelope Numbers in PerspectiveExamples of Resource Estimation
Building Blocks
Introduction to Building Blocks for Modern System Design
Domain Name System
Introduction to Domain Name System (DNS)How the Domain Name System Works
Load Balancers
Introduction to Load BalancersGlobal and Local Load BalancingAdvanced Details of Load Balancers
Databases
Introduction to Databases
Types of Databases
Data Replication
Data Partitioning
Trade-offs in Databases
Key-value Store
System Design: The Key-value StoreDesign of a Key-value StoreEnsure Scalability and ReplicationVersioning Data and Achieving ConfigurabilityEnable Fault Tolerance and Failure Detection
Content Delivery Network (CDN)
System Design: The Content Delivery Network (CDN)Introduction to a CDNDesign of a CDNIn-depth Investigation of CDN: Part 1In-depth Investigation of CDN: Part 2Evaluation of CDN's DesignQuiz on CDN's Design
Sequencer
System Design: SequencerDesign of a Unique ID GeneratorUnique IDs with Causality
Distributed Monitoring
System Design: Distributed MonitoringIntroduction to Distributed MonitoringPrerequisites of a Monitoring System
Monitor Server-side Errors
Design of a Monitoring SystemDetailed Design of a Monitoring SystemVisualize Data in a Monitoring System
Monitor Client-side Errors
Focus on Client-side Errors in a Monitoring SystemDesign of a Client-side Monitoring System
Distributed Cache
System Design: The Distributed CacheBackground of Distributed CacheHigh-level Design of a Distributed CacheDetailed Design of a Distributed CacheEvaluation of a Distributed Cache's DesignMemcached versus Redis
Distributed Messaging Queue
System Design: The Distributed Messaging QueueRequirements of a Distributed Messaging Queue’s DesignConsiderations of a Distributed Messaging Queue’s DesignDesign of a Distributed Messaging Queue: Part 1Design of a Distributed Messaging Queue: Part 2Evaluation of a Distributed Messaging Queue’s DesignQuiz on the Distributed Messaging Queue’s Design
Pub-sub
System Design: The Pub-sub AbstractionIntroduction to Pub-subDesign of a Pub-sub System
Rate Limiter
System Design: The Rate LimiterRequirements of a Rate Limiter’s DesignDesign of a Rate LimiterRate Limiter AlgorithmsQuiz on the Rate Limiter’s Design
Blob Store
System Design: A Blob StoreRequirements of a Blob Store's DesignDesign of a Blob StoreDesign Considerations of a Blob StoreEvaluation of a Blob Store's DesignQuiz on the Blob Store's Design
Distributed Search
System Design: The Distributed SearchRequirements of a Distributed Search System's DesignIndexing in a Distributed SearchDesign of a Distributed SearchScaling Search and IndexingEvaluation of a Distributed Search's Design
Distributed Logging
System Design: Distributed LoggingIntroduction to Distributed LoggingDesign of a Distributed Logging Service
Distributed Task Scheduler
System Design: The Distributed Task SchedulerRequirements of a Distributed Task Scheduler's DesignDesign of a Distributed Task SchedulerDesign Considerations of a Distributed Task SchedulerEvaluation of a Distributed Task Scheduler's Design
Sharded Counters
System Design: The Sharded CountersHigh-level Design of Sharded CountersDetailed Design of Sharded CountersQuiz on the Sharded Counters' Design
Concluding the Building Blocks Discussion
AI Evaluation of Building Blocks in E-Commerce PlatformAI Evaluation of Building Blocks in Online Education SystemWrapping Up the Building Blocks DiscussionThe RESHADED Approach for System Design
Design YouTube
System Design: YouTubeRequirements of YouTube's DesignDesign of YouTubeEvaluation of YouTube's DesignThe Reality Is More ComplicatedQuiz on YouTube's Design
Design Quora
System Design: QuoraRequirements of Quora's DesignInitial Design of QuoraFinal Design of QuoraEvaluation of Quora’s Design
Design Google Maps
System Design: Google MapsRequirements of Google Maps' DesignDesign of Google MapsChallenges of Google Maps' DesignDetailed Design of Google MapsEvaluation of Google Maps' Design
Design a Proximity Service / Yelp
System Design: YelpRequirements of Yelp’s DesignDesign of YelpDesign Considerations of YelpQuiz on Yelp's Design
Design Uber
System Design: UberRequirements of Uber’s DesignHigh-level Design of UberDetailed Design of UberPayment Service and Fraud Detection in Uber DesignEvaluation of Uber’s DesignQuiz on Uber's Design
Design Twitter
System Design: TwitterRequirements of Twitter’s DesignHigh-level Design of TwitterDetailed Design of TwitterClient-side Load Balancer for TwitterQuiz on Twitter's Design
Design Newsfeed System
System Design: Newsfeed SystemRequirements of a Newsfeed System’s DesignDesign of a Newsfeed SystemEvaluation of a Newsfeed System’s Design
Design Instagram
System Design: InstagramRequirements of Instagram’s DesignDesign of InstagramDetailed Design of InstagramQuiz on Instagram’s Design
Design a URL Shortening Service / TinyURL
System Design: TinyURLRequirements of TinyURL's DesignDesign and Deployment of TinyURLEncoder for TinyURLEvaluation of TinyURL's DesignQuiz on TinyURL's Design
Design a Web Crawler
System Design: Web CrawlerRequirements of a Web Crawler's DesignDesign of a Web CrawlerDesign Improvements of a Web CrawlerEvaluation of Web Crawler's Design
Design WhatsApp
System Design: WhatsAppRequirements of WhatsApp’s DesignHigh-level Design of WhatsAppDetailed Design of WhatsAppEvaluation of WhatsApp’s DesignQuiz on WhatsApp’s Design
Design Typeahead Suggestion
System Design: The Typeahead Suggestion SystemRequirements of the Typeahead Suggestion System’s DesignHigh-level Design of the Typeahead Suggestion SystemData Structure for Storing PrefixesDetailed Design of the Typeahead Suggestion SystemEvaluation of the Typeahead Suggestion System’s DesignQuiz on the Typeahead Suggestion System’s Design
Design a Collaborative Document Editing Service / Google Docs
System Design: Google DocsRequirements of Google Docs’ DesignDesign of Google DocsConcurrency in Collaborative EditingEvaluation of Google Docs’ Design
Spectacular Failures
Introduction to Distributed System FailuresFacebook, WhatsApp, Instagram, Oculus OutageAWS Kinesis Outage Affecting Many OrganizationsAWS Wide Spread Outage
Concluding Remarks
Conclusions

Data Partitioning

Learn about data partitioning models along with their pros and cons.

We'll cover the following
  • Why do we partition data?
  • Sharding
    • Vertical sharding
    • Horizontal sharding
      • Key-range based sharding
        • Advantages
        • Disadvantages
      • Hash-based sharding
        • Advantages
        • Disadvantages
      • Consistent hashing
        • Advantages of consistent hashing
        • Disadvantages of consistent hashing
    • Rebalance the partitions
      • Avoid hash mod n
      • Fixed number of partitions
      • Dynamic partitioning
      • Partition proportionally to nodes
    • Partitioning and secondary indexes
      • Partition secondary indexes by document
      • Partition secondary indexes by the term
  • Request routing
    • ZooKeeper
  • Conclusion

Why do we partition data?

Level up your interview prep. Join Educative to access 70+ hands-on prep courses.