> I don't think it's a weak argument at all. By combining data,
> you run the risk that a bug in your code could reveal their
> data to a competitor. At least with database isolation, that
> becomes far less likely.

Hmm. I guess this is one of those situations where it comes down to what
you think the risk is. I could argue that if you have a DB per customer,
and presumably the tables have the same structure in each DB, all you've
done is move the coding error from the WHERE clause that filters by
customer to the code that selects the connection string.

I'm willing to respect your opinion that the latter is an easier mistake
to make, but I don't think we can objectively measure the relative
liklihood.

> Besides, from a scalability standpoint, even if you have
> moderate amounts of data per client, when you have many
> clients, the database becomes slow. Backup and taking clients
> out is much easier with single databases.

It's true that partitioning is the key to scalability, and customer
boundaries make a great way to decide what your partitions should look
like. I'd buy this argument over liklihood of coding errors any day.
Against this weigh increased cost of maintenance (admin costs go up with
the number of boxes, although not linearly). Perhaps that's not a factor
in this case.

> I've been in both boats, and I'd take separate databases every time.

I don't think it's a slam dunk, but I can certainly see the argument for
some scenarios.

You can read messages from the Advanced DOTNET archive, unsubscribe from Advanced 
DOTNET, or
subscribe to other DevelopMentor lists at http://discuss.develop.com.

Reply via email to