sql server - Multiple Databases Vs Single Database with logically partitioned data -


I am considering a database design issue.

Technology Stack

/ Strong>

MVC4, .NET 4.X , Unit Framework 5, SQL Server 2012, ASP.NET Subscription Framework

Number of Users

We intend to complete approximately 1000 customers, Which will be an average of 20 users.

Question

Should we design the database and thus in such a way the application tables are divided logically, that is, all clients To separate the data, use the same tables with a partition guide.

OR

Go to many databases, new features are proven difficult during launch and bug fixing, but potentially scaling can be allowed?

Alerts: One of the tables contains binary columns that store files (maximum 5 MB per record)

In addition to this we need to consider membership settings tables, Which we will extend to another custom table and log the users logically in a partition guide.

You want you to have used different databases:

  • If you ever want to allow yourself to the database in the client or superuvers.
  • If you ever want to restore a customer's database without affecting others' data
  • If there are regulatory problems to control your data and data violations, and you realize that these rules can only be completed different databases.
  • If you ever want to transfer your customer data to more than one database server or otherwise scale out, or large / more important customers, in a different part of the different T hardware world.
  • If you ever want to easily delete archival and old customer data
  • If your customers pay attention to keeping their data in mind, and they discover that
  • if your data is restricted and you only have data for a client Instead of creating the entire database
  • When you forget to maintain alertness and only one goes through the query that did not include AND customer ID = @CustomerID . Hint: Use a script permission tool, or schema, or wrap it up with all the tables with ideas, including WHERE customer ID = SomeUserReturningFunction () , or some of these combinations.
  • When you get permission wrong at the application level and customer data is in contact with the wrong customer.
  • When you want different levels of backup and recovery protection for different clients.
  • When you did not allow the possibility, create a basic framework, provision, configure, deploy, and otherwise spin up / down the new database It is important to do Some class people require access to data from many customers, and you need a layer of intangible at the top of customer because WHERE CustomerID = @CustomerID

You will be happy that you have used different databases:

  • When a customer computer There is a good burst and 999 customers are completely unaffected.

You want you to have used a database:

  • When you search for a bug that is all 1000 affects clients and deploying 1000 database bites is difficult to deploy.
  • When you get wrong permissions at the database level and customer data is in contact with the wrong customer.
  • When you do not allow the need to use all the databases of certain sections of people (maybe two clients merge).
  • When you try to grow the previous 32,767 customers / databases on the same server and find out that it is the maximum in SQL Server 2012.
  • When you consider that managing 1,000+ databases is a big nightmare that you've ever thought of.

Just because I've listed more reasons for someone does not mean that it is better.

Some readers may get the price from this MSDN article:


Comments

Popular posts from this blog

ios - How do I use CFArrayRef in Swift? -

eclipse plugin - Run java code error: Workspace is closed -

c - Error on building source code in VC 6 -