Best Practices Question - Single or Multiple Databases

  • This is a best practices DBA  / Application design Question

     

    Here’s the scenario:

     

    Currently have multiple MS Access Backend/FrontEnd apps built to handle separate operational duties in the company.  They share a lot of information back and forth.

     

    Now -> Moving to SQL Server

     

    What is the best practice for Database separation:

     

    Option 1.) Since the Apps share so much information, we can create one big database and just use a good object naming convention so it’s easy to identify what processes the objects support

     

    <- Or ->

     

    Option 2.) Create multiple databases (to support each operational function) and just develop the applications with full Database+User+ObjectName qualifications to use the different databases.

     

    For reference: these databases will all live on the same server, in the same server instance.

     

    What will give the best performance?

     

    What will give the best recovery model?  It seems that Option 2 gives great flexibility should a database have problems.

     



    The ~BEST~ solution is always the simplest one!

  • I would run option 2 with all the db's on full recovery...this gives you the advantage of having seperate filegroups for each of the apps (even though you could use filegroups within a single db for this), and of course recoverability. Bear in mind that if you had to restore a database due to a problem it would mean that jsut a single app was unavailable, whereas with a single db you lose that then you lose everything unti you are up and running again.



    Shamless self promotion - read my blog http://sirsql.net

  • It's hard to make a good recommendation from a very limited description. If these are small dbs, I'm not sure the recovery time and all app availability matters. If we're talking MBs, even 10s, we're in the minutes of restore time. That being said, different groups or clients have different tolerances for downtime.

    I might be inclined to do something like Andy Warren does. The shared information from his  dbs is replicated from a master and then each client has their own tables in each db. This way he has central updates for many things, which get replicated out, but individual apps have their own data separated out.

  • I've not noticed a difference splitting things out. The biggest caution to consider is if you need to do a restore, making sure you remain transactionally consistent across db's. As long as you can restore any single db, you're fine. I like to keep stuff in a single db until I see a reason to split stuff - easy enough to do if it comes to that, replace tables with views to other dbs. Not sure there is a best practice here, it's knowing your environment and trying to guess growth and direction.

Viewing 4 posts - 1 through 3 (of 3 total)

You must be logged in to reply to this topic. Login to reply