[Zope-DB] wishlist

kapil thangavelu k_vertigo@yahoo.com
Sat, 29 Sep 2001 17:27:10 -0700


On Friday 21 September 2001 06:30 am, Matthew T. Kromer wrote:
> kapil thangavelu wrote:
> >
> >i was wondering if you would mind sharing whats on your wish list...
>
> Well, my use of the term "wish list" is mostly idiom, but you've covered
> most of the things I'm unhappy with. I also agree with Andy, that I'd
> like to have a very full testing suite for API compliancy.   One wonders
> if opening up the CVS repository will significantly foster growth of
> test suites (my test cases are mostly ad-hoc programs designed to test
> one or two features, not a *validation* suite).
>
> I specifically want to break apart Aqueduct into two components, such
> that DB connection foundations are one piece, but the query generators
> etc are another.   (Aqueduct is Shared.DC.RDBMS).

(s/RDBMS/ZRDB)

i've looked at aqueduct, i'm not really clear on what your referencing in 
terms of splitting. db connections foundation seemed to be localized to 
connection.py and db_dbi.py. the DA.py stuff seems a bit of misnomer as its 
mainly query building and response handling, but the interaction between this 
and the connection seems to be limited to a single function call. 

> In particular, it's probably [way past] time to write a formal API
> description of how it SHOULD work from Zope, not how it DOES work (which
> is more or less "it does what it does").  In particular, this should
> address various issues related to DB discovery, such that product
> authors can write tools to help query generators assemble queries, etc,
> so the end user does not have to be too sophisticated in the knowledge
> of the schema or SQL.   This does not mean that the revised code will
> USE the features, as much as it does that it forms a better foundation.
>
> However, much of the time, this means finding RDBMS abstractions that
> hide nuances of the various underlying implementations, and that is
> often highly problematic.

problematic to say the least.

what do you think of dbobjects in relation to these objectives?

>  I'd like to be able to see session-correlated
> connection pooling, for example -- so you could have a per-user
> connection to the RDBMS (given certain constraints, anyway) rather than
> per-thread.

i like this in the sense of moving connections away from the zodb soley into 
memory for management, ie loosely connected with zodb anchor points, such 
that there isn't nescessarily a n conn objs x n threads = real connections.

some further additions to a wish list

- i think some classification of a method as dml or dql would be useful, both 
in terms of defining proper transaction semantics (actually considering 
stored procs, probably not that useful here unless user defined for dml/dql), 
and for allowing the possible generation of cached type info from a 
cursor.description.

- i'd like to move the rdbms connections to thread local storage instead of 
just stored as attributes of persistent objects, i think this solves the 
problem that technical requirements of zope level 3 da (as defined by 
petrelli's old docs) need to allow different threads to access a cursor 
(sequentially). this would allow any python level2 db module to function as a 
zope level 3 da.

- global caches for sql methods??

cheers

kapil thangavelu