[ZODB-Dev] Re: ZODB Benchmarks

Russ Ferriday russf at topia.com
Thu Nov 1 18:02:51 EDT 2007


Quick note...

Smaller buckets, fewer conflicts, more overhead on reading and writing.
Larger buckets, more conflicts, less overhead on reading and writing.
One bucket ... constant conflicts.

I'd bet that the additional tree with tiny buckets would be best.  
Transfer them into the normal tree once the overhead starts rising.

How to transfer them?  You would not want a single transaction to  
take the hit for the whole transfer, so have a low and high water  
mark. When hitting HWM, transfer only until LWM is reached. Or, just  
focus on transferring some items out of a single tree, to avoid the  
cost of tree rebalancing on the additional tree at the same time as  
rebalancing on the main tree.

Sounds like a fin project,

--r.

On 1 Nov 2007, at 21:00, David Binger wrote:

>
> On Nov 1, 2007, at 4:25 PM, Matt Hamilton wrote:
>
>> David Binger <dbinger <at> mems-exchange.org> writes:
>>
>>>
>>>
>>> On Nov 1, 2007, at 7:05 AM, Matt Hamilton wrote:
>>>
>>>> Ie we perhaps look at a catalog data structure
>>>> in which writes are initially done to some kind of queue then moved
>>>> to the
>>>> BTrees at a later point.
>>>
>>> A suggestion: use a pair of BTrees, one with a high branching factor
>>> (bucket size)
>>> and one with a very low branching factor.  Force all writes into the
>>> tree with little
>>> buckets.  Make every search look in both trees.  Consolidate
>>> occasionally.
>>
>> An interesting idea.  Surely we need the opposite though, and that  
>> is an
>> additional BTree with a very large bucket size, as we want to  
>> minimize the
>> chance of a bucket split when inserting?  Then we occasionally  
>> consolidate and
>> move the items in the original BTree with the regular bucket size/ 
>> branch factor.
>
> You may be right about that.  Conflict resolution makes it harder for
> me to predict which way is better.  If you don't have conflict  
> resolution
> for insertions, then I think the smaller buckets are definitely better
> for avoiding conflicts.  In either case, smaller buckets reduce the
> size and serialization time of the insertion transactions, and that  
> alone
> *might* be a reason to favor them.  I think I'd still bet on smaller
> buckets, but tests would expose the trade-offs.
>
>
>
>
>
>
>
>
> _______________________________________________
> For more information about ZODB, see the ZODB Wiki:
> http://www.zope.org/Wikis/ZODB/
>
> ZODB-Dev mailing list  -  ZODB-Dev at zope.org
> http://mail.zope.org/mailman/listinfo/zodb-dev

Russ Ferriday
russ at indepthoptics.com
office: +44 118 3217026
mobile: +44 7789 338868
skype: ferriday



-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://mail.zope.org/pipermail/zodb-dev/attachments/20071101/89cc6ee1/attachment.htm


More information about the ZODB-Dev mailing list