[Zope] emulate a sequence
Jonathan
dev101 at magma.ca
Thu Feb 8 10:22:50 EST 2007
----- Original Message -----
From: "Tino Wildenhain" <tino at wildenhain.de>
To: "Jonathan" <dev101 at magma.ca>
Cc: "Yuri" <yurj at alfa.it>; <zope at zope.org>
Sent: Thursday, February 08, 2007 9:36 AM
Subject: Re: [Zope] emulate a sequence
> Jonathan schrieb:
>>
>> ----- Original Message ----- From: "Yuri" <yurj at alfa.it>
>> To: <zope at zope.org>
>> Sent: Thursday, February 08, 2007 9:09 AM
>> Subject: [Zope] emulate a sequence
>>>
>>> I need a field in zope object which act as a sequence. I mean every time
>>> I create an object, the value is the previous sequence value of the last
>>> object created + 1.
>>>
>>> also I need to browse the objects by sequence (from the object 1 to the
>>> last, by the sequence number)
>>>
>>> I think I need a catalog FieldIndex to store the sequence for searches,
>>> a property in the object.
>>>
>>> Can I use the catalog to retrieve the max value of the index, so when I
>>> create the object, I just add 1 and store it in the property?
>>
>> You could use a catalog if you have other searching requirements, but the
>> method objectIds() (see the zopebook for more info) will return a list of
>> contained Ids, which you can then sort to get you what you need. Also,
>> len(somefolder.objectIds()) will give you the next available id (assuming
>> your object ids have some sequential numbering).
>
> Which both would not exacly emulate a sequence. Sequences live outside
> transaction borders so they are inremented every time under any
> circumstances.
>
> All the above methods would fall flat on the tummy when you are hit with
> variuos rollback or retries while other transactions concurrently add
> objects.
Tino has a good point. For sites that will be saving (committing) many
objects to the same folder (from simultaneous transactions) we use a
randomly generated 10 digit id (which is then checked against existing
object ids). I have done some load testing with this approach and it has
worked (so far!).
Jonathan
More information about the Zope
mailing list