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: …
With some effort just before my holiday, I have managed to
complete the release of the next version of MyBS, the BLOB
streaming engine for MySQL.
This version includes all the basic functionality required to
stream BLOB data in and out of MySQL tables.
The main features are:
-
Uploading of BLOB data directly into the database using
HTTP PUT or GET methods.
- Downloaded of BLOB data directly from the database using HTTP
GET.
- BLOB size may exceed 4GB - theoretical BLOB size limit of 256
Terabytes.
- BLOBs are stored in a repository which manages references
from other storage engine tables.
- BLOBs are referenced by a URL.
- URLs referencing BLOBs in the repository have a unique access
code, for security.
- The theoretical maximum repository size is 4 Zettabytes (2^72 bytes) per …
After some consideration I have decided to move the BLOB
repository from PBXT to MyBS (§). This has the advantage that any
engine that does not have its own BLOB repository (or is
otherwise not suitable for storing large amounts of BLOB data)
can reference BLOBs in the MyBS BLOB repository.
(§) MyBS stands for "BLOB Streaming for MySQL". The BLOB
Streaming engine is a new storage engine for MySQL which allows
you to stream media data directly in and out of the database.
More info at www.blobstreaming.org.
Lets look at an example of this. Assume my standard example
table:
CREATE TABLE notes_tab (
n_id int PRIMARY KEY,
n_text longblob
) ENGINE=PBXT;
And assume we have a file called blob_eg.txt with the contents
"This is a BLOB Streaming upload test".
Firstly, I can upload a BLOB to the MyBS BLOB …
When seeing that the MySQL Proxy was released, I decided to try to experiment with it since I see strong potential with this tool, both for replication and for other uses (recall that I'm a replication guy, so this is my primary focus). I'm actually on vacation, but this will of course not stop me from tinkering with things (I know, I'm just a hopeless case in this aspect ;) ).
After reporting a minor bug, I managed to build and run it with some sample scripts. I'm using Kubuntu Feisty, and had some initial problems, but it was actually pretty straightforward. I'll repeat the steps anyway, in case anybody else have problems.
- Get the source from the repository svn co http://svn.mysql.com/svnpublic/mysql-proxy/ mysql-proxy
- Make sure you have all packages necessary. Several of the packages …
On the MySQL Conference & Expo 2007, I had the chance of meeting up with Paul (the author of PBXT) and Mikael. We briefly touched the topic of the BLOB Streaming Protocol that Paul is working on, which I find really neat. On the way back home, I traveled with Anders Karlsson (one of MySQL:s Sales Engineers), who is responsible for the BLOB Locator worklog and he described the concepts from his viewpoint.
Since I work with replication, these things got me thinking on what the impact is for replication and how it affects usability, efficiency, and scale-out. Being a RESTful guy, I started thinking about URIs both when …
[Read more]