Laravel 4.1에서 여러 DB 연결을 처리하는 것에 대한 질문이 있습니다. 그 DB를 3 개 가지 연결하기Laravel 4 및 MySQL이 너무 많습니다.
'mysql' => array(
'driver' => 'mysql',
'host' => 'localhost',
'database' => 'DB_1',
'username' => $_ENV['MYSQL_USER'],
'password' => $_ENV['MYSQL_PASS'],
'charset' => 'utf8',
'collation' => 'utf8_unicode_ci',
'prefix' => '',
),
'mysql2' => array(
'driver' => 'mysql',
'host' => 'localhost',
'database' => 'DB_2',
'username' => $_ENV['MYSQL_USER'],
'password' => $_ENV['MYSQL_PASS'],
'charset' => 'utf8',
'collation' => 'utf8_unicode_ci',
'prefix' => '',
),
'mysql3' => array(
'driver' => 'mysql',
'host' => 'localhost',
'database' => 'DB_3',
'username' => $_ENV['MYSQL_USER'],
'password' => $_ENV['MYSQL_PASS'],
'charset' => 'utf8',
'collation' => 'utf8_unicode_ci',
'prefix' => '',
),
내가해야합니다 내가
는 예를 들어, 호스트에 3 개 DB를 하나 개의 DB 호스트를 말해봐?
아니면 단순히 하나의 연결을 가지고 있으며 각 모델에 같은으로 테이블 이름 을 지정해야합니다 :
public $table = "DB_2.table_name";
물어 이유, 나는 그것이 를 배출하기 쉽다는 것을 눈치 챘을 것입니다 다른 데이터베이스에 연결할 필요가있을 때 새로운 DB 연결을 생성하므로 데이터베이스 연결이 필요합니다.
저는 둘 다 잘될 것이라는 것을 알고 있지만, 이런 상황에서 "우수 사례"로 간주되는 것에 관심이 있습니다.
의견에 미리 감사드립니다.
건배.
네, 당신이 옳다고 생각합니다. 궁극적으로 우리는 한 번의 작업 흐름에 대해, 특히 단일 쿼리의 경우에 여러 개의 DB 연결을 만들 필요가 없도록 데이터 모델을 다시 설계해야합니다. 그 때까지는 시스템에 과부하가 걸리지 않도록해야합니다. 내가 가진 문제는 동시 요청이 많이 처리되는 경우입니다. 따라서 요청 당 최대 3 개의 연결이 이루어 지므로 트래픽이 많을 때 성능이 저하 될 수 있습니다. – Gimli
@Gimli 동일한 연결에서 db를 '전환'하기 위해 PDO에는 아무런 방법이 없습니다 (laravel에서이를 사용한다고 가정). dsn이 생성자에 전달되면 설정됩니다. DSN에 db가 지정되어 있어야합니다. $ 테이블에서 db 이름을 사용하려고하면'select * from DB1.DB2.footable'과 같은 요청을 얻을 수 있습니다. – Ray
@Gimili 물론 수동으로 작성한 쿼리를 사용하면 orm 또는 DQL을 사용하지 않는 경우이 작업을 수행 할 수 있습니다. – Ray