Graying MySQL, and MySQL learns a second language (early conference report )
The early achievements of this disruptive technology were to bring a high-performance relational database down from the top shelf where only those of means could afford it, and put it in the hands of students, enterpreneurs working out of their homes, and modest web site developers. This was a revolution dubbed situated software by Clay Shirky. Although MySQL was already being used by sites that could afford more expensive databases (and the computer systems and expert administrators who came in tow), these did not drive its initial popularity.
Now MySQL AB has built a formidable marketing machine and carried their product into the database mainstream, following a path similar to Linux. Their trappings are starting to evince familiar themes. They have salespeople in at least a dozen cities around North America. Their new support and update mechanism, MySQL Network, reminds me of a similarly named support system from Red Hat. MySQL's development of an online FAQ called a Knowledge Base, and the slogan "MySQL Everywhere" plastered all around this conference, are reminiscent of another large software vendor.
But MySQL AB has not forgotten the little guys who want a DBMS that runs lean and fast, with near-zero administration. These users will probably continue to be its largest base. Significantly, under the conventional trappings I mentioned, I believe MySQL AB is still structured in a fundamentally different way from a conventional propriety vendor, and is still behaving like a network of brilliant independent software developers. They have always listened closely to their users--you can see that at their conferences, where dozens of developers turn up in distinctive shirts and attract flocks of petitioners for new features--but they now are listening to paying customers in the same intense, investigative manner.
For instance, I saw one of their leading engineers walk around an evening reception recruiting representatives from international customers to sit in on a session about internationalization, just so he could hear their perspective on some problems he had been told by other customers.
It takes a certain financial and time commitment to attend a conference, so for those who pony up the money to do so, the theme at this one is "bigger and better." Sessions on Java interfaces, clustering, scaling, high availability, and replication decorate the calendar for the next few days. One panel is even called "Challenges in the Enterprise."
And what are the newest features MySQL is pushing hardest? There are no breakthroughs here (and I wouldn't expect any, because relational databases are a mature area in a research sense). The announcements focus on things that competitors have had for years: stored procedures, triggers, views. MySQL is not leading the conquest of new territories. Rather, MySQL is catching up. That's something they're proud of, and rightfully so.
I attended one session last night on a feature that will implement a tiny snippet of the SQL standard, XPath support. In effect, MySQL, which has always understood the SQL language, is learning a second language--not a natural language (although MySQL offers increasing support for character sets and other internationalization features) but the complex world of XPath.
I find this feature an odd way to support XML. Most XML users carry out XML/database interaction by using Java or some other programming tool to break down the XML into constituent pieces of test and store those pieces in a database structure that mirrors the XML. But SQL's XPath support buries the XML without alteration into a field in the database.
The idea of XPath support in the database is that you start by storing a string such as <p>Why do <em>you</em> want to represent <em>structured text</em>?</p> bodily in a text column. This text column can be any standard text datatype in SQL (although MySQL will add a special XML tag eventually, to support validation and some optimizations).
In itself, this doesn't help deal with XML. But MySQL will also provide a couple functions such as ExtractValue and UpdateXML that manipulate the XML with XPath queries. You could tell it to extract or change, for example, the second <em> entity in the string just shown. Full text searches can reduce the time it takes to search large collections of XML by two orders of magnitude, in comparison to database queries without indexes.
The design of the XPath support is oddly disconnected from the traditional structures of a relational database. As already shown, the storage model jams all the XML into a single column, so that the XML structure is handled independently from the schema of the table. Furthermore, an XPath query that returns multiple strings from different parts of the XML document concatenates them together, space-separated, in a single row. I would have expected them to be granted individual rows in the results.
There are many uses for XPath support in a database. One could extract and display all the titles of different documents. One could run a traditional SELECT to retrieve data from other columns or tables and join it to XML content. One could find everything within <price> tags and let the database perform some calculations such as averaging. The more XML processing you can do in the database, the less data has to be sent over the wire to the client.
This new MySQL feature--not planned until 5.1 or even later--is probably less useful with data-crunching XML (which has many small pieces of text within multiple tags) than with documents, which are flatter and have a high ratio of content to tagging. However, one participant in last night's BOF suggested the feature could be applied to storing SOAP queries too.
MySQL's turn to the mainstream is being reciprocated by its intended audience. Attendance at yesterday's tutorials was impressive; a couple tutorials sold out, and the halls were filled with people at break time. Today's sessions and exhibitors will draw even more.
Comments on this weblog
1 to 2 of 2
1 to 2 of 2
Return to weblogs.oreilly.com.