Hi Ross,
Does MagmaCollection preserve order, so that standard collection methods will always go through objects in the order of original insertion?
No. The order of enumeration in a MagmaCollection is based on the age of the objects; e.g., the order they were ever persisted in the db (whether part of that MagmaCollection or not).
While doing some tests for that I ran into "Instances of MagmaCollection are not indexable" while using at:
Yep. They are not indexable.
I was expecting at: to work since http://wiki.squeak.org/squeak/2639 says that MagmaCollection "Provides size and absolute position access (at: anInteger) making it suitable for scrolling lists".
It does. What you want to do is described starting under the "Indexes" section.
Finally, is it advisable to use the standard collection methods if the MagmaCollection is large, or is it better to use a reader?
A Reader. A Reader utilizes the indexing to quickly chop a MagmaCollection down into a subset accessible by #at:. Only from there, and only if absolutely necessary, would you use the standard collectoin methods.
By "better" I am mostly thinking of whether the entire collection is forced into memory or not.
Don't use the standard Collection api on a large MagmaCollection except for a batch operation. For on-line operation, just on a MagmaCollectionReader which was obtained from sending a constricting #where: query.
- Chris