Question

If I am building a CRM web application to sell as a membership service, what is the best method to design and deploy the database?

Do I have 1 database that houses 100s of records per table or deploy multiple databases for different clients?

Is it really an issue to use a single database since I believe sites like Flickr use them?

Was it helpful?

Solution

Multiple clients is called "multi-tenant". See for example this article "Multi-Tenant Data Architecture" from Microsoft.

OTHER TIPS

In a situation like a CRM system, you will probably need to have separate instances of your database for each customer.

I say this because if you'd like larger clients, most companies have security policies in place regarding customer data. If you store their customer data in the same database as another customer, you're running the risk of exposing one companies confidential data to another company (a competitor, etc.).

Sites like Flickr don't have to worry about this as much since the majority of us out on the Interwebs don't have such strict policies regarding our personal data.

Long term it is easiest to maintain one database with multiple clients' data in it. Think about deployment, backup, etc. However, this doesn't keep you from having several instances of this database, each containing a subset of the full client dataset. I'd recommend to grow the number of databases after you have established the usefulness/desirability of your product. Having complex infrastructure is not necessary if you have no traffic....

So, I'd just put a client id in the relevant tables and smile when client 4 comes in and the extent of your new deployment is one insert statement.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top