This post is not about whether you need some kind of event publishing* function for DB2. It's about whether you already have the function found in InfoSphere Data Event Publisher and just don't know it.
InfoSphere Data Event Publisher is built from IBM's Q Replication technology. More specifically, it provides a subset of the function found in the Q Capture program. The question is, if event publishing is a subset of Q Capture and I already have Q Replication, do I need to buy Data Event Publisher? The answer is almost always no. Why "almost always"? Q Replication is found in several IBM products and features. For example, no-cost, two-site Q Replication was recently added to certain editions of DB2 and InfoSphere Warehouse. Some of these products have license restrictions on how Q Replication function can be used. I have the products listed here along with the answer about whether you need to buy Data Event Publisher with it:
Note: The products in this article have been superceded in some cases and the license terms of the replacement products might be different.
- InfoSphere Data Replication or InfoSphere Replication Server - No.
- You do not need to buy Data Event Publisher. The function is included in all Replication Server products. This is true for z/OS and LUW. The LUW product can publish from Oracle sources as well.
- The IBM Homogeneous Replication Feature - Maybe.
- Event publishing for DB2 databases is included. However, if you want to publish from Oracle sources, you must buy either InfoSphere Data Event Publisher of InfoSphere Replication Server.
- The free two-site Q Replication in DB2 and InfoSphere Warehouse - Maybe.
- Event publishing can only be used to set up replication of data from one DB2 LUW database to another. If you want to publish changed data for any other destination, you must buy either InfoSphere Data Event Publisher or InfoSphere Replication Server.
Wait... what? I can do replication with Q Capture's event publishing? Yes :) but the primary reason you would consider this is when you want to run data through a transformation engine such as InfoSphere DataStage and don't want to run an apply program at the target or stage data in tables or files. The following picture shows an example of what I mean:
* For those of you who aren't sure what data event publishing is, it's function that lets you capture changed data from a database log and publish it to consuming applications. The format of the published data is such that you can determine transaction boundaries, see the SQL operations (insert, update, delete) as well as the order they occurred, and have both before and after values for updates. Depending on the tool you use, data can be published to relational tables, WebSphere MQ, or flat files. The consuming app (or apps) can be one you develop such as for SOA or an off-the-shelf app like InfoSphere DataStage.
This post focuses on publishing to WebSphere MQ queues because that's what's found in InfoSphere Data Event Publisher.
(Oh, I can hear the outcry now... people saying that no one's ever used the term event publishing when the destination is tables or files. Seriously? Those are just staging mechanisms. They don't change the end result. You still get data events published. And those events are still available to consumers. For comparison, see the IOD 2010 presentation about providing changed data to InfoSphere DataStage via tables.)