[Zope] Pointers in the ZODB

Bjorn Stabell bjorn@exoweb.net
Thu, 4 Oct 2001 09:46:42 +0800


Hi all,

I need to store pointers in the ZODB.  Pretty basic requirement.  Two
questions:

1. Is there any thing to watch out for by storing the same object in two
different locations in the ZODB?  For example:

	bigobject =3D BigObject(id)
	some_path._setObject('id1', bigobject)
	some_other_path._setObject('id2', bigobject)

  Seems to work fine, but what does it actually mean?  The same object
stored twice in the ZODB, with different acquisition/persistence
wrappers around it?

2. Given the multitude of ways you can access objects in Zope, the
semantics of pointers are not very clear: do you store the pointer, or a
symbolic link (the path) to the object.  In the latter case, how do you
write a wrapper that just delegates all to the other object?
(Overriding __getattr__ is not recommended, and __getitem__ isn't
enough.)   All in all, the choices seem to be:

  - level: URL redirect or object link
  - type: symbolic or hard
  - acqusition:
	first remote, then local
	first local, then remote
	remote, then none
	local, then none
	none

Am I misunderstanding something?

Anyone written a multipurpose "pointer" or link class that allows you to
configure all of these run-time?


Regards,
--=20
Bjorn