[Seaside] object databases and other questions of architecture

James Foster Smalltalk at JGFoster.net
Thu Mar 27 17:03:02 UTC 2008

Replying as a GemStone employee, but not officially speaking for my  

> Given the number of objects that our six years of relational data  
> would map to,
> I've been assuming we would have to jump straight to the $7000/year  
> model.

4 GB might be enough for your existing 12 million objects. You might  
even find that storing things as objects can take less room than  
storing them in a relational manner. My understanding is that most  
RDBMS systems preallocate each record to hold the maximum size for  
each field.

> Which I look at this way.. $600 a month.... would it save us $600  
> worth
> of developer time a month? Yeah, I dont think that is an issue.
> What I'm interested in, is the best tool for the job.
> I take it from what I've gotten here, that Gemstone's vm and object  
> database
> are considered the best of breed for seaside at this time ( or are  
> expected
> to be soon ); would that statement be correct?

I think it is generally accepted in the Smalltalk community that  
GemStone/S is the premier object database. While GS/S VM is mature,  
fast, and stable, my perception is that Cincom has the premier VM and  
on some measures (particularly raw speed for certain operations) it  
out-performs GS/S. Also, if one were looking for connectivity to an  
existing enterprise's RDBMS or if you were to judge based on the  
richness of the existing developer tools (e.g., refactoring browser),  
GS/S would not be universally acclaimed as "best of breed." But if you  
have the option of avoiding object-relational mapping, then you will  
likely find that GS/S is an excellent fit and simplifies your work  
quite a bit.

> does seaside feature any page caching facilities? a small segment of
> our application ( code wise ) gets 90% of the actual usage and  
> features
> a 'dynamic once until expiration' setup where currently we create the
> content dynamically if something has happened to cause it to expire
> and then put in memcache and serve directly from there save a ton
> of application server processing.

While there are many games that can be played to improve performance,  
you should make it simple to start with and then measure things. If  
you have some data that is expensive to calculate and rarely changes,  
you can certainly cache it, say, in a class variable. While you can  
cache data in Smalltalk object memory, the actual page creation in  
Seaside will still be dynamic. If you really wanted to play some  
games, you might be able to create an HTML document and store it in  
the file system and have Apache serve the static file. You could  
replace the static file as often as needed. But this is all assuming  
that there is a performance problem. How many pages per second do you  
currently serve?

> Is there anything of this sort currently? What would be the best of  
> breed
> I should consider looking at?
> Just trying to get everything together so I know what tools to start  
> playing with.
> All your help so far has been greatly appreciated.

For further information about GS/S, check out Dale's blog (http://gemstonesoup.wordpress.com/ 
). For information about Cincom's Seaside experience, check out James  
Roberson's blog (http://www.cincomsmalltalk.com/blog/blogView) where  
he is doing a series of daily tutorials.

James Foster

More information about the seaside mailing list