Why the name MinneStore?
I grew up in Minnesota and have recently returned after 11 years in the Chicago area. Since many places in Minnesota start with "Minne" and since I am pretty proud of where I grew up, I incorporated its name into the name of my product.
How do you pronounce MinneStore?
Pronounce it like "minna-store". But if that seems too hard to say, "mini-store" is also acceptable.
Why was MinneStore written?
When I started learning Smalltalk, there was no easy way of storing many objects without spending hundreds of dollars. When I got a job using Smalltalk, I found that an inexpensive (free) but reliable storage and retrieval, and indexing mechanism was really needed for prototyping purposes. These two things got me interested in writing Minnestore.
What is the GNU General Public License?
The following quote comes from the preamble to the GNU General Public License.
What was version 1?
Version 1 worked well, but it took a long time to write and was overly complex because it wasn't very "object-oriented". When I wanted to add features to version 1, it got tougher and tougher. So I rewrote the data access portion to be much more "object-oriented" and thus much more flexible. In version 2, I have also added a framework for storing a complex object in multiple ObjectSets.
What are some strengths of MinneStore v2?
What are some weaknesses of MinneStore v2?
How is object identity maintained?
If an object is read more than once, the subsequent reads will return the exact same object as the first read. This is to protect object identity. In the future I may supply a way to clear the instance cache and force a new database read.
When an object is stored for the first time, it is assigned a database id number. When an object is retrieved, changed, and stored again, the old object will be replaced on disk using that id number. Currently, if a copy is made of a stored object, the copy will be stored separately from the original object.
How are objects locked for multi-user concurrency?
MinneStore uses an optimistic locking scheme. Each time an object is stored, its version number is updated. When updating an object on disk, the version number is checked. If the version number has changed since the object was read, then an error is signaled and the application must ask the user to redo their changes to the new object. The benefit with optimistic locking is that no one will be locked out of an object because someone locked it and then went away from their desk for a long time. Basically, this scheme encourages the user to save their object changes quickly.
How do I use it?
Included are Smalltalk "file-outs" to file into your image. A demo example of how to use it are in subclasses of MinneStoreExamples. Click here to see additional code examples now.
How do I get this code?
Send me an e-mail at
joncrlsn@eta.k12.mn.us
or download a beta version now by clicking
Either way, please let me know if this software has benefitted you (or if you find bugs).
Things to be aware of when using MinneStore