[TransWarp] Towards a query theory, part 1: filters and
Phillip J. Eby
pje at telecommunity.com
Tue Oct 14 12:12:28 EDT 2003
At 02:20 PM 10/14/03 +0300, Niki Spahiev wrote:
>IIRC SQLObjects has many similar ideas implemented.
Thanks, but as far as I can tell from its documentation, it does not
support correlation, aggregation, or grouping. It only implements what I
consider "the easy part": pure filtering based on traversal expressions
from a single start set. Such "easy" queries can be executed now on Python
objects, using the functions in peak.model.queries, although SQL generation
is not yet supported.
Generating SQL from "easy" queries involves a lot of details, but is
straightforward, on the whole. Mostly it's a process of walking the query
to extract table aliases, joins, and criteria.
Here are PEAK's "hard" query requirements:
* Support correlations (e.g. the "find employees that lives in the same
city as their supervisor, but was born in a different country" example)
* Support aggregation (count/min/max/avg) over groups (GROUP BY in SQL)
* Support cross-database joins, where an object's data resides in more than
one system, or where some of an object's features are the result of
computation in Python over data retrieved from an external source.
Really, these correspond pretty directly to the promised features of the
fabled Gadfly 2. Alas, Gadfly 2 has been vaporware for almost four years
now. :( Worse, although Aaron Watters' paper for IPC 8 lays out some key
algorithms, others are missing, e.g.:
"""Also note that the treatment of logical OR and NOT as well as EXIST, IN,
UNION and aggregation and so forth are not discussed here, even though they
do fit into this approach."""
And that's largely a description of the "hard" areas! Anyway, I've been
beating my head up against the theory for long enough now that I'm going to
have to bite the bullet and try reading up on Aaron's references again. So
far, I've painstakingly figured out how to implement a variety of things by
reinventing the theory, but I think I'd better read some real theory in
order to verify my ideas so far.
More information about the PEAK