What is Shared Database

Design Pattern


Today we will see what is Shared Database Design Pattern is.

Previously we saw about What is Microservice? and the principles followed while developing MSA and the available design patterns. also, we saw Asynchronous Messaging Design pattern.

What is Shared Database Design Pattern?

For every web service application, there is a massive amount of data present. So when the application is broken down from monolithic to microservice, It is necessary that each application have a sufficient amount of data to process the request.

So, we can have a database for each service or it can have a shared database.

Yes, we can use a database per service or shared database to solve many problems.

Below are a few of the problems,

  • Data duplication and inconsistency
  • Different application has different storage requirements and different infrastructure.
  • Few transactions can query the data with multiple services.
  • De-normalization of data

In order to solve the first 3 problems, we can go for database per service, as it will be accessed by the microservice API itself.

So each web service will have its own databased ID, which the other services do not have direct access to.

📌 Note: Limit the number of databases to 2-3 for the microservices; else, scaling up will be a problem.

What is Shared Database Design Pattern?

Shared Database Design Pattern: Example


Example1: Partially having a shared database for the microservices.

In the above image, If you see the Contact & Student services shares a database but whereas Fees has its database. (While designing the MSA for the application we can decide about how our application can utilize the database).

Example 2: Partially having a shared database for the microservices.

In the next example, if you see the image, the entire microservices uses the one common shared database. this way the database is one and multiple services use it to persist or read data.

In the next article, we will see Asynchronous Messaging design pattern.





November 14, 2021

Senior Developer | Java & C#.NET | 10++ years of IT experience.

Planning to learn ReactJS or Angular or Flutter.!

Pin It on Pinterest

Share This
%d bloggers like this: