|Delphi Clinic||C++Builder Gate||Training & Consultancy||Delphi Notes Weblog||Dr.Bob's Webshop|
The Speech and Debate competitions alternate between speech and debate rounds over a three day period. The software is responsible for generating the ballots and all associated reports and then collecting the results when the ballots are returned after the judges fill them out.
It is also required that the judges be tracked so that judges don't see the same competitors.
This is normally done with a staff of five people. A director, two people for debate and two more for speech events. When the results come back, the results are double-entered and then verified against each other. The results must verify to proceed. Because of variety of tasks, there can be two people doing input, somebody else putting in judges and a fourth person printing.
I had done several single-user applications for the league and so when planning for this new multi-user application, I thought all I needed was a multi-user license of the database, Absolute DB, and that would take care of it.
But during testing, I was horrified to find was that as soon as another person got on the database, two users total, the speed would drop dramatically, sometimes by a factor of 20. And then get worst with each additional person. After seeing this, the first effort was to redesign and to minimize any unnecessary operations, have as few tables open as possible and switch some input operations to use memory tables for input and then post to the database when done. With these optimizations it looked like the software was ready. It would be slow sometimes, but ready.
But on January 4th, when deployed at four tournaments across the US, the performance was a huge issue. Some of the teams even made a rule of "only one person at a time". Not a good rule for a supposedly multi-user application. After a plea to the vendor went unanswered, the hunt for a better performing database was on.
After searching the Internet with phrases like "high performing multi-user database Delphi" I found dataweb TurboDB for VCL. The first test was to convert a couple of import programs, tournament and debate, that had been bottlenecks. When I first ran my test imports, they were so fast I thought I'd messed up something in the conversion. But I checked and all the data was imported. They were just running a lot faster. So the decision was made to swap out the databases totally. As each module was converted, I was concerned that the first tests had been a fluke and that the performance would start to decline. But I was worried about nothing. The speed continued to hold. Finally the whole application had been converted and performance continued to be great. I tested against the lowest networking speeds we would have, configuring all the computers on 2.4ghz WiFi. Then I tried the imports which previously would have been so slow that the users would kill the program after 5 minutes and 2% progress, but now could complete in 40 seconds.
We have now redeployed and everybody is singing the praises of the new version. We had one team that had four users doing simultaneous input, just to see if it would be OK and it was fine, everything sub-second and no noticeable lag. I in turn have got to give you credit. Thanks for a database that turned a huge failure into a great success.