[PEAK] DM refactoring and asynchrony (was Re: PEAK and Twisted, revisited)

John Landahl john at landahl.org
Mon Apr 19 15:30:15 EDT 2004

Phillip J. Eby wrote:

> The hard part of the design, that I'm chewing on in my spare time, is 
> how to create a Pythonic FO notation, that won't end up looking like 
> Prolog or Lisp!

Funny you should mention Prolog; I was thinking of it while reading your 
description of FO concepts.  A Prolog-ish notation might not be such a 
bad thing.

> Indeed, the more I think about it the more I realize that trying to 
> implement a lot of typical business functions by direct mapping to the 
> OO paradigm actually *adds* complexity and effort.

I've been coming to this realization recently as well.  I only recently 
learned anything about Prolog, but it seems like there's a lot there 
that could be applied to these kinds of problems.  Have you looked at PyLog?

> This is both more and less granular than a DM.  When you have related 
> objects in two DMs, right now you must write code in both to save and 
> load the linking attribute(s).  The same thing in an FO approach would 
> correspond to a single fact type, pairing the two objects.  So, there 
> would be only *one* implementation of that fact type, handling both 
> sides of the relationship.

The "fun" part of this will be matching such relationships to underlying 
data structures in a way which results in efficient SQL.  One advantage 
of the DM approach here is that you can write highly tuned SQL when 
necessary because there's (often) a tight coupling between a DM and the 
underlying data structures.  (Ah, you mention this later on).

> Here, the idea is that a fact type such as 'order_total' is a protocol 
> that you can adapt the editing context to.  Thus, one would create 
> different EC subclasses to define a specific schema mapping.  The EC 
> itself doesn't actually implement anything, however.  Instead, you 
> simply declare adapters (probably sticky ones) for the fact types that 
> can be implemented in the schema.  And if a compound fact type doesn't 
> have a specific adaptation, it just creates a generic compound 
> implementation over the adaptation of the fact types it comprises.

Where and how would you define the underlying schema?

More information about the PEAK mailing list