Абстрактный доступ к бд

gromitus

Новичок
Абстрактный доступ к бд

Насколько оправдан абстрактный доступ к бд в проектах, которые можно отнести к средним?
Какова ваша точка зрения на этот счёт?
Что лично вы используете (если конечно вообще используете...)?
 

Фанат

oncle terrible
Команда форума
Лично мое мнение состоит в том, что легкость перехода с одной бд на другую с помощью абстракции - это, конечно же, миф.

Вредный миф.
вот счастье-то - прозрачно переползти с мускуля на оракл... и использовать оракл на уровне муськи.

к тому же сама нужда в таком переползании должна быть оценена адекватно
 

gromitus

Новичок
да. sql всё равно придётся переписывать.
Но дело даже в другом: если не требуется возможность переползания, то тогда следовательно абстракт не нужен?
 

Фанат

oncle terrible
Команда форума
а какой еще может быть смысл в абстракте?
в сознательном ограничении себя некими усредненными возможностями в противопоставление пользованию всей широтой средств выбранной СУБД?
 

Demiurg

Guest
Смысл есть, когда проект существует не вединственном экземпляре.
 

clevel

Новичок
я первоначально использовал функции mysql_. Потом написал собственный класс для работы с базой по нескольким причинам:
1. В этом классе централизованно обрабатываются ошибки и записываются в лог (файл/таблица в базе).
2.Очень удобно для отладки, когда необходимо просмотреть все запросы, которые были сделаны для формирования той/иной страницы. просто ставлю флаг - уровень логгирования. И все!
3. С версии mysql 4.1 как мне помнится, будет изменено стандартное название mysql функций. Мне нужно будет поменять только названия в моем классе. И Все!
4. Вынес в отдельные функции класса такие мелочи как mysql_real_escape_string. То есть я каждый раз не проверяю, включены ли кавычки в пхп, и соответсвенно, слешить ли данные перед отправкой в базу. От этого код становится более читабельным.
 

gromitus

Новичок
наверное сделаю как clevel

-~{}~ 13.12.04 15:35:

впринципе так как я так и планировал
 

svetasmirnova

маленький монстрик
У моего любимого хостера PHP5 без mysqli (mysql не есть mysqli)
Вот весело я бы 3 десятка файлов правила :) без абстрактного доступа к БД

Бывают и такие случаи в жизни...
 

23i

Guest
надо оценить:
1. в скольких экземплярах планируеться проект
2. будет ли необходимость переползания на другую БД (в виду ннапример увеличения нагрузки)
3 если проект будет в нескольких экземплярах, то не потребуеться ли какому-либо заказчику версия на другйо бд (очень актуально для банков)

я позволю себе сказать о том что выше описывали не совсем то уж и обстрактный доступ, он обстрактен конечно но не так как нужно до окнца.
Обстрантность доступа к данным, ан е обстрактность доступа к БД - овт что важно, и это разные веши. Т.е. доступ должен состоять как минимум из 3х уровневой модели
- первый уровень отвечает за низкоуровневые операции по работе с БД
- второй по формированию сущностей данных
- третий непосредственно по рабоет с этими данными
в чем плюс такой модели на мой взгляд, мы полностью абстрагируемся от способа получения данных, мы работаем с сущностями (объекты, массивы, "вирутальные таблицы") и не задумываемся о тмо как полученны эти данные из источника данных, это позволяет нам написав 1й и 2й уровни работать с любым источников - хоть с текстовыми файлами и не почувствуем раздницу в способе работе с этими данными. ВОзможно описанная мною модель не идеальна, но согласитесь мысль не плоха?
Теперь о минусах - данная модель должна быть заложена изначально уже на процессе проектирования, иначе потом приджеться рушить и крушить всё на свете (т.е. в коде).
 

gromitus

Новичок
необходимость переползания - вряд ли будет.
мой проект кстати - это cms для развлекательных сайтов.
Сейчас всё ещё находится на стадии проектирования.
А потом я планирую всё это дело переписать под работу с sqlite (когда php5 станет достатогчно стабилен, что бы под него писать что то коммерческое)
 

23i

Guest
потом я планирую всё это дело переписать под работу с sqlite (когда php5 станет достатогчно стабилен, что бы под него писать что то коммерческое)
SQlite??? и ещё и комерческое - удачи...
PHP 5 достаочно сейчас стабилен.
Проект моей компани исейчас на 5й версии прекрасно работает. При этом нагрузки очень не маленькие. И продаем мы его уже исключительно с расчетом на 5ю версию (пол классов переписали под 5ю версию).
Так что мой тебе совет - не парь себе голову sqlite, не для этого он немного имхо.
А тепеь оцени какого рода сайты будут и за сколько будешь продавать, если свыше 10K$, то удмаю стоит предусмотреть такую модел доступа к данным и написать сразу классы для работы с MySQL and MS SQL, если меньше - не думаю что заказчик будет тратиться на дорогой софт для БД.
 

23i

Guest
sqlite - под стартовую версию продукта.
т.е. ты думаешь делать несколько вариантов продукта?
хм, возможно тогда учти что это будет у тебя щзанимать больеш рвемени, и тогда тебе однозначно надо реализовывать модель которую я тебе описал.
Кстати если хорошо её реализуешь - можно подомо очеьн не плохо одну такую модель продавать для программистов...
 

gromitus

Новичок
в этой cms будут применены новые подходы. в том числе и в управление хранения информации и её обработки.
 

23i

Guest
прости каоке это имеет отношение к способу работы с данными?
ифнормация информацией, данные, данными
определитесь все же...

-~{}~ 13.12.04 19:29:

я думаю вам стоит пообшаться шароваршиками на тему продаж
 

_RVK_

Новичок
Насколько оправдан абстрактный доступ к бд в проектах, которые можно отнести к средним?
Лично я пока не встречал ни одного полноценного продукта, используя который, я бы абсолютно не зависел от СУБД. Мало, того, ИМХО, это не реально. К сожалению возможности различных СУБД очень сильно рознятся, не говоря уже о свободной интерпритации стандарта SQL разными производителями. Если перейти с MySQL на Oracle еще возможно, то обратный переход представляется с трудом.
Какова ваша точка зрения на этот счёт?
Класс для доступа к БД следует использовать только для минимизации рутинных операций, например таких как описал clevel. Так же такой класс позволяет абстрогироваться от интерфейса доступа к СУБД, но не от самой СУБД. Например, легко перейти от mysql к mysqli интерфейсу. Но это, конечно, если сразу предусмотреть такой переход, иначе смысла в нем будет ->0.
Что лично вы используете?
Лично я использую свой собственный класс.
 

Макс

Старожил PHPClub
полнстью абстрагироваться от БД только классом работы с БД ИМХО нельзя. Если и можно, то в ущерб производительности.
Как вариант - спрятать работу с БД на "более глубокий уровень классов". Чтобы другие классы работали просто с данными (не имея понятия, откуда они появились, из БД или из других источников данных). При смене БД переписывается/дописывается лишь один уровень.

В ПХП4 использую adodb. Один раз он мне очень помог, при переводе скрипта с mysql на postgresql. Всего несколько запросов переписал.
 

gromitus

Новичок
а мне вот что интересно, как работает с бд Битрикс или Нет кет? Никто не знает?

-~{}~ 13.12.04 20:33:

я хотел было ado использовать. но больно много он жрёт ресурсов.
 
Сверху