[ZODB-Dev] Navigating inherently hierarchical data

Tommy Li tommycli at ucla.edu
Fri Aug 3 02:59:23 EDT 2007


Hi,

I'm just learning about Object databases, and I stumbled across Zope.

I'm trying to store data that inherently has a hierarchical (tree) 
structure. As I have it currently implemented, each object points to 
another object of the same type by storing the ID of its parent.

So currently in SQL, to find all the children of object id=4, I'd query:

SELECT * from TreeNodes WHERE parent=4;

To find the parent of a given object, obviously, I'd just query (say 3 
is parent of 4):

SELECT * from TreeNodes WHERE id=3;

The tree structure is a very important part of the data and cannot be 
compromised.

In the Wikipedia article describing object databases, it mentioned that 
data access can be faster because related data could be found by 
following pointers. This makes sense. In the object domain, if I 
maintain a set of references for the parent and child in each TreeNode, 
traversal around the tree would be very quick.

I don't understand how I can use ZODB to do this, however. From what I 
can gather from reading the manual, if I simply stored variables 
referring to the parent and children in every TreeNode, I'd end up 
storing the whole tree of TreeNodes's every time I wanted to store that 
one TreeNode. (Presumably, because ZODB would follow all the references 
recursively.)

I suppose I could use the old method of storing only the identifiers of 
the parents/children. Is there a way ZODB can help me with efficient 
traversal of persistent objects in a tree structure?

Tommy Li



More information about the ZODB-Dev mailing list