[Catalyst] Singleton or Memcache

Yuval Kogman nothingmuch at woobling.org
Tue Oct 17 10:53:12 CEST 2006


Don't use a singleton. Instead, devise a Catalyst::Model api for
your tree structure, so that you can do:

	$c->model("MyTree")->get_that_node($which);
	$c->model("MyTree")->get_the_root_node;

or whatever.

You should probably pre-load this structure at setup time to get it
to be shared between all the child processes, but if it grows too
big to be pre-loaded you can have the tree lazily load itself using
a cascade of caches.

Using Cache::Cascade you can keep a small (several tens or hundreds
of objects) cached per child process, and a memcached for another N
mb, and then the least popular nodes will be loaded from the DB, and
stored in the cache only when they're actually used.

Essentially, what I'm saying is that $n MB is too large a structure
to be useful for one cache entry. Scale it down, and divide it into
smaller chunks, and then cache those if at all.

However, when $n is 10 and not 100 it should be enough to just
preload it.

See also Devel::Size to check how much the structure really costs.

On Tue, Oct 17, 2006 at 10:44:48 +0200, matthias at kl-mailer.de wrote:
> Hi List,
> 
> in my current project i have to build a big tree-structure (every node
> has a test-field, sum ~10MB) from a database.
> The data doesn't change not very often, so i would like to preload it,
> because building the tree is slow..
> 
> My qestion:
> which way to "store" the tree? Should i build a "singleton"-class or
> should i use memcached?
> I allready use memcache in my app, so using it here again sounds good to
> me. Will the massive objct-copying (on allmost every call!) be a
> problem? (Again: ~25000 nodes with ~10MB data).
> Maybe there is a complete different way i never thought about?
> 
> best regards a thanks for every hint :)
> Matthias
> 
> 
> 
> _______________________________________________
> List: Catalyst at lists.rawmode.org
> Listinfo: http://lists.rawmode.org/mailman/listinfo/catalyst
> Searchable archive: http://www.mail-archive.com/catalyst@lists.rawmode.org/
> Dev site: http://dev.catalyst.perl.org/

-- 
  Yuval Kogman <nothingmuch at woobling.org>
http://nothingmuch.woobling.org  0xEBD27418

-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 189 bytes
Desc: not available
Url : http://lists.rawmode.org/pipermail/catalyst/attachments/20061017/9c6a3fdc/attachment.pgp 


More information about the Catalyst mailing list