Aurélien Campéas wrote at 2003-6-29 19:33 +0200:
... Ok, I know peanuts about the ZOBD - but the fact that it relies on the python pickler to stream in/out objects. The only problem I am aware of with python objects is when you build circular/cyclic structure with them : they won't be reclaimed by the GC whenever a cycle ceases to be referenced by some outer/parent object. So you have to implement explicit destruction (inner dereferencing) of such a structure.
Python now has a garbage collector which supplements reference counting (and is able to release most cycles).
Thus the need for a rooted tree, at least an acyclic structure for what lies in the ZOBD (as I understood it).
The ZODB has not problems with circular references. Circular references (in memory) are broken when an object is deactivated (which is controlled by an incremental garbage collector independent of Python's reference counting).
BTW, what do you mean when you say "BTrees are not hierarchical at all" ? The fact that they're seen as a flat ordered collection at the user level ? Or something else ?
To make the typical BTree operations more efficient, there are additional non-hierarchical links in the BTree structure (you can immediately go from a subtree to the left-most leaf and all leaf buckets are linked together).
That's not to say ZOBD isn't neat and usefull, but please. I just hate when some knowledgeable person spreads FUD on those topics.
They see the world differently from you...
I've been a bit crude, sorry.
No problem. Dieter