Thursday, 20 December 2007

MySQL User Conference Registration Open

The 2008 MySQL Conference & Expo registration is opened!

Time flies. We’re already at our sixth Users Conference! Looking at the announcement:

Co-presented by MySQL AB and O’Reilly Media, the conference will take place April 14-17, 2008, in Santa Clara, California. The event is expected to bring together over 1,600 open source and database users from some of the most exciting and fastest-growing companies in the world, as well as from the large and active MySQL Community. The program for 2008 will include keynote presentations by Jacek Becla of Stanford Linear Accelerator and MySQL CEO Marten Mickos.

Jay Pipes, our Program Chair, has lead a huge effort in identifying the best out of the near-300 proposals for sessions. And we’re not fully done yet. A few sessions still are in the grey zone, so not all are scheduled. But I suggest you take a look at the program already!

Join us 14-17 April 2008 in Santa Clara, California for the biggest and best MySQL event yet!

Register by 26 February 2008 to save up to $200.


Saturday, 15 December 2007

Navigating categories within my blog

With 130 entries in the "MySQL" category and no MySQL-related subcategories, my blog had become impossible to search and navigate easily.

And thus I created a number of new categories for the MySQL entries within my blog. They're listed in the left navigation bar, below the months, as well as below:

I hope this will make my blog more (re)usable.

(The picture is from this summer, when navigating the way up the Großvenediger, a 3662 m high mountain in the Hohe Tauern region of Austria.)

Thursday, 13 December 2007

MySQL Connector/ODBC 5.1 Released as Beta

Today MySQL releases the first beta version of MySQL Connector/ODBC 5.1. This means that Connector/ODBC 5.1 is now feature complete. Go download it!

Connector/ODBC 5.1 is suitable for most MySQL versions in active use today. It works with MySQL 4.1, 5.0, 5.1 and 6.0. If anyone is still on 4.0 or earlier releases, you should have upgraded ages ago; consider Connector/ODBC 5.1 "the final straw".

As I wrote in September when we released the alpha version,

It is a partial rewrite of the the original MyODBC 3.51 code base, originally developed by Monty and Venu Anuganti, including individual parts of the current 65K ODBC 5 code base.

The new ODBC 5.1 driver, like 3.51, supports all relevant platforms (including Win64). While ODBC mostly is relevant for Windows, we have some (but not many) Linux based ODBC users.

Overall, ODBC 3.51 (released as 3.51.20) is now in a better state than ever. The ODBC QA team has written several hundred new tests. Without doubt, the 3.51 code base is now a good fundament for the new ODBC 5.1 version.

We've added a MSI installer for Windows 64-bit and implemented a native Windows setup library. We've implemented most parts of the section in my September blog titled "Before ODBC 5.1 goes beta, you can expect the following functions", except sqlbigint and the native Mac OS X setup library. There is no binary package for Mac OS X on 64-bit PowerPC because Apple does not currently provide a 64-bit PowerPC version of iODBC. Also, the HP-UX 11.23 IA64 binary package does not include the GUI bits because of problems building Qt on that platform.

For more details on functionality added and bugs fixed, look for Jim Winstead's announcement later today.

Our usual warning: Keep in mind that this is a beta release, and as with any other pre-production release, caution should be taken when installing on production level systems or systems with critical data.

Thank you to all who've tested Connector/ODBC 5.1 so far! And, obviously, we welcome more testing.


Documentation: MySQL Server Version Reference

Stefan Hinz, MySQL's Docs Team Lead, just showed me the new restructured documentation overview page The intention of the restructuring is to make it easier for you to find the information you need.

We've amended the MySQL Reference Manual section with a subsection labeled "Excerpts from the Reference Manual", examples of which are a standalone Connectors book (covering all MySQL connectors and APIs) and guides for each individual MySQL Connector.

The key new document there is the "MySQL Server Version Reference" that should make life easier for everyone who needs cross-version information. It's available for download but you can also browse it online at

Here's an overview of the MySQL Server Version Reference document:

  1. The mysqld Options/Variables Reference contains all MySQL server options and variables for all MySQL versions. You can easily find out whether or not a particular option is available in a specific MySQL version, when it was introduced or deprecated, and more. For variables, that chapter gives a quick overview of core properties, such as if it's a status or a server system variable, if I can be changed dynamically, or if the scope is global or local.

  2. The Reserved Words list contains all words reserved in a particular MySQL (major) version, with annotations about minor versions. The list is created by running a script against all MySQL versions starting from 4.1.0. (Yes, our Docs Team has installed all MySQL versions on their documentation machine!)

  3. The Functions and Operators chapter shows which MySQL functions are available in which version, and when they were introduced or deprecated.

  4. The Build (configure) Options chapter should be useful for anyone building MySQL from source.

  5. Eventually, the Key changes in MySQL releases chapter lists security fixes and incompatible changes for the GA versions of MySQL 4.1 and 5.0 and for the beta and RC versions of MySQL 5.1.

The Server Version Reference is not a static document but is being recreated on a regular basis.

Kudos go to Martin C. Brown who created all this. We hope it will make your work with MySQL more productive and enjoyable!


Wednesday, 12 December 2007

Ruby on Rails 2.0 Released

Ruby on Rails 2.0 was released last week, "It's done!", David Heinemeier Hansson notes.

Ruby on Rails has come a long way since Lenz Grimmer's interview with DHH in February 2006.

Browsing DHH's blog, I find snippets (bolding mine) like

Piggy-backing off the new drive for resources are a number of simplifications for controller and view methods that deal with URLs.

As you might have gathered, Action Pack in Rails 2.0 is all about getting closer with HTTP and all its glory.

We’ve also made it much easier to structure your JavaScript and stylesheet files in logical units without getting clobbered by the HTTP overhead of requesting a bazillion files.

Making it even easier to create secure applications out of the box is always a pleasure and with Rails 2.0 we’re doing it from a number of fronts.

Figuring out where your bottlenecks are with real usage can be tough, but we just made it a whole lot easier with the new request profiler that can follow an entire usage script and report on the aggregate findings.

Seems to me like Rails 2.0 goes further still in the direction of the RoR tagline "Web development that doesn't hurt" and its expanded version

Ruby on Rails is an open-source web framework that's optimized for programmer happiness and sustainable productivity. It lets you write beautiful code by favoring convention over configuration.

Congratulations, DHH and the Rails Team!


Monday, 10 December 2007

Lua lessons at MySQL University -- for MySQL Proxy

Giuseppe Maxia teased me last week to see whether I could decipher the notice on the Italian web site Punto Informatico about "MySQL University, lezione gratuita su Lua".

It's about Giuseppe teaching MySQL University attendees (for free as in both beer and speech) on the Lua scripting language. The MySQL reason to learn Lua is to do scripting in MySQL Proxy. Don't worry, the MySQL University session is in English, not Italian, and Giuseppe has deciphered the Italian himself in his blog.

You can attend MySQL University virtually with slides in PDF and Wiki, audio on ogg stream, and interaction with the lecturer via IRC (at Freenode under #mysql-university).

Timing: This Thursday 13 Dec 2007 at 6:00am PST = 9:00am EST = 15:00 CET = 16:00 EET = 17:00 Moscow time


  1. Read Giuseppe's article "Getting started with MySQL Proxy"

  2. Register for the University session


Combining MySQL Proxy with MySQL Cluster

A while ago, I had a discussion with Stewart Smith, Vinay Joosery, Monty Taylor and a number of other MySQLers who know much more about MySQL Cluster than I do. The result is a model for using MySQL Proxy to offload MySQL Cluster from doing Table Scans, without touching the application.

The discussion started from me asking Stewart about the largest road block for expanding the number of use cases for MySQL Cluster. "Oh, that would probably be doing JOINs and other SELECTs requiring the scanning of large parts of the database", he replied. "There, other storage engines are faster, such as MyISAM and InnoDB."

In a very simple view, the application talks SQL with MySQL Cluster, and gets responses.

Stewart's insight can be refined into the first simplistic diagram by adding the recognition that "SQL" can consist of

  1. UPDATE, INSERT, DELETE statements (very light, usually invidual rows affected) -- unidirectional blue arrow in the diagram below

  2. Simple SELECT statements (also very light, defined as SELECTs that use indices and return invidual rows) -- bidirectional black arrow

  3. Complex SELECT statements (could be as easy as "SELECT *", but defined as those not easily using indices and usually returning multiple rows) -- dashed arrows having two arrowheads to show that plenty of data is being returned

This second figure doesn't depict any change in application architecture from the first figure; it just shows a more granular view.

Now, enter the insight that plain MySQL Server (with MyISAM or InnoDB) can deliver the complex SELECTs faster.

In the new architecture represented by the above picture, we scale the application by

  1. introducing Replication (replicating MySQL Cluster to plain MySQL Server)

  2. changing the application to direct the complex SELECTs to MySQL Server instead of MySQL Cluster

This complicates life. Not only do we need to set up replication. We also need to touch the application all over the place, to direct queries to the appropriate server.

Now, enter MySQL Proxy.

Using LUA scripts, MySQL Proxy can relieve us of the second complication, i.e. having to change the application to point to different MySQL Servers depending on the type of the SQL. Let MySQL Proxy parse the traffic and direct it to the appropriate server! The application is left untouched, and the topmost part of the picture again has a simple bidirectional arrow saying "SQL". The distinction of what type of SQL we're talking about is left to MySQL Proxy.

MySQL Proxy can also be assigned to load balancing the queries to a number of MySQL Replication Slaves.

This picture clearly is the most complex architecture depicted here, but also represents the highest level of scaling.

All of the above can be done using current versions of MySQL Cluster and MySQL Server, and the MySQL Proxy.


Symbian enlightened by LAMP

Followers of the Forum Nokia Developer Discussion Boards saw interesting pre-announcements last month:

Nokia has ported MySQL and PHP to Symbian.

With 165 million cumulative Symbian smartphones shipped since the formation of Symbian and currently 134 Symbian smartphone models commercially available, it would be interesting to see the effects on the 8,134 third-party Symbian applications commercially available by what Nokia calls "PAMP".

Availability is planned for next month, at the CCNC 2008 (Fifth IEEE Consumer Communications &Networking Conference, 10 - 12 January 2008 in Las Vegas, Nevada).

Johan Wikman of Nokia, who has already ported the Apache web server to Nokia S60, writes in a Forum Nokia thread (emphasis mine):

I can now reveal that we at the CCNC conference in Las Vegas in January, 2008 will demonstrate and release what we call the PAMP stack.

PAMP stands for Personal Apache, MySQL, PHP, so yes, the full LAMP stack will be made available for S60 smart phones. In addition, there will be PHP extension modules that provide access to the core functionality of the phone. And on top of PAMP you can basically install any LAMP based content management system. For instance, Drupal can be installed off the shelf.

Yes, a fair amount of memory is needed and it's still pretty experimental stuff, but it runs quite nicely on E90.

So, if you are in the neighbourhood, join us in Las Vegas :)


Richard Bloor comments in Symbian Blogs (again, emphasis mine):

At first sight this may seem like an example of porting just to prove it can be done. It does, however, have the potential to create a whole new way of looking at Web application. For example, I've recently been evaluating a number of GTD applications. Several of these use PHP and MySQL and it will be interesting to see if they work on PAMP.

As such PAMP could add yet another option for developers to create S60 applications and create a new paradigm for the "off-line" Web. Hopefully by January I'll have an S60 device with the memory to run this baby.


Perhaps its time for me to upgrade my phone?

Monday, 3 December 2007

Falcon and other Feature Previews

MySQL has introduced Previews as a new way of delivering features for early testing by our community.

Previews are for testing of features, not of versions. The two previews we offer today are the Falcon Feature Preview based on 6.0, and the GIS Feature Preview based on 5.1. However, the version number as such is not intended by us to set any expectations on when the feature will be in a production version. For instance, Falcon is going into the 6.0 code base, but the GIS geographical data won't be in before 6.1 (although the preview is based on 5.1).

Previews are by definition a bit "rough around the edges". They have no inherent level of maturity -- they aren't pre-alpha, or alpha, or beta, or RC, or GA. They are a new way to do "release early & release often" for those who want to get things early, without MySQL tying itself into a promise on the specific delivery release.

Falcon 6.0.4 is available immediately in the preview release and soon will be part of a formal beta. If you want it immediately, go get the preview version!

Our purpose of having previews is to make new features available for those who want early access. That way, we hope for more community testing. For our users, Previews are meant for testing only, absolutely not something to use in production. It's a new way for us to release early & often for experimentation, learning, and testing.

Later on, I hope we will do other feature previews for storage engines or specific features.