[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