|
SQL92/99, как средство абстракции от БД - миф или реальность?
|
|||
---|---|---|---|
#18+
Доброго часа! Проектируется ИС, одним из требований к которой является возможность работы с наиболее распространёнными на сгодняшний день RDMS (Oracle, MSSQL, MySQL, PostgreSQL и т.д.). Рассматривается 2 варианта реализации этого требования: использование слоя абстракции от БД и использование при работе с БД только стандартного SQL92/99. По поводу второго варианта как раз и возник вопрос: реально ли абстрагироваться от разных СУБД, работая с ними только при помощи стандартного SQL92/99, или "это фантастика"? Насколько разные СУБД поддерживают стандартный SQL? ... |
|||
:
Нравится:
Не нравится:
|
|||
26.01.2011, 12:33 |
|
SQL92/99, как средство абстракции от БД - миф или реальность?
|
|||
---|---|---|---|
#18+
Стандарты - миф. Работают на простых запросах. При использовании нюансов СУБД (системные функции, таблицы и ХП) стандарты летят к чорту. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.01.2011, 13:10 |
|
SQL92/99, как средство абстракции от БД - миф или реальность?
|
|||
---|---|---|---|
#18+
Разрушитель легендреально ли абстрагироваться от разных СУБД, работая с ними только при помощи стандартного SQL92/99 Реально абстрагироваться от СУБД с помощью стандартного SQL можно только если ограничиться простыми запросами, уровня "select * from table where id = ?". Именно так чаще всего создаются ламерские трёхзвенки, авторы которых талдычат про независимость от СУБД, гигантское преимущество трёх- над двухзвенкой и о том, что MySQL ничем не уступает ораклу, но бесплатный. Если бы мне захотелось собеседовать "специалиста в разных СУБД и ANSI SQL", я непременно задал бы ему вопрос: обрисуйте ситуацию, когда один и тот же корректный запрос на стандартном SQL, выполненный в трёх разных СУБД над одинаковыми данными, приведёт к трём разным результатам. Это не фантастика, это легко достижимый факт. Если хотите заложить хорошую платформу, то очень рекомендую следующий подход: продумайте/найдите слой абстракции, отвечающий следующим условиям: входящие в него классы обладают чётко специфицированным, одинаковым на разных СУБД поведением простые запросы и операции можно задать один раз, не прописывая реализацию для каждой СУБД можно задать правильную/эффективную/итп реализацию некоторой операции для конкретной СУБД типовые операции по возможности покрываются объектами с универсальным интерфейсом, генерирующими код под специфические СУБД. Также вам крайне пригодятся в команде человек, хорошо понимающий концепции СУБД, и минимум по одному толковому специалисту для каждой из платформ (толковый - в смысле "может понять, о каких концепциях говорит первый, и рассказать, как они реализованы в конкретной СУБД и каким образом в этой СУБД можно добиться требуемого поведения"). ... |
|||
:
Нравится:
Не нравится:
|
|||
26.01.2011, 13:33 |
|
SQL92/99, как средство абстракции от БД - миф или реальность?
|
|||
---|---|---|---|
#18+
On 26.01.2011 12:33, Разрушитель легенд wrote: Рассматривается 2 варианта реализации этого требования: > использование слоя абстракции от БД и использование при работе с БД только > стандартного SQL92/99. По поводу второго варианта как раз и возник вопрос: > реально ли абстрагироваться от разных СУБД, работая с ними только при помощи > стандартного SQL92/99, или "это фантастика"? Не реально. это фантастика. Впрочем, это сильно зависит от специфики приложения. Если от СУБД приложению нужно только CRUD-ы, то вполне возможно. Хорошая штука в этом плане кстати -- Hibernate. Уже готовый тебе слой. Только прикладуху дописать придётся. Насколько разные СУБД поддерживают > стандартный SQL Обычно в части core. Из неё -- всё. После этого они говорят, что они ANSI и все дела. Posted via ActualForum NNTP Server 1.4 ... |
|||
:
Нравится:
Не нравится:
|
|||
26.01.2011, 14:49 |
|
SQL92/99, как средство абстракции от БД - миф или реальность?
|
|||
---|---|---|---|
#18+
On 26.01.2011 13:33, softwarer wrote: > Если бы мне захотелось собеседовать "специалиста в разных СУБД и ANSI SQL", я > непременно задал бы ему вопрос: обрисуйте ситуацию, когда один и тот же > корректный запрос на стандартном SQL, выполненный в трёх разных СУБД над > одинаковыми данными, приведёт к трём разным результатам. Это не фантастика, это > легко достижимый факт. Да, обработка NULL например. Написать какой-нибудь запрос на это -- и готово. Типа NULL != NULL ==> UNKNOWN --> not true. > Если хотите заложить хорошую платформу, то очень рекомендую следующий подход: > продумайте/найдите слой абстракции, отвечающий следующим условиям: Ещё очень хорошо бы сразу подумать на тему доменов. Т.е. множества типов данных, поддерживаемых каждой СУБД, их диапазоны значений, допустимые и недопустимые значения, операции над ними (какие есть и как реализованы). Об этом большинство разработчиков забывает напрочь. Posted via ActualForum NNTP Server 1.4 ... |
|||
:
Нравится:
Не нравится:
|
|||
26.01.2011, 15:05 |
|
SQL92/99, как средство абстракции от БД - миф или реальность?
|
|||
---|---|---|---|
#18+
MasterZivЕщё очень хорошо бы сразу подумать на тему доменов. Конечно. Это, собственно, часть моего первого пункта, про классы с одинаковым поведением. Домены - ещё полбеды, хуже дело с операциями. Например, с влиянием collation на сравнение строк или с тем, что СУБД по-разному выполнят один и тот же ORDER BY SOME_FIELD. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.01.2011, 15:24 |
|
|
start [/forum/topic.php?fid=33&fpage=28&tid=1548118]: |
0ms |
get settings: |
11ms |
get forum list: |
13ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
40ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
65ms |
get tp. blocked users: |
2ms |
others: | 14ms |
total: | 162ms |
0 / 0 |