thinkphp 3.2.3分散型データベースサポート


ThinkPHPには、プライマリ・スレーブ・データベースの読み書き分離を含む分散データベースのサポートが内蔵されていますが、分散データベースは同じデータベース・タイプでなければなりません.
DB_の構成DEPLOY_TYPEは1で分散型データベースのサポートが可能です.分散型データベースを使用する場合、データベース構成情報を定義する方法は次のとおりです.
//          
'DB_DEPLOY_TYPE'=> 1, //           
'DB_TYPE'       => 'mysql', //            
'DB_HOST'       => '192.168.0.1,192.168.0.2',
'DB_NAME'       => 'thinkphp', //            
'DB_USER'       => 'user1,user2',
'DB_PWD'        => 'pwd1,pwd2',
'DB_PORT'       => '3306',
'DB_PREFIX'     => 'think_',

接続されているデータベースの数はDB_によって異なりますHOST定義の数は、同じIP 2つでも繰り返し定義する必要がありますが、他のパラメータが同じ場合は繰り返し定義しなくてもいいです.たとえば、次のようになります.
'DB_PORT'=>'3306,3306'

および
'DB_PORT'=>'3306'

同等.
'DB_USER'=>'user1', 
'DB_PWD'=>'pwd1', 

および
'DB_USER'=>'user1,user1', 
'DB_PWD'=>'pwd1,pwd1',

同等.
また、分散型データベースの読み書きが分離されているかどうかを設定することもできます.デフォルトでは、読み書きが分離されていません.つまり、サーバごとに読み書き操作が可能です.プライマリ・スレーブ・データベースでは、読み書き分離を設定する必要があります.次の設定で行います.
'DB_RW_SEPARATE'=>true,

読み書き分離の場合、デフォルトの最初のデータベース構成はプライマリサーバの構成情報であり、データの書き込みを担当し、DB_が設定されている場合MASTER_NUMパラメータでは、複数のプライマリ・サーバの書き込みをサポートできます.その他はデータベースからの構成情報で、データの読み取りを担当し、数に制限はありません.サーバから接続して読み取り操作を行うたびに、システムはランダムにサーバから選択します.
DB_を設定することもできますSLAVE_NOあるサーバを指定して読み出し操作を行う.
注意:バージョン3.2.3から、データベースからの接続が間違っている場合は、プライマリ・データベースへの接続が自動的に切り替わります.
モデルのCURD操作を呼び出すと、現在実行されているメソッドの読み取り操作か書き込み操作かが自動的に判断されます.元のSQLを使用している場合は、システムのデフォルトルールに注意する必要があります.書き込み操作はモデルのexecuteメソッドを使用しなければなりません.読み取り操作はモデルのqueryメソッドを使用しなければなりません.そうしないと、主従の読み書きが乱れてしまう場合があります.
注意:プライマリ・データベースからのデータ同期作業はフレームワークでは実現されず、データベースが独自の同期またはレプリケーション・メカニズムを考慮する必要があります.