PHP |PEAR: MDB2 против PDO против Native-PHP (Raw) - PullRequest
3 голосов
/ 14 сентября 2011

После проведения своего рода исследования через Интернет (и здесь, в Stackoverflow) - я все еще пытаюсь решить, какой метод лучше всего мне изучить / использовать и копать больше при программировании на PHP.

Я понимаю некоторые преимущества использования DAO при работе с БД по сравнению с прямыми функциями mysql _ *, разбросанными по файлам приложения.

Когда дело доходит до выбора между MDB2 против PDO - одна вещь, которая сияет в пользу PDO, - это тот факт, что он не абстрагирует функции mysql_ *, а напрямую обращается к API-интерфейсу mysql так же, как mysql_ * do. Это также скомпилированное расширение C для PHP, поэтому оно очень быстрое. В то время как MDB2 (или другие библиотеки) написаны на PHP, поэтому их нужно анализировать во время выполнения и размещать поверх функций mysql_ *. Итак, по скорости побеждает PDO?!?

Когда дело доходит до сравнения Уровень абстракции БД по сравнению с native-non-abstracted-PHP - это свет Преимущества безопасности уровней абстракции БД в том, что они используют параметры связывания (подготовленные операторы), которые предотвратят большинство атак внедрения SQL, плюс в будущем легче переключать тип СУБД, если для этого есть необходимость / запрос - даже если это так. не так часто - (в этих библиотеках DAO есть и другие преимущества и приятное времяотделение).

В любом случае, я надеюсь, что есть эксперты, которые могут помочь мне решить, лучше ли мне использовать одну из этих библиотек, и если да, то какую из них лучше всего рекомендовать? Или я должен написать свою собственную библиотеку DAO, которая будет обслуживать меня через все мои проекты и будут улучшаться с годами?.

Спасибо.

1 Ответ

4 голосов
/ 15 сентября 2011

Задайте себе вопросы:

  • Является ли мой код узким местом или базой данных?Когда вы делаете тысячи простых запросов к базе данных, медленный PHP-код является проблемой.Когда вы выполняете только пару десятков запросов на запрос, накладные расходы слоя db, вероятно, не будут заметны
  • Вам когда-нибудь понадобится переключиться на другую систему db?Если вы выполняете работу для клиента с четкими требованиями, скорее всего, вы все равно привязаны к DMBS и вам не нужно заботиться о совместимости.

Кроме того, MDB2 довольно хорошв возрасте сейчас.Если бы я был на вашем месте, я бы использовал Doctrines DBAL - его можно использовать без самой Doctrine, и он расположен поверх PDO.Я бы не использовал старые "родные" функции mysql_ *.

...