문제

우리는 작업 중인 PHP 프로젝트 개발되었습니다에 대한 2 년 이상,지금은 팀은 준비하고 느끼는 지를 스위치의 개발에 ORM.기 때문에 그것은 정말 속도를 개발할 수 있도록 운영하여 개체고 생각하지 않는 측면에서 SQL 코드 및 데이터베이스 테이블의 대부분의 시간입니다.

우리가하기로 결정 선택 교리 ORM 기 때문에,그것은 YAML 데이터 전등 설비로드-우리는 그것을 필요가 매우 우리의 장치-테스트합니다.

주요 두려움을 내가 있는 것을 사용하여 새로운 ORM framework 느리게 할 수 있는 사이트의 성능을 제공합니다.우리는 할 수 없 공유 사이의 연결이 현재 데이터베이스에 추상화 계층(을 사용하는 pg_connect 구문,지 PDO호환).데이터베이스 연결 메커니즘을 수 없 전환 PDO 호환이 있기 때문에,많은 SQL 코드와 호환 되지 않 PDO_SQLITE 문입니다.

그래서,저는 그것을 이해하는 경우에,우리는 우리가 사용하기 시작합니다 그것은,그것은 더블 숫자의 데이터베이스 연결이 있습니다.나는 확실하지 않은 데이터베이스 서버에서 처리할 수 있다.

어떻게하는 것이 좋습니다 우리에게 이 상황에서?

도움이 되었습니까?

해결책

의 어떤 관련성이 PDO_SQLITE?

지 않는 한 당신이 실제로 사용하여 계획 SQLite 드라이버 다음성 의해 의무 PDO.

당신이 사용하지 않 SQLite 다음을 기존 데이터베이스 계층 PDO 호환되고 다시 사용하여 연결할 수 있을 때까지 완벽하게 마이그레이션하는 교리입니다.

는 말했다,수준의 연결 될 수 유일한 성능을 관심을 이동하는 ORM.그들은 본질적으로 비효율적인 그래서 내가 기대하는 느린 쿼리,높은 대역폭 사용 응용 프로그램 서버 및 데이터베이스 서버 및 더 높은 메모리를 사용하여 애플리케이션 레벨에서으로 인해 중복되는 데이터는 필연적으로 점점을 선택합니다.에 따라 현재 설치,위되지 않을 수 있 문제입니다.

당신은 아마 그의 마지막 단락과 소금 한 스푼만하기 때문에 그들은 그냥의 특성 ORMs 에서 일반 적이고 교리에 내가 나를 경험이 없었다.

다른 팁

분명한 것은 당신이 할 수 있는 것은 열리지 않는 데이터베이스 연결할 때까지 당신은 그것을 필요합니다.나 개인적으로 같은 코드를 사용:

public function connect() {
  if (!defined('CONNECT')) {
    mysql_connect(...);
  }
}

public function db_query($query) {
  connect();
  $ret = mysql_query($query);
  if (!$ret) {
    die(mysql_error());
    error_log(mysql_error() . ' - ' . $query);
  }
  return $ret;
}

의 양을 줄이기 위해 반복적이고하만이 열려할 때 연결이 필요합니다.

귀하의 경우에 당신은 다음을 끊어 가장 작은 덩어리할 수 있습니다.이상적으로 그야 수직 슬라이, 미 이 조각을 할 것입니다 거의 모든 데이터베이스의 작업과 함께 새 코드와 매우 작으니다.이 방법은 당신할 수 있는 최소한의 배로의 데이터베이스 연결 및 이를 구축 할 수있는 몇 가지 기술과 경험을 얻을 너무입니다.

하지만 조심,ORM 지 않은 어떠한 수단에 의해 효율적으로 변화될 겁니다.당신을 미워할 수 있습 SQL 고 그것을 찾을 수입하고 오류가 발생하기 쉽지만,대부분 단순히 거래의 하나의 세트 문제에 대한니다.나 개인적으로 생각하는 동안 ORM 유용할 수 있는 과대와의 더 많은 것이 거짓 경제보다 많은 중 하나를 실현하거나 기꺼이 인정합니다.내가 쓴이에 대한 자세한 를 사용하여 ORM 또는 일반 SQL?

내가 말하는 게 아니에요 당신이 그것을 하면 안된다.지 않아 이동에서 생각하고 그것은 모두 해결할 문제입니다.또한,이후 이를 다시 쓰지 않을 것이 실제로 변경하는 기능 모두에서(당신이 설명)나는 확실하지 않으면 이렇게 비용 비교 고치는 무엇으로 이동합니다.너무 많은 미지하는 방법을 말할 상황에 갈 것입니다.

론,예고없–DB 연결만을 두 배로 만큼 당신이 모두 non-PDO 및 PDO 연결합니다.

나는 당신이 무슨 뜻인지와 PDO_SQLITE 참조 이후,SQLite 적 이외의 다른 데이터베이스 PostgreSQL 그것은 보인다 당신이 사용하는 지금이다.

당신을 실행할 수 있어야 합니다 당신의 현재를 통해 쿼리를 PDO::쿼리 마찬가지로 오늘날 것을 하지 않는다면 매우 잘못된:)

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top