[TransWarp] current Transwarp status and WARPCore

Ulrich Eck ueck at net-labs.de
Fri Oct 26 07:28:17 EDT 2001

Hi Phillip,

I follow your checkins for TW daily ;-)

is the Database part usable right now ?

do I need to understand the concept of WarpCORE to use it??

if yes, is it possible to give the most basic db-setup for use
with WarpCORE/TW ??

As you said, WarpCORE is not a O-R-binding but a concept of
how to write Apps that use a generalization for data-access.

Is this right ??

I saw from the code that your AppUtils package is needed as well,
are there any other dependencies for testing TW (except those from the wiki)??

> Some good news...  an early form of database support is coming 
> soon.  Initially, it'll just be SQL and LDAP connection objects, "Record" 
> objects, and the beginnings of a StructuralModel.  When this is in place, 
> you'll be able to do the equivalent of ZPatterns SkinScript using plain ol' 
> Python code.  Transactions will also be supported, so that you can build 
> TransWarp web applications using ZLite.  I hope to check in first-draft 
> (i.e. not guaranteed to compile, let alone work) versions of some of this 
> stuff later today.

... yes please :))

> All of this stuff should be reusable with Zope instead of ZLite, but may 
> require some Zope-specific aspects to be added in (such as product 
> factories), and will need some adapters to let you access Zope 
> DatabaseAdapters in place of TW's SQLConnection and LDAPConnection 
> objects.  I don't know when I'll be able to get around to these, but they 
> should be relatively simple for "third-party" developers to whip up.  I'm 
> currently concentrating on ZLite because that's my target platform for a 
> paying project I have right now.

> ======
> Overview
> WarpCORE is a set of patterns for implementing "business object" 
> applications in relational databases.  Truly implementing business objects 
> requires not only "object" concepts like classes, polymorphism, interfaces, 
> and object composition, but also "business" concepts such as relationships 
> and historical event records.  Further, creating practical applications 
> usually requires interaction with "legacy" applications or other 
> systems/databases which are not a part of the new application.
> WarpCORE addresses most of these requirements with only a few tables and 
> stored procedures.  A typical base WarpCORE implementation, depending on 
> the specific database platform, may need as few as 7 tables and 13 stored 
> procedures, many of which can be eliminated if they are not needed for that 
> application.  WarpCORE is also highly cross-platform, with production DDL 
> already in existence for Sybase, and prototypes written for 
> Interbase/Firebird, and PostgreSQL.  Porting to other databases (as long as 
> they have transactions and stored procedures) should be straightforward, 
> since WarpCORE tends towards least-common-denominator SQL features.
> Unlike many object-relational approaches, however, WarpCORE still allows 
> for very high-performance applications, by leveraging the relational 
> database's strengths.  WarpCORE uses a "table per interface" approach which 
> allows each interface to have indexes specifically tuned for that 
> interface's requirements.  It also uses a stored-procedure manipulation 
> pattern that makes it easy to hide any denormalizations introduced for 
> performance enhancement.
> Although the creators of WarpCORE prefer using Python to most any other 
> language, and mostly develop web applications, there is nothing 
> particularly Pythonic or web-oriented in WarpCORE, as it is a set of design 
> patterns for relational databases, not applications per se.  (There are a 
> few fields in the standard "tw_classes" table which are useful for 
> web-based applications, but their use is subject to application 
> interpretation anyway, so there's nothing stopping you from using them for 
> something else or omitting them altogether.)
> Indeed, WarpCORE databases are quite usable from other languages besides 
> Python.  For example, Java offers many object-relational mapping libraries 
> that should work without modification against WarpCORE databases, once the 
> appropriate mappings are defined.  For example, ArsDigita's ACS system 
> includes a "persistence definition language", PDL, which is rather ideally 
> suited to using WarpCORE objects for persistence.  By contrast, PyDO, the 
> closest equivalent to PDL available for Python, would require quite a bit 
> of extension to work well with schemas based on WarpCORE, or at minimum the 
> addition of extra views to the schemas.  We hope to remedy this situation 
> in the future by creating a TransWarp "horizontal framework" for mapping 
> Python objects to/from WarpCORE database schemas.
> ======
> So, as you can see, WarpCORE is *not* an O-R binding or mapping tool, it's 
> a set of modelling patterns for schemas, a set of idioms for organizing 
> data.  If I document it well, I think it will turn out to be a full-blown 
> "pattern language".  But it's not software, even though at some point 
> TransWarp will evolve to include code that's specialized for use with 
> schemas modelled with it.  Currently, the single production WarpCORE 
> application is actually based on Zope+ZPatterns, but Ty and I have just 
> begun work on porting it to ZLite+TransWarp.  This should result in 
> enhancements to both ZLite and TransWarp, probably including some kind of 
> database mapping tools, since the target application has both 
> WarpCORE-on-Sybase and LDAP datasets that it works with.

What you say above sounds very interesting.
I see that you work hard on extending TW these days .. so can we expect a
release within a certain period ??

thanks for your ansers

Ulrich Eck

More information about the PEAK mailing list