문제

PHP 프로젝트에서 일하고 있어요 우리가 만들 필요가 일부 DAL 확장자를 지원하는 여러 데이터베이스 플랫폼입니다.주요 함정이 우리와는 다른 플랫폼에 다른 문법-주목할만한 MySQL 및 MSSQL 은 매우 다릅니다.

무엇이 가장 적합한 솔루션이 될 것이다 이야기입니다.

여기에 몇 가지 우리는 설명:

클래스를 기반으로 SQL 건물

이것을 포함하는 것을 만드는 클래스를 구축 할 수 있습 SQL 경우 querys 비트.예를 들어:

$stmt = new SQL_Stmt('mysql');
$stmt->set_type('select');
$stmt->set_columns('*');
$stmt->set_where(array('id' => 4));
$stmt->set_order('id', 'desc');
$stmt->set_limit(0, 30);
$stmt->exec();

그것은을 포함한 매우 많이 라인에 대한 쿼리 하나 하지만입니다.

SQL 구문을 포맷

이 옵션은 매우 깨끗하게 읽 SQL 코드와 포맷에 따라 입력 및 출력 언어입니다.내가 이것을 볼 수 있다는 매우 더 느린 솔루션까지 같이 구문 분석가 그러나입니다.

도움이 되었습니까?

해결책

내가 권하고 싶 클래스를 기반으로 SQL 건물 추천 교리, Zend_DbMDB2.그래,필요한 경우 더 라인을 쓰는 간단한 선택 하지만 적어도 당신은에 의존하는 분석과 필요가 없을 재조명하다.

를 사용하여 어떤 DBAL 는 무역에서 속도,그리고 단지 데이터베이스를 실행하지만,처음 중 하나를 사용한 것보다 더 고통스러운 경우 당신은 정말로 잘 알고 있습니다.또한,나는 거의 100%지 확인하는 코드를 생성되지 않은 가장 빠른 SQL 쿼리만의 교환 나는 의미한다.

결국 그것은 당신에,너무도 나는 그것을 하지 않을 것이고 그것은 확실히 불가능하지 않은 문제는 남아있는 경우에 저장할 수 있습니다 실제로 시간과 자원(장)을 구현하여 자신의 DBAL.

다른 팁

솔루션은 ID가있는 다른 플랫폼에 대해 다른 쿼리 세트를 갖는 것일 수 있습니다.

mysql : get_users = "select * from user"

mssql : get_users = ...

pgsql : get_users = ...

그런 다음 시작시 필요한 쿼리 세트를로드하고 다음을 참조하십시오.

db :: loadqueries (플랫폼) :

$ user = $ db-> query (get_users)

이러한 계획은 SQL이 제공하는 모든 풍부함을 고려하지 않으므로 각 DB에 대한 모든 테이블에 대한 코드 생성 저장 Procs를 사용하면 더 좋습니다.

더 데이터베이스 모델 인식 인 매개 변수 저장 Procs를 사용하더라도 (즉, 조인 또는 사용자 인식이므로 각 공급 업체에 대해 최적화되어 있음) 여전히 훌륭한 접근 방식입니다. 나는 항상 데이터베이스 인터페이스 계층을 응용 프로그램에 간단한 테이블 이상으로 제공하는 것으로 간주합니다. 그 접근 방식은 대역폭 집약적이고 왕복이 낭비 될 수 있기 때문입니다.

이를 지원하는 백엔드 세트가있는 경우 계약을 형성하기 위해 저장된 절차를 생성하는 것이 최선의 방법이라는 데 동의합니다. 그러나이 접근법은 저장 프로 시저와 관련하여 역량이 제한된 백엔드가있는 경우 작동하지 않습니다.이 경우 추상/제한된 SQL 구문을 기반으로 SQL을 구현하거나 대상 특정 SQL을 생성하기위한 기복 레이어를 구축합니다.

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