Interesting developments.

Michael is currently overseas, with limited access to email, so we may not
hear from him on this subject.

I had health issues that dragged on for an extended time, followed shortly
thereafter by the birth of my twin sons, for which I took a leave of absence
so that I could enjoy being a father before throwing myself back into work.
I also took some time to do some writing about my experiences with
Microsoft's .NET Platform for a couple of magazines and an upcoming book.

This does not mean that nothing was happening on the project.  As was
discussed quite some time ago, the current architecture is not suited for
trying to build a more robust product on.

The following tasks where discussed in regards to a 2.0 redesign:

A redesigned parser, based on Antlr.  I was not in favor of this particular
tool choice at the time, however after having developed the new grammar with
it I do prefer it over the Flex/Bison approach.  I do feel that the enforced
use of the antlr.jar by the generated parser is not the nicest thing, and a
traditional approach might improve speed, but the difference is likely
trivial and not worth the effort.  The generated code is much easier to work
with than that produced by one of the applications that translates Bison
output into Java.

The inclusion of a dynamically loadable query optimizer.  It is quite
possible to write really poor queries that cause extra work for the
execution engine, especially if you move beyond simple transactional
processing statements and start doing reporting.  My research led me to
David Dewitt with the University of Wisconsin, and the OPT++ optimizer
framework.  It was designed in C++, but the core concepts were portable to
Java.  It's inclusion does greatly increase the size of the jar file, there
are 136 classes in the optimizer alone.

An improved execution engine.  In the current engine, there is a single path
to execute any query.  For instance, if you've studied relational theory,
you know that there are numerous techniques for optimizing join operations.

Locking.  Implementing a non-blocking method of locking is critical to
maintain performance.  The approach I proposed was to incorporate a
technique called transient versioning, where every row object has an
integral version number.  This works extremely well, especially on databases
with a read dominated access pattern.

Improved storage manager.  The current storage management is rough at best.
Any checkpoint operation requires rewriting the entire data file.  A
detailed discussion of the new design should be on the sourceforge site.

Logging and checkpointing improvements.  Some early discussions of this
should also be on the site.

Statistics management.  Adding this was necessary to perform any meaningful
query optimization work.

Why isn't all this in CVS?  Because I am behind a firewall which has HTTP
tunneling disabled, and cannot use CVS outside our network.  Also, since
this new architecture constituted a complete rewrite, until something was
usable I saw little point in listening to the "I can't build/run/use the
latest code from CVS".  Publishing the 1.60 code that I did initially was
done by emailing it to Mike, who got it put into CVS.

I'm glad that I was able to pull some people together so that HypersonicSQL
did not simply die, and I've been pleased to see people have started
contributing.  For some time all I got was complaints like "My query that
contains 14 join clauses isn't executed properly by HSQLdb, when are you
going to fix it?"

Unfortunately I find myself with little time or enthusiasm for the project
given some recent developments, not the least of which is the need for more
time with my family.  I am not sure what would be required in order to
remove me from the project on Sourceforge, since I am 'the owner' so to
speak.  I will contact them regarding this tomorrow, turning it over to Mike
if possible.  

I look forward to seeing where you take the project from here.

Mark

_______________________________________________
hsqldb-developers mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/hsqldb-developers

Reply via email to