Reading List: Multi-Tenancy

As promised here is the trail I made while reading up on Multi-Tenancy.

One of the initial architectural decisions that I need to make is whether to run as a single-tenant ( One database per client ) or a multi-tenant ( Each database has many clients ). My initial thoughts were multi-tenant, to save on database admin overheads and overall running costs. I didn’t really know what to base my decision on though. So over the course of a couple of days. I did a lot of reading and listening.

StackOverflow is a great place to start for reading because the best answers are based on the experiences of real developers.
http://stackoverflow.com/questions/2202049/how-to-design-a-saas-database
http://stackoverflow.com/questions/13348/what-are-the-advantages-of-using-a-single-database-for-each-client
http://stackoverflow.com/questions/255616/should-i-use-a-single-or-multiple-database-setup-for-a-multi-client-application

After reading these answers I at least know the name of what I’m looking for. Multi-tenancy, which makes sense, putting multiple tenants into one application.

Those questions also lead me to to the Stack Overflow podcast, which gives us Spolsky’s point of view. At this point I’m erring back towards one database per client.
https://stackoverflow.fogbugz.com/default.asp?W24218

The wikipedia article is great summary once you know the name of what you are looking for.
http://en.wikipedia.org/wiki/Multitenancy

Screencast from salesforce; if they can do it with that many users, multi-tenancy on my scale would be a cinch.
http://www.salesforce.com/community/crm-best-practices/dreamforce08-developer-sessions/2008-tdf-plattech-multitenant-magic.jsp

Some slides from linked in:
http://www.slideshare.net/linkedin/linkedins-communication-architecture
http://www.slideshare.net/linkedin/linked-in-javaone-2008-tech-session-comm

MSDN often has some really good articles, this one is not too SQLServer specific.
http://msdn.microsoft.com/en-us/library/aa479086.aspx

The table of “Days between Failure” is putting me right off multiple databases.
http://scale-out-blog.blogspot.com/2010/01/exploring-saas-architectures-and.html

Nice overview
http://www.saasblogs.com/2009/04/24/is-multi-tenancy-more-important-than-just-cost-savings/

Side-tracked into row level security, but I don’t think this is much use to me.
http://www.sqlmaestro.com/resources/all/row_level_security_mysql/

The outcome? Multi-tenancy is too useful a feature to ignore, so I will definitely be starting off with all clients going into one database. I  may spin off a separate database for shared data ( e.g. Users ) but I’ll have to re-examine that later.

However, I’m certain that for some customers multi-tenancy won’t be good enough. So at a later date I will offer single tenant solutions, either for self-hosting or as a premium feature for hosted.

Leave a Reply

Your email address will not be published. Required fields are marked *