[TransWarp] PROPOSAL: Rename "TransWarp" itself

Phillip J. Eby pje at telecommunity.com
Mon Jun 10 09:50:30 EDT 2002

At 12:14 PM 6/10/02 +0200, Roché Compaan wrote:

>Ulrich's examples and my experience with ZPatterns helped a lot in my
>understanding.  I have made a new connection class for a MySQLConnection
>and started working on a SQLModel.  I'd love to help with PEAK ;)
>development if I my brain doesn't overload but module inheritance
>simplifies things a lot, suprisingly.  My primary concern is data
>abstraction for SQL and ZODB storage.  How far is development on a
>SQLModel and what should I keep in mind when doing this?

As I've been saying, the TW.Database package is going to get refactored.  I 
don't know exactly how yet, but the level of complexity that's there right 
now bothers me.  The system needs a better way of dealing with alternate DB 
drivers, WarpCORE needs to be integrated, and management of metadata 
regarding the table structures (i.e., allowing creation/modification of 
tables at application install time) needs to be there, too.

I like the metadata capabilities and some of the data capabilities in the 
.NET framework's database object model, so that may be an inspiration.

One of the specific things I know I want to redo is the way connection 
objects return results.  That code was ported from my old app server, ASDF, 
and it doesn't fit the TW model very well.  It also doesn't take advantage 
of iterators, which I think have some potential performance benefits in 
dealing with large queries.

One of the things that ZODB's persistence model has going for it is 
simplicity; I'd like to try to get more of it into TW.Database.  The only 
requirements that I have for the DataModel level stuff that ZODB doesn't 
really implement are multiple ways of identifying the same object, and 
pre-commit writebacks.  If I could find a way to incorporate those concepts 
into the ZODB framework and make RecordManagers be ZODB "database" objects, 
I'd do it in a heartbeat.  The reason being that I could use its caching, 
state management, etc. and not have to reinvent those wheels.

Also, the current TW.Database.DataModel system was designed *pre-2.2*.  It 
doesn't really take advantage of metaclasses, descriptors, etc., except in 
very primitive ways that were tacked on during porting from earlier 
versions of TW.  One reason I went with a mapping interface for records had 
to do with performance issues for __getattr__ that would go away if 
descriptors were used instead.  So it may be that the rewrite will use 
record attributes instead of __getitem__.  Likewise, since class methods 
now exist, it may be that record types will be implemented as classes, with 
queries as class methods, similar to PyDO.  (That might actually be a bit 
difficult, since there's no way in the CIS/SEF architecture for a class to 
know its context, without me making a new Autocreatable metaclass.)

Anyway, as you can see, I don't know where exactly it's going to land.  I 
do know, however, that the parts of TW that are quite solid (module 
inheritance and CIS, primarily) need to get documented and released before 
I try to solidify the higher layers like SEF and Database.  The Naming 
package will also probably join the ranks of the solid and documented 
before I start in on SEF and Database, as Ty and I have some requirements 
in the next month or so that may need the Naming piece more than any other 
current part of TW.  It's quite possible that I'll indeed yank the Naming 
package out of TW and into PEAK before anything else goes into PEAK.

(Assuming, of course, there are no better name suggestions or loud 
objections to the renaming.)

More information about the PEAK mailing list