Gareth Bult ha scritto:
> Urm,
>
> When you say doesn't scale .. exactly how many clients do you have and how 
> quickly do they need to know about updates?
>
> Let's say for the sake of argument your SQL server can process 2000 moderate 
> queries per second (not unreasonable) and you want to poll every second with 
> 10 clients. This really isn't much of an overhead .. ???
>
> Bear in mind MySQL has a query cache .. if you go 100 seconds with no 
> updates, 10 clients will make 1000 SQL requests, but these will be identical 
> and the server will probably only have to do any real work once ... so ... ??
>   
> This for a 24 hour dinghy charity race that happens once a year.
>
> There are programs that put race data into a mysql database
> ("providers") and other programs that display the data in different ways
> ("users") depending on what audience is targeted.
> Ideally, there could be any number of providers and users on the same
> machine.
>
> How would a "user" know that new data is available? Traditionally, I had
> been polling the database but it does not scale very well, particularly
> if new data needs to be displayed fairly quickly.
>
> What I had done now is to have each provider (after changing data in the
> db) send a udp broadcast to the whole subnet saying "to whom it may
> concern, table x in db y has changed."  It does not need to know who the
> users are. Likewise, the users do not need to know who the providers
> are. All they need to know is where the database is.
>
> It is very simple and worked very well, except I could only have one
> user per machine.
>
> Ideas, anyone? Could database triggers do the job?
>
> Best Regards,
> Werner Dahn
>   
I agree with Gareth...

but assuming that you have many "tables x" in many "db y", you could 
make one more table in a common database, where to put log records in 
the form "datetime - table x in db y has been updated". Every user can 
then do a select on this single table, selecting on "datetime > 
last-time-I-readed-this-log".

Otherwise, as Benoit says, a single daemon listening in every machine 
could service many users. But it is not so simple to build a reliable 
system; if a broadcast packet fails to reach a machine, there is no easy 
way to know about. If broadcasts fire often (say, every 10 seconds), 
this could be not a problem. So, the database solution, if viable, is 
guaranteed to work.

Cheers,
Doriano



-------------------------------------------------------------------------
This SF.Net email is sponsored by the Moblin Your Move Developer's challenge
Build the coolest Linux based applications with Moblin SDK & win great prizes
Grand prize is a trip for two to an Open Source event anywhere in the world
http://moblin-contest.org/redirect.php?banner_id=100&url=/
_______________________________________________
Gambas-user mailing list
Gambas-user@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/gambas-user

Reply via email to