Re: Re: ZODB with Lazy evaluation / Caching / Data Flow programming

"Wong, Byron" <[email protected]> Mon, 30 Apr 2018 17:53:54 +0800
Newsgroups gmane.comp.web.zope.zodb
Message-ID <CAGqXE6JfAvowLZ7B90e4t4+HpzqW43b7zQdT122FJPwTdLP9Jg@mail.gmail.com>
thanks Tres. This is a good trick and I will keep that in mind.

On Fri, Apr 27, 2018 at 11:13 PM, Tres Seaver <[email protected]> wrote:

> On 04/27/2018 02:43 AM, Wong, Byron wrote:
> > With regards to the consistency across computers issues -- yes in my
> case,
> > it's fine that the read-only client are using a slightly stale data. In
> > fact, that was the model in my previous company... from time to time,
> they
> > will have to "refresh" the in-memory cache and ensure the state is
> > consistent with that's in the database. I saw the YouTube demo on 2 Tier
> > Kanban by Jim ... (this link
> > https://www.youtube.com/watch?v=6v1sIw5j4ss&t=11s)  and see how new
> feature
> > can automatically pop up after object being persisted in DB... that's
> seems
> > pretty awesome, but my guess is without some proper listener logic, it's
> > hard to achieve?
>
> ZEO does propagate invalidation messages for objects modified in a
> transaction.  I don't know from PythonFlow / MDF, but if you can arrange to
> persist an "aggregate" object (think invoice) along with the "detail"
> objects (think line items in the invoice), then you can store the cached
> computations as what ZODB calls "volatile" attributes (those whose names
> start with "_v_").  Volatile attributes are never persisted, and are
> therefore discarded whenever their persistent instance is invalidated /
> reloaded.  E.g.:
>
>     class Invoice(Persistent):
>
>         @property
>         def subtotal(self):
>             cached = getattr(self, '_v_subtotal', None)
>             if cached is not None:
>                 return cached
>             result = self._v_subtotal = self._compute_subtotal()
>             return result
>
> As long as the Invoice instance gets modified whenever one of its line
> items is modified, you get the cache invalidation "for free" from ZODB.
>
> If you can't persist the "aggregate" object, then you might need to use
> some kind of pub-sub event notification to coordinate / distribute the
> invalidations across hosts.
>
>
> Tres.
> --
> ===================================================================
> Tres Seaver          +1 540-429-0999          [email protected]
> Palladion Software   "Excellence by Design"    http://palladion.com
>
> --
> You received this message because you are subscribed to the Google Groups
> "zodb" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to [email protected].
> For more options, visit https://groups.google.com/d/optout.
>

-- 
You received this message because you are subscribed to the Google Groups "zodb" group.
To unsubscribe from this group and stop receiving emails from it, send an email to [email protected].
For more options, visit https://groups.google.com/d/optout.