[Grok-dev] References in ZODB
Martijn Faassen
faassen at startifact.com
Sun Aug 8 11:28:31 EDT 2010
On 08/07/2010 11:37 AM, Achim Domma wrote:
> I try to store hierarchical geo data about places into a ZODB.
> Because each place has a unique ID which will be used to access them,
> I have stored the place instances in a persistent dictionary. Now
> want to store the relation between places, i.e. the children of a
> place. At the moment I store the IDs of the children, not the
> children themselves. According to
>
> http://faassen.n--tree.net/blog/view/weblog/2008/06/20/0
>
> storing the children themselves should be no problem. Is that right?
That shouldn't be a problem. Whether it is the right design for your
data model is another question, of course - sometimes it's useful to
store a relation as a separate object, for instance.
> A bigger cause for concern are neighbors: If two places are neighbors
> they would hold a reference to each other. In other languages this
> might cause trouble, so I wanted to ask, before doing stupid things!
> ;-)
In ZTK/Grok we have such circular references all the time: a container
contains children which contain pointers to its __parent__. So this
ought to be okay.
> Is it ok to use real objects instead of ids in the above scenario? Or
> will it cause trouble if I create circles in objects referencing each
> other?
I don't think there's an issue with circular references.
I'll note one thing that might affect the design of your application. In
case you want to be able to do queries on references, you should take a
look at zc.relation:
http://pypi.python.org/pypi/zc.relation
In case you use forms and schemas, you might want to consider this:
http://pypi.python.org/pypi/z3c.relationfield
which is built with zc.relation.
Regards,
Martijn
More information about the Grok-dev
mailing list