powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Разработка информационных систем [игнор отключен] [закрыт для гостей] / SQL92/99, как средство абстракции от БД - миф или реальность?
6 сообщений из 6, страница 1 из 1
SQL92/99, как средство абстракции от БД - миф или реальность?
    #37079269
Доброго часа!

Проектируется ИС, одним из требований к которой является возможность работы с наиболее распространёнными на сгодняшний день RDMS (Oracle, MSSQL, MySQL, PostgreSQL и т.д.). Рассматривается 2 варианта реализации этого требования: использование слоя абстракции от БД и использование при работе с БД только стандартного SQL92/99. По поводу второго варианта как раз и возник вопрос: реально ли абстрагироваться от разных СУБД, работая с ними только при помощи стандартного SQL92/99, или "это фантастика"? Насколько разные СУБД поддерживают стандартный SQL?
...
Рейтинг: 0 / 0
SQL92/99, как средство абстракции от БД - миф или реальность?
    #37079392
LSV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Стандарты - миф. Работают на простых запросах.
При использовании нюансов СУБД (системные функции, таблицы и ХП) стандарты летят к чорту.
...
Рейтинг: 0 / 0
SQL92/99, как средство абстракции от БД - миф или реальность?
    #37079451
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Разрушитель легендреально ли абстрагироваться от разных СУБД, работая с ними только при помощи стандартного SQL92/99
Реально абстрагироваться от СУБД с помощью стандартного SQL можно только если ограничиться простыми запросами, уровня "select * from table where id = ?". Именно так чаще всего создаются ламерские трёхзвенки, авторы которых талдычат про независимость от СУБД, гигантское преимущество трёх- над двухзвенкой и о том, что MySQL ничем не уступает ораклу, но бесплатный.

Если бы мне захотелось собеседовать "специалиста в разных СУБД и ANSI SQL", я непременно задал бы ему вопрос: обрисуйте ситуацию, когда один и тот же корректный запрос на стандартном SQL, выполненный в трёх разных СУБД над одинаковыми данными, приведёт к трём разным результатам. Это не фантастика, это легко достижимый факт.

Если хотите заложить хорошую платформу, то очень рекомендую следующий подход: продумайте/найдите слой абстракции, отвечающий следующим условиям:

входящие в него классы обладают чётко специфицированным, одинаковым на разных СУБД поведением

простые запросы и операции можно задать один раз, не прописывая реализацию для каждой СУБД

можно задать правильную/эффективную/итп реализацию некоторой операции для конкретной СУБД

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

Также вам крайне пригодятся в команде человек, хорошо понимающий концепции СУБД, и минимум по одному толковому специалисту для каждой из платформ (толковый - в смысле "может понять, о каких концепциях говорит первый, и рассказать, как они реализованы в конкретной СУБД и каким образом в этой СУБД можно добиться требуемого поведения").
...
Рейтинг: 0 / 0
SQL92/99, как средство абстракции от БД - миф или реальность?
    #37079686
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
On 26.01.2011 12:33, Разрушитель легенд wrote:
Рассматривается 2 варианта реализации этого требования:
> использование слоя абстракции от БД и использование при работе с БД только
> стандартного SQL92/99. По поводу второго варианта как раз и возник вопрос:
> реально ли абстрагироваться от разных СУБД, работая с ними только при помощи
> стандартного SQL92/99, или "это фантастика"?

Не реально. это фантастика.
Впрочем, это сильно зависит от специфики приложения.
Если от СУБД приложению нужно только CRUD-ы, то вполне
возможно. Хорошая штука в этом плане кстати -- Hibernate.
Уже готовый тебе слой. Только прикладуху дописать придётся.

Насколько разные СУБД поддерживают
> стандартный SQL

Обычно в части core. Из неё -- всё. После этого они
говорят, что они ANSI и все дела.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
SQL92/99, как средство абстракции от БД - миф или реальность?
    #37079735
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
On 26.01.2011 13:33, softwarer wrote:

> Если бы мне захотелось собеседовать "специалиста в разных СУБД и ANSI SQL", я
> непременно задал бы ему вопрос: обрисуйте ситуацию, когда один и тот же
> корректный запрос на стандартном SQL, выполненный в трёх разных СУБД над
> одинаковыми данными, приведёт к трём разным результатам. Это не фантастика, это
> легко достижимый факт.

Да, обработка NULL например. Написать какой-нибудь запрос на это -- и готово.
Типа NULL != NULL ==> UNKNOWN --> not true.

> Если хотите заложить хорошую платформу, то очень рекомендую следующий подход:
> продумайте/найдите слой абстракции, отвечающий следующим условиям:

Ещё очень хорошо бы сразу подумать на тему доменов. Т.е. множества типов данных,
поддерживаемых каждой СУБД, их диапазоны значений, допустимые и недопустимые
значения, операции над ними (какие есть и как реализованы).
Об этом большинство разработчиков забывает напрочь.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
SQL92/99, как средство абстракции от БД - миф или реальность?
    #37079794
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZivЕщё очень хорошо бы сразу подумать на тему доменов.
Конечно. Это, собственно, часть моего первого пункта, про классы с одинаковым поведением. Домены - ещё полбеды, хуже дело с операциями. Например, с влиянием collation на сравнение строк или с тем, что СУБД по-разному выполнят один и тот же ORDER BY SOME_FIELD.
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / Разработка информационных систем [игнор отключен] [закрыт для гостей] / SQL92/99, как средство абстракции от БД - миф или реальность?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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