On Saturday 07 July 2007 10:59:27 am Perrin Harkins wrote: > On 7/7/07, Daniel McBrearty <[EMAIL PROTECTED]> wrote: > > Is there any easy way to keep some ad-hoc persistent data out of the > > database? > > Sure. Most of them are either lossy or tricky to use, and tend to be > poor for concurrent reading/writing. > > The obvious options are: > - BerkeleyDB. Fast, but limited to one machine, and tricky to get > right because of insufficient docs for the advanced locking features. > Still, a good bet.
BerkeleyDB has an RPC layer for talking to remote clients. I find the docs sufficient: http://www.oracle.com/technology/documentation/berkeley-db/db/gsg/C/index.html The C API is exactly the same as the Perl API. (Which sucks. But at least there are no surprises.) > - Cache::FastMmap. Fast, but lossy. Will silently drop your data if > you go over the limit you set. Limited to one machine. > - Cache::Memcached. Fast (although much slower than BerkeleyDB or > Cache::FastMmap), but lossy. Silently drops data if you go over the > limit you set. Loses everything if the daemon is stopped for any > reason. Works for a cluster though. > > None of these have the same locking capabilities that a database does, I don't think the word "database" implies anything about locking (or relations, or ACID)... > i.e. writers block readers and there's no easy way to do pessimistic > locking. (I think BerkeleyDB supports pessimistic locking, but I > can't remember for sure.) BerkeleyDB locking is pretty flexible. The transaction system supports all the isolation levels that you would expect. Rather than worrying about locks, I would just pick the isolation level I need and let the DBMS figure it out. > If you already have a database, using it will be easier than getting > any of these right. Agreed. Session::Store::DBIC just Storables a hash into a table. Querying the individual fields is impossible, but nobody wants to do that anyway. -- package JAPH;use Catalyst qw/-Debug/;($;=JAPH)->config(name => do { $,.=reverse qw[Jonathan tsu rehton lre rekca Rockway][$_].[split //, ";$;"]->[$_].q; ;for 1..4;$,=~s;^.;;;$,});$;->setup;
signature.asc
Description: This is a digitally signed message part.
_______________________________________________ List: [email protected] Listinfo: http://lists.rawmode.org/mailman/listinfo/catalyst Searchable archive: http://www.mail-archive.com/[email protected]/ Dev site: http://dev.catalyst.perl.org/
