![]() |
|
There has always been something a tad unreal in reading a database text. And that unreality, for someone without a spare 500,000 dollar in their bank account for an industrial-strength database system and a mainframe computer to run it on, is directly commensurate with how accessible are the systems described to the average programmer.
Enter mSQL and MYSQL, two interesting open source database engines that don't require a ton of money.
mSQL and MYSQL are accessible for reasons other than their freeness (or cheapness). They are also not as big and involved Oracle or Ingres, rather providing functionality suited to what the authors call mid-sized organizations.
Since Web site creation is accessible to individuals as well as enterprises, more individuals may have a good use for a database than ever before.
(By the way, the current unrestrained mÈlange of tools such as XML, CGI/Perl, Java, JDBC, J2EE, C/C++, will soon be tamed by the advent of Microsoft's .NET -- which is a resounding relief to the unwashed Perl programmers among us.)
mSQL and MySQL are sometimes called free databases. But what does it mean to be free?
In chapter 7, the authors address the murkier distinctions of Open Source: what is it, what does it mean to be open, and does that mean the software costs no money? MySQL, for instance, has a couple of licensing configurations, depending upon whether you will use it for commercial purposes.
But what I really enjoyed most about this book is the practical information that let me download the MySQL binary distribution from www.mysql.com (not the hard part), install it as a service under Windows 2000, and begin to augment my database skills while feeling like a covert database spelunker. I encourage you to check it out at www.mysql.com if you are interested in databases.
In a focus perhaps typical of O'Reilly, early chapters of this book discuss system administration tasks: installing each system, creating a database, creating a password to protect access to the data. From there I skipped to chapter six, "SQL According to MySQL and mSQL," to begin creating tables and inserting data right away.
I segued directly from system administration to implementation, without thought of design. This is my own foolhardiness, rather than any lack on the part of the text. Chapter 2 provides a metered introduction to relational database design which was accurate and helpful for a chapter of its size.
The authors point out differences between mSQL and MYSQL and the limitations of each. Implementations of SQL differ both between the products and from the standard, but nowhere seem too far out in left field. MySQL has no sub-selects.
Transactions, triggers, stored procedures are also left out, although this book was released in July 1999, so checking the Web site is advised.
The facile explication of these differences brings to light a difficult writing task the authors have negotiated well. How do you write one volume describing two systems that are like sisters, but also like sisters, have their different strengths and weaknesses? How to chose among them?
Chapters 4 and 5 help you make up your mind -- one chapter devoted to each of mSQL and MYSQL. mSQL is the older product, and some developmental lessons in mSQL led to improvements in MySQL.
About one third of this book is reference. Part I is introduces the database engines and their system administration, Part II is database programming, including using Apis to get working with CGI, Perl, Python, Java and C/C++.
This book provides an introduction to these two database products, but it covers a lot of ground. If you want to settle upon one language with which you will interface to MySQL or mSQL, you will need more information down the road. But between the examples and the reference in part III, you will be well supported for months of programming pleasure.
-- Doug Nickerson (dougnickerson@yahoo.com)
Note: The 1st edition of this book, reviewed here, is now out of print. The 2nd edition, titled Managing & Using MySQL, is readily available.
|
Explanation of ERCB rating scale:
|