Norbert, I'm very interested to investigate Soil. Do you have examples on how to use Soil?
I currently use a STON persistence model. My current approach to my model is structured specifically to make STON full save and restores simple... - Wrapper Class which contains a collection of high level objects - high level objects contain collections of next level objects - next level objects contain collections of lower level objects - etc. While the database size (7.3Mb) is not terribly large, I am writing about 50 of those per day as each save simply saves off the entire old STON and writes a new one. Concurrency is generally not a problem as we have the application automatically save itself every 10 minutes, but every once in a while we do run up against a conflict that would be best handled by a concurrent capable model. I have roughly nine applications using the same class models, so it would be very helpful to adopt a more OO database approach to persistence... even though we're nowhere near Google :) Thoughts on where to begin? I'm on the Discord server as well, if you'd prefer to discuss there. Thanks, Russ On Thu, Feb 15, 2024 at 4:49 AM Norbert Hartl <norb...@hartl.name> wrote: > The approach as I understand is simple and valuable until you face > concurrency. Nothing in SimplePersistence prevents your data from becoming > corrupt in a concurrent situation. I agree that when you start a project > you almost never face concurrency because the odds are way too low to have > two things at the same time happening. This is because computers are really > fast today and the amount of activity on a service is largely overestimated. > > But there is still a huge gap between SimplePersistence and those overkill > persistence solutions. For exactly that reason I've done Soil ( > https://github.com/ApptiveGrid/Soil) to fill that gap. It is one project > with no dependency and setting it up is a no-brainer. It is way bigger than > SimplePersistence but it deals with concurrency and adds query capabilties > for your objects. But you have to use transactions to do this. > > I started ApptiveGrid just by having the data persisted through saving the > image. Next was to STON out the model. Then versioned STON files to add > fallback. Then there was Soil (well, first voyage and then omnibase and > then Soil) which is the next level to iterate. > > So ApptiveGrid is not the next google but it also wouldn't work with > SimplePersistence. So good that we have enough tools to improve our > projects on. > > Norbert > > > Am 15.02.2024 um 06:43 schrieb s...@clipperadams.com: > > I’m happy to answer any questions about Simple Persistence. It is a nice > framework around (potentially any) serializer. It’s meant to be pluggable > but currently uses Fuel out of the box. You just tell it what classes to > persist and then create two methods per class to handle > materialization/serialization. > > For the record, Ramon Leon created it in a blog post. I just ported it to > Pharo and have been maintaining it. > > The stated reason he created it is that most solutions are complete > overkill for 99% of projects that will never “become the next google”. It’s > pretty basic, but at least two steps more sophisticated than simply saving > the image because it keeps old versions and is easily reloadable into > another image. > > That said, I’ve been using it almost exclusively for my personal projects > and have yet to grow out of it. > > > -- Russ Whaley whaley.r...@gmail.com