Database synchronization

Posted on 2011-02-23
Last Modified: 2012-05-11

Hello group,

I'm having a situation which need to get some advice from experts who have imported data from an existing database (traditional system ) into a different/new database.

Long story short, there is an old IBM machine which is used and still in use of a company. Now, this company has decided to go online but after I've setup the online system has come up with different idea! meaning that they want the new database (MS SQL Server) be synchronized with their DB2.

Of course, as you have guessed both will be dealing with the same product but the layout, structure and tables are totally different.

What is the best approach base on your experience?

correct me if I'm wrong. I'm thinking of creating some tables the same as those on DB2 end and somehow maybe using trigger or ... feed them into new tables.

Assume there is a customer table on DB2 end (let's say db2_Customer) so I will import it into MS SQL Server 2008 and will extract necessary information from temp table into my customer table.

Currently I'm kind of jumping around since time is another issue but will appreciate it experts could give me some advice.

Question by:akohan
LVL 16

Assisted Solution

EvilPostIt earned 100 total points
ID: 34961604
If you want to go down the trigger route then here is how to create a linked server so you can directly insert into the destination.

Although bear in mind that this will slow your system down and make it dependant on the DB2 system.
LVL 37

Assisted Solution

momi_sabag earned 100 total points
ID: 34961648

Keeping two systems on different platforms synchronized is not a simple task. Considering it's two different rdbms makes it even more complex.
You can try to pull it off using triggers, but i think it will get very complicated and hard to maintain
What is the level of sync that is required? can there be a lag of 2 hours for example?
Which system gets updated? only db2 or both? (is it a 2 way sync, 1 way sync etc...)
are you able to identify the new data so that you can only synchronize the differences every time and not all the data?

Author Comment

ID: 34962251

Hello Momi_Sabag,

Thank for your questions I will try to explain the scenario but please ask me questions if I have not covered something:

We have two ends:

1) Online (SQL Server)
2) IBM (DB2)

Online system has all the products info that will be sold online however, DB2 has the same information and also customer information (from 30 years ago!).
The scope of project was that people will register from online end and was assumed that people would then can find product/parts and add them to cart and place an order.

However, now in the last step the person (working with managers who have no technical knowledge) I'm work for has explained that  they must have existing customer information in online (SQL Server) since existing customer can have their special pricing (base on a discount % parameter).

So as you see my input is changing from online registration page to data coming from DB2. Also, I need to find out what is the discount rate for each existing customer that comes from DB2 as well.

The way I see it, it is a one way sync (from DB2 to SQL Server). So when one of those customer places an order I will pass order details and customer information to DB2 using csv file so somebody on their team can suck it up into DB2.

As far as lag,  I guess for now it would be OK 2 hours all they will do they will send an email to customer that order has been placed and ...

Let me know if you have further questions.

Master Your Team's Linux and Cloud Stack

Come see why top tech companies like Mailchimp and Media Temple use Linux Academy to build their employee training programs.

LVL 37

Expert Comment

ID: 34962339
so if it is only pulling data from db2 to sql server i would use SSIS to perform this movement. by using a job you can schedule the package to run almost continuously

Author Comment

ID: 34962768

But one thing worries me is that you as a customer by placing an order online should be able to see a history of all orders, but this way since all taxing and shipping calculations will happening on IBM end (since it has its own system) then I only can issue and keep qty and price before tax and shipping.

and updating that again will burden the system.

Any idea?

Accepted Solution

rmm2001 earned 300 total points
ID: 34989893
Going off of @momi_sabag - SSIS would be an easy-to-setup tool for this. Drag and drop and you're there.

If you want to allow your client to see their historical transaction history (I assume it's stored in DB2), you have a few options.

- Write a SSIS package that pulls the history for that client into some sort of format that the GUI can read/use (so like txt/csv)
- Write a SSIS package that is called when the client enters the site, which pulls his records over to the SQL Server database. After that session is done, those records are deleted from the table. Which would require 2 packages. (I'm not sure if I'm a fan of this)
- Link the servers. So link your DB2 server to SQL Server and you can query [servername].databasename.schemaname.tablename just like you normally would query a "regular" database. This would allow for either database to be updated and the query to reflect it. And minimize the code changes the programmers may need to make.

See if that works!

Featured Post

Master Your Team's Linux and Cloud Stack!

The average business loses $13.5M per year to ineffective training (per 1,000 employees). Keep ahead of the competition and combine in-person quality with online cost and flexibility by training with Linux Academy.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Suggested Solutions

If you have heard of RFC822 date formats, they can be quite a challenge in SQL Server. RFC822 is an Internet standard format for email message headers, including all dates within those headers. The RFC822 protocols are available in detail at:   ht…
Load balancing is the method of dividing the total amount of work performed by one computer between two or more computers. Its aim is to get more work done in the same amount of time, ensuring that all the users get served faster.
Although Jacob Bernoulli (1654-1705) has been credited as the creator of "Binomial Distribution Table", Gottfried Leibniz (1646-1716) did his dissertation on the subject in 1666; Leibniz you may recall is the co-inventor of "Calculus" and beat Isaac…
The Email Laundry PDF encryption service allows companies to send confidential encrypted  emails to anybody. The PDF document can also contain attachments that are embedded in the encrypted PDF. The password is randomly generated by The Email Laundr…

820 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question