[Zope3-dev] RDB support

Casey Duncan casey@zope.com
Thu, 11 Apr 2002 09:24:59 -0600


Lalo Martins wrote:
> On Wed, Apr 10, 2002 at 12:03:22PM -0600, Casey Duncan wrote:
> 
>>Even better I think we might start to think about ORMappings and make 
>>recordsets just a simplistic implementation of them. So, we should 
>>probably abstract this from a basic interface for mapping objects to 
>>records.
>>
> 
> ORMapping!

I left the exclamation mark off mine, since I don't want to get 
anybody's hopes up. ORMappings means different things to different 
people. But I think we should at least aim in that direction for a start.

> What I would like to see is some URL that renders *one* "row" of a query
> result, ORMapped and skinned via the normal skin machinery.

I would image that once a record/recordset is a full fledged object, 
creating views for it would be little different from anything else. 
Actually, given the component architecture's adapters, it wouldn't even 
need to be a very sophisticated object in and of itself.

> Then what I would really love would be to make "sql mappers" traversable.
> But I know, that would be a bit harder.

I think it is along the same lines. Zope 2 makes an attempt at this with 
its direct ZSQL traversal scheme.

> I think this abstracts in a "external data mapping" interface, along with
> diverse stuff like FS access, IMAP, LDAP and the works. (Zope2 LDAP adapter
> is the way I think all adapters should be.)

It would certainly be nice if the application could be better/fully 
abstracted from the data store. That would allow truely storage 
pluggable applications/products.

> This makes Zope3 more object-oriented and consistent - mixing and matching
> different paradigmas makes for a worse learning curve and user experience.

Agreed. However, as Stuart pointed out, the current model has advantages 
and is ultimately more flexible (and also probably better performing 
given a good design) than any general ORMapping could be. So there is 
probably a place for both low level and high level database abstraction 
in the system. A key part of this architecture will be balancing these 
different requirements.

-Casey