Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Поддержка нескольких СУБД / 25 сообщений из 28, страница 1 из 2
02.11.2007, 09:49
    #34912040
minva
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поддержка нескольких СУБД
Допустим есть модель концептуальная (логическая)
Получить физическую из неё для разных СУБД не проблема. Но это будут только таблицы.
А как быть с ХП и прочими подобными вещами? Как ведется идентичность логики для двух разных СУБД? просто тупо дублируется код с учетом особенностей каждой из СУБД?
Или в таких случаях бизнес логика выносится из сервера БД на сервер приложений или на клиента?
...
Рейтинг: 0 / 0
02.11.2007, 10:01
    #34912063
Bely
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поддержка нескольких СУБД
minvaА как быть с ХП и прочими подобными вещами? Как ведется идентичность логики для двух разных СУБД?Есть три варианта:
1) Из многих СУБД выбрать одну и для нее делать
2) Поддерживать две разные версии СУБД - как разные продукты
3) Вынести логику в сервер приложений (или на клиента)

Все подходы имеют свои недостатки и не маленькие.

Вобщем, независимость приложения от СУБД - это миф.
...
Рейтинг: 0 / 0
02.11.2007, 10:33
    #34912194
softwarer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поддержка нескольких СУБД
Есть четвертый. Разработать свой диалект языка написания запросов/ХП и реализовать транслятор с него на языки используемых БД.
...
Рейтинг: 0 / 0
02.11.2007, 13:45
    #34913095
iscrafm
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поддержка нескольких СУБД
minva

1. просто тупо дублируется код с учетом особенностей каждой из СУБД
2. бизнес логика выносится из сервера БД на сервер приложений
...
Рейтинг: 0 / 0
07.11.2007, 12:47
    #34921621
Megabyte
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поддержка нескольких СУБД
Независимость должна обеспечиваться в соответствии с каким-то стандартом, например ANSI SQL92(99). Многие СУБД поддерживают ANSI, но только "начальный уровень". Поэтому независимость можно обеспечить в метаданных(и то придется покоптеть, ибо в некоторых СУБД нет триггеров, ХП, доменов, другие типы данных) и простых запросах.
Собственно сам хочу создать модуль-транслятор моего метаязыка в метаданные для конкретной СУБД, остальное писать в виде плагина под конкретную СУБД. Не стоит имхо гнаться за излишней универсальностью, надо четко разграничить то, что можно автоматизировать(метаданные, простые выборки), и то, что лучше делать индивидуально под каждую СУБД.
-----
Проходя мимо разложенных граблей, ты теряешь драгоценный опыт. (с)
...
Рейтинг: 0 / 0
25.01.2008, 20:43
    #35088936
Поддержка нескольких СУБД
softwarerЕсть четвертый. Разработать свой диалект языка написания запросов/ХП и реализовать транслятор с него на языки используемых БД.
Хм..мне кажется написание это транслятора выйдет очень дорого.Опять все хотят изобретать велосипед
...
Рейтинг: 0 / 0
25.01.2008, 21:26
    #35088961
Поддержка нескольких СУБД
глупый вопрос - а зачем это надо???
...
Рейтинг: 0 / 0
25.01.2008, 21:37
    #35088964
softwarer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поддержка нескольких СУБД
Оптимист_оракулХм..мне кажется написание это транслятора выйдет очень дорого.
"Кажется" - категория крайне неудачная с точки зрения осмысленного принятия решений. "Очень дорого" - слова, не имеющие смысла (сколько это - 1e3? 1e6? 1e9? 1e12?)

Для большой системы - трудоемкостью в сотни и тысячи человеко-лет - создание такого транслятора будет кардинально дешевле, нежели аккуратный перевод написанного на несколько других диалектов и дальнейшая согласованная поддержка. Для маленькой системы - трудоемкостью, скажем, в один человеко-год - кардинально дороже. Дальше следует искать оптимум.
...
Рейтинг: 0 / 0
26.01.2008, 01:36
    #35089126
AlexTheRaven
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поддержка нескольких СУБД
minva<...>А как быть с ХП и прочими подобными вещами?<...>
Либо избегать, либо поддерживать отдельно для каждой поддерживаемой СУБД. Не так ведь много нужно: либо Oracle + MS SQL, либо Firebird + PostgreSQL, их последнюю 1 версию. Остальные умирают или влачат.

minva
Как ведется идентичность логики для двух разных СУБД? просто тупо дублируется код с учетом особенностей каждой из СУБД?
Либо так, либо прокрустово ложе SQL/92, да и то не без учёта специфики.

minva
Или в таких случаях бизнес логика выносится из сервера БД на сервер приложений или на клиента?
Можно, конечно, и так, но есть много противников этого подхода. Производители СУБД не зря старались напихать в них всяческих несвойственных "вкусностей", имеющих весьма посредственное отношение к хранению данных. Вряд ли у Вас получится лучше (дешевле, быстрее, качественнее), чем у них.
...
Рейтинг: 0 / 0
26.01.2008, 15:19
    #35089469
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поддержка нескольких СУБД
softwarer пишет:

> Для большой системы - трудоемкостью в сотни и тысячи человеко-лет -
> создание такого транслятора будет кардинально дешевле, нежели аккуратный
> перевод написанного на несколько других диалектов и дальнейшая
> согласованная поддержка. Для маленькой системы - трудоемкостью, скажем,
> в один человеко-год - кардинально дороже. Дальше следует искать оптимум.

Т.е. нам надо писать ... А я отбрыкивался ...
Есть такой на примете ? Делись давай ...
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
26.01.2008, 16:10
    #35089517
softwarer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поддержка нескольких СУБД
MasterZivТ.е. нам надо писать ... А я отбрыкивался ...
Хм. Скажем так, в командах, у которых это будет оправдано, как правило умеют подсчитывать стоимость и искать оптимальные решения :)

MasterZivЕсть такой на примете ?
ABAP какой-нибудь... не интересовался.

MasterZivДелись давай ...
Да без проблем. Заказывайте - напишем
...
Рейтинг: 0 / 0
26.01.2008, 18:47
    #35089633
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поддержка нескольких СУБД
softwarer пишет:

> Да без проблем. Заказывайте - напишем

ловлю на слове.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
28.01.2008, 23:21
    #35093256
Поддержка нескольких СУБД
Подскажите пожайлуста практическую ценность такого транслятора?
...
Рейтинг: 0 / 0
28.01.2008, 23:23
    #35093259
proposed amendment
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поддержка нескольких СУБД
Оптимист_оракулПодскажите пожайлуста практическую ценность такого транслятора?

наверное нужно пять в зачотку
...
Рейтинг: 0 / 0
29.01.2008, 00:48
    #35093321
Роман Дынник
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поддержка нескольких СУБД
minvaА как быть с ХП и прочими подобными вещами? Как ведется идентичность логики для двух разных СУБД? просто тупо дублируется код с учетом особенностей каждой из СУБД?

1. Использовать ORM-средства и Mapping-helper-ы (Hibernate/NHibernate, iBatis, LINQ ...) и отказаться от слоя хп и какой-либо бизнес-логики на стороне СУБД.
2. Выносить в хп только CRUD-слой который может быть 100% перегенерирован для конкретной СУБД на основе модели.

...
Примеры реализаций упоминаемых трансляторов: HQL (Hibernate), LINQ To SQL.
...
Рейтинг: 0 / 0
29.01.2008, 03:39
    #35093398
mq
mq
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поддержка нескольких СУБД
Megabyte
Собственно сам хочу создать модуль-транслятор моего метаязыка в метаданные для конкретной СУБД, остальное писать в виде плагина под конкретную СУБД. Не стоит имхо гнаться за излишней универсальностью, надо четко разграничить то, что можно автоматизировать(метаданные, простые выборки), и то, что лучше делать индивидуально под каждую СУБД.


Ключевые слова: yacc, lex и т.д.
...
Рейтинг: 0 / 0
29.01.2008, 11:16
    #35093982
ВМоисеев
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поддержка нескольких СУБД
>Роман Дынник
>1. ... отказаться от слоя хп и какой-либо бизнес-логики на стороне СУБД. ...
>2. Выносить в хп только CRUD-слой ...

Делаю аналогично:
- на стороне СУБД нет серьёзной бизнес-логики,
- создаётся выделенный CRUD-слой. Может быть дополнен и ХП ( почти всегда для баз данных типа MSSQL и Oracle и может быть для других серверов данных)

Есть одна тонкость. В своё время softwarer точно подметил - CRUD-слой то придется переписывать заново для каждого сервера данных (цитирую softwarer не дословно). А это не совсем тривиальная задача. Такая операция, как формирование страницы из полной выборки, реализуется по-разному для MSSQL и Oracle. И это видимо справедливо и для других серверов данных.
Вы упоминаете типы трансляторов. Я не знаю HQL, поэтому не могу ничего сказать дельного, но что он даст, если сервер данных не реляционная СУБД. LINQ только в общих чертах - ничем пока не поможет, ибо только для MSSQL.
Так что надо согластится с тезисом softwarer и быть готовым писать (переписать) свой слой CRUD для каждого нового сервера данных.
Для себя задачу несколько упростил. В прототипе клиент посылает серверу приложений не SQL команды, а информацию вида = сериализованные(индекс_класса+индекс_метода+параметры). СП передает в слой CRUD аналогичную информацию.

С уважением, Владимир.
...
Рейтинг: 0 / 0
29.01.2008, 12:04
    #35094213
belugin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поддержка нескольких СУБД
ВМоисеевLINQ только в общих чертах - ничем пока не поможет, ибо только для MSSQL.

1. Можно написать лююого провайдера
2. уже пишут
...
Рейтинг: 0 / 0
29.01.2008, 14:21
    #35094801
softwarer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поддержка нескольких СУБД
MasterZiv
softwarer пишет:

> Да без проблем. Заказывайте - напишем

ловлю на слове.
И что характерно, до сих пор ни заказа, ни предоплаты.....
...
Рейтинг: 0 / 0
31.01.2008, 10:19
    #35099471
Роман Дынник
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поддержка нескольких СУБД
ВМоисеев В своё время softwarer точно подметил - CRUD-слой то придется переписывать заново для каждого сервера данных (цитирую softwarer не дословно). А это не совсем тривиальная задача
Не переписывать, а перегенерировать на основе модели или метаданных - это принципиально, иначе работа по созданию такого CRUD-а не укладывается ни по времени, ни по качеству.
...
Рейтинг: 0 / 0
31.01.2008, 10:39
    #35099544
softwarer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поддержка нескольких СУБД
Владимир изложил мою мысль столь же качественно, сколь генерит собственные.

Softwarer прежде всего считает, что "генерация CRUD" - в общем случае идиотизм, бессмысленная попытка следовать форме правильного приложения при противоречии ее сути. В некоторых случаях она может быть оправдана техническими особенностями - например, вспоминая классическую легенду про то, что MSSQL неэффективно работает с не-ХП кодом - не более того.
...
Рейтинг: 0 / 0
31.01.2008, 13:02
    #35100208
locky
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поддержка нескольких СУБД
softwarer wrote:
> техническими особенностями - например, вспоминая классическую легенду
> про то, что MSSQL неэффективно работает с не-ХП кодом - не более того.
Легенду? Я бы так не сказал :)
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
31.01.2008, 15:24
    #35101029
Роман Дынник
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поддержка нескольких СУБД
softwarerSoftwarer прежде всего считает, что "генерация CRUD" - в общем случае идиотизм, бессмысленная попытка следовать форме правильного приложения при противоречии ее сути. В некоторых случаях она может быть оправдана техническими особенностями - например, вспоминая классическую легенду про то, что MSSQL неэффективно работает с не-ХП кодом - не более того.
Ну понеслась старая песня... хп or not хп :)
Во-первых CRUD-хп вносит дополнительный слой абстракции доступа.
Во-вторых - вносит дополнительный слой безопасности в виде доступа через хп, а не прямого доступа к таблицам.
В-третьих - заглянем в профайлер к БД без хп - dba повесится :)
...
Рейтинг: 0 / 0
31.01.2008, 17:15
    #35101568
softwarer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поддержка нескольких СУБД
lockyЛегенду? Я бы так не сказал :)
У меня нет ни достаточной квалификации, ни достаточного желания, чтобы иметь собственное мнение по этому вопросу. Попытка выяснить у сведущих скл-щиков и последующая очная ставка между ними доставила мне массу удовольствия, но если коротко, я выяснил, что "не все так просто", и категорическая постановка "делай ХП или будет плохо" далеко не всегда верна, поэтому и называю ее легендой.

Роман ДынникВо-первых CRUD-хп вносит дополнительный слой абстракции доступа.
Пустота не может ничего внести. "Дополнительный слой абстракции" появится только если вместо "тупого автогенерируемого кода" эти ХП начнут заполняться реальным, живым содержимым, то есть перестанут быть предметом нашего обсуждения.

Роман ДынникВо-вторых - вносит дополнительный слой безопасности в виде доступа через хп,
Некорректный аргумент. По сути, Вы говорите следующее: "плохо писать приложение - хорошо тем, что иначе можно было бы написать еще хуже". Я же - призываю писать хорошо.

Роман ДынникВ-третьих - заглянем в профайлер к БД без хп - dba повесится :)
Роман... в предыдущем аргументе Вы показали нежелание подумать над сказанным мной. В этом аргументе - демонстрируете, что либо не читали написанного мной, либо осознанно проигнорировали это.

При таком отношении собеседника к разговору я в 100% случаев прекращаю беседу. Dixi.
...
Рейтинг: 0 / 0
31.01.2008, 18:03
    #35101753
locky
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поддержка нескольких СУБД
softwarer wrote:
> У меня нет ни достаточной квалификации, ни достаточного желания, чтобы
> иметь собственное мнение по этому вопросу. Попытка выяснить у сведущих
> скл-щиков и последующая очная ставка между ними доставила мне массу
> удовольствия, но если коротко, я выяснил, что "не все так просто", и
> категорическая постановка "делай ХП или будет плохо" далеко не всегда
> верна, поэтому и называю ее легендой.

"Переходя улицу сначала посмотри налево, дойдя до середины дороги -
направо" - "легенда" из той же категории "легенд".
Далеко не всегда верна. Но - справедлива и постоянно встречаются
"легендарные случаи". Может быть - и не легенда это вовсе? :(
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Поддержка нескольких СУБД / 25 сообщений из 28, страница 1 из 2
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]