2014-02-19 2 views
0

저는 PostgreSQL 데이터베이스를 사용하여 프로젝트를 시작하고 있습니다. mysql_ * 함수가 사용되지 않으며 MySQL 데이터베이스와 함께 PDO를 사용하는 것이 가장 좋습니다.하지만 PostgreSQL은 어떻습니까? pg_ * 함수는 더 이상 사용되지 않거나 더 이상 사용되지 않을 것입니까? PDO 나 pg_ *가 포스트그레스와 대화하는 데 선호되는 방법입니까? 하나가 다른 것보다 더 빠르고 안전합니까?PHP는 pg_ * 함수 또는 PDO를 사용해야합니까?

+0

PHP [PDO_PGSQ] (http://pk1.php.net/manual/en/ref.pdo-pgsql.php)는 해당 내용입니다. –

+0

이 질문은 정확히 링크 된 질문과 중복되는 내용이 아닙니다. pq_ *가 msql_ * 함수처럼 사용되지 않을지 여부. 질문이나 대답은 연결된 질문/답변에서 다루지 않습니다. – tinlyx

답변

2

ext/mysql은 고대이고 ext/mysqli보다 훨씬 우수한 후계자이기 때문에 더 이상 사용되지 않습니다.
ext/pgsql은 더 이상 사용되지 않고 후임이 없으며, 원래의 Postgres 데이터베이스 인터페이스로 사용할 수 있습니다.

PDO는 동일한 API에서 많은 다른 데이터베이스 드라이버를 추상화하는 통합 인터페이스입니다. 사용할 수있는 인터페이스입니다. 원시 pgsql 인터페이스는 PDO가 추상화 된 인터페이스에서 지원하지 않는 Postgres에 특정한 특정 기능을 제공 할 수도 있고 제공하지 않을 수도 있습니다. pgsql API는 원할 경우 "메탈에 더 가깝습니다". 필요한 경우 장점이 될 수 있습니다. 그러나 필요한 특정 사실을 알지 못하면 차이점을 많이 찾지 못할 것입니다.

개인적으로 나는 PDO를 좋아합니다. 확실하지 않은 경우 몇 가지 간단한 테스트 스크립트를 작성하고 어느 쪽이 더 편하다고 느끼고 어떤 문서가 더 잘 이해하는지에 따라 결정할 것입니다. 즉, 추상화 PDO가 제공하는 다른 데이터베이스로보다 쉽게 ​​전환 할 수있는 유연성과 같은 다른 결정 요소가없는 경우가 아닙니다.

+0

+1 "가까운 금속". 전에 들어 본 적이없는 :) – hek2mgl

4

아니요, pg_* 기능 세트는 더 이상 사용되지 않습니다. 그러나 PDO를 사용하면 데이터베이스 유형을 한 번 변경할 수 있습니다. 이러한 자유는 동일한 기능/방법을 사용하여 서로 다른 여러 데이터베이스에 액세스함으로써 성취됩니다. 데이터베이스 특정 작업은 사용중인 PDO 드라이버에 의해 처리됩니다.

mysql 확장 프로그램은 이 아닌 mysqli으로 대체되었습니다. 원래 mysql 확장 프로그램에서는 준비된 문이나 저장 프로 시저 호출 기능을 제공하지 않았기 때문입니다. 개발자는 새롭고 개선 된 mysql 확장을 작성하기로 결정하고 이전 확장을 완전히 대체했습니다.

2

미래에 데이터베이스를 전환 할 계획이 아니라면 OOP 접근 방식이나 구식 기능 호출 방식을 사용하는 것이 더 편한지 여부에 달려 있습니다. 앱의 보안은 PDO/pg_ * 기능에 의존하지 않고 두 스타일 모두에서 사용할 수있는 준비 문 (http://be.php.net/manual/en/pdo.prepare.php)과 같은 안전한 프로그래밍 방식을 사용하는 사용자에게 달려 있습니다.

또한 레코드 집합 캐싱 (http://phplens.com/adodb/caching.of.recordsets.html) 및 기타 유용한 기능을 지원하는 ADOdb와 같은 추상화 계층을 사용할 수도 있습니다.

1

이 프로젝트의 RDBMS로 PostgreSQL을 사용하는 것을 알고 있다면 PDO가 아닌 Postgresql 확장이 가장 잘 처리됩니다.

PDO는 본질적으로 추상화 레이어입니다. 일일이 pg_ 기능을 사용하면 더 나은 성능을 얻을 수 있습니다. 그러나 가능하다면 더 나은 아이디어를 얻으려면 몇 가지 벤치 마크를 수행하십시오.

추천 도서 : PDO vs pg_* functions.

관련 문제