Git , да прибудет с вами сила!

Dec 03, 2009 14:03

Собственно перехал, с svn на git. Новый адресс http://github.com/necromant2005/zrails Все таки какой прекрасный мердж в git ...

Пока только самые нужные вещи:
P.S. Адаптеры реализуют интерфейс Zend_Db_Adapter_Abstact, так что фасады для репликации, кластера и скалинга полность совместимы с обычными адаптерами БД. Master-Master-replication adapter
Итак пример конфигурации для Master-Master replication with 2 slaves:
Пример конфигурации и использования.
$db = new Zrails_Db_Facade_Replication(array( 'Masters' => array( 'master0' => array( 'adapter' => 'Pdo_Mysql', 'params' => array( 'host' => '10.0.1.100', 'username' => 'root', 'password' => '', 'dbname' => 'mydb' ) ), 'master1' => array( 'adapter' => 'Pdo_Mysql', 'params' => array( 'host' => '10.0.1.101', 'username' => 'root', 'password' => '', 'dbname' => 'mydb' ) ), ), 'Slaves' => array( 'slave0' => array( 'adapter' => 'Pdo_Mysql', 'params' => array( 'host' => '10.0.2.100', 'username' => 'root', 'password' => '', 'dbname' => 'mydb' ) ), 'slave1' => array( 'adapter' => 'Pdo_Mysql', 'params' => array( 'host' => '10.0.2.101', 'username' => 'root', 'password' => '', 'dbname' => 'mydb' ) ), ), )); //connect to some master $db->connectMaster(); //connect to master1 $db->connectMaster('master1'); //connect to some slave $db->connectSlave(); //connect to slave0 $db->connectSlave('slave0'); Более детальные примеры в тестах http://github.com/necromant2005/zrails/blob/master/tests/Zrails/Db/Facade/ReplicationTest.php Cluster db adapter

Пример конфигурации для данного случая с 2 нодами node0/node1
$db = new Zrails_Db_Facade_Cluster(array( 'node0' => array( 'adapter' => 'Pdo_Mysql', 'params' => array( 'host' => '10.0.1.100', 'username' => 'root', 'password' => '', 'dbname' => 'mydb' ) ), 'node1' => array( 'adapter' => 'Pdo_Mysql', 'params' => array( 'host' => '10.0.1.101', 'username' => 'root', 'password' => '', 'dbname' => 'mydb' ) ), )); //connect to specific node $db->connectNode('node1'); Остальные примеры в тестах http://github.com/necromant2005/zrails/blob/master/tests/Zrails/Db/Facade/ClusterTest.php Не думаю, что что-то сложное так как все ноды синхронны и нет различия к какой ноде подключатся , поэтму логика значительно проще чем с репликацией, но с другой стороны существенно выше требования к железу. Адаптер для горизонтального маштабирования

Пример конфигурации для такого решения для таблицы users.
$this->_db = new Zrails_Db_Facade_Scale(array( "tables" => array( "users" => array( "field" => "id", "strategy" => "Zrails_Db_Facade_Scale_Strategy_Crc32", "key_provider" => "Zrails_Db_Facade_Scale_Key_Provider_Random" ), ), "shards" => array( 0 => array( 'adapter' => 'Pdo_Mysql', 'params' => array( 'host' => '10.0.1.100', 'username' => 'root', 'password' => '', 'dbname' => 'mydb' ) ), 1 => array( 'adapter' => 'Pdo_Mysql', 'params' => array( 'host' => '10.0.1.101', 'username' => 'root', 'password' => '', 'dbname' => 'mydb' ) ), 2 => array( 'adapter' => 'Pdo_Mysql', 'params' => array( 'host' => '10.0.1.102', 'username' => 'root', 'password' => '', 'dbname' => 'mydb' ) ), 3 => array( 'adapter' => 'Pdo_Mysql', 'params' => array( 'host' => '10.0.1.103', 'username' => 'root', 'password' => '', 'dbname' => 'mydb' ) ), ))); //fetchall with id=1 and status=1 $db->fetchAll('SELECT * FROM users WHERE id=1 AND status=1'); //or same $db->select()->from('users')->where('id=?', 1)->where('status=?', 1)->query()->fetchAll(); Остльные примеры в тестах http://github.com/necromant2005/zrails/blob/master/tests/Zrails/Db/Facade/ScaleTest.php

git, zrails

Previous post Next post
Up