I’m creating a .Internet application by having an auto refresh feature. Every table during my database includes a MODIFIED_DATE column that will get up-to-date after each update or place. Right now the car refresh feature will affect just one table, nevertheless it may change later on. I’m presently thinking about the next possible solutions:

  1. Client application runs a question on the timer e.g. every 10 sec and returns all rows which have MODIFIED_DATE more than last modified date saved during my application.

  2. Have a devoted, open connection on each client computer that learns firebird occasions after which runs a question once a celebration continues to be fired. The big event will clearly by fired through the database after each update/place using Publish_EVENT command.

  3. Create a service which will take a seat on the server hearing the firebird database occasions after which use .Internet remoting to inform client programs.

Could anybody advise me which of the aforementioned solutions is much better when it comes to performance and scalability?

I would like the reply to possess the minimum impact possible around the database workload.

Really among the nice options that come with Firebird is a chance to write user defined functions (UDF's) you are able to call the UDF from a trigger and also the UDF could consequently inform your application (using standard interprocess communication) that the update has happened, this then turns into a notification model as opposed to a polling model plus much more scaleable.

Caveat: the UDF must be a local dll (In my opinion) C++ or Delphi, there would definitely be a great deal of sample code available in Delphi.

  1. This option would be the worst when it comes to scalability. More often than not clients will query for changes and obtain nothing in exchange. Large waste. As well as the ten second delay for that changes to look within the clients.
  2. I have carried this out previously coupled with some scalability problems too. The truth is, when and event is fired, every client will query the server at the same time. Not so good. You might want to create some plan to avoid this.
  3. Essentially just like 2, only that has a lot more work involved. )

Only a slight modification to reply to 2:

  1. You may create a UDF in almost any language that may produced a shared library (using the sole exception of Java)
  2. If you are running Netware, you cannot call a UDF from Firebird