Разработка Web приложения с поддержкой разных БД
Нужно ваше мнение. Необходимо чтобы CMS которую пишу на PHP, могла взаимодействовать с MsSql, PostgreSql, Oracle, также как и с MySql.
То, что я хочу предпринять: Абстрагироваться полностью от SQL, во всей CMS, написать класс который бы выполнял всю необходимую работу с MySql, затем наследуя его, создавать классы для работы с другими серверами БД, перекрывая необходимые свойства и методы, и изменять их согласно с их спецификой работы.
При установке CMS, юзер выбирает с каким сервером БД будет работать, прописываю это, например в config.php, при инициализации работы приложения, создаю объект того класса БД, которое прописано в конфигурации, далее приложение использует методы выбранного сервера БД.
Просто писать не мало придется, вот и хочу с вами посоветоваться, нужно ли это все городить или может это уже реализовано?, и было бы правильно именно таким образом реализовать поддержку разных серверов БД?
"Абстрагироваться полностью от SQL" вряд-ли удастся. А вот от конкретного драйвера - да. Вобщем-то, огород городить действительно не стоит, т.к., например, в PEAR abstraction layer уже есть. Ну, для интересу можно полюбопытствовать, что в нём написано.
Спасибо за совет, уже скачал пару классов:
DB_DataObject и DB_Ado, сейчас сижу разбираюсь, правда эти классы автономно не работают, используют еще некоторые классы из PEAR, придется и базовые классы искать.
Всем привет!:)
Нужно ваше мнение. Необходимо чтобы CMS которую пишу на PHP, могла взаимодействовать с MsSql, PostgreSql, Oracle, также как и с MySql.
То, что я хочу предпринять: Абстрагироваться полностью от SQL, во всей CMS, написать класс который бы выполнял всю необходимую работу с MySql, затем наследуя его, создавать классы для работы с другими серверами БД, перекрывая необходимые свойства и методы, и изменять их согласно с их спецификой работы.
При установке CMS, юзер выбирает с каким сервером БД будет работать, прописываю это, например в config.php, при инициализации работы приложения, создаю объект того класса БД, которое прописано в конфигурации, далее приложение использует методы выбранного сервера БД.
Просто писать не мало придется, вот и хочу с вами посоветоваться, нужно ли это все городить или может это уже реализовано?, и было бы правильно именно таким образом реализовать поддержку разных серверов БД?
Все это в adodb реализовано.
Все это в adodb реализовано.
Согласен, но всё же лучше ИМХО писать под каждую БД своё, т.к. у них есть некоторые специфические запросы.
Согласен, но всё же лучше ИМХО писать под каждую БД своё, т.к. у них есть некоторые специфические запросы.
Ну это да конечно. Но как заметил mfender, ето сложновато. Ты просто потратишь ресурсы на, IMHO, не самое важное. Ты ведь пишешь под конкретную схему запросы. Это же не СУБД какая-то. Проще писать запросы просто такие, чтобы везде работали. Еще представления использовать можно и т.п.
Как вариант можно юзать тот же adodb, а запросы в отдельном ресурсе хранить, в XML каком-нить, и юзать в зависимости от базы нужный ресурс.
Как вариант можно юзать тот же adodb, а запросы в отдельном ресурсе хранить, в XML каком-нить, и юзать в зависимости от базы нужный ресурс.
Да, похоже что adodb - оптимальное решение для моей задачи, всем спасибо за участие, тема закрыта. :)
Ты ведь пишешь под конкретную схему запросы. Это же не СУБД какая-то. Проще писать запросы просто такие, чтобы везде работали.
конкретная схема - тоже формируется с учетом СУБД. и писать везде работающие запросы - совсем не просто. одно дело - Oracle, другое Firebird и уж совсем третье - MySQL.