Выбираем Database Abstraction Layer

thingol

Новичок
Выбираем Database Abstraction Layer

Кто-нибудь тестировал производительность разных Database Abstraction Layer'ов для PHP?

Даже если нет, кто какой предпочитает и почему?

Потом предлагаю сделать опрос по названиям. которые будут упомянуты в данном треде :)
 

SeazoN

Guest
PEAR:: DB - потому что правильный (с) Дембель I

Но вот замаячил на горизонте PEAR::MDB, который имеет приемственность от DB по синтаксису и большинства методов.
НО не делает лишних телодвижений - быстрей ~ на 20%

Пока поддерживается mysql && postgresql. А что ещё надо ;-)

Ща начнут что DB тормоз - а нравится он мне ;-)
 

Макс

Старожил PHPClub
ADODB - нравиться он мне, удобный.
На тормознутость не тестил, но кто то говорил что он побыстрее чем pear :: db
 

Konstantin

Guest
Вопрос, а есть ли какое-то средство которое прозрачно поддерживает auto_increment для MySQL и next_val/curr_val для PostgreSQL и аналоги у других СУБД?
 

Яро

бард-скальд
Вопрос, а есть ли какое-то средство которое прозрачно поддерживает auto_increment для MySQL и next_val/curr_val для PostgreSQL и аналоги у других СУБД?
Не уверен, но посмотри все же ADO DB
 

thingol

Новичок
Подводя промежуточный итог: PEAR:: DB и ADODB.

А PHPLIB никто не пользует для этого?
 

SeazoN

Guest
#thingol
Ну если ты поможешь автору в предоставлении ему машины с win+MSSQL :)
 

antonio

Moderator
Команда форума
IMHO Свой родной, своими ручками написаный :) Всяко быстрее, так как лишнего вобще ниче не содержит :)
 

SeazoN

Guest
Приведу отдельный случай..
Иногда получается так,
что одна часть скрипта (не наша) коннектится через PEAR:: DB, вторая - "своя" часть, написанная ручками. Зачем употреблять два коннекта?

Кстати как там у "своего" с абстрактностью и обработкой ошибок?
 

Tronyх

Новичок
IMHO Свой родной, своими ручками написаный Всяко быстрее, так как лишнего вобще ниче не содержит
Я тоже так считаю! :) Тем более если что своё легче переписать/дописать.
 

romutis

Guest
Я могу сказать только свое мнения об обоих лэйерах относительно их работы с Ораклом. Вкратце - ничего особого, стандартная либа, которая есть у каждого, кто пользует Оракл+PHP. Правда в обоих лэйерах пытались компенсировать отсутствие в Оракле "LIMIT m,n" - но сделали через ж..у. На маленьких таблицах еще будет шевелиться - на больших уже будут жуткие тормоза.
 

Tronyх

Новичок
Зачем употреблять два коннекта?
А зачем в одной программе использовать две разных части, свою и чужую? ИМХО так нельзя делать.

Кстати как там у "своего" с абстрактностью и обработкой ошибок?
С абстрактностью всё нормально, а с ошибками как захочешь так и напишишь. ИМХО вопрос какой-то..., что значит "как там у "своего" с абстрактностью" для программы абстрактного представления БД?
 

SeazoN

Guest
ИМХО так нельзя делать.
Я рассматриваю абстрактный пример.
К примеру захочется тебе использовать PEAR::XML_sql2xml-
ты будешь переделывать под свои заготовки?

что значит "как там у "своего" с абстрактностью" для программы абстрактного представления БД?
Это значит есть ли у него примерно такой список
dbase
FrontBase
Interbase
Informix
Mini-SQL
Microsoft SQL Server
MySQL
Oracle 8
ODBC
PostgreSQL
Sybase
 

romutis

Guest
Re: 2romutis

Автор оригинала: thingol

Oracle - select * from (select * from table) where rownum <= 10
Да я как бы в курсе как это делается. Причем в ADODB кусок кода, который достает записи в диапазоне от m до n, просто содрали у PEAR (правда, указали автора).

А ты попробуй сделать вышепреведенному выражению EXPLAIN PLAN и оцени его оптимальность. А лучше - возьми таблицу, похожую на таблицу постингов этого форума (размером > 100 000 записей), попробуй из нее подоставать записи через ADODB и посмотри - быстро ли.
 

romutis

Guest
Автор оригинала: thingol
Ок, а есть способ делать это не через ж..у?
Нету. :(
Все способы извлечения гландов у пациента - делаются в Оракле через ж..у. Поэтому каждый раз приходится писать разный код - в зависимости от ситуации. Где-то вышеописанный метод проходит, где-то DBMS_ROWID package работает быстрее, где-то еще что. Но простого и универсального метода нет. :(
 
Сверху