Data Architecture Options for Multi-tenant applications
Posted by decipherinfosys on April 15, 2010
A client of ours is in the requirements and initial design phase of developing a multi-tenant application and the question that was raised in yesterday’s meeting was about the different options from a data architecture perspective for such applications. Let’s clarify what is meant by multi-tenant applications:
A multi-tenant application is one which uses the same instance of the software to service many client organizations(tenants). In contrast with a multi-tenant application, a multi-instance application separates out the different instances of the software for different client organizations(tenants). In a multi-tenant application, many tenants share the same application software & OS which runs on the same hardware and uses the same data storage mechanism. The separation between the tenants is done by using a good application design so that the tenants have a view of their own data set and nothing else.
As you can understand from above, the two sides of the equation are:
a) Completed isolated databases/schemas so that each tenant has their own database/schema, OR
b) A shared schema where all the tenants are in the same schema.
There are a lot of pros and cons of a multi-tenant application. Here is an excellent MSDN article on this topic which covers in great details the discussion on the different data architectures that can be used for multi-tenant applications and what are their pros & cons. A must read for anyone faced with this design/architecture issue.