[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