Abstract
The rise of cloud computing and its elastic, on-demand resource provisioning introduces the need for a flexible and scalable multi-tenant architecture. In a multi-tenant application every tenant (client) makes use of shared application instances, but each tenant typically has its own user data. The shared application instance behaves like a private instance by guaranteeing both data separation and performance separation for every tenant. As the number of tenants increases, the amount of data grows. A scalable solution for the storage is needed, allowing tenant data to be divided over multiple database instances, but taking into account performance isolation and custom data assurance policies. In this paper we introduce an abstraction layer for achieving high scalability for the storage of tenant data. This layer uses data allocation algorithms to determine an acceptable allocation of tenant data to different databases. We describe a mathematical model for the allocation of tenant data which can be optimized using existing linear programming techniques, and introduce the BDAA-n and FDAA, two algorithms that will find an optimal allocation of data by iterating over the possible permutations. The proposed solutions are evaluated based on their flexibility, complexity and efficiency. The flexibility of the BDAA and FDAA makes them easy to customize and extend to fit most scenarios, but the algorithms will achieve best results for tenants with a limited number of subtenants. Linear programming is an alternative for tenants with a higher number of subtenants, but the customizability of the algorithm for specific use cases is limited due to the need for linear functions.