I had an interesting problem come up recently that I thought I would share. We had an immediate need to create a support site for customer service to support our stores directly.
Our requirements:
Normally I would want to crucify the people that came up with these requirements, but we did it to ourselves. Knowing we couldn't ask for more equipment, we didn't have time to develop a solution, and the developers would scream if we changed production schema, we had to try to solve the problem this way.
So we started exploring options:
Log Shipping - Quick and easy with only one fatal problem for us. We need the data to be near real time *snap*.
Data Mirroring - We cannot buy new equipment *snap*
Custom ETL - The best option IF we could spend some time doing development but we could not *snap*
And then we came to replication:
At first this seemed like a no brainer...transactional replication yay! But when we dove a little deeper we found that this would create unique identifier columns on every table. Doh! So we looked for another form of replication: merge, no; snapshot, nope.
So we thought we were at an impass. No solution. But then we came across a little known form of replication - Peer to Peer. Aha!
If you read about peer to peer replication you will see the main benefits being load distribution. Here are the benefits we found with it:
Our requirements:
- Cannot use production for queries
- Cannot change schema
- Development must be minimal
- No new equipment will be purchased
- Data must be able to be changed on either server and distributed to the other server near real time.
Normally I would want to crucify the people that came up with these requirements, but we did it to ourselves. Knowing we couldn't ask for more equipment, we didn't have time to develop a solution, and the developers would scream if we changed production schema, we had to try to solve the problem this way.So we started exploring options:
Log Shipping - Quick and easy with only one fatal problem for us. We need the data to be near real time *snap*.
Data Mirroring - We cannot buy new equipment *snap*
Custom ETL - The best option IF we could spend some time doing development but we could not *snap*
And then we came to replication:
At first this seemed like a no brainer...transactional replication yay! But when we dove a little deeper we found that this would create unique identifier columns on every table. Doh! So we looked for another form of replication: merge, no; snapshot, nope.
So we thought we were at an impass. No solution. But then we came across a little known form of replication - Peer to Peer. Aha!
If you read about peer to peer replication you will see the main benefits being load distribution. Here are the benefits we found with it:
- No schema changes: This is big. All other forms of replication require unique identifiers.
- Near real time
- No development
- No 3rd party software
- Very easy to implement
So the moral of the story is: Spend some time researching alternate solutions. What you already know will not fit every problem.
Find out more about peer to peer replication here.
Comments
Post a Comment