Azure storage for multi-tenant application. We are working on to develop a multi-tenant application on Azure, with approximate 10,000 tenants and approximate 100 GB to 1 TB data storage is required per tenant. The application is to maintain the documents and binary content along with the metadata for each tenant separately. We are thinking towards Azure Block Blob storage to store the data. Since, the requirement is to maintain the data separate for each tenant, we came across with the following approach.
- Create a separate storage account for each tenant
- That helps to maintain the usage tenant wise, which again helps on billing as well
- Create a separate container in each storage account to segregate based on category
- Store document in block blob storage along with the metadata.
We have following queries with respect to the our approach:
- Is it good idea to store documents or binary content in block blob along with the metadata? Or is there any better way of achieving it (probably using SQL Azure for metadata and blob for content, or better)?
- How to query the data with some filter condition on metadata? i.e. retrieve all blob where metadat1 = value1 and metadata2=value2
- Is it good idea to create a separate storage account for each tenant?
a. If not, then what would be the model thru which we can store tenant specific data in the Azure storage and application can efficiently use them? - Is there bandwidth or any other limitation on number of request to read/write data on Blob storage in context of scalability and high availability?
- As per the azure pricing model, they charge slab wise for the storage, i.e. first 1 TB $0.095 / GB, next 49 TB $0.08 / GB. This charges are application on per storage account or on per subscription?
a. Same way, transaction cost is applicable on per storage account or on per subscription?