Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Сравнение СУБД [игнор отключен] [закрыт для гостей] / Совместимость синтаксиса MS SQL, MySql, FireBird / 25 сообщений из 70, страница 1 из 3
30.03.2006, 17:16
    #33635854
Anatoliy
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Совместимость синтаксиса MS SQL, MySql, FireBird
Добрый день всем.
У меня вопрос к коллегам, знающим синтаксис 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.
Или же переписать строку подключения будет недостаточно. И прийдется перелопачивать весь код.
Спасибо.
...
Рейтинг: 0 / 0
30.03.2006, 18:18
    #33636028
mir
mir
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Совместимость синтаксиса MS SQL, MySql, FireBird
Они совместимы на очень "базовом", примитивном уровне. То есть на запросах вроде приведенных вами. Вообще, вы идете по печально известному пути написания независимых от СУБД приложений. Путь этот достижим только при полном отказе от сколько-нибудь сложных запросов, от триггеров и ХП, от встроенных в СУБД механизмов репликации и т.д. (то есть грубо говоря от всего того, что составляет мощь СУБД), либо за счет встраивания нескольких аналогов одного и того же функционала для N разных предусмотренных СУБД (то есть фактически стоимость разработки умножаем на N или около того).

Успехов.
...
Рейтинг: 0 / 0
30.03.2006, 18:32
    #33636064
locky
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Совместимость синтаксиса MS SQL, MySql, FireBird
mir wrote:
> Они совместимы на очень "базовом", примитивном уровне. То есть на
> запросах вроде приведенных вами. Вообще, вы идете по печально известному
> пути написания независимых от СУБД приложений. Путь этот достижим только
> при полном отказе от сколько-нибудь сложных запросов, от триггеров и ХП,
> от встроенных в СУБД механизмов репликации и т.д. (то есть грубо говоря
> от всего того, что составляет мощь СУБД), либо за счет встраивания
> нескольких аналогов одного и того же функционала для N разных
> предусмотренных СУБД (то есть фактически стоимость разработки умножаем
> на N или около того).
краткая врезка об универсальном приложениии

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

--
-------------------------
There's no silver bullet!
Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
30.03.2006, 18:39
    #33636079
softwarer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Совместимость синтаксиса MS SQL, MySql, FireBird
locky

Аплодирую.
...
Рейтинг: 0 / 0
30.03.2006, 19:01
    #33636120
Anatoliy
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Совместимость синтаксиса MS SQL, MySql, FireBird
Согласен.
Только приложение уже есть.
И хотелось бы прикинуть на вскидку, стоит ли его "лепить" к MySql FireBird или там прийдется половину кода переделывать.
Т.е, прежде, чем искать (скачивать) дистрибутивы указанных СУБД, устанавливать и разбираться с тонкостями, просто спросить тех, кто уже с такими СУБД работал.
...
Рейтинг: 0 / 0
30.03.2006, 19:03
    #33636126
locky
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Совместимость синтаксиса MS SQL, MySql, FireBird
Anatoliy wrote:
> Согласен.
> Только приложение уже есть.
> И хотелось бы прикинуть на вскидку, стоит ли его "лепить" к MySql
> FireBird или там прийдется половину кода переделывать.
А для зачем его ваще лепить к ним? таки есть обоснованная необходимость
или так, для плезиру?

--
-------------------------
There's no silver bullet!
Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
30.03.2006, 19:23
    #33636170
Anatoliy
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Совместимость синтаксиса MS SQL, MySql, FireBird
Попался заказчик на нашу программу, который хотел бы обойтись бесплатной СУБД (т.е. купить только интерфейсную оболочку). Ну секономить таким образом. Вот я и пробую навскидку определить, стоит ли заморачиаться. Т.е. дальше прийдется вникать в это дело более подробно. А пока не влез в тонкости, решил спросить коллег, которые работали и с тем и с тем (я имею в виду MS SQL и бесплатные СУБД).
...
Рейтинг: 0 / 0
30.03.2006, 19:25
    #33636178
softwarer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Совместимость синтаксиса MS SQL, MySql, FireBird
Anatoliyили там прийдется половину кода переделывать.
Придется. Одни только форматы дат наверняка подкинут немало приятных минут.
...
Рейтинг: 0 / 0
30.03.2006, 19:39
    #33636211
Anatoliy
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Совместимость синтаксиса MS SQL, MySql, FireBird
Код: plaintext
Придется. Одни только форматы дат наверняка подкинут немало приятных минут.
Ага, значит фокус как c Access в данном случае не прокатит.
Спасибо. Буду думать. А поставить одну из указанных СУБД и поюзать наугад, наверное на выходных все же прийдется.
...
Рейтинг: 0 / 0
30.03.2006, 19:41
    #33636214
Мимопроходящий
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Совместимость синтаксиса MS SQL, MySql, FireBird
Привет, softwarer!
Ты пишешь:

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

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

Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
30.03.2006, 19:48
    #33636230
locky
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Совместимость синтаксиса MS SQL, MySql, FireBird
Anatoliy wrote:
> Попался заказчик на нашу программу, который хотел бы обойтись бесплатной
> СУБД (т.е. купить только интерфейсную оболочку). Ну секономить таким
> образом. Вот я и пробую навскидку определить, стоит ли заморачиаться.
> Т.е. дальше прийдется вникать в это дело более подробно. А пока не влез
> в тонкости, решил спросить коллег, которые работали и с тем и с тем (я
> имею в виду MS SQL и бесплатные СУБД).
Могу и ошибаться, но MSDE и SQLExpress - бесплатные.

--
-------------------------
There's no silver bullet!
Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
30.03.2006, 22:14
    #33636393
softwarer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Совместимость синтаксиса MS SQL, MySql, FireBird
МимопроходящийЕсли не пользовать параметризированных запросов
и как совсем полохой, "втыкать" дату в текст запроса.
См. первое письмо этого топика.
...
Рейтинг: 0 / 0
30.03.2006, 22:16
    #33636395
Ц4
Ц4
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Совместимость синтаксиса MS SQL, MySql, FireBird
Не так страшны даты при правильном использовании в непараметризованных запросах

формат 'yyyy-mm-dd' работает и в MSSQL и в FireBird
...
Рейтинг: 0 / 0
30.03.2006, 22:24
    #33636403
Ц4
Ц4
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Совместимость синтаксиса MS SQL, MySql, FireBird
Не подумайте плохого - я не призываю пользовать непараметризованные запросы
...
Рейтинг: 0 / 0
30.03.2006, 22:47
    #33636425
Victor Metelitsa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Совместимость синтаксиса MS SQL, MySql, FireBird
mirОни совместимы на очень "базовом", примитивном уровне. То есть на запросах вроде приведенных вами. Вообще, вы идете по печально известному пути написания независимых от СУБД приложений. Путь этот достижим только при полном отказе от сколько-нибудь сложных запросов, от триггеров и ХП, от встроенных в СУБД механизмов репликации и т.д. (то есть грубо говоря от всего того, что составляет мощь СУБД), либо за счет встраивания нескольких аналогов одного и того же функционала для N разных предусмотренных СУБД (то есть фактически стоимость разработки умножаем на N или около того).


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

Я в разработке пользуюсь Object-Relation framework'ом под названием GLORP, а раньше использовал TOPLink/S, они позволяют делать многие (хотя, к сожалению, и не все) вещи независимыми от СУБД. Соль в том, что программа, в том числе и запросы, даже очень сложные, пишутся на Smalltalk'е, а GLORP и TOPLink/S их транслируют на SQL с учётом особенностей сервера.
...
Рейтинг: 0 / 0
31.03.2006, 08:19
    #33636620
mir
mir
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Совместимость синтаксиса MS SQL, MySql, FireBird
Victor MetelitsaЭто некорректно. Скажем так, это просто упрощенное изложение.
Victor MetelitsaТриггеры, репликация и ХП здесь совершенно не причём. GUI-программа типа приведённой выше о триггерах и репликации просто не знает, да и вызов SP имеет похожий синтаксис. Это почти так. Однако сколько-нибудь сложная ИС все эти прелести обязательно использует. А если ИС без них, то значит она весьма простая, что и требовалось доказать.
Victor MetelitsaЯ в разработке пользуюсь Object-Relation framework'ом под названием GLORP, а раньше использовал TOPLink/S, они позволяют делать многие (хотя, к сожалению, и не все) вещи независимыми от СУБД. Соль в том, что программа, в том числе и запросы, даже очень сложные, пишутся на Smalltalk'е, а GLORP и TOPLink/S их транслируют на SQL с учётом особенностей сервера.А вот тут позвольте не поверить. Я не первый год пишу на SQL и знаю, что для сложных запросов нюансы конкретной СУБД жизненно важны. Видимо, мы по разному с вами понимем "сложность" запросов. Я уверен, что эта ваша (весьма странная) связка приемлемо сработает только на примитивнейших по моим меркам запросах, а на сложных даст просто ужасающее по производительности решение. Впрочем, если оно вас удовлетворяет, рад за вас. Но в целом предложенный подход IMHO имеет очень узкую нишу, хотя бы потому, что все задачи нужно решать на наиболее приспособленном для этого инструменте. А для задач работы с конкретной СУБД наиболее приспособлен собственный язык этой СУБД, то есть обычно конкретный диалект SQL.
...
Рейтинг: 0 / 0
31.03.2006, 10:32
    #33636881
AlexTheRaven
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Совместимость синтаксиса MS SQL, MySql, FireBird
AnatoliyПопался заказчик на нашу программу, который хотел бы обойтись бесплатной СУБД (т.е. купить только интерфейсную оболочку). Ну секономить таким образом. Вот я и пробую навскидку определить, стоит ли заморачиаться. Т.е. дальше прийдется вникать в это дело более подробно. А пока не влез в тонкости, решил спросить коллег, которые работали и с тем и с тем (я имею в виду MS SQL и бесплатные СУБД).
Если изначально не придерживались "голого" SQL 92 и не использовали какой-то "слой абстракции от СУБД" наподобие GLORP, TOPLink/S, Pear:DB, AdoDB, обменивающий функциональность и производительность на единообразие работы с разными СУБД - IMHO придётся переписывать и, что страшее, перетестировать почти всё.

Если придерживались и использовали - переписывать чуть меньше, а тестировать несколько сложнее из-за непредсказуемости "слоя абстракции от СУБД". Вы уверены, что этот заказчик - не единственный, кому захочется FireBird, и что дело того стоит?
...
Рейтинг: 0 / 0
31.03.2006, 11:59
    #33637200
1024
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Совместимость синтаксиса MS SQL, MySql, FireBird
какие-то пораженьческие настроения.

Полной совместимости нет. Например выбрать первые 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')

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

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



одним словом для универсальности конечно придётся какие-то дополнительные усилия прилагать. Кому-то это покажется неподъёмным, кому-то простым. По условиям решать.
...
Рейтинг: 0 / 0
31.03.2006, 13:23
    #33637532
softwarer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Совместимость синтаксиса MS SQL, MySql, FireBird
1024Полной совместимости нет. Например выбрать первые 10 записей
Расскажи, пожалуйста, как выполнить на этих серверах описанную в SQL92 конструкцию EXCEPT и сколько каких настроек для этого потребуется.
...
Рейтинг: 0 / 0
31.03.2006, 13:33
    #33637558
Random_Goodman
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Совместимость синтаксиса MS SQL, MySql, FireBird
Не знаю насчет бесплатных СУБД

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

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

И ресурсов столько же
...
Рейтинг: 0 / 0
31.03.2006, 15:00
    #33637861
1024
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Совместимость синтаксиса MS SQL, MySql, FireBird
Расскажи, пожалуйста, как выполнить на этих серверах описанную в SQL92
конструкцию EXCEPT и сколько каких настроек для этого потребуется.
----------------
понятия не имею. И огромное количество разработчиков под сервера
поддерживающие ексепт даже о нём и не слышали.

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


Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
31.03.2006, 15:15
    #33637897
mir
mir
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Совместимость синтаксиса MS SQL, MySql, FireBird
1024какие-то пораженьческие настроения.Да можно, можно сделать-то. Но чем сложнее система и кучерявее запросы (особенно для сложных отчетов), тем трудозатраты будут выше. Тут никаким хранением "настроек" не поможешь. Ведь сложный запрос есть не просто один большой SELECT, а по сути целый скрипт с переменными (в т.ч. таблицами-переменными), циклами, курсорами и т.д.
...
Рейтинг: 0 / 0
31.03.2006, 15:21
    #33637923
1024
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Совместимость синтаксиса MS SQL, MySql, FireBird
решение принимается в соответствии с конкретными условиями
...
Рейтинг: 0 / 0
31.03.2006, 15:51
    #33638025
locky
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Совместимость синтаксиса MS SQL, MySql, FireBird
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
...
Рейтинг: 0 / 0
31.03.2006, 16:00
    #33638047
1024
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Совместимость синтаксиса MS SQL, MySql, FireBird
огромное количество разработчиков под тот-же MS SQL понятия не имеет о
left/right/full/cross join, exists, distinct, begin tran.... и чо?
-------------------

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


Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
Форумы / Сравнение СУБД [игнор отключен] [закрыт для гостей] / Совместимость синтаксиса MS SQL, MySql, FireBird / 25 сообщений из 70, страница 1 из 3
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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