Peter,

Thanks for the weighty reply. I agree with everything you've said. When I get it to a point of significance, I'll commit it and hope others can join in a melee of refactoring.

- Paul H

On Sat, 27 Oct 2001 00:31, Paul Hammant wrote:

Folks,

Given that InstantDB is not going to be open after all. ( see
http://www.simpledb.org/  ), I have possibly foolishly though of
starting a clean DB server along the lines of InstantDB and Hypersonic.
The idea is that it sits in Cornerstone/apps and uses as many
phoenix/excalibur concepts as possible.  It would ultimately lean on
many different configurations (assembler duty) of persistence (or not)
and wire transport.  If it gets critical mass and moves beyond "sample"
status, perhaps it could be grated project rights at Jakarta.  For now
though it's a solid Avalon hosted sample application of some size.  I've
actually coded a little of it already...


I like it. One thing I would like though is to create it as a set of components. Assuming you are going with a relational DB, a possible decomposition would be something like


Database stuff:
* index generator: maybe general purpose BTree classes that could easily be replaced (ie pure memory based BTree vs mixed disk/memory Btree vs...). Perhaps you could use that toolkit I pointed out a while back?


* flexible persistence layer: (ie how indexes + rows + column datatypes are stored on filesystem)

* Schema model: separate classes to represent schemas of a database and each row. Things like ColumnMetaData, TableMetaData, IndexMetaData, ClusterMetaData etc. Hopefully useful outside of database aswell so tools like Turbines Torque could use it

* SQL parser: a semi generic parser that could be replaced with parsers for different syntaxs in some cases. The parser would generate the Abstract Syntax Tree. (I know quite a few projects havce such a thing - I think Turbines Torque has a cutdown version of this)

* SQL optimizer: separate module to optimize the SQL AST based on a specific Schema

Network stuff:
* encoders/decoders: Separate encoding out from actual users of encoding. Some encoding examples could be BER (from ITF world), JRMP (ie default RMI protocol), XDR (like used in NFS), IIOP (Corbas default protocol), SOAP etc


* syntax layer: ie how encoding is used (ie the signatures of the RMI/IIOP/SOAP methods etc).

* transport: ie TCP, SSL etc



It would also be useful to reuse parts of existing projects (or proposed standards) if at all possible. I would be quite happy to help creating network stuff (because I am doing that anyways for another project).

I also know of a few people that will want to use just parts of it. I could quite easily see a LDAP server using network/index parts or a object database using the persistence/index + network stuff.

Anyways sounds like a great idea.

Then again, maybe Cornerstone is not the place.  Thoughts?


maybe not. But for now it could be a useful testing grounds until you get it up and running ;)






---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



Reply via email to