[ZODB-Dev] Lazy Instantiation

Tres Seaver tseaver at palladion.com
Sat Jan 22 09:09:50 EST 2011


-----BEGIN PGP SIGNED MESSAGE-----
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
Persistent.

> 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.
- -- 
===================================================================
Tres Seaver          +1 540-429-0999          tseaver at palladion.com
Palladion Software   "Excellence by Design"    http://palladion.com
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.10 (GNU/Linux)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/

iEYEARECAAYFAk065S4ACgkQ+gerLs4ltQ510wCfSujRaHMG7utqgsgRbEEHwmiI
iFsAoKEv4K5tIPYR2su/o3aEUDyVfTta
=2Jam
-----END PGP SIGNATURE-----



More information about the ZODB-Dev mailing list