Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Сравнение СУБД Новый топик    Ответить
Топик располагается на нескольких страницах: [1] 2 3   вперед  Ctrl      все
 Совместимость синтаксиса MS SQL, MySql, FireBird  [new]
Anatoliy
Member

Откуда: Kiev
Сообщений: 100
Добрый день всем.
У меня вопрос к коллегам, знающим синтаксис MySQL, FireBird.
Насколько совместим синтаксис запросов в MySQL, FireBird и MS SQL.
Т.е., если в коде приложения все данные вытягиваются или обновляются из базы путем формирования SQL запросов.
Ну что-то типа:
Dim aDS As New DataSet
Dim sB As New StringBuilder
Dim da As New SqlDataAdapter
Dim cmd As New SqlCommand

sB.Append("SELECT tableID, tableName FROM tables ")
sB.Append("WHERE tableID = " & iTblID.ToString)
.....
cmd.CommandText = sB.ToString
da.SelectCommand = cmd
da.Fill(aDS, aTblName)

Получили датасет ... ну и дальше пошла логика работы с результатами запроса.

Т.е. сможет ли такое приложение работать с любой из перечисленных СУБД.
В плане совместимости MS SQL - Access - приложение успешно прошло экзамен. Ну пришлось отказаться от пары хранимых процедур для совместимости с Access.
Или же переписать строку подключения будет недостаточно. И прийдется перелопачивать весь код.
Спасибо.
30 мар 06, 17:16    [2507877]     Ответить | Цитировать Сообщить модератору
 Re: Совместимость синтаксиса MS SQL, MySql, FireBird  [new]
mir
Member

Откуда: Томск
Сообщений: 1027
Они совместимы на очень "базовом", примитивном уровне. То есть на запросах вроде приведенных вами. Вообще, вы идете по печально известному пути написания независимых от СУБД приложений. Путь этот достижим только при полном отказе от сколько-нибудь сложных запросов, от триггеров и ХП, от встроенных в СУБД механизмов репликации и т.д. (то есть грубо говоря от всего того, что составляет мощь СУБД), либо за счет встраивания нескольких аналогов одного и того же функционала для N разных предусмотренных СУБД (то есть фактически стоимость разработки умножаем на N или около того).

Успехов.
30 мар 06, 18:18    [2508168]     Ответить | Цитировать Сообщить модератору
 Re: Совместимость синтаксиса MS SQL, MySql, FireBird  [new]
locky
Member

Откуда: Харьков, Украина
Сообщений: 62034

mir wrote:
> Они совместимы на очень "базовом", примитивном уровне. То есть на
> запросах вроде приведенных вами. Вообще, вы идете по печально известному
> пути написания независимых от СУБД приложений. Путь этот достижим только
> при полном отказе от сколько-нибудь сложных запросов, от триггеров и ХП,
> от встроенных в СУБД механизмов репликации и т.д. (то есть грубо говоря
> от всего того, что составляет мощь СУБД), либо за счет встраивания
> нескольких аналогов одного и того же функционала для N разных
> предусмотренных СУБД (то есть фактически стоимость разработки умножаем
> на N или около того).
краткая врезка об универсальном приложениии

Водитель, помни!
Если ты одновременно ведешь машину и целуешь девушку - и то и другое ты
делаешь плохо!

--
-------------------------
There's no silver bullet!

Posted via ActualForum NNTP Server 1.3

30 мар 06, 18:32    [2508216]     Ответить | Цитировать Сообщить модератору
 Re: Совместимость синтаксиса MS SQL, MySql, FireBird  [new]
softwarer
Member

Откуда: 127.0.0.1
Сообщений: 67463
Блог
locky

Аплодирую.
30 мар 06, 18:39    [2508244]     Ответить | Цитировать Сообщить модератору
 Re: Совместимость синтаксиса MS SQL, MySql, FireBird  [new]
Anatoliy
Member

Откуда: Kiev
Сообщений: 100
Согласен.
Только приложение уже есть.
И хотелось бы прикинуть на вскидку, стоит ли его "лепить" к MySql FireBird или там прийдется половину кода переделывать.
Т.е, прежде, чем искать (скачивать) дистрибутивы указанных СУБД, устанавливать и разбираться с тонкостями, просто спросить тех, кто уже с такими СУБД работал.
30 мар 06, 19:01    [2508317]     Ответить | Цитировать Сообщить модератору
 Re: Совместимость синтаксиса MS SQL, MySql, FireBird  [new]
locky
Member

Откуда: Харьков, Украина
Сообщений: 62034

Anatoliy wrote:
> Согласен.
> Только приложение уже есть.
> И хотелось бы прикинуть на вскидку, стоит ли его "лепить" к MySql
> FireBird или там прийдется половину кода переделывать.
А для зачем его ваще лепить к ним? таки есть обоснованная необходимость
или так, для плезиру?

--
-------------------------
There's no silver bullet!

Posted via ActualForum NNTP Server 1.3

30 мар 06, 19:03    [2508334]     Ответить | Цитировать Сообщить модератору
 Re: Совместимость синтаксиса MS SQL, MySql, FireBird  [new]
Anatoliy
Member

Откуда: Kiev
Сообщений: 100
Попался заказчик на нашу программу, который хотел бы обойтись бесплатной СУБД (т.е. купить только интерфейсную оболочку). Ну секономить таким образом. Вот я и пробую навскидку определить, стоит ли заморачиаться. Т.е. дальше прийдется вникать в это дело более подробно. А пока не влез в тонкости, решил спросить коллег, которые работали и с тем и с тем (я имею в виду MS SQL и бесплатные СУБД).
30 мар 06, 19:23    [2508413]     Ответить | Цитировать Сообщить модератору
 Re: Совместимость синтаксиса MS SQL, MySql, FireBird  [new]
softwarer
Member

Откуда: 127.0.0.1
Сообщений: 67463
Блог
Anatoliy
или там прийдется половину кода переделывать.

Придется. Одни только форматы дат наверняка подкинут немало приятных минут.
30 мар 06, 19:25    [2508425]     Ответить | Цитировать Сообщить модератору
 Re: Совместимость синтаксиса MS SQL, MySql, FireBird  [new]
Anatoliy
Member

Откуда: Kiev
Сообщений: 100
Придется. Одни только форматы дат наверняка подкинут немало приятных минут.
Ага, значит фокус как c Access в данном случае не прокатит.
Спасибо. Буду думать. А поставить одну из указанных СУБД и поюзать наугад, наверное на выходных все же прийдется.
30 мар 06, 19:39    [2508478]     Ответить | Цитировать Сообщить модератору
 Re: Совместимость синтаксиса MS SQL, MySql, FireBird  [new]
Мимопроходящий
Member

Откуда: бурятский тундрюк, эсквайр
Сообщений: 32895

Привет, softwarer!
Ты пишешь:

softwarer
Одни только форматы дат наверняка подкинут немало приятных минут.

Если не пользовать параметризированных запросов
и как совсем полохой, "втыкать" дату в текст запроса.

--
With best regards, Мимопроходящий.

Posted via ActualForum NNTP Server 1.3

30 мар 06, 19:41    [2508484]     Ответить | Цитировать Сообщить модератору
 Re: Совместимость синтаксиса MS SQL, MySql, FireBird  [new]
locky
Member

Откуда: Харьков, Украина
Сообщений: 62034

Anatoliy wrote:
> Попался заказчик на нашу программу, который хотел бы обойтись бесплатной
> СУБД (т.е. купить только интерфейсную оболочку). Ну секономить таким
> образом. Вот я и пробую навскидку определить, стоит ли заморачиаться.
> Т.е. дальше прийдется вникать в это дело более подробно. А пока не влез
> в тонкости, решил спросить коллег, которые работали и с тем и с тем (я
> имею в виду MS SQL и бесплатные СУБД).
Могу и ошибаться, но MSDE и SQLExpress - бесплатные.

--
-------------------------
There's no silver bullet!

Posted via ActualForum NNTP Server 1.3

30 мар 06, 19:48    [2508511]     Ответить | Цитировать Сообщить модератору
 Re: Совместимость синтаксиса MS SQL, MySql, FireBird  [new]
softwarer
Member

Откуда: 127.0.0.1
Сообщений: 67463
Блог
Мимопроходящий
Если не пользовать параметризированных запросов
и как совсем полохой, "втыкать" дату в текст запроса.

См. первое письмо этого топика.
30 мар 06, 22:14    [2508836]     Ответить | Цитировать Сообщить модератору
 Re: Совместимость синтаксиса MS SQL, MySql, FireBird  [new]
Ц4
Guest
Не так страшны даты при правильном использовании в непараметризованных запросах

формат 'yyyy-mm-dd' работает и в MSSQL и в FireBird
30 мар 06, 22:16    [2508839]     Ответить | Цитировать Сообщить модератору
 Re: Совместимость синтаксиса MS SQL, MySql, FireBird  [new]
Ц4
Guest
Не подумайте плохого - я не призываю пользовать непараметризованные запросы
30 мар 06, 22:24    [2508852]     Ответить | Цитировать Сообщить модератору
 Re: Совместимость синтаксиса MS SQL, MySql, FireBird  [new]
Victor Metelitsa
Member

Откуда: Тюмень
Сообщений: 2559
mir
Они совместимы на очень "базовом", примитивном уровне. То есть на запросах вроде приведенных вами. Вообще, вы идете по печально известному пути написания независимых от СУБД приложений. Путь этот достижим только при полном отказе от сколько-нибудь сложных запросов, от триггеров и ХП, от встроенных в СУБД механизмов репликации и т.д. (то есть грубо говоря от всего того, что составляет мощь СУБД), либо за счет встраивания нескольких аналогов одного и того же функционала для N разных предусмотренных СУБД (то есть фактически стоимость разработки умножаем на N или около того).


Это некорректно. Триггеры, репликация и ХП здесь совершенно не причём. GUI-программа типа приведённой выше о триггерах и репликации просто не знает, да и вызов SP имеет похожий синтаксис.

Я в разработке пользуюсь Object-Relation framework'ом под названием GLORP, а раньше использовал TOPLink/S, они позволяют делать многие (хотя, к сожалению, и не все) вещи независимыми от СУБД. Соль в том, что программа, в том числе и запросы, даже очень сложные, пишутся на Smalltalk'е, а GLORP и TOPLink/S их транслируют на SQL с учётом особенностей сервера.
30 мар 06, 22:47    [2508897]     Ответить | Цитировать Сообщить модератору
 Re: Совместимость синтаксиса MS SQL, MySql, FireBird  [new]
mir
Member

Откуда: Томск
Сообщений: 1027
Victor Metelitsa
Это некорректно.
Скажем так, это просто упрощенное изложение.
Victor Metelitsa
Триггеры, репликация и ХП здесь совершенно не причём. GUI-программа типа приведённой выше о триггерах и репликации просто не знает, да и вызов SP имеет похожий синтаксис.
Это почти так. Однако сколько-нибудь сложная ИС все эти прелести обязательно использует. А если ИС без них, то значит она весьма простая, что и требовалось доказать.
Victor Metelitsa
Я в разработке пользуюсь Object-Relation framework'ом под названием GLORP, а раньше использовал TOPLink/S, они позволяют делать многие (хотя, к сожалению, и не все) вещи независимыми от СУБД. Соль в том, что программа, в том числе и запросы, даже очень сложные, пишутся на Smalltalk'е, а GLORP и TOPLink/S их транслируют на SQL с учётом особенностей сервера.
А вот тут позвольте не поверить. Я не первый год пишу на SQL и знаю, что для сложных запросов нюансы конкретной СУБД жизненно важны. Видимо, мы по разному с вами понимем "сложность" запросов. Я уверен, что эта ваша (весьма странная) связка приемлемо сработает только на примитивнейших по моим меркам запросах, а на сложных даст просто ужасающее по производительности решение. Впрочем, если оно вас удовлетворяет, рад за вас. Но в целом предложенный подход IMHO имеет очень узкую нишу, хотя бы потому, что все задачи нужно решать на наиболее приспособленном для этого инструменте. А для задач работы с конкретной СУБД наиболее приспособлен собственный язык этой СУБД, то есть обычно конкретный диалект SQL.
31 мар 06, 08:19    [2509424]     Ответить | Цитировать Сообщить модератору
 Re: Совместимость синтаксиса MS SQL, MySql, FireBird  [new]
AlexTheRaven
Member

Откуда: Москва
Сообщений: 879
Anatoliy
Попался заказчик на нашу программу, который хотел бы обойтись бесплатной СУБД (т.е. купить только интерфейсную оболочку). Ну секономить таким образом. Вот я и пробую навскидку определить, стоит ли заморачиаться. Т.е. дальше прийдется вникать в это дело более подробно. А пока не влез в тонкости, решил спросить коллег, которые работали и с тем и с тем (я имею в виду MS SQL и бесплатные СУБД).

Если изначально не придерживались "голого" SQL 92 и не использовали какой-то "слой абстракции от СУБД" наподобие GLORP, TOPLink/S, Pear:DB, AdoDB, обменивающий функциональность и производительность на единообразие работы с разными СУБД - IMHO придётся переписывать и, что страшее, перетестировать почти всё.

Если придерживались и использовали - переписывать чуть меньше, а тестировать несколько сложнее из-за непредсказуемости "слоя абстракции от СУБД". Вы уверены, что этот заказчик - не единственный, кому захочется FireBird, и что дело того стоит?
31 мар 06, 10:32    [2509893]     Ответить | Цитировать Сообщить модератору
 Re: Совместимость синтаксиса MS SQL, MySql, FireBird  [new]
1024
Member

Откуда: Нижний Новгород
Сообщений: 14267
какие-то пораженьческие настроения.

Полной совместимости нет. Например выбрать первые 10 записей

MS SQL - select top 10 ...
Firebird - select first 10 ...
PostgreSQL - select limit 10
Interbase до версии 6.5 - вообще не поддерживает

но эти разночтения конечны и их достаточно просто где-то хранить в настройках и строить с их учётом запрос.

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

String dt=String(CurDate())
execute('select * from table1 where field1="'+dt+'" order by 1')

писать
Date dt=CurDate()
execute('select * from table1 where field1=?dt order by 1')

- переводом в нужный формат будет заниматься драйвер, поддерживается и в одбц и в оледб, синтаксис зависит от языка разработки клиента

ещё проблема может быть в отстойных бесплатных компонентах доступа. У мсскл вероятно всё пучком будет (этож микрософт) а у опенсорсного драйвера для файрбёрда этот самы биндинг может не поддерживаться к примеру.



одним словом для универсальности конечно придётся какие-то дополнительные усилия прилагать. Кому-то это покажется неподъёмным, кому-то простым. По условиям решать.
31 мар 06, 11:59    [2510484]     Ответить | Цитировать Сообщить модератору
 Re: Совместимость синтаксиса MS SQL, MySql, FireBird  [new]
softwarer
Member

Откуда: 127.0.0.1
Сообщений: 67463
Блог
1024
Полной совместимости нет. Например выбрать первые 10 записей

Расскажи, пожалуйста, как выполнить на этих серверах описанную в SQL92 конструкцию EXCEPT и сколько каких настроек для этого потребуется.
31 мар 06, 13:23    [2511055]     Ответить | Цитировать Сообщить модератору
 Re: Совместимость синтаксиса MS SQL, MySql, FireBird  [new]
Random_Goodman
Member [заблокирован]

Откуда:
Сообщений: 3708
Не знаю насчет бесплатных СУБД

В компании где я работал, переделывали версию проги с Оракла на MSSQL по требованию заказчика

Ушло на это около 1\4 общего времени написания всей проги с нуля

И ресурсов столько же
31 мар 06, 13:33    [2511105]     Ответить | Цитировать Сообщить модератору
 Re: Совместимость синтаксиса MS SQL, MySql, FireBird  [new]
1024
Member

Откуда: Нижний Новгород
Сообщений: 14267

Расскажи, пожалуйста, как выполнить на этих серверах описанную в SQL92
конструкцию EXCEPT и сколько каких настроек для этого потребуется.
----------------
понятия не имею. И огромное количество разработчиков под сервера
поддерживающие ексепт даже о нём и не слышали.

Это так, к сведению


Posted via ActualForum NNTP Server 1.3

31 мар 06, 15:00    [2511645]     Ответить | Цитировать Сообщить модератору
 Re: Совместимость синтаксиса MS SQL, MySql, FireBird  [new]
mir
Member

Откуда: Томск
Сообщений: 1027
1024
какие-то пораженьческие настроения.
Да можно, можно сделать-то. Но чем сложнее система и кучерявее запросы (особенно для сложных отчетов), тем трудозатраты будут выше. Тут никаким хранением "настроек" не поможешь. Ведь сложный запрос есть не просто один большой SELECT, а по сути целый скрипт с переменными (в т.ч. таблицами-переменными), циклами, курсорами и т.д.
31 мар 06, 15:15    [2511717]     Ответить | Цитировать Сообщить модератору
 Re: Совместимость синтаксиса MS SQL, MySql, FireBird  [new]
1024
Member

Откуда: Нижний Новгород
Сообщений: 14267
решение принимается в соответствии с конкретными условиями
31 мар 06, 15:21    [2511760]     Ответить | Цитировать Сообщить модератору
 Re: Совместимость синтаксиса MS SQL, MySql, FireBird  [new]
locky
Member

Откуда: Харьков, Украина
Сообщений: 62034

1024 wrote:
> понятия не имею. И огромное количество разработчиков под сервера
> поддерживающие ексепт даже о нём и не слышали.
огромное количество разработчиков под тот-же MS SQL понятия не имеет о
left/right/full/cross join, exists, distinct, begin tran.... и чо?
неумность отдельных разработчиков не есть фактор!

зы какое у меня язык корявое :-)
--
-------------------------
There's no silver bullet!

Posted via ActualForum NNTP Server 1.3

31 мар 06, 15:51    [2511958]     Ответить | Цитировать Сообщить модератору
 Re: Совместимость синтаксиса MS SQL, MySql, FireBird  [new]
1024
Member

Откуда: Нижний Новгород
Сообщений: 14267

огромное количество разработчиков под тот-же MS SQL понятия не имеет о
left/right/full/cross join, exists, distinct, begin tran.... и чо?
-------------------

а то что "решение принимается в соответствии с конкретными условиями"


Posted via ActualForum NNTP Server 1.3

31 мар 06, 16:00    [2511994]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2 3   вперед  Ctrl      все
Все форумы / Сравнение СУБД Ответить