[Nitro] How iterate efficiently through collection of 'things'?
Aleksi Niemela
Aleksi.Niemela at cs.helsinki.fi
Sun Sep 4 15:24:43 EDT 2005
Imagine the program gets some parameters out from user with first page,
calculates a while and wants to show very big result set on multiple
pages. To get this concrete, imagine user says "I want to see all known
pieces of DNA which (approximately) match with this one I give you",
then the program goes out to make a query and gets back with 900 best
hits. Then it should show one piece of DNA, the match highlighted, per
page and let the user go through Pager kind of list to get back and
forth within proximity of current hit, and have quick access to the ends
of the hit list.
Now, we don't want to make the query for the DNA database server each
time user clicks "next hit". Some kind of temporary storage is needed
for the results. Where one should store the results in Nitro development?
In Wee, I'd have an instance variable at the Controller object pointing
to the result set and another indicating index. In Nitro the controller
object lives only during one page generation. Nitro::Flash is can be
used on temporary storage either, it's too short living. OTOH, Nitro
discourages using session object and using state that's not persistent
at all, like said at Nitro::Session rdocs
State is a neccessary evil but session variables should be avoided as
much as
possible. Session <cid:part1.07010203.05010108 at cs.helsinki.fi> state
is typically distributed to many servers so avoid storing
complete objects in session variables, only store oids and small
integer/strings.
I suppose one could misuse Caching, namely MemoryStore. What's the idiom
here? How and where the MemoryStore should be instantiated and cleaned
up? What's the preferable way to use it?
I guess there's currently no example for this, so it would be great if
someone (George, perhaps) could cook up a simple example providing
answer this quite common need.
- Aleksi
More information about the Nitro-general
mailing list