NAME

DBIx::MoCo::DataBase - Data Base Handler for DBIx::MoCo

SYNOPSIS

  package MyDataBase;
  use base qw(DBIx::MoCo::DataBase);

  __PACKAGE__->dsn('dbi:mysql:myapp');
  __PACKAGE__->username('test');
  __PACKAGE__->password('test');

  1;

  # In your scripts
  MyDataBase->execute('select 1');

  # Configure your replication databases
  __PACKAGE__->dsn(
    master => 'dbi:mysql:dbname=test;host=db1',
    slave => ['dbi:mysql:dbname=test;host=db2','dbi:mysql:dbname=test;host=db3'],
  );

METHODS

cache_connection

Controlls cache behavior for dbh connection. (default 1) If its set to 0, DBIx::MoCo::DataBase uses DBI->connect instead of DBI->connect_cached.

  DBIx::MoCo::DataBase->cache_connection(0);
dsn

Configures dsn(s). You can specify single dsn as string, multiple dsns as an array, master/slave dsns as hash.

If you specify multiple dsns, they will be rotated automatically in round-robin. MoCo will use slave dsns when the sql begins with SELECT if you set up slave(s).

  MyDataBase->dsn('dbi:mysql:dbname=test');
  MyDataBase->dsn(['dbi:mysql:dbname=test;host=db1','dbi:mysql:dbname=test;host=db2']);
  MyDataBase->dsn(
     master => ['dbi:mysql:dbname=test;host=db1','dbi:mysql:dbname=test;host=db2'],
  );
  MyDataBase->dsn(
    master => 'dbi:mysql:dbname=test;host=db1',
    slave => ['dbi:mysql:dbname=test;host=db2','dbi:mysql:dbname=test;host=db3'],
  );

SEE ALSO

DBIx::MoCo, SQL::Abstract

AUTHOR

Junya Kondo, <jkondo@hatena.com>

COPYRIGHT AND LICENSE

Copyright (C) Hatena Inc. All Rights Reserved.

This library is free software; you may redistribute it and/or modify it under the same terms as Perl itself.