Monday, March 19, 2007

PBXT does Windows!

On Friday I posted PBXT version 0.9.85 which concludes my initial work on porting the engine to Windows NT/XP.

I have built a MySQL 5.1 executable (mysqld-nt.exe) to make it easy to try it out. The binary package can be downloaded from http://www.primebase.com/xt. Instructions on how to install are given in the README file.

If you would like to build it yourself, then download the source code from SourceForge.net, and follow the instruction in the windows-readme.txt file.

Unfortunately MySQL 5.1 does not support runtime loading of storage engines, as done on Linux and Mac OS X. Last I heard, this feature will also be a bit slow in coming, and is scheduled for 5.2. So if there is anybody else out there who would like to see this feature sooner, let your voices be heard!

On the whole the port to Windows was fairly straightforward. I miss atomic "seek-and-read/write" functions like pread and pwrite under Windows. But the only real source of problems was the pthread stuff. PBXT uses a bit more of the pthread library than the MySQL server, so I had to add implementations for several functions.

I would like to just link one of the available pthread libraries for Windows (such as pthreads-win32) but MySQL already implements some of the functions, which could cause link errors. In general, I think, MySQL should consider using a LGPL library such as pthreads-win32.

But this is a minor point, PBXT for Windows is running anyway...

7 comments:

Lukas said...

Considering that many developers work on windows and deploy on *nix, not supporting windows for runtime loading of engines is seriously going to hurt the ability to leverage non standard engines. I hope they will at least provide binaries would the bulk of available engines compiled in ..

Paul McCullagh said...

Good point! :)

Roland Bouman said...

Hi Paul!

Wow - you just keep on going! Congratulations in reaching yet another milestone for PBXT. Grand!

Roland Bouman

(PS: I haven't forgotten - I will write about PBXT sometime soon)

Alexander said...

Is there any way to get BLOB streaming engine MyBS to work on windows?

Paul McCullagh said...

Hi Alexander,

The requests for a Windows version of MyBS have become quit frequent now, so we have decided to do the port.

But first, we are just about to make a new release of MyBS.

Following that MyBS is going to have it's name changed to PBMS, which stands for PrimeBase MediaStream.

And after that we plan to start the Windows version.

I am hoping that this all won't take that much time.

If you read planetmysql.org, or subscribe to the mysql mailing list, then you will be able to follow our progress.

Best regards,

Paul

Alexander said...

Hi Paul
Im creating system that should store terabytes of video in mpg4 format in database.
It should be space efficient and have fast insert.
Currently im working with MSSQL server, and it performs OK.I have 12% overhead of metadata on data tables, which is acceptable for me.
Would your system performance be comparable?How Binary data will be stored in the table?As string of ascii values that represents HEX values of data(like in MYSQL engine), or as binary data?
Thanks.

Paul McCullagh said...

Hi Alexander,

BLOBs are stored as binary data. The storage overhead is less than 12%. However, if BLOBs are deleted you can decide how much unused space you wish to allow in the database.

Currently I do not know how the performance compares with MSSQL server. That would require a direct comparison.

It would be great if you could give it a try in your application.

We have just released 0.5.05 (http://bpbdev.blogspot.com) and will start work on the Windows version soon.

Best regards,

Paul