Please send your questions so I can add them.
What are some weaknesses of MinneStore?
Can a database created using one
Smalltalk be read by another version of Smalltalk?
No. For example, a database created by the Dolphin version of MinneStore cannot be read by the VisualAge version of MinneStore. This is because the object serialization format used by each Smalltalk is not compatible. I have thought of storing the objects in a neutral text-based XML format but am not ready to tackle the issues that go with that yet.
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.
When an object is stored for the first time, it is assigned a database id number (using the properties feature supplied with Visual Smalltalk and Dolphin). When an object is retrieved, changed, and stored again, the old object will be replaced on disk using that id number. If a copy is made of a previously stored object, the copy will be stored separately from the original object.
How are objects locked for multi-user
concurrency?
Warning, the multiple-user feature will not be available until version 2.1 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 people will not be locked out of an object because someone locked it and then went away from their desk for a long time. In short, this scheme encourages the user to save their object changes quickly.
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.
I grew up in Minnesota and have recently returned to Minneapolis after 11 years in the Chicago area. Since many places in Minnesota start with "Minne" and since I am pretty proud of my home state, I incorporated its name into the name of this product.
When I started learning Smalltalk, there was no easy way of storing many, complex objects without spending hundreds of dollars. When I got a job using Smalltalk, I found that an inexpensive but reliable storage, retrieval, and indexing mechanism was really needed for prototyping purposes. These two things got me interested in writing Minnestore.
Version 1 worked well, but it took a long time to write and was overly complex because it wasn't very "object-oriented" (yes, use of Smalltalk does not guarantee good code). When I wanted to add features to version 1, it got tougher and tougher. So I threw out the data access portion and rewrote it to be much more "object-oriented" and thus much more flexible.
What are some things to be aware of when using
MinneStore?