History
The company I work for had two databases, DB A and DB B, on two different servers. A contains information pulled from a COTS application database in addition to information from our own developed applications. This was done to ensure the COTS application database was never disrupted as it is required 24/7/365.
Some of our users required raw data from A, thus B was born. B pulls data from A into it's own local tables and provides views for users. (I am not a fan of this design at all)
Now
Upgrades and migrations happened. B eventually found it's way onto the same server as A. We are considering cleaning up our database structure and have come up with several options. Keep in mind that access to data is a top priority for the users, but we want to cut down on costs. For simplicity, lets call the COTS database Z
Each option begins with: A pulls data from Z via OpenQuery.
- The data is stored in 2 different tables on
A, one for applications, and one for the views. The views are moved toA. This method benefits from never having data unavailable to users if an application lock the first table and being able to removeBall together. - The data is stored in 1 table in
A. A copy is also stored inBat either the same time or later via scheduled procedure (I'm thinking the former). The views stored inBwill continue to access the data inB - The data is stored in 2 different tables on
A, similar to option 1. DatabaseBis maintained in order to strictly provide views to the users fromA. This would require the least amount of work for us and our tech illiterate users. Though, it seems silly to maintain a DB just because we are too lazy to set up some accounts and permissions.
I would really love to be able to have an option where data from Z is stored in 1 table in A, and everyone plays nicely, but that's not the case. Although we are the owners of this data, there are other groups that utilize it too. They've managed to lock our database on several occasions, so we're being safe.
I am the type of person who likes to try to make things as efficient as possible, so I am really leaning toward option 1, but many of my coworkers are liking option 3 and some even option 2. 1 and 2 are pretty darn similar, so I was wondering what kind of overhead is involved with accessing another database within the same server.
Perhaps there is an option we have not considered?
EDIT
Note: The tables in question are read only.