Earlier this week Giuseppe Maxia blogged about joining Continuent as Director of
QA. Creating high quality systems for distributed data
management is a hard but fascinating problem. I have been
hooked on it myself for many years. Guiseppe brings the
creativity as well as humor our team needs to nail this problem
completely. I'm therefore delighted to know he will be
focused on it.
That said, I'm even happier for another reason. Beyond
solving any single problem, Giuseppe strengthens an already
strong team. Ed Catmull of Pixar gave a great speech a few
years ago about managing creative teams and why successful companies
eventually fail. Among other things he asked the
question whether it is the idea or the people …
Both MySQL and Drizzle have buffers such as sort and join buffers which have size parameters to tune them. Unfortunately these settings are per-client, so if you have thousands of clients all using these buffers you could easily exhaust the RAM of a server. Especially if they are set quite high.
So in the latest Drizzle trunk (and the release due in the next few days) I have introduced global buffer constraints. These constraints make sure that between all the clients there is a cap on how much RAM can be allocated to a buffer.
This was a task the Rackspace Cloud team requested be implemented and I have also seen (and subsequently lost the link to) a blog which discusses the possibility of something similar in MySQL. If anyone has seen the blog post I am talking about please let me know
How this is implemented
For each buffer type there is a new atomic counter which is keeping account of …
[Read more]LWN.net has a nice article on their front page on Drizzle's and MariaDB's recent beta and RC releases. it is behind a paywall for a few more days, but using the link below you can already read it.
LWN.net: New releases from MySQL descendants Drizzle and MariaDB
For years, MySQL has been the highest-profile open source relational database system, but with the Sun (and, later, Oracle) acquisition of MySQL's corporate parent MySQL AB, the development community has split in several directions. Now, a few years later, both of the leading community-driven forks of MySQL, Drizzle and MariaDB, have made important new releases.
...
Following on from my post yesterday on the various states of a Storage Engine, I said I’d have a go with the Cursor object too. A Cursor is used by the Drizzle kernel to get and set data in a table. There can be more than one cursor open at once, and more than one per thread. If your engine cannot cope with this, it is its responsibility to figure it out and return the appropriate errors.
Let’s look at a really simple operation, inserting a couple of rows and then reading them back via a full table scan.
Now, this graph is slightly incomplete as there is no doEndTableScan() call. But you can see in which order things are meant to happen. In this case, “store_lock()” means that store_lock() has been called, …
[Read more]I’d meant to finish writing this way back in July… but I failed at that. Now is a good time to talk about Rookie-O as my again new colleague Andrew Hutchings (Buy his and Sergei’s book on MySQL 5.1 Plugin Development!) just went through the same thing (but in London instead of Hong Kong) given by the same trainer (Hi Eddie!).
Rackspace is the second employer I’ve had that has some kind of new hire training (the first being Sun). I am, of course, not quite counting Salmiakki as new-hire training for MySQL (although I probably should). To quote from the …
[Read more]Drizzle still has a number of quirks inherited from the MySQL Storage Engine API (e.g. BLOBs, row buffer, CREATE SELECT and lack of DDL transaction boundaries, key tuple format). One of the things we fixed a long time ago was to have proper methods for StorageEngines to be called for: startTransaction, startStatement, endStatement, commit and rollback.
If you’ve had to implement a transactional storage engine in MySQL you will be well aware of the pattern of “in every …
[Read more]Since I announced SlackDB a few weeks ago, I’ve had a number of questions and interesting conversations in response. I thought I would summarize the initial feedback and answer some questions to help clarify things. One of the biggest questions was “Isn’t this what Drizzle is doing?”, and the answer is no. They are both being designed for “the cloud” and speak the MySQL protocol, but they provide very different guarantees around consistency and high-availability. The simple answer is that SlackDB will provide true multi-master configurations through a deterministic and idempotent replication model (conflicts will be resolved via timestamps), where Drizzle still maintains transactions and ACID properties, which imply single master. Drizzle could add support for clustered configurations and distributed transactions (like the NDB storage engine), but writes would still happen on the …
[Read more]Dear Perl and Drizzle developers,
I’m pleased to announce the release of DBD::drizzle .301! This release implements several fixes:
* Eric Day’s fix to a bug where a result can be NULL after
error.
* A lot of reworking of column_info() to utilize Drizzle’s
DATA_DICTIONARY and INFORMATION_SCHEMA as opposed to describe and
show commands as well as fixing the catalog test to work with
these changes
* Other fixes from DBD::mysql
You can find the source code at Launchpad.net:
lp:dbd-drizzle
As well as CPAN:
http://search.cpan.org/~capttofu/DBD-drizzle-0.301/lib/DBD/drizzle.pm
Please feel free to report bugs to http://rt.cpan.org, and as always, thank you for your interest in DBD::drizzle!
Related posts:
[Read more]It just it trunk – if you have HailDB installed when you build Drizzle, you will now get the HailDB plugin built. You can even run Drizzle with it (remove innobase plugin, load HailDB plugin). Previously, we had problems building both due to symbol conflicts between innobase and HailDB. We’ve fixed this thanks to the linker.
So, enjoy HailDB… welll, test it and report bugs that I can fix :)
In the current HailDB we have a couple of new API calls that you may like:
-
ib_status_get_all()
Is very similar to ib_cfg_get_all(). This allows the library to add new status variables without applications having to know about them – because we return a list of what there are. For Drizzle, this means that the DATA_DICTIONARY.HAILDB_STATUS table will automatically have any new status variables we add to HailDB without a single extra line of code having to be written. -
ib_set_panic_handler()
Having a shared library call exit() is generally considered impolite. Previously, if HailDB hit corruption (or some other nasty conditions), it could call exit() and you’d never get a chance to display a sensible error message to your user (especially bad in a GUI app where the printed to console error message would be unseen). This call allows an …