There has been some great discussion lately about internal
database schedulers and I/O handling on the Drizzle
mailing list, and I thought I’d blog about it to summarize
and see what others thought. These are ideas we’re toying around
with for Drizzle, but they could be interesting for other
databases (or other types of servers). The key things we are
focusing on are modularity and concurrency. We also
need well defined interfaces to allow anyone to come along and
write/rewrite a component for their own needs.

History

First, a little background for those not familiar with Drizzle or
MySQL internals. In MySQL, a client is accepted, assigned to a
THD (thread) object, and is given an actual thread to run in. The
client basically sits in a loop of reading a command, parsing it,
executing it, and writing the result back. This works fine when …

I’ve spent the past couple weeks ripping out the old client
library (based on libmysql) from the Drizzle client utilities
(drizzle, drizzledump, drizzleadmin, …). I’ve replaced it with
new code that uses the new libdrizzle. Brian merged this patch into
the trunk yesterday, so we are one step closer to being rid of
the old library! It is still used internally within the server,
so my next task is ripping it out from there.

This means that the old library is no longer installed, so all
new client and application development needs to use the new
libdrizzle. It also means libdrizzle is now required to be able
to build Drizzle. While I’ve done my best to convert the old
utilities, I’m sure I’ve missed a few things. Please report any
bugs you find with them. …

Reading “Test Center: Slacker databases break all the old
rules” has finally inspired me to write this post, which I’ve
been meaning to do for a while. The title of my post may be bold,
but it is just one version of how things may go moving forward
(and was meant to grab your attention). :)

First off, a few issues I have with the article mentioned above:

“…tacking the two letters “db” onto a pile of code that
breaks with the traditional relational model.” - Since when
does a database need to be relational? Sure, relational
databases are the most popular, but they are only a subset of
all the possible database types (let’s not forget hierarchical
or tuple stores).

Over nine years ago I was flying to the bay area for my job
interview at Concentric. It’s been a great run and I’ve learned a
tremendous amount there, writing everything from customized,
multi-threaded HTTP and DNS servers to a clustered, hierarchical
object database with a full query language. The environment at
Concentric feels like a family, probably because a number of
co-workers have been there even longer than me. It was a tough
decision to make, and I …

It looks like they just opened up their call for papers recently,
quoting from their page: “Open Source Bridge is accepting
proposals now through March 31st for our 2009 conference, which
will take place June 17–19 at the Oregon Convention Center in
Portland, OR.”

Tomorrow I’m going to be giving a free webinar on Gearman through MySQL. I’ll be
describing the basics of Gearman and then look at a few common
use cases. I’ll even be touching on some more advanced topics
such as Map/Reduce and persistent queues.

Building on top of my last post, the PHP
extension for the new client and protocol library is ready as
well! You can download the tarball on the Launchpad download page. The PHP extension exposes
the same set of client functions that the C library provides
currently, and is mostly just a wrapper to provide the PHP
specific handling. To install, you’ll need the PHP development
packages installed (if you have ‘phpize’ command you’re all set).
After extracting the tarball, just run:

phpize
./configure
make
make install

And then add the following line to your php.ini:

extension=”drizzle.so”

I realize there is no documentation at this point, we’re working
on that (please get in …

Content reproduced on this site is the property of the respective copyright holders.
It is not reviewed in advance by Oracle and does not necessarily represent the opinion
of Oracle or any other party.