Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Одно приложение - несколько СУБД


Mitrofan ©   (2004-04-29 10:00:00) 

Добрый день. Хотелось бы узнать вот какую вещь.
Можно ли сделать чтобы одно приложение работало с несколькими СУБД. К примеру есть приложение, которое работает с некой базой (не важно  пока с какой), получает, изменяет, вставляет данные.
Хочется чтобы это приложение смогло работать и под другую СУБД.
К примеру можно ли сделать чтобы одно приложение могло работать со следующими СУБД: Firebird, MSSQL, Sybase. Как организовать такую вещь? Кто-ниюудь сталкивался с подобной проблемой?
Заранее спасибо.


sniknik   (2004-04-29 14:27:00) [1]

Карелин Артем ©   (29.04.04 14:13) [12]
а толку то? синтаксис sql сильно отличается. формированием одной строки не обойдешся.

у меня есть программа работает с access, mssql, ib так под каждую пришлось свою "заточку" делать, запросы по разному, процедуры генерятся из программы под каждого свои (или обходится без них в случае с access). в общем довольно сложно это.


Карелин Артем   (2004-04-29 14:13:00) [2]

Народ, а как насчет работу через ADO и диалог построения строки подключения?


Sergey13   (2004-04-29 10:33:00) [3]

2Mitrofan   (29.04.04 10:19) [8]
>как сделать максимально легко переброс с одной СУБД на другую
ИМХО, твое "максимально легко" надо переделать в "минимально трудозатратно". Легко только заразу можно подхватить. 8-)
Вообще путь несколько тупиковый, ИМХО. Универсальная прога под любую БД будет все равно хуже чем оригинальная под конкретную. И в чем выигрыш?
Ты много видел таких программ - "под любую БД"? Наверное только Database Desktop. 8-) Тебе такая прога нужна?
1С и то только под 2 вроде пашет. А уж у них ресурсов то поболее будет.


Nikolay M.   (2004-04-29 10:22:00) [4]


> И как же ? :-)

Не использовать ХП, запросы писать по стандарту ANSI-SQL, с ненулевой вероятностью будет работать даже под MySQL 3.


Nikolay M.   (2004-04-29 10:20:00) [5]


> Mitrofan   (29.04.04 10:12) [5]

ХП и индексы присутствуют во всех трех вышеперечисленных СУБД.
Генераторы - только в FB, но я не видел, чтобы работа с ними велась не из ХП или тригеров, следовательно, генераторы, скорее всего, можно вычеркнуть. А ХП все равно придется обрабатывать напильником под каждую СУБД.
Для разработки структуры БД могу порекомендовать PowerDesigner - визуально создаешь таблички и связи между ними (поддержка целостностями тригерами или внешними ключами), после генерируются скрипты на создание БД в нужных СУБД.


Mitrofan   (2004-04-29 10:19:00) [6]

Nikolay M
Вы точно подметили,
как сделать максимально легко переброс с одной СУБД на другую


Vlad   (2004-04-29 10:18:00) [7]


> Nikolay M. ©   (29.04.04 10:16) [6]


> как сделать максимально легко переброс с одной СУБД на другую.

И как же ? :-)


Nikolay M.   (2004-04-29 10:16:00) [8]


> Можно трехзвенную архитектуру использовать,

Можно много чего использовать. И что, Application-server не с базой будет работать и запросы будут не к серверу (серверам) ходить?
Вопрос не в том, кто будет делать запросы к базе (Апп-сервер или толстый клиент), а как сделать максимально легко переброс с одной СУБД на другую.


Mitrofan   (2004-04-29 10:12:00) [9]

Что касается синтаксиса, от СУБД требуется хранимые процедуры, генераторы и и ндексы.


Nikolay M.   (2004-04-29 10:11:00) [10]


> К примеру можно ли сделать чтобы одно приложение могло работать
> со следующими СУБД: Firebird, MSSQL, Sybase

Легко. В двух последних случаях практический идентичный T-SQL. С FB сложнее, но если придерживаться стандарта, то можно выкрутиться, правда запросы будут далеко неоптимальными.
А зачем нужны такие выкрутасы?


Vlad   (2004-04-29 10:10:00) [11]


> Mitrofan   (29.04.04 10:00)  

Можно трехзвенную архитектуру использовать, а можно просто через интерфейсы реализовать, т.е. создаешь к примеру, библиотеку, делаешь в ней интерфейс с необходимым набором методов, и несколько объектов этот интерфейс реализующих.


bushmen   (2004-04-29 10:07:00) [12]

Так как у разных СУБД может отличаться синтаксис языка, то проще взять за основу одгу СУБД и к ней прилинковать все остальные.


Johnmen   (2004-04-29 10:03:00) [13]

Такое, как правило, реализуется в трёхзвенной архитектуре.


Наверх

Титульная страница Поиск, карта сайта Написать письмо