[Seaside] GOODS best practice data storage

Sebastián Sastre ssastre at seaswork.com.ar
Fri May 21 00:38:13 CEST 2004


 If you use a doubly linked list or a 
> BTree (I have a BTree implementation on SqueakMap) you'll have much 
> better results.

OK, I've started to port your squeak's implementation to dolphin. Right
now only the testStringKeys is failing and I'm debuggin it.

> I'd also suggest that when you're doing the migration, you 
> try to keep 
> the number of commits you do small - one per item is going to 
> be slow, 
> because there's a fair amount of overhead on each commit.  
> One per 100 
> items is probably more reasonable.  You should also send #flushAll to 
> the database after every commit, because once having committed those 
> objects you don't need them to stick around in the cache.

OK, I would give it a try.

> A while ago I helped Ken Causey with some benchmarking around 
> importing 
> BFAV posts into GOODS.  He has some graphs and numbers up at 
> http://kencausey.com/goodsperf.png .  You'll notice that using BTrees 
> (or TreeSets, which are also included in my BTree package) leads to a 
> much flatter graph than OrderedCollection and Dictionary.  The other 
> axis he was experimenting with was disconnecting/reconnecting 
> from the 
> DB for every n commits, rather than using #flushAll.  IIRC with the 
> latest GOODS releases this doesn't make any difference, but it might 
> still be worth looking at.

It sounds promising. Any way we are looking for some other kind of
problems bacause in a comparative use between squeak and dolphin the
actual dolhpin's client performance is not too good. Beside that, the
collections and dictionaries as you say are not a good idea.

Wich are the best practices once the BTree where be useful?
One should add BTrees to a dictionary at root? O the root should be
aBTree?

Regards

Seb

> 
> Hope this helps,
> 
> Avi
> 
> > 	items := RDBMSDatabase allItems.
> > 	db := KKDatabase onHost:'voyager' port:6101.
> > 	db root: Dictionary new;commit.
> > 	db root at:#items put:Dictionary new.
> > 	db commit.
> > 	1 to: items size do:[:i|
> > 		item := items at:i.
> > 		(db root at:#items) at: item 
> identifierCodeString put: item.
> > 		db commit].
> 
> _______________________________________________
> Seaside mailing list
> Seaside at lists.squeakfoundation.org
> http://lists.squeakfoundation.org/listinfo/seaside
> 




More information about the Seaside mailing list