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]/

Reply via email to