From john at synchromesh.com Sun Feb 13 13:13:42 2011 From: john at synchromesh.com (John Pallister) Date: Sun, 13 Feb 2011 13:13:42 +0000 Subject: [rucksack-devel] Enhancements to Rucksack Message-ID: Hello list, I thought I'd chime in since I am using Rucksack in a paid-for project (using LispWorks on Windows FWIW). I'm developing a client-server application that runs on an intranet, so there are only around a dozen users and the amounts of data are relatively small. Consequently I can (mostly) get away with just locking the entire store while I access it. Most access is serialised into one or two threads by virtue of the client-server nature anyway. Rucksack has been great because it fits the task very nicely, and the fact it's all CL and doesn't need any external libraries/processes keeps things nice and simple (i.e. adding an index is as simple as recompiling the persistent class). However I think it would be great to see it develop a little further, and I'd urge Jochen (and anyone else) to consider releasing their modifications that implement some basic multi-user access. And thanks Arthur for doing such a great job with Rucksack in the first place! Cheers, John :^P -- John Pallister john at johnp.net john at synchromesh.com From js at crispylogics.com Sun Feb 13 14:48:09 2011 From: js at crispylogics.com (Jochen Schmidt) Date: Sun, 13 Feb 2011 15:48:09 +0100 Subject: [rucksack-devel] Enhancements to Rucksack In-Reply-To: References: Message-ID: <22E79E3D-8E5D-47A6-931B-763B063A985C@crispylogics.com> Hello John, I definitely want to publish the modifications - I just was sidetracked by some urgent customer projects. I'll look into it and put a Git repository for others to access on some server. ciao, Jochen -- Jochen Schmidt Am 13.02.2011 um 14:13 schrieb John Pallister : > Hello list, > > I thought I'd chime in since I am using Rucksack in a paid-for project > (using LispWorks on Windows FWIW). I'm developing a client-server > application that runs on an intranet, so there are only around a dozen > users and the amounts of data are relatively small. Consequently I can > (mostly) get away with just locking the entire store while I access > it. Most access is serialised into one or two threads by virtue of the > client-server nature anyway. > > Rucksack has been great because it fits the task very nicely, and the > fact it's all CL and doesn't need any external libraries/processes > keeps things nice and simple (i.e. adding an index is as simple as > recompiling the persistent class). > > However I think it would be great to see it develop a little further, > and I'd urge Jochen (and anyone else) to consider releasing their > modifications that implement some basic multi-user access. > > And thanks Arthur for doing such a great job with Rucksack in the first place! > > Cheers, > > John :^P > -- > John Pallister > john at johnp.net > john at synchromesh.com > > _______________________________________________ > rucksack-devel mailing list > rucksack-devel at common-lisp.net > http://common-lisp.net/cgi-bin/mailman/listinfo/rucksack-devel From john at synchromesh.com Sun Feb 13 15:18:02 2011 From: john at synchromesh.com (John Pallister) Date: Sun, 13 Feb 2011 15:18:02 +0000 Subject: [rucksack-devel] Enhancements to Rucksack In-Reply-To: <22E79E3D-8E5D-47A6-931B-763B063A985C@crispylogics.com> References: <22E79E3D-8E5D-47A6-931B-763B063A985C@crispylogics.com> Message-ID: Hi Jochen, I completely understand. If you could post a few notes to the list about the approach you've taken, that would be great also. I'm curious about how you've done this, and how much modification to the Rucksack internals is required... which is about as close as I've ever come to being interested in anything to do with the internal workings of a database or persistent store. ;) Cheers, John :^P On Sun, Feb 13, 2011 at 2:48 PM, Jochen Schmidt wrote: > Hello John, > > I definitely want to publish the modifications - I just was sidetracked by some urgent customer projects. I'll look into it and put a Git repository for others to access on some server. > > ciao, > Jochen > > -- > Jochen Schmidt > > Am 13.02.2011 um 14:13 schrieb John Pallister : > >> Hello list, >> >> I thought I'd chime in since I am using Rucksack in a paid-for project >> (using LispWorks on Windows FWIW). I'm developing a client-server >> application that runs on an intranet, so there are only around a dozen >> users and the amounts of data are relatively small. Consequently I can >> (mostly) get away with just locking the entire store while I access >> it. Most access is serialised into one or two threads by virtue of the >> client-server nature anyway. >> >> Rucksack has been great because it fits the task very nicely, and the >> fact it's all CL and doesn't need any external libraries/processes >> keeps things nice and simple (i.e. adding an index is as simple as >> recompiling the persistent class). >> >> However I think it would be great to see it develop a little further, >> and I'd urge Jochen (and anyone else) to consider releasing their >> modifications that implement some basic multi-user access. >> >> And thanks Arthur for doing such a great job with Rucksack in the first place! >> >> Cheers, >> >> John :^P >> -- >> John Pallister >> john at johnp.net >> john at synchromesh.com >> >> _______________________________________________ >> rucksack-devel mailing list >> rucksack-devel at common-lisp.net >> http://common-lisp.net/cgi-bin/mailman/listinfo/rucksack-devel > From js at crispylogics.com Sun Feb 13 16:46:22 2011 From: js at crispylogics.com (Jochen Schmidt) Date: Sun, 13 Feb 2011 17:46:22 +0100 Subject: [rucksack-devel] Enhancements to Rucksack In-Reply-To: References: <22E79E3D-8E5D-47A6-931B-763B063A985C@crispylogics.com> Message-ID: <017AD10C-BF22-4E19-B4FB-80EFE008A761@crispylogics.com> Without having the source at hand - it wasn't much work. I've reader- and writer-transactions. You decide what you need when doing with-transaction. Trying to write within a reader transaction restarts it as a writer transaction though. Readers can be parallel and writers are serialized. I remember also, that I had to change conflict handling, because instances got modified before the conflict is recognized. I changed how instances are initialized when read (activated) from disk so that transient slots can get initialized (think "sockets", "database connections" a.s.o.). I also tried to split class definition from schema updates, so that one can define rucksack classes without an active database. Currently I investigate how to implement a peristent (functional) B-Tree (like in couchdb). -- Jochen Schmidt Am 13.02.2011 um 16:18 schrieb John Pallister : > Hi Jochen, > > I completely understand. If you could post a few notes to the list > about the approach you've taken, that would be great also. I'm curious > about how you've done this, and how much modification to the Rucksack > internals is required... which is about as close as I've ever come to > being interested in anything to do with the internal workings of a > database or persistent store. ;) > > Cheers, > > John :^P > > On Sun, Feb 13, 2011 at 2:48 PM, Jochen Schmidt wrote: >> Hello John, >> >> I definitely want to publish the modifications - I just was sidetracked by some urgent customer projects. I'll look into it and put a Git repository for others to access on some server. >> >> ciao, >> Jochen >> >> -- >> Jochen Schmidt >> >> Am 13.02.2011 um 14:13 schrieb John Pallister : >> >>> Hello list, >>> >>> I thought I'd chime in since I am using Rucksack in a paid-for project >>> (using LispWorks on Windows FWIW). I'm developing a client-server >>> application that runs on an intranet, so there are only around a dozen >>> users and the amounts of data are relatively small. Consequently I can >>> (mostly) get away with just locking the entire store while I access >>> it. Most access is serialised into one or two threads by virtue of the >>> client-server nature anyway. >>> >>> Rucksack has been great because it fits the task very nicely, and the >>> fact it's all CL and doesn't need any external libraries/processes >>> keeps things nice and simple (i.e. adding an index is as simple as >>> recompiling the persistent class). >>> >>> However I think it would be great to see it develop a little further, >>> and I'd urge Jochen (and anyone else) to consider releasing their >>> modifications that implement some basic multi-user access. >>> >>> And thanks Arthur for doing such a great job with Rucksack in the first place! >>> >>> Cheers, >>> >>> John :^P >>> -- >>> John Pallister >>> john at johnp.net >>> john at synchromesh.com >>> >>> _______________________________________________ >>> rucksack-devel mailing list >>> rucksack-devel at common-lisp.net >>> http://common-lisp.net/cgi-bin/mailman/listinfo/rucksack-devel >>