[ZODB-Dev] IStorageIteration

Christian Theune ct at gocept.com
Mon Feb 11 16:19:41 EST 2008


Jim Fulton schrieb:
> 
> On Feb 11, 2008, at 1:25 PM, Christian Theune wrote:
> 
>> Hi,
>>
>> Jim Fulton schrieb:
>>> On Feb 11, 2008, at 1:19 PM, Christian Theune wrote:
>>> ...
>>>>>> Also, this code isn't ZEO-compatible (apart from the fact that 
>>>>>> ClientStorage doesn't implement the interface).
>>>>> How so?
>>>>
>>>> As far as I understand, ZEO can't pass iterators around directly but 
>>>> needs to provide at least some wrapping code on the protocol level ...
>>> Good point. This, at least, makes the implementation rather tricky.
>>
>> There is the pattern like undoInfo/Log and record_iternext which 
>> provides context by passing in ranges of records to return + tolerance 
>> for ranges that don't exist.
> 
> 
> I don't think that's going to work here.  Iterating through the 
> transactions in the database for each iteration is going to be totally 
> non-scalable.

Yes, you're right. Still, the road of providing call context via a
parameter seems better to me than to enhance the ZEO protocol to account
for this purpose.

> I suppose you could include file positions in the iterator state, 
> although that makes me a little uncomfortable. It might be OK here though.

Context could be given as a reference date that is opaque to the client
and can differ from storage to storage, a file pointer could serve this
purpose. The API still might include the `length` of the data returned
to minimize round-trips.

Christian

-- 
gocept gmbh & co. kg - forsterstrasse 29 - 06112 halle (saale) - germany
www.gocept.com - ct at gocept.com - phone +49 345 122 9889 7 -
fax +49 345 122 9889 1 - zope and plone consulting and development


More information about the ZODB-Dev mailing list