Thursday Jan 14, 2010

The tracks of this year's "MySQL & Friends" Developer Room at FOSDEM 2010 have now been scheduled - please check the Wiki page for details on the talks as well as some background information about the speakers. This info should soon be available via the FOSDEM conference system as well. We had some last-minute changes and we actually managed to schedule two more talks due to a small glitch in the initial calculation. The topics look very interesting, we hope that we can provide some valuable information for developers, users as well as MySQL DBAs!

One of our speakers (Kris Buytaert) suggested to arrange a joint dinner for Saturday evening, which is indeed a good idea! Thankfully he also volunteered for coordinating it - thanks in advance! If you'd like to join, please leave your name and food preference on this doodle poll. We plan to meet at 19:00 on Saturday, under the big tree in front of the AW building.

Friday Jan 08, 2010

We are happy to announce the selected sessions for our "MySQL and Friends" developer room at FOSDEM 2010 in Brussels, Belgium. It will take place on Sunday, 7th of February from 9:00-17:00 in Room AW1.121.

In total, we received 20 submissions from 15 speakers. We'd like to thank them very much for their great proposals!

As we only have 12 speaking slots (20 mins each) available that day, we first needed to perform a selection process. Unfortunately there wasn't enough time to perform a full-blown voting process that involved the community at large. Since we didn't want to do this in a completely closed committee, we decided to involve all speakers that submitted a talk in this.

After this voting process, the final candidates are (ordered by last name).

Update: Mikael Ronström had to cancel his talk about "The new MySQL Thread Pool Design". Instead, Frédéric Descamps will talk about "Daily Maintenance of Big Databases/Tables".

Speaker: David Axmark
Title: Drizzle, A MySQL fork for the Web
Abstract:

The Drizzle project is building a database optimized for Cloud and Net applications. It is being designed for massive concurrency on modern multi-cpu/core architecture. The code is originally derived from MySQL. The code has been simplified by removing many of the original features (Stored procedures, triggers, views, some types etc). Other features are being moved from the core to plugins.

Speaker: Piotr Biel
Title: Multi-Master Replication Manager for MySQL
Abstract:

  • Introduction to MySQL high availability with MMM
  • MMM architecture overview
  • pros and cons
  • examples of usage

Speaker: Ronald Bradford
Title: 10x performance improvements - A case study
Abstract:

Taking a client from a 700ms (at times 1-2 seconds) page load time to a consistent 60ms is a great success story for improvement in database performance.  In this presentation we will outline the steps taken and what can be applied to any website as one model to use in evaluation of your website.

While part of a longer talk, we will be reviewing the highlights including:

  • Identify what is truly slow and high volume queries
  • Choosing the right indexes including unique indexes, concatenated and partical indexes
  • Choosing the right storage engines (MyISAM, InnoDB and Memory)
  • Removing load including synchronous/real-time queries, master load, locking and sharding
  • The best performance improvement for a SQL statement is to eliminate it
  • Quantifying improvements made

The 10 Points are:

  1. Monitor, Monitor, Monitor
  2. Identify problem SQL
  3. Analyze problem SQL
  4. Indexes
  5. Offloading master load
  6. Improving SQL
  7. Storage engines
  8. Caching
  9. Sharding
  10. Handling database maintenance

Bonus: Front end improvements

Speaker: Kris Buytaert
Title: MySQL HA overview
Abstract:

Database High Availability is often the core component to build a higly available infrastructure.

This presentation will guide you trough the different options available with their advantages and disadvantages when choosing a method to setup a Highly available MySQL setup.

We'll cover MySQL Cluster, MySQL DRBD, MultiMaster based HA setups and different others including a look at how to integrate them with the Operating System.

Speaker: Stéphane Combaudon
Title: Correcting replication data drift with Maatkit
Abstract:

Replication with MySQL is very easy to set up but also very easy to break. As soon as inconsistencies are introduced, the master and the slaves start being desynchronized - and most often, you have no way to be quickly and efficiently aware of the problem as MySQL offers no built-in mechanism to check data consistency between servers.

Fortunately Maatkit has a neat solution with 2 nice scripts: mk-table-checksum, which is a tool to detect inconsistencies between a master and its slaves and mk-table-sync, which can correct automatically these problems detected with mk-table-checksum.

This session will show you first how to use both tools depending on your replication setup (master-slaves or master-master) and then how to get the most from the multiple options that are available.

Speaker: Marc Delisle
Title: State of phpMyAdmin
Abstract:

phpMyAdmin is still evolving. New features in version 3.3 include changes tracking, replication support and database synchronization. Other lesser known features like data transformation and graphical relational manager will be covered as well.

Speaker: Frédéric Descamps
Title: Daily Maintenance of Big Databases/Tables
Abstract:

Explain the tools and best practices on how to daily maintain big databases/tables

Speaker: Seppo Jaakola
Title: Galera Replication for MySQL
Abstract:

This session will present the current state of Galera replication project. The presentation will contain elements like:

  • High level overview of Galera replication method
  • Contents of recent MySQL/Galera 0.7 release (fully open source)
  • Feedback and experiences from the field
  • New benchmark results
  • Short term road map, 0.8 development status

Speaker: Vladimir Kolesnikov
Title: Effective SSD for your Database - a PBXT Primer
Abstract:

In this session it will shown how to efficiently combine SSD and HDD storage for the benefit of performance of a MySQL database. Examples involving the PBXT storage engine will be demonstrated.

Speaker: Giuseppe Maxia
Title: Sharding for the masses
Abstract:

The Spider storage engine, a plugin for MySQL 5.1 and later, is an extension of partitioning. Using this engine, the user can deal transparently with multiple backends in the server layer. This means that the data is accessible from any application without code changes. This lecture will briefly introduce MySQL partitioning, and then shows how to create and use the Spider engine, with some practical examples. This talk covers the latest version of the Spider and the Vertical Partition engines, including the related technology of UDFs that come with the engines. Practical instructions of how to install and use these technologies will be provided during the session.

Speaker: Kristian Nielsen
Title: Beyond MySQL GA: patches, storage engines, forks, and pre-releases
Abstract:

There is more to the MySQL server than MySQL 5.1 GA.
There are a lot of patches available that are not included in the official MySQL source tree. There are several new or enhanced storage engines. There are a handful of branches of the MySQL source code maintained by community members. And there are official MySQL milestone releases and snapshots. But to benefit from all of this, one has to know that they exist, and know how to use them.
In my talk, I will first give an overview of what community enhancements of various kinds are available. I will then go through the options for using these enhancements, including using pre-build binaries from various sources, building from alternative source trees, building storage engine plugins, and patching upstream MySQL sources.
Speaker: Mikael Ronström
Title: The new MySQL thread pool design
Abstract:
This session will present a new thread pool design worked out in the last few months. The design will be presented together with its pros and possible cons. Benchmark data validating its relevance to users will also be presented.

The main benefits of a thread pool design is that users can now have thousands of connections to the MySQL Server in a scalable manner. It also provides a performance which is more independent of the number of concurrently active connections than previously.

Speaker: Geert Vanderkelen
Title: MySQL and Python: an overview
Abstract:

There has been lots of chatter about other languages, but not much about Python. This talk will give an overview of what is available to connect to MySQL, and also introduce MySQL Connector/Python.

These talks will now be put in the room schedule on the MySQL Forge Wiki. We look forward to having these sessions! If you happen to be a FOSDEM, please stop by at our Developer Room!

Tuesday Jan 05, 2010

A Happy New Year to all of you! About a month ago we posted our initial Call for Papers for the MySQL Developer Room at FOSDEM 2010 in Brussels, Belgium. We already received several great submissions and we'd like to thank the speakers who contributed their suggestions so far. But we would like to get some more!

Therefore we decided to extend the deadline for a few more days: you can still submit your talk proposals until tomorrow (Wednesday, 6th)!

So if you think you have an interesting MySQL-related topic to talk about, we'd like to hear about it! Thanks.

Tuesday Dec 15, 2009

Following our new Milestone-based release model, we've now published MySQL 5.5.0-M2. Please see the "What's New in MySQL 5.5" section of the reference manual for a summary of the most notable changes. The MySQL 5.5.0 Changelog provides a much more detailed list of changes, bug fixes and improvements.

Highlights in this release include:

The InnoDB plugin (currently at version 1.0.5) replaces the built-in InnoDB storage engine. This version includes a number of important performance improvements, especially when running on multi-core CPUs with many concurrent transactions.

Support for "semisynchronous" replication. This is a very useful feature to check out, if you use MySQL replication in a high-availability scenario and you want to ensure that at least one replication slave has received the latest transaction that was committed on the master. The master waits for confirmation from the slave after a commit before it returns control to the application. See the chapter "Semisynchronous replication" in the reference manual for more details. Mark Callaghan and Giuseppe Maxia also provide some more background information about this feature in their blog posts.

You can now use SIGNAL and RESIGNAL statements in stored routines and triggers, as defined by the SQL standard. These statements can be used to raise an error inside of your routines and can define appropriate actions, e.g. displaying an error message or issuing warnings. Check out the reference manual or take a look at Roland Bouman's blog post that provides a quick overview by giving a practical example.

The table partitioning functionality that was introduced with MySQL 5.1 received a large number of bug fixes and improvements. For example, you can now use two new types of user-defined partitioning: RANGE COLUMNS and LIST COLUMNS, providing more flexibility when it comes to defining how a table should be partitioned (e.g. by defining ranges or lists based on DATE, DATETIME or strings). Ranges based on multiple columns are now possible, too. For more information, please see the chapters "RANGE Partitioning", and "LIST Partitioning" in the reference manual.

Other improvements include new LOAD XML statement, which allows you to read data from an XML file into a table, a new TO_SECONDS() date function to calculate the number of seconds since the year zero and a ton of bug fixes.

Binary packages and sources are now available from the MySQL 5.5 download pages. The Bazaar source tree of this milestone release is available on Launchpad, too, in case you want to take a closer look at the ongoing development work in this branch. So please download and toy around with this release – we are looking forward to your feedback!

Wednesday Dec 09, 2009

FOSDEM 2010, the annual Free and Open Source Software Developers' European Meeting will take place again on February 6th and 7th in Brussels, Belgium. Next year they will celebrate their 10th anniversary (congratulations!) and we feel very honored and happy to announce that the organizers accepted our request for a developer room! They had to reject many proposals due to the great demand (there were 39 applications, but there are only 12 rooms available per day). Therefore we are glad to be among the excellent projects that will be present there.

Our devroom is titled "MySQL and Friends" and will be available for sessions on Sunday, 7th from 09:00 - 17:00. It will be located in room AW1.121 and provides 81 seats, a video projector with VGA cable, and wireless Internet. As for the previous edition, we would like to set up a schedule of talks related to the MySQL server and the various projects that surround it. For the next time we will introduce a small change: each talk will last 20 (instead 45 minutes), plus 5 minutes of Q&A. This will give us 12 slots to fill up, plus a short opening keynote and a lunch break. This idea was inspired by Scott Berkun's great book "Confessions of a Public Speaker", which is a very entertaining and insightful read. If you are a frequent speaker at conferences and events, we highly recommend it.


At this time, we would like to encourage and invite you to submit a talk! We are looking for covering a wide range of topics that attract both MySQL DBAs as well as application developers that work with MySQL as their database of choice. Are you developing a new storage engine or other plugin? Do you want to share your experiences and best practices in administering or deploying MySQL servers? Did you develop a new method to scale a MySQL setup? Let us and the audience know about it! You can submit your talk proposal via this submission form.

The deadline for turning in your proposal is Sunday, 3rd of January, 2010, after which there will be a voting and rating period to identify the most interesting and attractive topics.

We are looking forward to your ideas and suggestions! If you have any questions, please check our FOSDEM 2010 page on the MySQL Forge Wiki and feel free to get in touch with us directly or via our public mailing list. Thanks in advance!

Tuesday Sep 22, 2009

I have somehow managed to weasel been selected to speak at a few of the upcoming conferences this October.  I will be presenting at the various conferences either on Performance tuning the MySQL server or on using EXPLAIN.  I know... I know - they must be crazy to have picked me, but I am not crazy enough to turn down the opportunity.

 I will be speaking at Codeworks -Miami (Sept 30 - Oct 1), the Zend PHP Conference (Oct 19 - 22) and the Florida Linux Show (Oct 24) so if you are attending or just in the area - be sure to find me for a chat.  If you are at the Florida Linux Show I will be in the MySQL booth and should also have some goodies to hand out as well - thanks to the Community team... and who wouldn't want free swag...

It will be absolutely crazy for a bit (my husband will get to pretend he is single for a while) but I can't wait to see you there. 

Guest post by Ligaya Turmelle, MySQL Support Engineer

Wednesday Sep 09, 2009

The MySQL Community Team maintains a calendar to keep track of Open Source events and conferences that might be relevant from a MySQL point of view (either by submitting a talk, sponsoring or attending it). This calendar is now public - you can either look at the HTML version on the MySQL Forge or subscribe to the iCal feed (e.g. using Mozilla Sunbird or Lightning).

Are we missing an event? If you know any other events that should be included in this calendar, please submit your suggestions via this event submission form. Thank you!

Tuesday Aug 11, 2009

FrOSCon Logo

Do you plan to attend the Free and Open Source Conference (FrOSCon) in St. Augustin, Germany on August 22 & 23? Are you a fan of MySQL and would you like to share your knowledge about it with other users? Here is your chance!

Sun Microsystems is a Gold sponsor of FrOSCon this year and will also be present with a booth there on both days. In addition to demo stations about Open HA Cluster, OpenSolaris and NetBeans, Sun will also provide space for a MySQL info desk, which we would like to turn into a "Guru Bar", including members of the MySQL community.

The goal is to talk with existing and potential new MySQL users, share knowledge and expertise. We want to inform the visitors about what's new at MySQL and how they can get more information and help. If you have a solid MySQL background, are familiar with the various MySQL information resources (e.g. the DevZone, Forge, Forums, Mailing Lists, Planet MySQL) and enjoy talking to other users, we would like to hear from you! If you're interested in participating at the Guru Bar, please contact us at mysql-community AT sun DOT com for details. Thank you!

Monday Jun 29, 2009

FrOSCon Logo

FrOSCon, the Free and Open Source Conference, will take place on August 22nd and 23rd in Sankt Augustin, Germany. Sun Microsystems is a Gold Sponsor of the conference which takes place for the fourth time now. As for the previous years, the organizers have managed to arrange a great lineup of speakers and content. Presentations are held in both English and German — a first draft of the schedule is now available. However, it is still subject to change in some details, based on the feedback by the invited speakers.

I am looking forward to this event, especially since we're helping to organize the OpenSQL Camp subconference there, which will take place in parallel (there also is a subconference about Java this time). By the way: if you've missed the deadline for submitting your database-related talk to FrOSCon, you can still submit your talk for OpenSQL Camp until July, 19th! We look forward to your submission.

On the FrOSCon main tracks, there will be a number of MySQL-related talks as well as presentations about other Open Source projects sponsored and supported by Sun. Here's an excerpt from the schedule:

In addition to that, there are numerous other very interesting talks related to Linux, Open Source, Cloud Computing and other topics. There usually is a nice social event (BBQ) and BOFs on Saturday evening and the overall atmosphere at FrOSCon is very relaxed and friendly. So don't miss this opportunity!

Tuesday May 12, 2009

Several people commented on our last blog post or contacted us via our Twitter account, asking questions and raising concerns about migrating the MySQL user group organization to FaceBook. It seems like there is some confusion that we would like to address: you are not required to move to FaceBook. This was just a recommendation, you are of course free to choose whatever service you prefer to manage your MySQL user group. In fact, you are of course welcome to continue using Meetup.com for this! However, be advised that you will have to take care of any occurring fees by yourself from now on, as the sponsorship agreement between MySQL and Meetup.com was not renewed.

And if Facebook is not your cup of tea, there are other services that provide similar functionality. We've tried to document these on the MySQL Forge Wiki - please feel free to add your own suggestions and provide hints based on your experiences! Some of the other services that we know about include:

 In any case, wherever your user group's new home will be, please ensure to update the List of MySQL User Groups on the Forge Wiki! Thanks.

Monday May 11, 2009

Background

For several years, MySQL User Groups have been organizing their meetings with Meetup.com, a service that simplifies event management. However, MySQL User group organizers received a surprise message from Meetup.com a few days ago.

We were all taken by surprise by Meetup's sudden announcement and allegation that MySQL "did not want to sponsor" the users groups, because there is a valid agreement between MySQL and meetup.com. The agreement is still in effect, ending on June 10, 2009.

Apparently, there was some miscommunication inside Meetup.com, because the group organizers received a message stating that they should now pay for meetup services, which they used to get for free, thanks to MySQL sponsorship.

It took us a few days to track the origin of the misunderstanding, and when we thereafter got in touch with meetup.com, we learned that their business model has changed.

Moreover, they would no longer accept sponsorship agreements like the one we have had in place so far.

Current situation

Meetup.com's business model differs considerably from before.

This is the summary description of how the sponsorship works, as received from meetup.com:

"All organizers will need to pay their Meetup subscription fees and through sponsorship can receive financial support from participating in a sponsorship."

Without sponsoring, each MySQL User Group would end up spending 12 US dollars a month, or 144 dollars a year, for the ability to use Meetup.com's services.

What now?

MySQL User Groups are obviously free to use any service for event management and invitations. However, as Meetup.com has terminated our agreement, we in Sun's MySQL Community Team will no longer sponsor nor recommend the usage of Meetup.com for our User Groups. In this sense, while Meetup.com's announcement that MySQL did not want to sponsor the fees was originally not true, it has now become reality.

That said, we want to thank Meetup.com for graciously hosting MySQL groups so far. It's been a great service! We wish Meetup.com good luck with their new business model. And obviously, any user group that wishes to stay with Meetup.com is free to do so, but in that case, they will be responsible for the fees themselves.

The Community Team recommends the MySQL User Groups to manage from now on their user group invitations with Facebook. We've been in contact with Facebook on this, and they're thrilled at the idea of hosting MySQL groups.

And as you know, their service is free of charge.

We know such a migration is going to be a strain for many of you, and for this reason Colin has prepared an article to assist you in your migration (It's in Colin's blog ).

If your group has been inactive for a while, this might be a great time to re-invigorate your users with a change in scenery!

If you need a mailing list for your user group, we will gladly assist anyone who needs a dedicated list, like we've done for several groups before: http://lists.mysql.com/#ug.

The main point is to keep the groups working, and to keep meeting other users, regardless of the system used to spread the news.

If there are practical problems related to your migration, please let us know. If you would like to use different networks to organize your group, such as in particular Xing for German speaking MySQL User Groups, feel free, and let everyone know.

In particular, make sure to update your Group's whereabouts on the MySQL Forge Wiki.

Happy Meetings!

Wednesday Mar 18, 2009

If you liked the article on QA before releasing, you may want to mark your calendars for this session at the MySQL Users Conference and Expo 2009, where Omer BarNir and Trim Pershad will tell everything about Software Quality and Testing in MySQL.

Trim and Omer are veteran QA engineers, whose main goal is to improve the quality of MySQL products. Their session will tell you how the QA process evolved and what is going on right now.

MySQL Conference & Expo 2009

Thursday Feb 12, 2009

FOSDEM, the Free and Open Source Software Developers' European Meeting

Now that FOSDEM 2009 in Brussels, Belgium is over, it's about time for a conclusion/summary. I've been to FOSDEM for about five times as both an attendee and speaker, but this year I was much more involved. On Saturday, I gave a lightning talk about "Why you should use Bazaar for maintaining your OSS project". On Sunday, I gave a talk about "MySQL High Availability Solutions" in the main conference track. Both went fairly well and there was good feedback from audience. I've uploaded the slides for both talks to the FOSDEM 2009 page on the MySQL Forge Wiki, video recordings of the sessions should be available on the FOSDEM Video Recordings page soon.

We had a project stand that we shared with the OpenSolaris project, and it was particularly nice to finally meet Roman Strobl in person - he is a former NetBeans evangelist, now OpenSolaris evangelist who blogs on The Observatory. We had quite a lot of visitors stopping by at the desk. I would like to thank Walter Heck and Santo Leto in particular for their outstanding support with manning the desk!

On Sunday, we had a MySQL Developer Room with a full schedule of talks. We had to make some last minute changes to the schedule, one speaker had to cancel his talk on short notice due to a family emergency and we decided to change to topic of Kaj's talk into an interactive Q&A session to address the recent developments that happened that week. The room was usually packed for every session (~70 people), and it seems like both the attendees and speakers had a great time. The slides are now available from the MySQL Forge Wiki.

On this page, you will also find links to related articles and blog postings about the MySQL activities as well as links to pictures - feel free to add other pointers that you are aware of! I would like to thank all speakers for their excellent contributions, especially our volunteers from the MySQL Community: Roland Bouman, Kris Buytaert, Vladimir Kolesnikov and Jurriaan Persyn. Keep up the great work!

In summary, I think the MySQL DevRoom and project desk were a great success and we should have one next year, too (and maybe on other conferences as well). However, there are several things that could be improved for next year. My lessons learned:

  • Try to avoid last-minute changes to the schedule after the conference brochures have been printed
  • Align the session times with the main conference sessions, to allow easier transition and avoid overlap
  • Appoint a moderator that keeps track of the DevRoom schedule and takes care of the speakers and Q&A parts
  • Hire/appoint someone to record the sessions on video
  • Don't schedule yourself for booth duty, if you are also a main track speaker and DevRoom organizer
  • Take some time to properly introduce and brief all volunteers about activities and people involved
  • Make sure that volunteers that offered to help out with booth duty actually show up and are available, keep a printed copy of the booth schedule on the table
  • Provide free drinks and snacks for the people on booth duty
  • Set up a proper demo system for showcasing applications in advance, don't rely on Internet connectivity on site
  • Have more MySQL-branded merchandise/schwag to hand out
  • Have more info material/leaflets about the relevant offerings available, in the appropriate language
What else do you think can be made better next time? Please let me know. Thanks!

Tuesday Feb 03, 2009

MySQL & Open HA Cluster
A while ago we published an interview with Detlef Ulherr and Thorsten Früauf about Solaris Cluster / OpenHA Cluster on the MySQL Developer Zone.

We received a number of followup questions from our readers, requesting more technical background information. For example, Mark Callaghan was wondering about the following:

  • How is failure detection done?
  • How is promotion of a slave to the master done after failure detection?
  • How are other slaves failed to the new master?

I asked Detlef to elaborate some more on the technical details of this solution. Here's his very exhaustive reply, thank you very much, Detlef!

I would also like to point out that he'll be speaking about Solutions for High Availability and Disaster Recovery with MySQL at this year's MySQL Conference & Expo in Santa Clara, which will take place on April 20-23, 2009.

But now without further ado, here are Detlef's answers:

[Read More]

Thursday Jan 15, 2009

By Giuseppe Maxia

The Data Charmer, a.k.a. The Wizard, is a free lance database consultant, with a long career in several IT fields. He is well known for his Perl and SQL expertise,although he is proficient in several other languages, such as C++, shell scripts, and Italian.

He has a split personality, one of which lives in virtual space and time, floating around UTC+1. The other (or the others, as there is a dispute about how many they are) is less documented and some people believe it to be fictional. He teaches Creative Biography at the University of Euphoria, CA (also known as Euphoric State).


G.M. Hello, D.C. Thanks for agreeing to be interviewed. I'll start with a question that most people ask. Who are you?

D.C. This is not really a question I'm willing to answer. Besides, the answer would be misleading. In the Internet age, I can be several people at once. Even presenting myself with the same name, I would be known as a different kind of individual in each place I appear. If I discuss philatelic matters in a specialized forum, they won't be interested in my involvement with the Perl community, thus I keep separate names for different places.

G.M. Ah! You're a philatelist, then?

D.C. No. That was just an example.

G.M. You have been associated with a few names in the IT field. Some have even said that you and I are the same person. What is your comment on such allegation?

D.C. Believe it or not, this question can't be answered in full. I may well be a different person when this interview is over. I could even be you, even though I recall many times when you have come to me for help, but the matter of identity is not compelling. I'm content with my fuzzy definition of a hyper space entity.

G.M. Ok. Let's move with more definite matters. What's your involvement with MySQL?

D.C. I started using it about eight years ago. I had a problem to solve quickly, and MySQL was available, easy to install, and it fit the bill

wonderfully. Then I found out that it was the right tool for a whole range of medium to high level problems, and I started using it instead of other more famous databases, despite the wide criticism from most Cargo Cult programmer, who claim that MySQL is not a real DBMS because it lacks this and that feature.

G.M. Whoa! Hold down. That's a mouthful. What's a Cargo Cult programmer?

D.It's a funny, but very effective concept introduced by Richard Feynman in regard to science. He recalls that during the WWII in some Pacific islands the inhabitants observed American soldiers gesturing on an airstrip when military cargoes were landing, carrying every sort of goods. When the war ended and the troops left, the natives tried to recreate the conditions for the cargoes to land. A man with half coconuts on his ears wandered the airstrip, waving wooden pads, while others inspected the horizon from the height of makeshift control towers. But of course no cargo arrived as a result of their efforts. Likewise, there are many programmers who solve their problems with cut-and-paste, without having any idea of why the original code was structured in that way.

G.M. Are you telling me that all MySQL critics are Cargo Cult programmers?

D.C. No. But a real good share of them are. Why? It's a matter of statistics. The Internet has dozens of millions of dynamic sites. Behind each of them there is some sort of database, but that does not mean that all their users are database experts. On the contrary, most web developers in my experience, know very little about databases, and they use databases through wrappers. If you ask those people which database they are using, they may tell you it's 'Java' or some trendy CMS brand. I came across many programmers who were using Oracle through one of such wrappers and they spent much time explaining to me why Oracle was the right choice for the task straight from some marketing ad. However, I was auditing their code, to find the reason for a performance bottleneck. They wanted to show me the interaction with Java classes that handled the database. Instead, I looked at the database logs, and I found an impressive number of commits and no join clauses in their select statements. It turned out that they were not using database transactions at all, and they were emulating transactions with client code. And what's worse, their code was emulating joins as well.

G.M. This looks too ugly to be a generalized case. Surely the majority of database programmers are not like that.

D.C. I would like to share your optimism, but my personal experience tells me exactly the opposite. Most database programmers have little clue of relational theory, and thus most performance and scalability issues are just a problem of lack of basics.

G.M. Perhaps we have gone too far from the main subject of this interview. Let's try to get back on track. How did you get involved with databases?

D.C. I had my first encounter with SQL about twenty years ago. I attended an Oracle course and I started using it at my employer's. A few years later I was introduced to formal relational theory during a long course in structured analysis. Before that , I knew about relational theory as a necessary complement of SQL, not the other way around. Once I got acquainted with formal relational theory, I found out that it suited me quite well. I can design data in 3NF just out of my head. Thus, when I see a beginner struggling with a 1NF or even breaking it, I can see immediately what's wrong.

G.M. After your initial acquaintance with Oracle, have you used it a lot?

D.C. Not really. At my employer's it was ruled out after a few months, in favor of a home made solution. I'm talking about mainframe applications, which were still common at that time. Oracle was supposed to replace a huge non-relational database that was designed in the 1960s and it was showing its age. Personal computers were not as ubiquitous as they became after 1995, and the idea of using a PC for a database was considered sort of bizarre by the few professionals of this field. There was no Linux and no widespread open source yet, and MSDOS was by all practical purposes the only choice of OS in the market. In these years I managed to migrate the mainframe database to a relational one, using a PC based API for a RDBMS written in C. There was no MySQL in sight yet, and that wonderful API did not have a SQL interface. I wrote a simple wrapper that sounded like SQL and with that I converted the existing financial procedures in the new system. Since then, I have been always curious about the internals of database system. When I found MySQL, with its open code, it was love at first sight.

G.M. Let's skip to a related subject. You said that at the end of the 1980s MSDOS was the only choice. What's your take now? Which is your OS of choice?

D.C. As a MSDOS user, I became quite an expert at circumventing its limitations, the biggest of which was lack of multitasking. Although multitasking processors had been available for a few years (80286 and 80386) there was no way of exploiting that. When Windows 3.1 hit the shelves, offering a simple multi tasking, I grudgingly embraced the new system. It was clear from the beginning that most of the knowledge accumulated during the years of MSDOS usage were nearly useless with Windows 3.1. Which had its problems as well. And so I waited for the next major miracle, Windows 95, announced as the ultimate problem solver. What was ultimately true though, was the realization that most of the experience I had with MSDOS and Windows 3.1was now going down the drain. It seemed that Microsoft was making a point of discarding the ones who had invested time and money to become proficient with its products. In the meantime, in 1993 I had a serendipitous encounter with an alternative operating system. Its name was Linux, and it could do multitasking much more efficiently than Windows. I started using it for some projects, and I appreciated its powers. In 1999, when it became clear that the successor of Windows 95 were going to make me discard yet again my previous knowledge, I began to use dual boot computers with Linux and Windows. In 2001, I abandoned every surviving hope of seeing a usable OS from Microsoft and since then I only have full Linux installations in my machines. This year I started using a Mac Laptop, and to my delight I could apply most of my Linux expertise to this OS. I am currently using three Linux boxes for sheer power and development, and the Mac for mobility.

G.M. What are your tools of the trade? Editors, and so on?

D.C. I'm a command line guy. I do my text manipulation from the shell prompt. Between shell built-in commands and Perl I do most of my work. My editor of choice is vim. I know that there are more powerful ones, but vim (or at least 'vi') is ubiquitous. If you can use it, you can work everywhere. Vim is to editors what MySQL is to databases.

G.M. You have been called a wizard, a guru, a hacker. How do you describe yourself?

D.C. I am an experienced user of tools and I'm always curious about how things work and eager to learn new things. I don't call myself a hacker, but I don't object being called that. About wizard and guru, well, it makes me smile when I realize that I can still surprise someone with my old tricks.

G.M. If you could leave one piece of advice into the universal bag of tricks for technology newbies, what would your advice be?

D.C. Be curious.

This blog copyright 2010 by Lenz Grimmer