This is quite a milestone for me! At last it possible to actually
do some practical work with the BLOB streaming engine
(MyBS)!
For this release I have completed changes to the MySQL
Connector/J 5.0.7, to allow BLOB data to be transparently stored
and retrieved from the MyBS BLOB repository. The new version of
the driver is called MySQL Connector/J SE (streaming
enabled).
Uploading a BLOB is as simple as using setBinaryStream() or
setBlob() on INSERT or UPDATE. By using getBinaryStream() or
getBlob() after a SELECT you get direct access to the data stream
coming from the repository. More information and some examples
are provided in the documentation at: http://www.blobstreaming.org/documentation.
To try this out you need to install the latest versions of PBXT
and MyBS. Both are available from: …
I see we‘ve put up a QuickPoll where you can vote on what language you use when implementing applications that use MySQL. I know there are a lot of you out there using Java with MySQL, so go ahead and vote at http://dev.mysql.com/
While working on MySQLDump.java this weekend I decided to look into the new features that are heading our way in MySQL 5.1. It cannot be long before we see a general release and I needed to start thinking of ways to backup items like Events. This also made a good opportunity to start afresh with my dev server and try out the latest Solaris 10 8/07 release with GlassFish v2, the releases just keep coming! (SXDE 9/07 was just released).
The Solaris 10 install was as smooth as previous releases (Using Text Based) …
[Read more]
I started work on a Java class that mimics the functionality of the
mysqldump command today.
My goal is to create a standalone application to begin with, but
design the class such that it can be plugged into any other Java
application requiring MySQL backup capability.
After completing the initial prototype of the dump_table method (minus blob support), I began to wonder what the performance would be like compared to the bundled mysqldump application (written in C).
As this was a prototype with no optimisations, the results were not that bad. The following figures were obtained from running both the C-based mysqldump and the MySQLDump.java app against a fairly large innodb …
[Read more]Since writing the mmMySQL macro a few weeks ago I have been looking for a way to produce impressive Graphs that would compliment the textual output from the macro.
Creating good looking Graphs often means resorting to Matplotlib in Python, GD in Perl/PHP or RRDTool. The result of these tools is often a static image depicting an historical view of your data, something that does not lend well to a non-daemonized Wiki page. That got me thinking…..how could I embed a graph into the webpage and collect data at the same time?…..a Java Applet!
After a quick search for a …
[Read more]After several months I have again spent a little work in the MySQL Index Analyzer I first published back in August of 2006.
I added a feature that will find duplicate columns inside an index, caused by the internal appending of the InnoDb primary key columns to each secondary index.
To get the code and read more about the new feature, including an example, go to the MySQL Index Analyzer Blog.
I’ve noticed that in the last five years I’ve started to become very conservative about adopting new technologies.
We’re JUST now migrating to Opterons for example. I’m only now considering adopting Java 5.0.
My stack is essentially Java 1.4.2, MySQL 4.1.22, Debian 3.1 (migrating to Etch), and Athlon processors.
There just aren’t any surprises. The entire stack works and everything is a known entity. Since I have a pretty stable foundation I can look at technologies one at a time without fundamentally changing the stability of the entire system. Java 5.0 looks interesting but no real pressure here at the moment.
MySQL 5.1’s partitioning support will probably be the only feature that pushes us to upgrade. There are some InnoDB fixes I want to incorporate as well.
I have been very busy this past months, with both personal crisis
and mega-patches. This is my MySQL blog so lets keep it to
topic.
A couple of weeks ago, the plugins mega-patch was finally pushed
and was released to the world in version 5.1.18. Thanks to Ingo
and Sergei for keeping up the effort while I was occupied. As
part of the code push, InnoDB code was stripped out of the main
mysqld code and stored where it belongs, within Innobase's code.
This is an exciting development as it now makes it easier than
ever for plugin developers to create plugins without having to
modify any existing code within mysqld. It has taken many months
to get to this point but we are finally there. Anyone remember
our CEO announcing the plugin initutive back when Innobase was
acquired by Oracle? October 2005, I believe.
Since that push, I am back on bug-fixing... I have an annoying
bug on Itanic with Intel's Itanic Compiler. (Yeah, I know the …
This is the second part of the "Howto write a FindBugs Bug Detector" (see the first part here). To understand why one would write the kind of detector mentioned here, you should read the first part if you do not already know it.
Last time I presented a detector that is able to detect static
fields of the types java.util.Calendar
and
java.text.DateFormat
. While declaring fields like
this may be suspicious, there is not necessarily something wrong
with the code. The real danger comes from calling methods on
suchlike fields, especially if they are not synchronized to
protect them against concurrent access. So in this article we
will extend and improve the existing detector to cope with this
problem.
Something to chew on
This a simple class that uses a static Calendar instance. It does not …
[Read more]This is the second part of the "Howto write a FindBugs Bug Detector" (see the first part here). To understand why one would write the kind of detector mentioned here, you should read the first part if you do not already know it.
Last time I presented a detector that is able to detect static
fields of the types java.util.Calendar
and
java.text.DateFormat
. While declaring fields like
this may be suspicious, there is not necessarily something wrong
with the code. The real danger comes from calling methods on
suchlike fields, especially if they are not synchronized to
protect them against concurrent access. So in this article we
will extend and improve the existing detector to cope with this
problem.
Something to chew on
This a simple class that uses a static Calendar instance. It does not …
[Read more]