Bird
Raised Fist0
Microservicessystem_design~20 mins

Database decomposition strategy in Microservices - Practice Problems & Coding Challenges

Choose your learning style10 modes available

Start learning this pattern below

Jump into concepts and practice - no test required

or
Recommended
Test this pattern10 questions across easy, medium, and hard to know if this pattern is strong
Challenge - 5 Problems
🎖️
Database Decomposition Master
Get all challenges correct to earn this badge!
Test your skills under time pressure!
🧠 Conceptual
intermediate
2:00remaining
Understanding database decomposition in microservices

Which of the following best describes the main goal of database decomposition in a microservices architecture?

ATo replicate the entire database for each microservice to ensure data consistency.
BTo merge multiple small databases into one large database to simplify data management.
CTo split a large monolithic database into smaller, service-specific databases to reduce coupling and improve scalability.
DTo use a single shared database schema for all microservices to avoid data duplication.
Attempts:
2 left
💡 Hint

Think about how microservices aim to be independent and scalable.

Architecture
intermediate
2:00remaining
Choosing a decomposition strategy

You have a monolithic e-commerce database with tables for users, orders, products, and payments. Which decomposition strategy best fits splitting this database for microservices?

ADecompose by business capability: create separate databases for user management, order processing, product catalog, and payment services.
BDecompose by data type: separate databases for numeric data, text data, and date data.
CDecompose by database size: split the database into equal-sized chunks regardless of data type.
DDecompose by access frequency: put frequently accessed tables in one database and rarely accessed tables in another.
Attempts:
2 left
💡 Hint

Think about how microservices align with business functions.

scaling
advanced
2:00remaining
Scaling challenges with database decomposition

After decomposing a monolithic database into multiple microservice databases, which challenge is most likely to arise when services need to perform transactions involving multiple databases?

AAvoiding data duplication by sharing the same database schema.
BIncreasing the size of a single database to handle all transactions.
CReducing network latency by merging all databases back into one.
DEnsuring data consistency across distributed databases without using distributed transactions.
Attempts:
2 left
💡 Hint

Consider the difficulty of keeping data consistent when it is spread across services.

tradeoff
advanced
2:00remaining
Tradeoffs in database decomposition strategies

What is a common tradeoff when choosing to decompose databases by business capability in microservices?

AImproved service independence but increased complexity in data consistency and cross-service queries.
BFaster development cycles but higher risk of data loss.
CSimplified data management but reduced service scalability.
DLower operational costs but slower response times.
Attempts:
2 left
💡 Hint

Think about what happens when data is split but services still need to work together.

estimation
expert
2:00remaining
Estimating capacity for decomposed microservice databases

You have decomposed a monolithic database into three microservice databases: UserDB, OrderDB, and ProductDB. UserDB handles 1000 requests/sec, OrderDB 500 requests/sec, and ProductDB 2000 requests/sec. If each request reads 5 KB on average, what is the total read throughput in MB/sec across all databases?

AApproximately 8.5 MB/sec
BApproximately 17.5 MB/sec
CApproximately 12.5 MB/sec
DApproximately 25 MB/sec
Attempts:
2 left
💡 Hint

Calculate total requests per second multiplied by average data size, then convert KB to MB.

Practice

(1/5)
1. Which of the following best describes vertical decomposition in database design for microservices?
easy
A. Dividing a database by rows to distribute data across multiple databases
B. Combining multiple databases into one large database
C. Separating databases based on geographic location
D. Splitting a database by grouping related tables or columns into separate databases

Solution

  1. Step 1: Understand vertical decomposition

    Vertical decomposition means splitting a database by grouping related tables or columns, often by business capability or domain.
  2. Step 2: Compare with other options

    Horizontal decomposition splits by rows, geographic is location-based, and combining is the opposite of decomposition.
  3. Final Answer:

    Splitting a database by grouping related tables or columns into separate databases -> Option D
  4. Quick Check:

    Vertical decomposition = splitting by columns/tables [OK]
Hint: Vertical = split by columns or tables, horizontal = split by rows [OK]
Common Mistakes:
  • Confusing vertical with horizontal decomposition
  • Thinking vertical means geographic split
  • Assuming decomposition means combining databases
2. Which of the following is the correct description of horizontal decomposition in microservices database design?
easy
A. Dividing data by rows, such as by customer or region
B. Splitting data by columns or tables based on functionality
C. Merging multiple databases into one for simplicity
D. Separating databases by different database engines

Solution

  1. Step 1: Define horizontal decomposition

    Horizontal decomposition splits data by rows, for example, dividing customers by region or user ID ranges.
  2. Step 2: Eliminate incorrect options

    Splitting data by columns or tables based on functionality describes vertical decomposition, C is merging (not decomposition), and D is about engines, not decomposition strategy.
  3. Final Answer:

    Dividing data by rows, such as by customer or region -> Option A
  4. Quick Check:

    Horizontal decomposition = split by rows [OK]
Hint: Horizontal = split by rows, vertical = split by columns [OK]
Common Mistakes:
  • Mixing horizontal with vertical decomposition
  • Thinking horizontal means merging databases
  • Confusing database engine separation with decomposition
3. Consider a microservices system where the user database is split by region using horizontal decomposition. If a query requests all users from Europe, which database(s) will be queried?
medium
A. Only the database shard containing European users
B. All database shards regardless of region
C. Only the database shard containing North American users
D. A combined database with all users merged

Solution

  1. Step 1: Understand horizontal decomposition by region

    Horizontal decomposition splits data by rows, so each shard holds users from a specific region.
  2. Step 2: Identify which shard to query

    Querying European users targets only the shard holding European data, not others.
  3. Final Answer:

    Only the database shard containing European users -> Option A
  4. Quick Check:

    Query targets relevant shard only [OK]
Hint: Query only the shard holding requested data region [OK]
Common Mistakes:
  • Querying all shards unnecessarily
  • Querying wrong region shard
  • Assuming data is merged in one database
4. A microservices team decomposed their database vertically but notices frequent cross-service joins causing latency. What is the likely cause and fix?
medium
A. Cause: Using NoSQL instead of SQL; Fix: Switch to SQL databases
B. Cause: Horizontal decomposition; Fix: Merge databases into one
C. Cause: Poor vertical decomposition causing cross-service joins; Fix: Redesign to reduce cross-service dependencies
D. Cause: Too many database shards; Fix: Increase shards further

Solution

  1. Step 1: Identify problem with vertical decomposition

    Vertical decomposition splits by tables/domains, but if services need to join data often, it causes latency.
  2. Step 2: Recommend fix

    Redesign to reduce cross-service joins by better domain boundaries or data duplication to avoid latency.
  3. Final Answer:

    Poor vertical decomposition causing cross-service joins; Fix: Redesign to reduce cross-service dependencies -> Option C
  4. Quick Check:

    Cross-service joins cause latency; fix by better decomposition [OK]
Hint: Cross-service joins mean bad vertical split; redesign domains [OK]
Common Mistakes:
  • Confusing horizontal with vertical decomposition issues
  • Thinking merging databases fixes latency
  • Blaming database type instead of design
5. A company wants to scale their microservices database by splitting user data by country (horizontal) and splitting user profile and orders into separate databases (vertical). What is the best approach to handle queries that need both profile and order data for users in a specific country?
hard
A. Perform cross-database joins directly on all shards for each country
B. Use API composition to aggregate data from profile and order services after querying country-specific shards
C. Merge profile and order data into a single database shard per country
D. Store all user data in one large database to avoid complexity

Solution

  1. Step 1: Understand combined vertical and horizontal decomposition

    Data is split horizontally by country and vertically by data type (profile, orders), so data is in different shards and databases.
  2. Step 2: Choose best query approach

    Cross-database joins are expensive and complex; merging data loses benefits. API composition aggregates data from services after querying relevant shards efficiently.
  3. Final Answer:

    Use API composition to aggregate data from profile and order services after querying country-specific shards -> Option B
  4. Quick Check:

    API composition handles multi-db queries efficiently [OK]
Hint: Use API composition to combine data from vertical and horizontal splits [OK]
Common Mistakes:
  • Trying cross-database joins causing latency
  • Merging databases losing scalability
  • Ignoring decomposition benefits for simplicity