[Grok-dev] Re: STORM howto

Christian Klinger cklinger at novareto.de
Fri Mar 14 06:54:30 EDT 2008


He Sebastian

damn cool!!!

as i sad i will ask on the storm ml if this is the right behaviour.

Christian

P.s. whats your nick on irc?


> ** On preformance **
> 
> I uncommented the offending ;) line and the performance went from a 
> useless...
> 
>   Performed 100 transactions; Buy = 24; Sell = 76
>   start: 2008-03-13 23:13:19.572152
>   end: 2008-03-13 23:13:26.543223
>   diff: 0:00:06.971071 <<<<<<<<<<<<<<<<<<<<<< 7.0 seconds (commit on 
> each insert)
> 
> to an excellent... (yes, I double checked that the data was written to 
> the db :))
> 
>   Performed 100 transactions; Buy = 24; Sell = 76
>   start: 2008-03-14 11:28:13.045482
>   end: 2008-03-14 11:28:13.372686
>   diff: 0:00:00.327204 <<<<<<<<<<<<<<<<<<<<<< 0.3 seconds (singel commit)
> 
> persisting to Zodb gave me the following result... (there is no 
> practical difference between buy and sell)
> 
>   Performed 100 transactions; Buy = 16; Sell = 84
>   start: 2008-03-13 23:21:55.655146
>   end: 2008-03-13 23:21:56.645960
>   diff: 0:00:00.990814 <<<<<<<<<<<<<<<<<<<<<< 1.0 seconds (singel commit)
> 
> ** On order of persistence **
> 
> Something that was interesting however is that the lines were written in 
> a different (random) order than the objects were assigned to the 
> container. Is this the intended behaviour?
> 
> I think this is a bad idea, because it come as a surprise (at least to 
> those who have been used to working with databases).
> 
> Mvh Sebastian
> 
> 14 mar 2008 kl. 10.29 skrev Christian Klinger:
> 
>> Wichert Akkerman schrieb:
>>> Previously Christian Klinger wrote:
>>>> Sebastian Ware schrieb:
>>>>> Do I add nva.stormcontainer in setup.py in order to fetch this egg? 
>>>>> I would like to try it.
>>>>>
>>>> Yes this should do it. Hopefully...
>>>>
>>>>> Also, is there any way I can control the commits? I am basically 
>>>>> doing:
>>>>>
>>>>> for obj in objlist:
>>>>>   ormContainer['id'] = obj
>>>> In the stormcontainer there is a __setitem__ which is responsible 
>>>> for the insert.
>>>>
>>>>    def __setitem__(self, name, item):
>>>>        store = getUtility(IZStorm).get(self.getStoreUtilityName())
>>>>        store.add(item)
>>>>        transaction.commit()
>>>>
>>>> The transaction.commit() fires also an rdb.commit. This means on 
>>>> every insert there is a commit.
>>>>
>>>> But maybe it is possible to delete the transaction.commit() in 
>>>> __setitem__, and rely on zopes transaction.commit.?
>>> I do not think any library or framework should ever do a commit itself.
>>> You should hook properly into the zope transaction manager. Any
>>> premature commit can result in inconsistent or erroneous data in your
>>> database. And reducing the number of commits will have a huge impact on
>>> performance.
>>
>> Hi Wichert,
>>
>> thx for this info. I will delete the transaction.commit() run the 
>> tests. and see if it works again... :-))
>>
>> Christian
>>
>>> Wichert.
>>
>> _______________________________________________
>> Grok-dev mailing list
>> Grok-dev at zope.org
>> http://mail.zope.org/mailman/listinfo/grok-dev



More information about the Grok-dev mailing list