What are the advantages of using a single database for EACH client?
Here are the some advantages:
- Each customer has a unique connection string stored in a master customer database.
- The database is designed so that everything is segmented by CustomerID, even if there is a single customer on a database.
- Scripts are created to migrate all customer data to a new database if needed, and then only that customer’s connection string needs to be updated to point to the new location.
This allows for using a single database at first, and then easily segmenting later on once you’ve got a large number of clients, or more commonly when you have a couple of customers that overuse the system.
we can make certain that our shopper is merely seeing their information.
The shopper with fewer records does not have to be compelled to pay the penalty of getting to contend with many thousands of records which will be within the information however not theirs.
I do not care however well each thing is indexed and optimized there’ll be queries that confirm that they need to scan every record.
As for the pain of upgrading a thousand information servers directly, some fairly straightforward automation ought to pay attention of that.
As long as every information maintains a standardized schema, then it will not very be a difficulty. we tend to additionally use the information per consumer approach, and it works well for us
In a database-centric application that is designed for multiple clients, I’ve always thought it was “better” to use a single database for ALL clients – associating records with proper indexes and keys. In listening to the Stack Overflow podcast, I heard Joel mention that FogBugz uses one database per client (so if there were 1000 clients, there would be 1000 databases). What are the advantages of using this architecture?
I understand that for some projects, clients need direct access to all of their data – in such an application, it’s obvious that each client needs their own database. However, for projects where a client does not need to access the database directly, are there any advantages to using one database per client? It seems that in terms of flexibility, it’s much simpler to use a single database with a single copy of the tables. It’s easier to add new features, it’s easier to create reports, and it’s just easier to manage.
I was pretty confident in the “one database for all clients” method until I heard Joel (an experienced developer) mention that his software uses a different approach — and I’m a little confused with his decision…
I’ve heard people cite that databases slow down with a large number of records, but any relational database with some merit isn’t going to have that problem – especially if proper indexes and keys are used.
Any input is greatly appreciated!