SandstoneDb

SandstoneDb project page

SandstoneDb is a lightweight Prevayler style embedded object database with an ActiveRecord API that doesn't require a command pattern and works for small apps that a single Squeak image can handle. The idea is to make a Squeak image durable and crash proof and suitable for use in small office applications.


Data is kept in ram for speed and on disk for safety. All data is reloaded from disk on image startup.


Since we're dealing with live objects in memory, concurrency is handled via optional record level critical sections rather than optimistic locking and commit failures. It's up to the developer to use critical sections at the appropriate points by using the critical method on the record.


Saves are atomic for an ActiveRecord and all its non ActiveRecord children, for example, an order and its items. There is no atomic save across multiple ActiveRecords. A record is a cluster of objects that are stored in a single file together.


After installing SandstoneDb make sure to restart your image before attempting to use it or running the tests.


For more information see
SandstoneDb, Simple ActiveRecord Style Persistence in Squeak



If you find this project useful, please drop me an email and let me know.

SandstoneDbTests-Anonymous.3.mcz
SandstoneDbTests-Anonymous.2.mcz
SandstoneDb-Anonymous.155.mcz
SandstoneDbFileDirectoryStore-Anonymous.3.mcz
SandstoneDb-Anonymous.154.mcz
SandstoneDbFileDirectoryStore-Anonymous.2.mcz
SandstoneDbTests-Anonymous.1.mcz
SandstoneDb-Anonymous.153.mcz
SandstoneDbFileSystemStore-Anonymous.1.mcz
SandstoneDbFileDirectoryStore-Anonymous.1.mcz
SandstoneDb-tcj.152.mcz
SandstoneDb-EricNjoroge.2.mcz
SandstoneGOODS-EricNjoroge.1.mcz
SandstoneDbSqueak-EricNjoroge.1.mcz
SandstoneDbFileSystemStore-EricNjoroge.1.mcz
SandstoneDbFileDirectoryStore-EricNjoroge.1.mcz
SandstoneDb-EricNjoroge.1.mcz
SandstoneDb-JonathanBrezin.1.mcz
SandstoneDb-RamonLeon.151.mcz
SandstoneDbTests-RamonLeon.13.mcz
SandstoneDbFileSystemStore-RamonLeon.2.mcz
SandstoneDbFileSystemStore-RamonLeon.1.mcz
SandstoneDbFileDirectoryStore-RamonLeon.2.mcz
SandstoneDb-RamonLeon.150.mcz
SandstoneDbFileDirectoryStore-RamonLeon.1.mcz
SandstoneDbTests-RamonLeon.12.mcz
SandstoneDb-RamonLeon.149.mcz
SandstoneDbTests-IngoHohmann.12.mcz
SandstoneDb-IngoHohmann.149.mcz
SandstoneDbFuel-IngoHohmann.2.mcz
SandstoneDb-RamonLeon.148.mcz
SandstoneDbTests-pre.11.mcz
SandstoneDb-pre.147.mcz
SandstoneDb-RamonLeon.146.mcz
SandstoneDb-RamonLeon.145.mcz
SandstoneDb-RamonLeon.144.mcz
SandstoneDb-RamonLeon.139.mcz
SandstoneDbFuel-RamonLeon.1.mcz
SandstoneDb-RamonLeon.143.mcz
SandstoneDb-RamonLeon.142.mcz
SandstoneDb-RamonLeon.141.mcz
SandstoneDb-RamonLeon.140.mcz
SandstoneGOODS-RamonLeon.27.mcz
SandstoneDb-RamonLeon.138.mcz
SandstoneDbTests-RamonLeon.10.mcz
SandstoneGOODSTests-RamonLeon.1.mcz
SandstoneGOODS-RamonLeon.26.mcz
SandstoneDbTests-RamonLeon.9.mcz
SandstoneDb-RamonLeon.137.mcz
SandstoneDb-RamonLeon.136.mcz
SandstoneDbTests-RamonLeon.8.mcz
SandstoneDb-RamonLeon.135.mcz
SandstoneDbTests-RamonLeon.7.mcz
SandstoneDb-RamonLeon.134.mcz
SandstoneGOODS-RamonLeon.25.mcz
SandstoneGOODS-RamonLeon.24.mcz
SandstoneGOODS-NicolasPetton.23.mcz
SandstoneGOODS-RamonLeon.22.mcz
SandstoneDbTests-RamonLeon.6.mcz
SandstoneDbTests-NicolasPetton.5.mcz
SandstoneGOODS-nes.1.mcz
SandstoneGOODS-nes.2.mcz
SandstoneGOODS-nes.3.mcz
SandstoneGOODS-nes.4.mcz
SandstoneGOODS-nes.5.mcz
SandstoneGOODS-nes.6.mcz
SandstoneGOODS-nes.7.mcz
SandstoneGOODS-nes.8.mcz
SandstoneGOODS-nes.9.mcz
SandstoneGOODS-nes.10.mcz
SandstoneGOODS-NicolasPetton.14.mcz
SandstoneGOODS-NicolasPetton.15.mcz
SandstoneGOODS-NicolasPetton.20.mcz
SandstoneGOODS-RamonLeon.21.mcz
SandstoneDb-RamonLeon.133.mcz
SandstoneGOODS-RamonLeon.19.mcz
SandstoneGOODS-RamonLeon.18.mcz
SandstoneGOODS-RamonLeon.17.mcz
SandstoneGOODS-RamonLeon.16.mcz
SandstoneDbTests-RamonLeon.4.mcz
SandstoneDb-RamonLeon.132.mcz
SandstoneDb-RamonLeon.131.mcz
SandstoneDbTests-RamonLeon.3.mcz
SandstoneDb-RamonLeon.130.mcz
SandstoneDb-RamonLeon.129.mcz
SandstoneDb-RamonLeon.128.mcz
SandstoneDb-RamonLeon.127.mcz
SandstoneDbTests-RamonLeon.2.mcz
SandstoneDb-RamonLeon.126.mcz
SandstoneDb-RamonLeon.125.mcz
SandstoneDb-RamonLeon.124.mcz
SandstoneDb-RamonLeon.122.mcz
SandstoneDbTests-RamonLeon.1.mcz
SandstoneDb-RamonLeon.123.mcz
SandstoneDbSqueak-RamonLeon.1.mcz
SandstoneDb-RamonLeon.121.mcz
SandstoneDb-rjl.120.mcz
SandstoneDb-rjl.119.mcz
SandstoneDb-rjl.118.mcz
SandstoneDb-rjl.117.mcz
SandstoneDb-rjl.116.mcz
SandstoneDb-rjl.115.mcz
SandstoneDb-rjl.114.mcz
SandstoneDb-rjl.113.mcz
SandstoneDb-rjl.112.mcz
SandstoneDb-rjl.111.mcz
SandstoneDb-rjl.110.mcz
SandstoneDb-rjl.109.mcz
SandstoneDb-rjl.108.mcz
SandstoneDb-test.107.mcz
SandstoneDb-rjl.106.mcz
SandstoneDb-rjl.104.mcz
SandstoneDb-rjl.103.mcz
SandstoneDb-rjl.102.mcz
SandstoneDb-rjl.74.mcz
SandstoneDb-rjl.73.mcz
SandstoneDb-rjl.72.mcz
SandstoneDb-rjl.71.mcz
SandstoneDb-rjl.70.mcz
SandstoneDb-rjl.67.mcz
SandstoneDb-rjl.62.mcz
SandstoneDb-rjl.61.mcz
SandstoneDb-rjl.60.mcz
SandstoneDb-rjl.59.mcz
SandstoneDb-rjl.58.mcz
SandstoneDb-rjl.57.mcz
SandstoneDb-rjl.50.mcz
SandstoneDb-rjl.49.mcz
SandstoneDb-rjl.47.mcz
SandstoneDb-rjl.43.mcz
SandstoneDb-rjl.42.mcz
SandstoneDb-rjl.41.mcz
SandstoneDb-rjl.38.mcz
SandstoneDb-rjl.37.mcz
SandstoneDb-rjl.36.mcz
SandstoneDb-rjl.35.mcz
SandstoneDb-rjl.34.mcz
SandstoneDb-rjl.33.mcz
SandstoneDb-rjl.32.mcz
SandstoneDb-rjl.31.mcz