Friday, February 26, 2010

Embedded PBXT is Cool

Martin Scholl (@zeit_geist) has started a new project based on the PBXT storage engine: EPBXT - Embedded PBXT! In his first blog he describes how you can easily build the latest version: Building Embedded PBXT from bzr.

The interesting thing about this project is that it exposes the "raw" power of the engine. Some basic performance tests show this really is the case.

At the lowest level, PBXT does not impose any format on the data stored in tables and indexes. When running as a MySQL storage engine it uses the MySQL native row and index formats. Theoretically it would be possible to expose this in an embedded API. The work Martin is doing goes in at this level. The wrapper around the engine determines the data types, data sizes, row and index format. Comparison operations for the data types are also supplied by the embedded code or user program.

This flexibility will make it possible for an application to store its own data very efficiently. As Martin suggested, it would also be possible to use Google's protobuf's for the row format. This would eliminate the need to use an ALTER TABLE for many types of changes to a table's definition!

Of course, EPBXT is still a way from realizing this vision, and Martin has some very specific problems he wants to solve with the development. However, judging by his command of the code within such a short time, this is going to be a project to watch in the future!

4 comments:

Mark Callaghan said...

PBXT is cool too.

Mikiya Okuno said...

What will be the license for EPBXT? As it will be your own work, you can choose any license whichever you like. You can take off from GPLv2.

I expect it would be GPLv3 though :)

Martin Scholl said...

Absolutely!
And it features a sane design as well as a phantastic performance with SSDs.

Paul McCullagh said...

Hi Mikiya,

Currently both PBXT and EPBXT are GPLv2. If anything, the license will become less restrictive (or should I say simpler) than more in the future. So BSD is more likely than GPLv3.