Hi All,
I am having a debate here with my friend, whom I'll call PHPGuy.
We're discussing scalability and using DBIC to handle multiple DBs.
Eventually we're going to want to do LJ-style user clusters using the
same idea here, but for now, I am saying that you can split the
read-write and read-only traffic (and that it'll work just fine). So, if
I was editing a profile, I'd use the read-write handle to get data, but
otherwise if I were browsing it, I'd use the read-only. The read-write
and read only would have different cache times for reads (as an example,
0 seconds and 300 seconds). It'd be nice to do this within DBIC.
For some background, assuming I'm using Catalyst, here's one way to do it:
write DB:
$c->model('OneDB::Table1')->writefoo();
read DB pool:
$c->model('AnotherDB::Table2')->readfoo();
Is there a more generic way to do that same thing using DBIC, where I can maybe
make a config file of tables and, if I match my SQL on one of those tables, it
uses the read-only, but if it doesn't I use the read-write? I did this once
with Class::DBI and DBD::Multiplex (which was easy enough), but it seems like
there'd be an easier way to do this here. Has anyone done this yet?
If I can do this within DBIC, then I can get away without needing to know which DB handle I need when I call the routine, I can just set it up in a config file somewhere.
Thanks,
Frank
_______________________________________________
List: http://lists.rawmode.org/cgi-bin/mailman/listinfo/dbix-class
Wiki: http://dbix-class.shadowcatsystems.co.uk/
IRC: irc.perl.org#dbix-class
SVN: http://dev.catalyst.perl.org/repos/bast/trunk/DBIx-Class/
Searchable Archive: http://www.mail-archive.com/[email protected]/