[TP5: 데이터베이스] 분산 데이터베이스

2600 단어
ThinkPHP는 주종식 데이터베이스의 읽기와 쓰기 분리를 포함한 분포식 데이터베이스 지원을 내장하고 있습니다. 분포식 데이터베이스는 같은 데이터베이스 형식이어야 합니다.
deploy 설정 1, 분포식 데이터베이스 지원
구성 database.deploy1 분산 데이터베이스를 지원하는 기타 구성 정보입니다.
// 
return [
    //  
    'deploy'    =>  1,
    //  
    'hostname'    => '192.168.1.1,192.168.1.2'
]

hostname 정의 수량, 여러 데이터베이스 연결
연결된 데이터베이스 개수는 hostname 정의된 수량에 달려 있기 때문에 같은 두 개IP라도 중복 정의가 필요하다
하지만 다른 것은 필요 없습니다. 예:
'hostport'=>'3306,3306'
 
'hostport'=>'3306''username'=>'user1', 
'password'=>'pwd1', 
 
'username'=>'user1,user1', 
'password'=>'pwd1,pwd1',
 。

rw_separate 설정true, 읽기와 쓰기 분리 모드
분산 데이터베이스의 읽기와 쓰기가 분리되는지 설정합니다. 기본적으로 읽기와 쓰기가 분리되지 않습니다. 즉, 모든 서버가 읽기와 쓰기를 할 수 있습니다.
운영 데이터베이스의 경우 읽기/쓰기 분리를 설정해야 합니다.
  //    
    'rw_separate'    => true,

읽기와 쓰기가 분리된 상황에서 기본 첫 번째 데이터베이스 설정은 주 서버의 설정 정보로 데이터 쓰기를 책임집니다. master_num 파라미터가 설정되어 있으면 여러 주 서버의 쓰기를 지원할 수 있습니다.다른 것은 모두 데이터베이스의 설정 정보에서 데이터를 읽는 것을 책임지고 수량을 제한하지 않는다.서버에 연결하고 읽기 작업을 할 때마다 시스템은 랜덤으로 서버에서 선택합니다.
슬레이브 설정도 가능_no 읽기 작업을 수행할 서버를 지정합니다.
//  
    'slave_no'       => '',

데이터베이스에서 연결 오류가 발생하면 주 데이터베이스 연결로 자동으로 전환됩니다.
모형의 CURD 조작을 호출하면 시스템은 현재 실행 방법의 읽기 조작인지 쓰기 조작인지 자동으로 판단합니다. 만약에 원생 SQL을 사용한다면 시스템의 기본 규칙을 주의해야 합니다. 쓰기 조작은 모형의execute 방법을 사용해야 하고, 읽기 조작은 모형의query 방법을 사용해야 합니다. 그렇지 않으면 주종 읽기와 쓰기가 혼란스러워질 수 있습니다.
주의: 주종 데이터베이스의 데이터 동기화 작업은 프레임워크에서 이루어지지 않기 때문에 데이터베이스는 자신의 동기화 또는 복제 메커니즘을 고려해야 한다.

좋은 웹페이지 즐겨찾기