|
Another idea would be a tool that creates a local copy of the complete database, and forwards changes to the online database. Does somebody know such a tool?
What kind of speed and latency do you have to that server? I tried connecting to a MySQL database over the internet and it worked very well, but it was over a 10Mbps connection with 5 millisecond ping latency.
I would expect performance to be pretty poor for a direct database connection if latency is in the hundreds of milliseconds.
That being said, there is definitely potential to make an AgileTrack database driver that uses a local database for all loads and queries, but synchronizes it with a master database in the background. The local database would always need to hit the master database at the time a record is saved (to reserve an ID and prevent duplicate keys), but other than that, the rest of the synchronization could be done in the background transparently. I'm not sure when that could be done though unless someone else is interested in tackling the problem.
Is there a way to measure the latency of the mySQL-server?
A "ping" on the normal webserver shows about 30 ms latency.
What I can't understand:
It needs about 30 seconds to load the issues list. But then, you might think, the waiting is over because all values are saved locally in variables, the table, or somewhere else. But when I open another application window, and switch back to AgileTrack, the same time is again needed to load the data – obviously from the server, because the network shows constantly traffic until the windows is displayed again.
Why is the data reloaded? Can't this be optimized? Is it a bug?
0.8a started using SoftReferences in caching data as a way to prevent the cache from growing too large, but it turns out that Java garbage collects SoftReferenced objects very quickly in a lot of cases and the result is reloading objects from the database when it shouldn't have been necessary.
0.8b switches to an LRU based cache which should perform significantly better.
That's great – it works :-) Indeed this seems to be a caching problem in 0.8a.
Thank you very much!