Bird
Raised Fist0
HLDsystem_design~12 mins

Cross-shard queries in HLD - Architecture Diagram

Choose your learning style10 modes available
System Overview - Cross-shard queries

This system handles queries that need data from multiple database shards. Each shard stores a portion of the data to improve scalability and performance. The system must combine results from different shards and return a unified response quickly and reliably.

Architecture Diagram
User
  |
  v
Load Balancer
  |
  v
API Gateway
  |
  v
Query Coordinator
 /      |       \
Shard 1 Shard 2  Shard N
  |       |        |
Cache   Cache    Cache
  |       |        |
DB 1    DB 2     DB N
Components
User
client
Sends query requests to the system
Load Balancer
load_balancer
Distributes incoming requests evenly to API Gateway instances
API Gateway
api_gateway
Receives requests and forwards them to the Query Coordinator
Query Coordinator
service
Splits cross-shard queries, sends sub-queries to shards, aggregates results
Shard 1
database_shard
Stores a subset of data and processes queries for that subset
Shard 2
database_shard
Stores a subset of data and processes queries for that subset
Shard N
database_shard
Stores a subset of data and processes queries for that subset
Cache
cache
Stores frequently accessed query results to reduce latency
DB 1
database
Persistent storage for Shard 1
DB 2
database
Persistent storage for Shard 2
DB N
database
Persistent storage for Shard N
Request Flow - 29 Hops
User → Load Balancer
Load Balancer → API Gateway
API Gateway → Query Coordinator
Query Coordinator → Cache
Cache → Query Coordinator
Query Coordinator → Shard 1
Query Coordinator → Shard 2
Query Coordinator → Shard N
Shard 1 → Cache
Cache → Shard 1
Shard 1 → DB 1
DB 1 → Shard 1
Shard 1 → Cache
Shard 1 → Query Coordinator
Shard 2 → Cache
Cache → Shard 2
Shard 2 → DB 2
DB 2 → Shard 2
Shard 2 → Cache
Shard 2 → Query Coordinator
Shard N → Cache
Cache → Shard N
Shard N → DB N
DB N → Shard N
Shard N → Cache
Shard N → Query Coordinator
Query Coordinator → API Gateway
API Gateway → Load Balancer
Load Balancer → User
Failure Scenario
Component Fails:Shard 2
Impact:Queries involving Shard 2 data fail or return incomplete results. Overall query response is delayed or partial.
Mitigation:Use replication for Shard 2 to failover to a replica. Query Coordinator retries on replica. Cache may serve stale data if DB is down.
Architecture Quiz - 3 Questions
Test your understanding
Which component is responsible for splitting a cross-shard query into sub-queries?
AQuery Coordinator
BLoad Balancer
CAPI Gateway
DCache
Design Principle
This design shows how to handle queries that span multiple database shards by splitting the query, querying shards in parallel, caching results to reduce latency, and aggregating responses. It balances scalability and performance while handling failures with replication.

Practice

(1/5)
1. What is the main purpose of cross-shard queries in a distributed database system?
easy
A. To encrypt data within a shard
B. To backup data from one shard to another
C. To split a large shard into smaller shards
D. To retrieve data from multiple shards to answer a single complex request

Solution

  1. Step 1: Understand what shards are

    Shards are parts of a database split to store data separately for scalability.
  2. Step 2: Identify the role of cross-shard queries

    Cross-shard queries combine data from multiple shards to answer complex requests that need data from more than one shard.
  3. Final Answer:

    To retrieve data from multiple shards to answer a single complex request -> Option D
  4. Quick Check:

    Cross-shard queries = combine data from shards [OK]
Hint: Cross-shard queries combine data from many shards [OK]
Common Mistakes:
  • Confusing cross-shard queries with data backup
  • Thinking cross-shard queries split shards
  • Assuming cross-shard queries encrypt data
2. Which component is responsible for splitting and merging queries in cross-shard query processing?
easy
A. Coordinator
B. Shard manager
C. Cache server
D. Load balancer

Solution

  1. Step 1: Identify query processing roles

    The coordinator handles query distribution and result merging across shards.
  2. Step 2: Match roles to components

    Shard manager manages shards but does not split/merge queries; cache server stores data temporarily; load balancer distributes traffic but not queries.
  3. Final Answer:

    Coordinator -> Option A
  4. Quick Check:

    Coordinator splits and merges queries [OK]
Hint: Coordinator splits and merges cross-shard queries [OK]
Common Mistakes:
  • Confusing shard manager with coordinator
  • Thinking cache server merges queries
  • Assuming load balancer handles query splitting
3. Consider a system with 3 shards. A cross-shard query is sent to all shards in parallel. If each shard takes 100ms, 120ms, and 80ms respectively to respond, what is the total time to get the combined result?
medium
A. 300ms
B. 80ms
C. 120ms
D. 100ms

Solution

  1. Step 1: Understand parallel query execution

    Queries run in parallel, so total time is the longest shard response time.
  2. Step 2: Identify the longest response time

    Shard times are 100ms, 120ms, and 80ms. The longest is 120ms.
  3. Final Answer:

    120ms -> Option C
  4. Quick Check:

    Parallel time = max shard time = 120ms [OK]
Hint: Total time = longest shard response in parallel [OK]
Common Mistakes:
  • Adding all shard times instead of taking max
  • Choosing shortest shard time
  • Confusing sequential with parallel execution
4. A cross-shard query coordinator is returning incomplete results. Which of the following is the most likely cause?
medium
A. Coordinator failed to merge all shard responses
B. Shard keys are not evenly distributed
C. Cache server is overloaded
D. Load balancer is routing traffic incorrectly

Solution

  1. Step 1: Analyze incomplete results cause

    Incomplete results usually mean some shard data was not included in the final output.
  2. Step 2: Identify coordinator role in merging

    The coordinator merges shard responses; failure here causes missing data.
  3. Final Answer:

    Coordinator failed to merge all shard responses -> Option A
  4. Quick Check:

    Incomplete results = merge failure [OK]
Hint: Incomplete results often mean merge failure by coordinator [OK]
Common Mistakes:
  • Blaming shard key distribution for missing data
  • Assuming cache overload causes missing data
  • Thinking load balancer affects query merging
5. You want to reduce latency of cross-shard queries in a large distributed system. Which combination of strategies is best?
hard
A. Run queries sequentially on each shard and use a load balancer to distribute traffic
B. Use a coordinator to parallelize queries and implement caching of frequent results
C. Increase shard size and avoid caching to reduce complexity
D. Remove the coordinator and let clients query shards directly

Solution

  1. Step 1: Identify strategies to reduce latency

    Parallel query execution via coordinator reduces wait time; caching avoids repeated work.
  2. Step 2: Evaluate options

    Use a coordinator to parallelize queries and implement caching of frequent results uses both parallelism and caching, best for latency. Others increase complexity or remove coordination, causing delays.
  3. Final Answer:

    Use a coordinator to parallelize queries and implement caching of frequent results -> Option B
  4. Quick Check:

    Parallel + caching = lower latency [OK]
Hint: Parallel queries plus caching reduce latency best [OK]
Common Mistakes:
  • Thinking bigger shards reduce latency
  • Running queries sequentially increases latency
  • Removing coordinator causes uncoordinated delays
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard