Hash: SHA1

On 01/22/2011 08:54 AM, frits.swinkels wrote:
> I am new to ZODB and to this list: greetings.
> I need to get some points clear about precisely when objects are fully
> instantiated in memory. It may be a simple matter of pointing me at some
> documentation; I read pretty much anything I could find but there may a
> problem of your jargon being different from mine:)
> The main data structure of my application is a directed graph of nodes;
> each node has at least three slots which contain other nodes (e.g.
> parent, right child, left child; the parent always exists, the child 
> slots may be None). I only want to instantiate that part of the graph 
> that I am working on.
> Q1. I assume that when an object is instantiated, its "sub" objects will
> be in the form of some kind of proxy (perhaps that ghost I met in the
> ZODB How document?). Is this assumption correct?

Yes.  The ghost has not had its instance dictionary populated yet.
Attempting to access any instance attribute will "unghostify" the object.

> Q2. Given an object, designated by the variable a, in which of the
> following statements does the child become instantiated (activated?) ?
> child = a.leftchild
> name = child.name

The second (assuming that the nodes in your data structure derive from a
"persistent" base class, such as Persistent, or one of the BTrees),

> Q3. Actually, before the child is instantiated, I somehow would like to
> query the object a, whether there is anything in the slot, i.e. whether
> the content of the slot is not None. Of course, this query should not
> trigger the instantiation.

That should already be working, again assuming your objects derive from

> I had the application running in another OO language. An object would
> first carry a proxy with the OID in a slot; it would get instantiated on
> access. The ad-hoc database made use of the Reiser file system, which
> allowed indexing serialized objects on their OID in a B tree.

- -- 
Tres Seaver          +1 540-429-0999          tsea...@palladion.com
Palladion Software   "Excellence by Design"    http://palladion.com
Version: GnuPG v1.4.10 (GNU/Linux)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/


For more information about ZODB, see the ZODB Wiki:

ZODB-Dev mailing list  -  ZODB-Dev@zope.org

Reply via email to