If you're not an open-source guru with a strong Unix/Linux background, NuSphere's NuSphere MySQL Advantage was designed for you. The package includes the latest versions of Apache, the popular Web server; MySQL, the popular and blazingly fast database; PHP, the popular hypertext preprocessor; and PERL. NuSphere releases a new version of Advantage every few months, and every release includes another popular open-source package, tested and bundled with the distribution. The suite I tested, version 2.1, includes an integrated Web portal called phpWebSite.
But offering such integration is not the only thing that makes Advantage a winner. There are two additional perks of Advantage 2.1. The first is the optional commercial support you can purchase from NuSphere. Buy it, and you no longer have to hope there is an article or some discussion thread on an obscure Web site that will solve your problem.
MySQL Improvements
The second perk--NuSphere's MySQL enhancements--drew most of my attention, however. People often knock MySQL for not having transaction support, claiming that large mission-critical applications need transactions. NuSphere responded by developing a new table in MySQL, called Gemini, that has full-fledged transaction support, complete with table and row-level locking, statement atomicity, standard isolation levels and ACID (atomicity, consistency, isolation and durability) database transactions.
With atomicity, the SQL code within a transaction is not executed until the transaction is complete; if there is a system failure, none of the SQL code is executed. This is especially vital for ensuring fail-proof online purchases. Consistency means that the database is always left in a correct and accurate state after the transaction is completed. With isolation, access to shared resources is serialized, and changes are not visible until they are committed. Durability means that once a commit is executed, the changes are written to a disk and become permanent.
Versions of MySQL without transaction support should not be used for mission-critical applications, such as those used in Internet purchase transactions, because these versions lack the benefits provided by atomicity. With Gemini, if the system fails in the middle of the transaction, the database is rolled back to the last stable state when it is started up again. So, for instance, you wouldn't be able to charge a credit card but not ship the product because of a transaction failure between those two steps.
Installation and Documentation
I tested a beta version of NuSphere Advantage 2.1 on a Microsoft Windows 2000 server. The product can run on Win32 OSes, Linux variants, FeeBSD and many Unix systems. The browser-based installation, which offers express and custom options, works well. I, of course, opted for the custom installation, choosing all the packages, but I tweaked some of the setup options. For example, I changed the Apache default port because I had Microsoft Internet Information Server (IIS) installed on the machine on Port 80. I also chose to install both Apache and MySQL as services.
I gave the installer a thorough workout, uninstalling and reinstalling the program several times. Uninstalling the first time worked just fine, though for some reason the package did not show up in Control Panel under the "Add/Remove" programs option. This is no big deal, since NuSphere has its own uninstall program. My install tests caused MySQL to hiccup a bit, so you may need to do some manual tinkering if you push the installer to the limits.
Documentation, on the other hand, is nothing to get excited about. Considering that commercial support is a major selling point of NuSphere Advantage, the program should have more online documentation. None of the standard manuals sent with the respective packages is tailored for the integrated package. The NuSphere Web site is not much better: It offers many different sections that try to address a large spectrum of users, so I give it an "A" for effort, but it is very thin on content.
Other than the few minor installation issues, the software worked as promised. I tried to create databases with mixed table types and with all Gemini tables, and both instances worked well. Backing up and restoring the database are easy. Just shut down MySQL and make a copy of the data directory. Alternatively, you can use the mysqldump utility that comes with the distribution. To test the ACID properties, I created a Gemini table and started executing transactions against it. I began with a normal "Begin Work ... Commit" and a rollback attempt. Then I shut down the server in the middle of a transaction. As expected, Gemini passed all the tests: Each time that I restarted, MySQL read the transaction log file and rolled back the database to the state before the transaction. A word of caution, though: The manual states that if you mix Gemini tables with non-Gemini tables, ACID properties will not be maintained. And it's true: With just one non-Gemini table in my application, all my tests for ACID failed.
NuSphere Advantage still needs to mature more. But the new transaction-safe tables and commercial support are worth so much to me that I can easily forgive the few shortcomings.
Ahmad Abualsamid is the founder of Apical Consulting, a Chicago-based software consulting and contract programming firm. Send your comments on this article to him at ahmad@apicalconsulting.com.
