![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Одно приложение - несколько СУБД
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]Такое, как правило, реализуется в трёхзвенной архитектуре.