SQL-сервер с точки зрения программирования (хочется отговорить от M$ SQL Server)
Модератор: Модераторы разделов
-
petrushka_sch2
- Сообщения: 252
- ОС: Mandriva 2007.1
SQL-сервер с точки зрения программирования
Верно ли я понимаю, что язык запросов программы-клиента SQL стандартизирован. И что программе-клиенту, что бы она не делала абсолютно неважно какая реализация SQL сервера стоит?
Просто у меня тут знакомым навязывают M$ SQL Server Express Edition в качестве субд в одном проекте, который они заказывают.
Вопрос: имеет ли смысл советовать им использовать что-нибудь навроде MySQL или PostgreSQL? Или при разработке клиент-серверных приложений под .NET (а по-моему речь идет именно о .NET) используются какие-то специфические особенности M$ SQL сервер?
Просто с БД дела не имел. А хочется людям помочь. А то предложат им на сервере использовать Windows 2003 server + M$ SQL Server Express Edition, а быть может проканает, скажем, Debian + MySQL.
Просто у меня тут знакомым навязывают M$ SQL Server Express Edition в качестве субд в одном проекте, который они заказывают.
Вопрос: имеет ли смысл советовать им использовать что-нибудь навроде MySQL или PostgreSQL? Или при разработке клиент-серверных приложений под .NET (а по-моему речь идет именно о .NET) используются какие-то специфические особенности M$ SQL сервер?
Просто с БД дела не имел. А хочется людям помочь. А то предложат им на сервере использовать Windows 2003 server + M$ SQL Server Express Edition, а быть может проканает, скажем, Debian + MySQL.
-
sydenis
- Сообщения: 59
Re: SQL-сервер с точки зрения программирования
думаю, что нет
Если всю эту байду впихивают в одном флаконе, то на 90% можно утвержать, что клиент заточен под именно под m$sql.
Во-первых, непосредственно с сервером общается не клиент, а клиентская библиотека сервера, а у каждого сервера она своя,
во-вторых, практически ни один сервер не поддерживает чистый sql, у каждого свои маленькие приблуды,
в m$sql - там вапсче transact-sql
... но если люди вдруг дадут исходники клиента или объяснят архитектуру своего приложения, то.. возможно всякое
з.ы. firebird форева!
-
petrushka_sch2
- Сообщения: 252
- ОС: Mandriva 2007.1
Re: SQL-сервер с точки зрения программирования
Не, прикол в том, что клиент еще пока в стадии проектирования
Т.е. фактически можно влиять на ход разработки )
Т.е., фактически, если ты пишешь программу, использующую некую SQL-БД ты все равно должен учитывать особенности SQL-сервера, с которым я буду контачить?
Т.е., фактически, если ты пишешь программу, использующую некую SQL-БД ты все равно должен учитывать особенности SQL-сервера, с которым я буду контачить?
-
Voice
- Сообщения: 1073
- Статус: столлманист
- ОС: Debian GNU/Linux
Re: SQL-сервер с точки зрения программирования
SQL то стандартизирован, но в каждого сервера свой диалект. Выбирать думаю стоит тот, диалект который предпочитают программисты. Ну правда если проект крупный то можно производительность серверов учесть.
Не виже ни одной причины по которой бы MySQL не подходил в подавляющем большинстве ситуаций.
Да.
Не виже ни одной причины по которой бы MySQL не подходил в подавляющем большинстве ситуаций.
petrushka_sch2 писал(а): ↑06.03.2008 20:18Т.е., фактически, если ты пишешь программу, использующую некую SQL-БД ты все равно должен учитывать особенности SQL-сервера, с которым я буду контачить?
Да.
"И может собственных Платонов и быстрых разумом Невтонов российская земля рождать."
М. В. Ломоносов
М. В. Ломоносов
-
petrushka_sch2
- Сообщения: 252
- ОС: Mandriva 2007.1
Re: SQL-сервер с точки зрения программирования
Вот тут нашел ограничения M$-версии в бесплатном варианте:
Насколько я понимаю, ни одно из вышесказанного не критично. Блин, интересно существуют ли аргументы в пользу открытых SQL-серверов :?)
Проект скорее мелкий. Вряд ли будет более одного обращения единовременно. БД скорее как удобная, надежная и уже готовая система хранения данных и возможности к ним доступа.
Ограничения SQL Server Express Edition
1 поддерживаемый процессор (но может быть установлен на любой сервер)
1 Гб адресуемой памяти
4 Гб максимальный размер базы
Распространено ошибочное мнение, что у данной версии продукта имеется ограничение на количество одновременных подключений к серверу. Иногда встречается и такое же ошибочное мнение, что версия якобы вообще ограничена для локальной работы. На самом деле, такого ограничения нет и не было его в MSDE2000.
Насколько я понимаю, ни одно из вышесказанного не критично. Блин, интересно существуют ли аргументы в пользу открытых SQL-серверов :?)
Проект скорее мелкий. Вряд ли будет более одного обращения единовременно. БД скорее как удобная, надежная и уже готовая система хранения данных и возможности к ним доступа.
-
alfss
- Сообщения: 262
Re: SQL-сервер с точки зрения программирования
ради 4 гиговой базы 0_Щ платить за MS SQL
я думаю проше взять psql или mysql
и притом библиотеки клиентские довольно прозрачны у них
могу дать доводы в пользу psql
количество процессоров - да хоть 20
ограничение на 1 базу-нету
можно и 4 гига памяти под сортировки отвести
+получаем возможности встроенных языков PL/pgSQL PL/Perl
как вариант можно
Oracle Database 10g Express Edition
я думаю проше взять psql или mysql
и притом библиотеки клиентские довольно прозрачны у них
могу дать доводы в пользу psql
количество процессоров - да хоть 20
ограничение на 1 базу-нету
можно и 4 гига памяти под сортировки отвести
+получаем возможности встроенных языков PL/pgSQL PL/Perl
как вариант можно
Oracle Database 10g Express Edition
-
Portnov
- Модератор
- Сообщения: 1786
- Статус: Матёрый линуксоид
- ОС: Debian testing/unstable
Re: SQL-сервер с точки зрения программирования
Ну аргументы в пользу Постгреса - это цена (0 против скольких-то килобаксов у mssql), производительность (постгрес проигрывает Ораклу 15-20% при разнице в цене оборудования в N раз) и более стандартный диалект (диалект Постгреса это почти чистый ANSI SQL 92, а диалект mssql отличается от стандарта довольно сильно), что облегчает в случае чего миграцию на другие СУБД.
Ну и для мелкого проекта покупка mssql просто не окупится.
Ну и для мелкого проекта покупка mssql просто не окупится.
Работа: Ubuntu 9.10
Дом: Debian testing/unstable и на всякий случай winxp в virtualbox.
Для разнообразия: моя домашняя страница -http://iportnov.ru
Дом: Debian testing/unstable и на всякий случай winxp в virtualbox.
Для разнообразия: моя домашняя страница -http://iportnov.ru
-
alfss
- Сообщения: 262
Re: SQL-сервер с точки зрения программирования
http://www.suite101.com/article.cfm/oracle/115560/1 Oracle 10g vs PostgreSQL 8 vs MySQL 5
http://forum.vingrad.ru/forum/topic-116892.html суда тоже стоит заглянуть
http://forum.vingrad.ru/forum/topic-116892.html суда тоже стоит заглянуть
-
komcumir
- Сообщения: 273
- ОС: Alt 5.0
Re: SQL-сервер с точки зрения программирования
антиаргументы в пользу MS SQL, у меня на работе десктоп мощный и мы его в целях экономии так же используем как MSSQL сервер для резервной базы 1С, обновилсь мы тут до MSSQL 2005 (в связи с наличием на него лицензии).
1. из-за этого монстра комп включается до работоспособного состояния минут 7-9
2. отожрал под себя 10 гигов памяти, ника не могу лаколизовать куда он их съел...
3. большая нагрузка на процессор
4. медленный накат и бекап баз...
кароче с грусть вспоминаю про нелицензионный MSSQL 2000...
1. из-за этого монстра комп включается до работоспособного состояния минут 7-9
2. отожрал под себя 10 гигов памяти, ника не могу лаколизовать куда он их съел...
3. большая нагрузка на процессор
4. медленный накат и бекап баз...
кароче с грусть вспоминаю про нелицензионный MSSQL 2000...
-
BDag
- Сообщения: 276
- ОС: Mandriva Linux Cooker
Re: SQL-сервер с точки зрения программирования
что мешает разработчикам производить обращение к базе данных через ODBC не мучаясь с выбором БД. скорее всего разработчики всеравно всю логику перенесут на клиент а не на SQL-сервер. А если БД используется на 10%, то зачем мучать себя выбором?
-
Serik
- Сообщения: 149
- ОС: SuSE Linux
Re: SQL-сервер с точки зрения программирования
SQL стандартный, но у всех БД есть свои фишки, значительно повышающие производительность и упрощающие разработку.
Если в ТЗ нет требования к переносимости SQL-запросов, то было бы странно не использовать продвинутые возможности.
Язык написания ХП (хранимые процедуры) у всех свой.
Для доступа к БД используются библиотеки/компоненты/драйвера, кроме MS, ODBC больше никто не любит,
он считается тормозом и костылем. С родными библиотеками/компонентами работать эффективнее.
Родные библиотеки могут дать доступ к не SQL-ным функциям сервера.
Firebird и PostgreSQL очень достойные конкуренты MS SQL, а уж MS SQL Express Edition тем более
Если вы не знаете какая специфичная фишка MS SQL вам нужна, то и Firebird и PostgreSQL однозначно подойдут,
да и фишек там гораздо больше.
Разработчик, естественно, продвигает то, с чем умеет работать.
"Опыт использования" всегда был самым весомым аргументом в любом выборе.
Если в ТЗ нет требования к переносимости SQL-запросов, то было бы странно не использовать продвинутые возможности.
Язык написания ХП (хранимые процедуры) у всех свой.
Для доступа к БД используются библиотеки/компоненты/драйвера, кроме MS, ODBC больше никто не любит,
он считается тормозом и костылем. С родными библиотеками/компонентами работать эффективнее.
Родные библиотеки могут дать доступ к не SQL-ным функциям сервера.
Firebird и PostgreSQL очень достойные конкуренты MS SQL, а уж MS SQL Express Edition тем более
Если вы не знаете какая специфичная фишка MS SQL вам нужна, то и Firebird и PostgreSQL однозначно подойдут,
да и фишек там гораздо больше.
Разработчик, естественно, продвигает то, с чем умеет работать.
"Опыт использования" всегда был самым весомым аргументом в любом выборе.
-
halturin
- Сообщения: 167
- ОС: Linux
Re: SQL-сервер с точки зрения программирования
Господа советчики, а из каких соображений вы исходите, когда даете эти советы?
Ни один не удосужился спросить характер БД.
Собсно вопрос топикстартеру... обрисуй плиз.
Вот например конкретно в моей сфере применения только Оракл в состоянии покрыть все наши потребности.
Я тоже сторонник свободного софта, но те же MySQL и PostgreSQL еще не научились делать аналитику.
-
halturin
- Сообщения: 167
- ОС: Linux
Re: SQL-сервер с точки зрения программирования
alfss писал(а): ↑06.03.2008 22:56http://www.suite101.com/article.cfm/oracle/115560/1 Oracle 10g vs PostgreSQL 8 vs MySQL 5
если это брать за основу для принятия решения, надо быть полным дибилом. посмотрел по диагонали как они там оценки выставляли... Ораклу влепили 3 за то, что ему 512 Мб мало, надо 1 Гиг.
Идиоты. Это то же самое, что оценить ракету Тополь-М на 3, а пистолету Макарова дать 10 баллов с разъяснением, что ракета в карман не влазит.
-
v04bvs
- Сообщения: 636
- ОС: Debian GNU/Linux
Re: SQL-сервер с точки зрения программирования
Переносимость между БД — обычно миф. Любое серьёзное приложение затачивается под конкретную БД. Исключением могут быть некоторые ORM-фреймвоки вроде Hibernate.
На выбор БД могут влиять такие факторы, как статус компании (всяким партнёрам обычно даются скидки на продукты), знания разработчиков.
Если говорить про сферический проект в вакууме, то из опенсурса можно рекомендовать MySQL, PostreSQL, Firebird. Из проприетарщины на халяву очень интересным выглядит DB2 Express Edition, в основном потому, что там нет ограничения на размер базы.
На выбор БД могут влиять такие факторы, как статус компании (всяким партнёрам обычно даются скидки на продукты), знания разработчиков.
Если говорить про сферический проект в вакууме, то из опенсурса можно рекомендовать MySQL, PostreSQL, Firebird. Из проприетарщины на халяву очень интересным выглядит DB2 Express Edition, в основном потому, что там нет ограничения на размер базы.
-
alfss
- Сообщения: 262
Re: SQL-сервер с точки зрения программирования
halturin писал(а): ↑07.03.2008 09:39
Господа советчики, а из каких соображений вы исходите, когда даете эти советы?
Ни один не удосужился спросить характер БД.
Собсно вопрос топикстартеру... обрисуй плиз.
Вот например конкретно в моей сфере применения только Оракл в состоянии покрыть все наши потребности.
Я тоже сторонник свободного софта, но те же MySQL и PostgreSQL еще не научились делать аналитику.
Извините но разве я не назвал Oracle ,что в его сторону тоже можно смотреть???
да чегото нету в psql ,про mysql вобше не говарю -__- там много чего нету
но стоит ли зацикливаться на одном продукте если в определенной задаче не требуются некторые функции а например psql достаточно?
насчет прозрачности библиотек - я писал на c\c++ для mysql psql и все функции в клиентских библиотеках простые и понятные
и документация нормальная
предвидите хоть один аргумент против этого?что вам не понравилось в клиентской библиотеке mysql psql.
или вас не устроила документация по ним?
аналитику чего?? уточните (распишите поподробнее конкретно чего а не аля просто "анализ базы")
halturin писал(а): ↑07.03.2008 09:45alfss писал(а): ↑06.03.2008 22:56http://www.suite101.com/article.cfm/oracle/115560/1 Oracle 10g vs PostgreSQL 8 vs MySQL 5
если это брать за основу для принятия решения, надо быть полным дибилом. посмотрел по диагонали как они там оценки выставляли... Ораклу влепили 3 за то, что ему 512 Мб мало, надо 1 Гиг.
Идиоты. Это то же самое, что оценить ракету Тополь-М на 3, а пистолету Макарова дать 10 баллов с разъяснением, что ракета в карман не влазит.
зачем мне тратить 1 гиг оперативы когда мне хватит 128 мегов на mysql для моего проекта?
оценка поставлена исходя из их задач и их предпочтений(я не имею в виду предпочтение к какой либо базе ) - Oracle им меньше всего подходит
-
diesel
- Бывший модератор
- Сообщения: 5989
- ОС: OS X, openSuSE, ROSA, Debian
-
halturin
- Сообщения: 167
- ОС: Linux
Re: SQL-сервер с точки зрения программирования
Имелись ввиду аналитические функции. Вот для примера.. попробуйте в MySQL или PostgreSQL построить запрос с накоплением суммы.
select rownum num, sum(rownum) over (order by rownum) sumnum from dual connect by rownum < 5
Код:
num sumnum
1 1
2 3
3 6
4 10еще раз повторюсь... бессмыленно давать советы без понимания преследуемой цели. Всему свое место.
-
alfss
- Сообщения: 262
Re: SQL-сервер с точки зрения программирования
написать функцию?
-
agreed
- Сообщения: 143
- ОС: Fedora 10, Mac OS X 10.5
Re: SQL-сервер с точки зрения программирования
Подождите... Вы собираетесь что-то решать, советовать, выбирать... а требования к хранилищу данных у вас есть перед глазами? Такие требования, из которых _всегда_ можно сделать наилучший выбор СУБД исходя не из таких воздушных характеристик, как "побесплатнее", "познакомее" и тому подобное. Возьмите пару недель времени, пробегитесь по диагонали глазами по concepts guide'ам разных СУБД и решите, что вам важно.
Моё скромное имхо -- Oracle XE был бы идеальным решением для большинства задач хранения и бизнес-логики, если бы не его недоделанность.
Если есть деньги, то Oracle, если нет, то взять Postgres и точить напильником до остервенения.
И это... ORM-ы на костёр.
Моё скромное имхо -- Oracle XE был бы идеальным решением для большинства задач хранения и бизнес-логики, если бы не его недоделанность.
Если есть деньги, то Oracle, если нет, то взять Postgres и точить напильником до остервенения.
И это... ORM-ы на костёр.
-
vantaker
- Сообщения: 166
Re: SQL-сервер с точки зрения программирования
если прогеры выбрали .NET (читай C#), то afaik привязать это дело к чему-либо открытому будет несколько сложнее, чем к MS SQL
-
serzh-z
- Бывший модератор
- Сообщения: 8259
- Статус: Маньяк
- ОС: Arch, Fedora, Ubuntu
-
petrushka_sch2
- Сообщения: 252
- ОС: Mandriva 2007.1
Re: SQL-сервер с точки зрения программирования
Цитирую испольнителя:
Вообще, там задача простая. Есть подзадача: простое, ручное, внесение данных (объектов не очень много (максимум - десятки тысяч, но это максимум), на каждый тип объекта по 1-5 параметров), а вторая подзадача на основе конкретной композиции этих объектов выдать алгоритм обхода и обработки этих объектов.
Первый вариант
• Разрабатывается приложение winforms под .Net framework.
• БД на клиентском месте – Microsoft SQL Server Express
• БД на сервере – Microsoft SQL Server Express, данные выгружаются с клиентских мест и передаются на сервер по почте.
Второй вариант
• Web приложение, на клиентском месте только браузер Internet Explorer
• БД на сервере – Microsoft SQL Server Express
Вообще, там задача простая. Есть подзадача: простое, ручное, внесение данных (объектов не очень много (максимум - десятки тысяч, но это максимум), на каждый тип объекта по 1-5 параметров), а вторая подзадача на основе конкретной композиции этих объектов выдать алгоритм обхода и обработки этих объектов.
-
devilr
- Сообщения: 3697
- ОС: Mandriva => Gentoo (~amd64)
Re: SQL-сервер с точки зрения программирования
Маловато данных. Какого рода данные будут? Будут ли расчеты на сервере или на клиенте? Кол-во пользователей? И т.д.
P.S. Мне показалось, что в обоих вариантах фигурирует M$?
P.S. Мне показалось, что в обоих вариантах фигурирует M$?
-
petrushka_sch2
- Сообщения: 252
- ОС: Mandriva 2007.1
Re: SQL-сервер с точки зрения программирования
Данные будут текстовые. Типа объекта, имя объекта, ряд его параметров (не более 5_ти). Кол-во пользователей 1-50 человек. Вряд ли более 5_ти единовременно. Где будут рассчеты - зависит от реализации. Это не конкретизировалось, но во втором варианте, видимо, на сервере.
-
alfss
- Сообщения: 262
Re: SQL-сервер с точки зрения программирования
простите мы говорим о расчётах на стороне SQL сервера а не сервера в общем
как и при первом варианте так и при втором - расчёты можно производить на стороне SQL сервера
также во втором случае можно сделать что-то аля
в данном случае у нас есть возможность или полностью все повесить на веб сервер и делать на нём все расчёты
или перенести часть расчётов на SQL сервер а часть на веб
также в первом случае можно все расчёты перенести на SQL сервере и выдавать тока готовую и обработанную информацию
тем самым сведя работу клиентского приложения к минимальным действиям
предположим нам надо в базе найти определённые поля и в этих полях если присутствуют какие-то словосочетания вывести их
вариант первой реализации
мы делаем запрос к SQL серверу выбирая эти поля ,а полученные данные обрабатываем на стороне клиента -сортируем и выводим
вариант второй
мы пишем на SQL сервере функцию которая сортирует все это ещё до вывода клиенту и после сортировки передаём клиенту информацию
если для первого варианта нам хватит любого SQL сервера к примеру Mysql - поскольку мы будем проводить простые выборки
то для второго варианта потребуются таки SQL серверы как PostgrteSQL Oracle которые позволяют использовать встроенные языки PL/pgSQL и PL/SQL соответственно
как и при первом варианте так и при втором - расчёты можно производить на стороне SQL сервера
также во втором случае можно сделать что-то аля
Код: Выделить всё
.
--------------- обмен данными --------------
клиент ---> |Web server | <------------------>|SQL server|
--------------- --------------
.в данном случае у нас есть возможность или полностью все повесить на веб сервер и делать на нём все расчёты
или перенести часть расчётов на SQL сервер а часть на веб
также в первом случае можно все расчёты перенести на SQL сервере и выдавать тока готовую и обработанную информацию
тем самым сведя работу клиентского приложения к минимальным действиям
предположим нам надо в базе найти определённые поля и в этих полях если присутствуют какие-то словосочетания вывести их
вариант первой реализации
мы делаем запрос к SQL серверу выбирая эти поля ,а полученные данные обрабатываем на стороне клиента -сортируем и выводим
вариант второй
мы пишем на SQL сервере функцию которая сортирует все это ещё до вывода клиенту и после сортировки передаём клиенту информацию
если для первого варианта нам хватит любого SQL сервера к примеру Mysql - поскольку мы будем проводить простые выборки
то для второго варианта потребуются таки SQL серверы как PostgrteSQL Oracle которые позволяют использовать встроенные языки PL/pgSQL и PL/SQL соответственно
-
petrushka_sch2
- Сообщения: 252
- ОС: Mandriva 2007.1
Re: SQL-сервер с точки зрения программирования
Слушайте, я вот тут подумал
Я же могу влиять на выбор исполнителя, не непосредственно, конечно, но посоветовать могу. А может кто-нибудь знает какую-нибудь контору, которая занимается разработкой ПО и делает это человеческим образом, т.е., по возможности, кросплатформенные приложения, использующие там где это возможно открытые решения, навроде как PostgrteSQL вместо M$ SQL Server и т.п.?
Или может быть, кто-нибудь в такой конторе работает? Я думаю будет некорректно обсуждать этот вопрос на форуме, так что я могу принять сообщение и в личку. Заказ интересный, сразу скажу
Или может быть, кто-нибудь в такой конторе работает? Я думаю будет некорректно обсуждать этот вопрос на форуме, так что я могу принять сообщение и в личку. Заказ интересный, сразу скажу
-
sydenis
- Сообщения: 59
Re: SQL-сервер с точки зрения программирования
вот тут ребята ваяют на firebird системы любой сложности и масштаба http://www.ansoft.ru
кто бывал на последних софтулах могли в этом убедиться, у них стенд всегда рядом с линуксовым (mandriva, wine и прочая компания)
на firebird это делается в теле for select ...
заводим дополнительную переменную, которую суммируем с предыдущим фетчем и выводим вместе с остальными данными
... и никаких чудес изобретательства
кто бывал на последних софтулах могли в этом убедиться, у них стенд всегда рядом с линуксовым (mandriva, wine и прочая компания)
на firebird это делается в теле for select ...
заводим дополнительную переменную, которую суммируем с предыдущим фетчем и выводим вместе с остальными данными
... и никаких чудес изобретательства
-
halturin
- Сообщения: 167
- ОС: Linux
Re: SQL-сервер с точки зрения программирования
можно с этого момента поподробней? просто напиши сиквел точно такой же только для огнептицы. Я за эту СУБД еще не садился, если она что-то подобное умеет, то сие вызовет у меня дикий голод "на посмотреть"
-
sydenis
- Сообщения: 59
Re: SQL-сервер с точки зрения программирования
ну вот что-то типа:
CREATE PROCEDURE NEW_PROC
returns (
id integer,
id_sum integer)
as
begin
id_sum = 0;
for select id from my_table
into :id
do begin
id_sum = :id + :id_sum;
suspend;
end
end
наверно, можно как-то более изящно изобразить, но для примера сойдёт
CREATE PROCEDURE NEW_PROC
returns (
id integer,
id_sum integer)
as
begin
id_sum = 0;
for select id from my_table
into :id
do begin
id_sum = :id + :id_sum;
suspend;
end
end
наверно, можно как-то более изящно изобразить, но для примера сойдёт
-
halturin
- Сообщения: 167
- ОС: Linux
Re: SQL-сервер с точки зрения программирования
БРЕДЯТИНА !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
сама по себе сумма с накоплением - это однопроходная операция, т.е находится в рамках выборки. Более того, результат это суммы находится в том же курсоре, где и сама выборка. Короче говоря, чтобы сделать такую сумму мне не придется трахать базу, а твой случай как раз-таки этим и занимается.