SandstoneGOODS brings SandstoneDB (you might have to click that link twice) a backend to the GOODS object database. Using SandstoneGOODS, you can have the easiest thinkable persistence and transaction safety for your objects coupled with reasonable performance and scalability in Squeak Smalltalk.
SandstoneDB is the coolest OODBMS I am aware of, but until now there were only two ways of using it: either from Squeak using only one Squeak instance, or from a full-blown Gemstone. SandstoneGOODS allows to use SandstoneDB and one session per client in squeak seaside, which, some argue, is a very performant way to host Seaside web pages.
So, how does it work?
- get a working copy of GOODS from http://www.garret.ru/goods.html and install it.
- Put the following file into the directory where you want the database to reside:
and call this file goods.cfg.
- Enter a shell and navigate to the directory where you put the goods.cfg file. Execute
- Start up Squeak and install SandstoneGOODS (and all its requirements, namely GOODS, BTree, SandstoneDb).
- shut down the image and restart it
- You're ready to go! Use SandstoneDb as described by Ramon Leon
I can execute 1000 small commits in 30 seconds:
[ 1000 timesRepeat:[ SDChildMock new save] ] timeToRun.
I can execute one commit of 1000 small objects in 3 seconds:
[ SDActiveRecord commit:[ 1000 timesRepeat:[ SDChildMock new save ] ] ] timeToRun.
Read speed is excellent: reading 5000 objects from the db can be done in 1 second:
[SDChildMock findAll ] timeToRun--and once they're in cache, they are read in 0.1 seconds.
Altogether, I think SandstoneGOODS totally rocks and you can write your whole app using SandstoneGOODS faster than it took you before to write the ORM mapper definitions. Please tell me any bugs you find at firstname.lastname@example.org. The repository allows public writing. You can find the sourcode on squeaksource.