views:

95

answers:

2

In a Firebird database driven Delphi application we need to bring some data online, so we can add to our application online-reporting capabilities.

Current approach is: whenever data is changed or added send them to the online server(php + mysql), if it fails, add it to the queue and try again. Then the server having the data is able to create it's own reports.

So, to conclude: what is a good way to bring that data online.

A: 

At the moment I know these two different strategies:

  • event based: whenever changes are detected, push them to the web server / mysql db. As you wrote, this requires queueing in case the destination system does not receive the messages.

  • snapshot based: extract the relevant data in intervals (for example every hour) and transfer it to the web server / mysql db.

The snapshot based strategy allows to preprocess the data in a way that if fits nicely in the wb / mysql db data structure, which can help to decouple the systems better and keep more business logic on the side of the sending system (Delphi). It also generates a more continuous load, as it does not care about mass data changes.

mjustin
Tough decision, snapshot-based will be more 'server-friendly' and more merciful with the internet connection. So from those tow to pick, I think I'll stay with the current one (event based) since snapshot based will give me hard times with data which is already sent, but updated.Also, could you give me your thoughts about using a system with (Correct my terminology if it's wrong) Hanging GET and Comet(?) similar to the facebook chat. Where the delphi app listens continiously from the webserver, and in case of a request, then on-the-fly creares the report and sends it (Sounds good to me).
Aldo
A: 

One other way can be to use replication but I don't know system who make replication between Firebird and MySQL database.

Hugues Van Landeghem