[Dbix-class] Data partitioning and DBIC

Evaldas Imbrasas evaldas at imbrasas.com
Wed Apr 4 18:59:47 GMT 2007


> It would help to know what you're trying to accomplish with the
> partitioning.  Are you trying to overcome performance limitations with
> the number of rows in a single table or index with your database
> vendor (and which vendor is it?)?.

It would be to improve the scalability of the database layer in the
application. Basically, I see several ways to scale with MySQL:

1) Use Master-Slave(s) replication, and do all reads from the slaves.
The problem is that there is no way to be sure that the slaves have
the most recent data at any given time. So it's better to use the
slave as a reporting database (data warehouse), and/or for backups.

2) MySQL Cluster. The current production version has a nasty database
size limit, though, where the entire database x the number of nodes
has to fit into memory of each node...

3) Data partitioning. It could be done either at the table level
(i.e., by choosing 'clusters' of tables and putting them on different
database servers), or/and at the data level, when you split the table
across database servers based on some value (i.e., the last digit of
the primary key).

I'm trying to investigate whether DBIx::Class has any tricks up the
sleeve to work with the data partitioned either at the table level or
at the data level. If not, is there a clean way to override certain
DBIC methods to deal with this situation?

-- 
-----------------------------------------------------
Evaldas Imbrasas
http://www.imbrasas.com



More information about the Dbix-class mailing list