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
Recall & Review
beginner
What is database decomposition in microservices?
Database decomposition means splitting a big database into smaller, independent databases for each microservice. This helps services work independently and scale better.
Click to reveal answer
beginner
Name two common strategies for database decomposition.
1. Vertical decomposition: splitting by business capabilities or domains. 2. Horizontal decomposition: splitting by rows or data ranges.
Click to reveal answer
intermediate
Why is it important for each microservice to have its own database?
Having separate databases avoids tight coupling, allows independent scaling, and reduces the risk of one service affecting others.
Click to reveal answer
intermediate
What challenges arise from database decomposition in microservices?
Challenges include data consistency across services, complex queries needing data from multiple databases, and managing distributed transactions.
Click to reveal answer
advanced
How can eventual consistency help in database decomposition?
Eventual consistency allows services to update their own databases independently and sync changes asynchronously, improving performance and availability.
Click to reveal answer
What is the main goal of database decomposition in microservices?
ATo split a large database into smaller, service-specific databases
BTo merge multiple databases into one big database
CTo create backups of the database
DTo encrypt the database for security
✗ Incorrect
Database decomposition splits a large database into smaller ones owned by individual microservices.
Which decomposition strategy splits data by business capabilities?
AHorizontal decomposition
BFunctional decomposition
CData replication
DVertical decomposition
✗ Incorrect
Vertical decomposition splits the database by business domains or capabilities.
What is a common challenge when using separate databases per microservice?
AFaster queries
BData consistency across services
CSimpler backups
DReduced network traffic
✗ Incorrect
Maintaining data consistency across multiple databases is a key challenge.
Which approach helps microservices sync data asynchronously?
AStrong consistency
BSynchronous replication
CEventual consistency
DMonolithic database
✗ Incorrect
Eventual consistency allows asynchronous syncing between services.
Why should microservices avoid sharing a single database?
AIt increases coupling and reduces scalability
BIt improves data security
CIt simplifies deployment
DIt reduces data duplication
✗ Incorrect
Sharing a database creates tight coupling and limits independent scaling.
Explain the main strategies for decomposing a database in a microservices architecture and their benefits.
Think about splitting data by function or by data slices.
You got /3 concepts.
Describe the challenges that arise from database decomposition and how eventual consistency can address some of them.
Consider what happens when data is spread across services.
You got /4 concepts.
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
Step 1: Understand vertical decomposition
Vertical decomposition means splitting a database by grouping related tables or columns, often by business capability or domain.
Step 2: Compare with other options
Horizontal decomposition splits by rows, geographic is location-based, and combining is the opposite of decomposition.
Final Answer:
Splitting a database by grouping related tables or columns into separate databases -> Option D
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
Step 1: Define horizontal decomposition
Horizontal decomposition splits data by rows, for example, dividing customers by region or user ID ranges.
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.
Final Answer:
Dividing data by rows, such as by customer or region -> Option A
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
Step 1: Understand horizontal decomposition by region
Horizontal decomposition splits data by rows, so each shard holds users from a specific region.
Step 2: Identify which shard to query
Querying European users targets only the shard holding European data, not others.
Final Answer:
Only the database shard containing European users -> Option A
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
Step 1: Identify problem with vertical decomposition
Vertical decomposition splits by tables/domains, but if services need to join data often, it causes latency.
Step 2: Recommend fix
Redesign to reduce cross-service joins by better domain boundaries or data duplication to avoid latency.
Final Answer:
Poor vertical decomposition causing cross-service joins; Fix: Redesign to reduce cross-service dependencies -> Option C
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
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.
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.
Final Answer:
Use API composition to aggregate data from profile and order services after querying country-specific shards -> Option B
Quick Check:
API composition handles multi-db queries efficiently [OK]
Hint: Use API composition to combine data from vertical and horizontal splits [OK]