Re: [ZODB-Dev] Decouple persistence, database, and cache

2006-11-29 Thread Christian Theune
Hi,

Jim Fulton wrote:
 I've created a proposal:
 
http://www.zope.org/Wikis/ZODB/DecouplePersistenceDatabaseAndCache

I took some time reading it to day (and trying to spot the problem you
mentioned, but I probably failed on that one.)

Here are some lightweight questions just for clarification:

Fundamentally, the persistence framework is about events. Databases and
caches need to be notified of certain events:

Databases would specifically be a data manager when talking
about ZODB databases, right?

Cache implementations will define persistent observers.

The term persistent observer reads (to me) in many cases as
observer for instances of things that subclass
persistent.Persistent is that right? I'd like to change this
wording a bit to make it easier not to confuse this with an
observer that could be made persistent. Minor thing, but I had
to think about it several times while reading the proposal.

The Persistent base class will continue to provide methods _p_deactivate
and _p_invalidate to allow subclasses to override these, when necessary.

I'm very unsure about this (as I'm not very knowledgeable about
Python on anything C-related), but is there any chance this
conflicts with the goal of not having any C-Data defined in
persistent.Persistent? I guess not, as they are methods, but
then again, I don't know for sure.

There will be a PersistentObserver? base class that will act as a
marker. The Persistent implementation will find an object's persistent
observer (if any) by searching it's weak references for an instance of
PersistentObserver?.

I guess that 'getweakrefs(object)' is implemented rather fast in
Python and weakrefs aren't used that much anyway, so the result
would many times be a one-item list. However, the observer has
to be looked up a few times during the life cycle of an object.

Is that a hidden place for performance loss?

The data-manager's accessed method should be called if the object has
been accessed. 

Hmm. I haven't found a method named accessed in the whole
ZODB. And definitely not on the IDataManager or
IPersistentDataManager. Is that going to appear within the scope
of this proposal? What does it do?

The persistent attributes _p_jar, _p_oid, _p_changed, _p_serial, and
_p_mtime will still be supported but will be deprecated for a long
deprecation period.

Will this conflict with the goal of not having any C-Data in
persistent.Persistent?


Ok. That's anything that I can come up with. If I didn't find the
problem that you're keeping in your head, maybe you want to share it
with us? (Not wanting to spoil the fun for anybody, but the proposal has
been around for a while, so I guess other people already looked too.)

Christian

-- 
gocept gmbh  co. kg - forsterstraße 29 - 06112 halle/saale - germany
www.gocept.com - [EMAIL PROTECTED] - phone +49 345 122 9889 7 -
fax +49 345 122 9889 1 - zope and plone consulting and development




signature.asc
Description: OpenPGP digital signature
___
For more information about ZODB, see the ZODB Wiki:
http://www.zope.org/Wikis/ZODB/

ZODB-Dev mailing list  -  ZODB-Dev@zope.org
http://mail.zope.org/mailman/listinfo/zodb-dev


Re: [ZODB-Dev] Decouple persistence, database, and cache

2006-10-07 Thread Dmitry Vasiliev

Jim Fulton wrote:

I've created a proposal:

  http://www.zope.org/Wikis/ZODB/DecouplePersistenceDatabaseAndCache

for simplifying and decoupling the persistence and cache architectures.
I've been thinking about this for quite some time.  In fact, the ability 
to subclass

weakref.ref objects that appeared in Python 2.4 anticipates this. :)


I like the proposal but I don't understand some details:

 - Why do you want to use '__setitem__' method instead of for example 
'notify'? Is it only for make this go fast?
 - Why are such values selected for the state constants (persistent.GhostState 
= None, persistent.ChangedState = True, persistent.SavedState = False, 
persistent.ReadState = False)?


--
Dmitry Vasiliev (dima at hlabs.spb.ru)
http://hlabs.spb.ru
___
For more information about ZODB, see the ZODB Wiki:
http://www.zope.org/Wikis/ZODB/

ZODB-Dev mailing list  -  ZODB-Dev@zope.org
http://mail.zope.org/mailman/listinfo/zodb-dev