February 9, 2016 at 3:54 am
I need some advice on database design direction where we want to combine 4 distinct product databases into a single database. I was contemplating the following options:
Which above option would be beneficial for such a project and/or what other considerations required for the database structure? Or, is there other options not considered?
February 9, 2016 at 6:19 am
Option 1, using separate schema, dbo, product1, product2, product3, product4, seems a good choice. Move common things to the dbo schema.
Any migration to one database in future?
February 9, 2016 at 6:26 am
Thank you, in the future for now I was advised that no requirement to merge data from previous installations at this point in time however, the requirement might change after a few months. 🙂
February 10, 2016 at 5:06 am
Yeah, I'd go with option 1.
However, are these different databases currently on different development and release cycles? If so, putting them all into a single database might prove to be a bit of a horror show. I've seen it be a major problem in the past. Different teams make different changes on varying schedules. You have two options. You'll have to branch the releases (which means different databases in development) and then merge them through QA or some other pre-production stage, and then deal with all the discrepancies as the varying changes to the database have to get resolved. The other option is to get the development teams to coordinate their releases and communicate well with each other. Good luck.
"The credit belongs to the man who is actually in the arena, whose face is marred by dust and sweat and blood"
- Theodore Roosevelt
Author of:
SQL Server Execution Plans
SQL Server Query Performance Tuning
February 10, 2016 at 7:01 am
Yes, they are different databases with their own release cycle. However, I impressed that I will perform database modifications required to insure performance, organization and I hope a better database design. So, there needs to be more control over changes to validate if a change on one system affects other systems at least that is the idea so, your latter idea of better coordination between development teams will definitely be the key here.
February 10, 2016 at 7:22 am
I'm assuming the goal here is to consolidate multiple OLTP databases into one OLTP database, and each existing line of business application will (at least for now) continue it's own life cycle separately, although they mare share some common tables. I'd suggest going with one schema for each application with a separate schema for common shared tables. Static or periodically reloaded reference tables (lookups, zip codes, etc.) should go in one schema, perhaps called [Reference], and shared transaction tables (Customer, PurchaseOrders, etc.) should go in it's own schema called something like [Customer] or [Sales].
Also, for the shared schemas, you can implement application specific view(s) for each table, thus creating an abstraction layer to accomodate special naming conventions, filtering, or additional columns.
"Do not seek to follow in the footsteps of the wise. Instead, seek what they sought." - Matsuo Basho
February 10, 2016 at 7:42 am
Be prepared for a lot of friction. It's actually difficult to coordinate releases of this type.
"The credit belongs to the man who is actually in the arena, whose face is marred by dust and sweat and blood"
- Theodore Roosevelt
Author of:
SQL Server Execution Plans
SQL Server Query Performance Tuning
February 10, 2016 at 8:17 am
Eric M Russell (2/10/2016)
I'm assuming the goal here is to consolidate multiple OLTP databases into one OLTP database, and each existing line of business application will (at least for now) continue it's own life cycle separately, although they mare share some common tables. I'd suggest going with one schema for each application with a separate schema for common shared tables. Static or periodically reloaded reference tables (lookups, zip codes, etc.) should go in one schema, perhaps called [Reference], and shared transaction tables (Customer, PurchaseOrders, etc.) should go in it's own schema called something like [Customer] or [Sales].Also, for the shared schemas, you can implement application specific view(s) for each table, thus creating an abstraction layer to accomodate special naming conventions, filtering, or additional columns.
Yes essentially we will be consolidating these databases to produce one product or suite. Yes, these are good points as well it seems like I have to brush up on Schema definitions to be sure the objects are placed correctly.
February 10, 2016 at 8:18 am
Grant Fritchey (2/10/2016)
Be prepared for a lot of friction. It's actually difficult to coordinate releases of this type.
I certainly hope not but, I think these releases will have to consider design in more detail to assure a change for one product does not in adversely impact another. You are correct it will not be easy.
February 10, 2016 at 8:28 am
Muhanned Maayeh-445298 (2/10/2016)
Grant Fritchey (2/10/2016)
Be prepared for a lot of friction. It's actually difficult to coordinate releases of this type.I certainly hope not but, I think these releases will have to consider design in more detail to assure a change for one product does not in adversely impact another. You are correct it will not be easy.
If you're going down this road, make sure you set up very good automated testing. I'd suggest getting continuous integration set up. That requires doing your development out of source control. But all this will get the process in hand and will help reduce or mitigate the friction.
"The credit belongs to the man who is actually in the arena, whose face is marred by dust and sweat and blood"
- Theodore Roosevelt
Author of:
SQL Server Execution Plans
SQL Server Query Performance Tuning
February 10, 2016 at 8:46 am
Grant Fritchey (2/10/2016)
Muhanned Maayeh-445298 (2/10/2016)
Grant Fritchey (2/10/2016)
Be prepared for a lot of friction. It's actually difficult to coordinate releases of this type.I certainly hope not but, I think these releases will have to consider design in more detail to assure a change for one product does not in adversely impact another. You are correct it will not be easy.
If you're going down this road, make sure you set up very good automated testing. I'd suggest getting continuous integration set up. That requires doing your development out of source control. But all this will get the process in hand and will help reduce or mitigate the friction.
Yes good point. We will see about doing this we already purchased some licenses for Redgate SQL Source Control and hope that will help track our changes by who and when with comments.
February 10, 2016 at 8:49 am
Muhanned Maayeh-445298 (2/10/2016)
Grant Fritchey (2/10/2016)
Muhanned Maayeh-445298 (2/10/2016)
Grant Fritchey (2/10/2016)
Be prepared for a lot of friction. It's actually difficult to coordinate releases of this type.I certainly hope not but, I think these releases will have to consider design in more detail to assure a change for one product does not in adversely impact another. You are correct it will not be easy.
If you're going down this road, make sure you set up very good automated testing. I'd suggest getting continuous integration set up. That requires doing your development out of source control. But all this will get the process in hand and will help reduce or mitigate the friction.
Yes good point. We will see about doing this we already purchased some licenses for Redgate SQL Source Control and hope that will help track our changes by who and when with comments.
Ha! Well that's good news. I wasn't even going to bring up how to get your database into source control.
"The credit belongs to the man who is actually in the arena, whose face is marred by dust and sweat and blood"
- Theodore Roosevelt
Author of:
SQL Server Execution Plans
SQL Server Query Performance Tuning
February 11, 2016 at 3:04 am
Grant Fritchey (2/10/2016)
Muhanned Maayeh-445298 (2/10/2016)
Grant Fritchey (2/10/2016)
Muhanned Maayeh-445298 (2/10/2016)
Grant Fritchey (2/10/2016)
Be prepared for a lot of friction. It's actually difficult to coordinate releases of this type.I certainly hope not but, I think these releases will have to consider design in more detail to assure a change for one product does not in adversely impact another. You are correct it will not be easy.
If you're going down this road, make sure you set up very good automated testing. I'd suggest getting continuous integration set up. That requires doing your development out of source control. But all this will get the process in hand and will help reduce or mitigate the friction.
Yes good point. We will see about doing this we already purchased some licenses for Redgate SQL Source Control and hope that will help track our changes by who and when with comments.
Ha! Well that's good news. I wasn't even going to bring up how to get your database into source control.
😎 Well, I was being proactive as I knew someone was about to suggest this at some point when source control and databases was introduced.
February 12, 2016 at 4:27 am
Merging the databases is a tiny part of what needs to be done.
IMHO the focus should be on the business problem, not on a piece of the technical solution. If the computer team are doing this work 'for the good of the business' it is unlikely they will be thanked by anyone. Certainly if this happened where I work I would be one of those not doing the thanking.
What you are outlining is a major redevelopment to a critical business system, and as such it needs sponsorship from the business and a proper project structure. The business requirements need to be clearly stated, so that all other work can focus on meeting these.
With the level of redevelopment you are talking about then any solution needs to evaluate software packages and cloud services before looking at technical issues such as merging databases. When the optimal business solution becomes obvious then it is time to look at the technical details. The details of the business solution will shape the database design. Questions about if and how to merge databases will be driven down the stack by the business solution, not driven up the stack by a decision within the technical team.
Original author: https://github.com/SQL-FineBuild/Common/wiki/ 1-click install and best practice configuration of SQL Server 2019, 2017 2016, 2014, 2012, 2008 R2, 2008 and 2005.
When I give food to the poor they call me a saint. When I ask why they are poor they call me a communist - Archbishop Hélder Câmara
February 13, 2016 at 10:46 pm
EdVassie (2/12/2016)
Merging the databases is a tiny part of what needs to be done.IMHO the focus should be on the business problem, not on a piece of the technical solution. If the computer team are doing this work 'for the good of the business' it is unlikely they will be thanked by anyone. Certainly if this happened where I work I would be one of those not doing the thanking.
What you are outlining is a major redevelopment to a critical business system, and as such it needs sponsorship from the business and a proper project structure. The business requirements need to be clearly stated, so that all other work can focus on meeting these.
With the level of redevelopment you are talking about then any solution needs to evaluate software packages and cloud services before looking at technical issues such as merging databases. When the optimal business solution becomes obvious then it is time to look at the technical details. The details of the business solution will shape the database design. Questions about if and how to merge databases will be driven down the stack by the business solution, not driven up the stack by a decision within the technical team.
I do agree with your overall point however, I am playing the DBA role in this project. So, I will leave these "business" decisions, directions, and requirements to the Product Managers and Project Managers of this project. As far as my DBA role, I received these requirements from the project owners and in so doing I advised the team that database redesign will be performed in order to incorporate the various product lines into one database and reorganized for better database performance and so forth, and to have this as part of the project planning. So, here goes at this point.
Viewing 15 posts - 1 through 15 (of 20 total)
You must be logged in to reply to this topic. Login to reply