Very interesting problem. Someone please shoot me down if I'm talking
rubbish but this is how I'd do it.
I think it is safe to rule out db replication as it's too slow and not
real-time enough. Sockets will provide an instant point to point link but
to have one machine send a packet to all other machines would be tricky and
if one of the machines is down then you could get into a lenghty time-out
process. There is also problems with a station not doing the correct thing
and the database somehow getting out of sync.
I think the soltion is to stick with 1 copy of the database on a central
server. You then need to have a server process that will receive, forward
and process messages from each workstation. The messages would be add data,
modify data, get data etc.
The add/change/delete type messages would also be sent to a redundant server
which would duplicate the same actions form the workstations. If each
server starts with the exact same database, the end result should be the
same, but to be 100% sure, you need so serialization mechanism. Each unique
message would need a serial number allocated by the server process. You can
then check on the server for messages in sequence and missing messages. For
example, if message 1 is add data from workstation 1 and message 2 is get
data from workstation 2 then you know you must process message 1 before
message 2 as it might be the same data.
Now, WHEN (not if) the 1st server crashes, your workstations should be able
to automatically swap to the next server.
Using this mechanism you can have as many servers as you like.
The only question is how you deliver these message and the only 100%
gaurenteed method I know of is to use a Message Queue server (IBM or MS).
______________________________________________________
Get Your Private, Free Email at http://www.hotmail.com
---------------------------------------------------------------------------
New Zealand Delphi Users group - Delphi List - [EMAIL PROTECTED]
Website: http://www.delphi.org.nz