SQL-сервер с точки зрения программирования (хочется отговорить от M$ SQL Server)

Модератор: Модераторы разделов

petrushka_sch2
Сообщения: 252
ОС: Mandriva 2007.1

SQL-сервер с точки зрения программирования

Сообщение petrushka_sch2 »

Верно ли я понимаю, что язык запросов программы-клиента SQL стандартизирован. И что программе-клиенту, что бы она не делала абсолютно неважно какая реализация SQL сервера стоит?

Просто у меня тут знакомым навязывают 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-сервер с точки зрения программирования

Сообщение sydenis »

petrushka_sch2 писал(а):
06.03.2008 19:03
а быть может проканает

думаю, что нет
Если всю эту байду впихивают в одном флаконе, то на 90% можно утвержать, что клиент заточен под именно под m$sql.
Во-первых, непосредственно с сервером общается не клиент, а клиентская библиотека сервера, а у каждого сервера она своя,
во-вторых, практически ни один сервер не поддерживает чистый sql, у каждого свои маленькие приблуды,
в m$sql - там вапсче transact-sql
... но если люди вдруг дадут исходники клиента или объяснят архитектуру своего приложения, то.. возможно всякое ;)
з.ы. firebird форева!
Спасибо сказали:
petrushka_sch2
Сообщения: 252
ОС: Mandriva 2007.1

Re: SQL-сервер с точки зрения программирования

Сообщение petrushka_sch2 »

Не, прикол в том, что клиент еще пока в стадии проектирования :) Т.е. фактически можно влиять на ход разработки )

Т.е., фактически, если ты пишешь программу, использующую некую SQL-БД ты все равно должен учитывать особенности SQL-сервера, с которым я буду контачить?
Спасибо сказали:
Аватара пользователя
Voice
Сообщения: 1073
Статус: столлманист
ОС: Debian GNU/Linux

Re: SQL-сервер с точки зрения программирования

Сообщение Voice »

SQL то стандартизирован, но в каждого сервера свой диалект. Выбирать думаю стоит тот, диалект который предпочитают программисты. Ну правда если проект крупный то можно производительность серверов учесть.

Не виже ни одной причины по которой бы MySQL не подходил в подавляющем большинстве ситуаций.

petrushka_sch2 писал(а):
06.03.2008 20:18
Т.е., фактически, если ты пишешь программу, использующую некую SQL-БД ты все равно должен учитывать особенности SQL-сервера, с которым я буду контачить?

Да.
"И может собственных Платонов и быстрых разумом Невтонов российская земля рождать."
М. В. Ломоносов
Спасибо сказали:
petrushka_sch2
Сообщения: 252
ОС: Mandriva 2007.1

Re: SQL-сервер с точки зрения программирования

Сообщение petrushka_sch2 »

Вот тут нашел ограничения M$-версии в бесплатном варианте:
Ограничения SQL Server Express Edition
1 поддерживаемый процессор (но может быть установлен на любой сервер)
1 Гб адресуемой памяти
4 Гб максимальный размер базы

Распространено ошибочное мнение, что у данной версии продукта имеется ограничение на количество одновременных подключений к серверу. Иногда встречается и такое же ошибочное мнение, что версия якобы вообще ограничена для локальной работы. На самом деле, такого ограничения нет и не было его в MSDE2000.


Насколько я понимаю, ни одно из вышесказанного не критично. Блин, интересно существуют ли аргументы в пользу открытых SQL-серверов :?)


Проект скорее мелкий. Вряд ли будет более одного обращения единовременно. БД скорее как удобная, надежная и уже готовая система хранения данных и возможности к ним доступа.
Спасибо сказали:
alfss
Сообщения: 262

Re: SQL-сервер с точки зрения программирования

Сообщение alfss »

ради 4 гиговой базы 0_Щ платить за MS SQL

я думаю проше взять psql или mysql
и притом библиотеки клиентские довольно прозрачны у них

могу дать доводы в пользу psql
количество процессоров - да хоть 20
ограничение на 1 базу-нету
можно и 4 гига памяти под сортировки отвести
+получаем возможности встроенных языков PL/pgSQL PL/Perl

как вариант можно
Oracle Database 10g Express Edition
Спасибо сказали:
Аватара пользователя
Portnov
Модератор
Сообщения: 1786
Статус: Матёрый линуксоид
ОС: Debian testing/unstable

Re: SQL-сервер с точки зрения программирования

Сообщение Portnov »

Ну аргументы в пользу Постгреса - это цена (0 против скольких-то килобаксов у mssql), производительность (постгрес проигрывает Ораклу 15-20% при разнице в цене оборудования в N раз) и более стандартный диалект (диалект Постгреса это почти чистый ANSI SQL 92, а диалект mssql отличается от стандарта довольно сильно), что облегчает в случае чего миграцию на другие СУБД.

Ну и для мелкого проекта покупка mssql просто не окупится.
Работа: Ubuntu 9.10
Дом: Debian testing/unstable и на всякий случай winxp в virtualbox.
Для разнообразия: моя домашняя страница -http://iportnov.ru
Спасибо сказали:
alfss
Сообщения: 262

Re: SQL-сервер с точки зрения программирования

Сообщение alfss »

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 суда тоже стоит заглянуть
Спасибо сказали:
Аватара пользователя
komcumir
Сообщения: 273
ОС: Alt 5.0

Re: SQL-сервер с точки зрения программирования

Сообщение komcumir »

антиаргументы в пользу MS SQL, у меня на работе десктоп мощный и мы его в целях экономии так же используем как MSSQL сервер для резервной базы 1С, обновилсь мы тут до MSSQL 2005 (в связи с наличием на него лицензии).
1. из-за этого монстра комп включается до работоспособного состояния минут 7-9
2. отожрал под себя 10 гигов памяти, ника не могу лаколизовать куда он их съел...
3. большая нагрузка на процессор
4. медленный накат и бекап баз...

кароче с грусть вспоминаю про нелицензионный MSSQL 2000...
Спасибо сказали:
BDag
Сообщения: 276
ОС: Mandriva Linux Cooker

Re: SQL-сервер с точки зрения программирования

Сообщение BDag »

что мешает разработчикам производить обращение к базе данных через ODBC не мучаясь с выбором БД. скорее всего разработчики всеравно всю логику перенесут на клиент а не на SQL-сервер. А если БД используется на 10%, то зачем мучать себя выбором?
Спасибо сказали:
Serik
Сообщения: 149
ОС: SuSE Linux

Re: SQL-сервер с точки зрения программирования

Сообщение Serik »

SQL стандартный, но у всех БД есть свои фишки, значительно повышающие производительность и упрощающие разработку.
Если в ТЗ нет требования к переносимости SQL-запросов, то было бы странно не использовать продвинутые возможности.
Язык написания ХП (хранимые процедуры) у всех свой.

Для доступа к БД используются библиотеки/компоненты/драйвера, кроме MS, ODBC больше никто не любит,
он считается тормозом и костылем. С родными библиотеками/компонентами работать эффективнее.
Родные библиотеки могут дать доступ к не SQL-ным функциям сервера.

Firebird и PostgreSQL очень достойные конкуренты MS SQL, а уж MS SQL Express Edition тем более :)
Если вы не знаете какая специфичная фишка MS SQL вам нужна, то и Firebird и PostgreSQL однозначно подойдут,
да и фишек там гораздо больше.

Разработчик, естественно, продвигает то, с чем умеет работать.
"Опыт использования" всегда был самым весомым аргументом в любом выборе.
Спасибо сказали:
Аватара пользователя
halturin
Сообщения: 167
ОС: Linux

Re: SQL-сервер с точки зрения программирования

Сообщение halturin »

alfss писал(а):
06.03.2008 21:57
я думаю проше взять psql или mysql
и притом библиотеки клиентские довольно прозрачны у них


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

Собсно вопрос топикстартеру... обрисуй плиз.

Вот например конкретно в моей сфере применения только Оракл в состоянии покрыть все наши потребности.
Я тоже сторонник свободного софта, но те же MySQL и PostgreSQL еще не научились делать аналитику.
Спасибо сказали:
Аватара пользователя
halturin
Сообщения: 167
ОС: Linux

Re: SQL-сервер с точки зрения программирования

Сообщение halturin »

alfss писал(а):
06.03.2008 22:56
http://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-сервер с точки зрения программирования

Сообщение v04bvs »

Переносимость между БД — обычно миф. Любое серьёзное приложение затачивается под конкретную БД. Исключением могут быть некоторые ORM-фреймвоки вроде Hibernate.
На выбор БД могут влиять такие факторы, как статус компании (всяким партнёрам обычно даются скидки на продукты), знания разработчиков.

Если говорить про сферический проект в вакууме, то из опенсурса можно рекомендовать MySQL, PostreSQL, Firebird. Из проприетарщины на халяву очень интересным выглядит DB2 Express Edition, в основном потому, что там нет ограничения на размер базы.
Спасибо сказали:
alfss
Сообщения: 262

Re: SQL-сервер с точки зрения программирования

Сообщение alfss »

halturin писал(а):
07.03.2008 09:39
alfss писал(а):
06.03.2008 21:57
я думаю проше взять psql или mysql
и притом библиотеки клиентские довольно прозрачны у них


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

Собсно вопрос топикстартеру... обрисуй плиз.

Вот например конкретно в моей сфере применения только Оракл в состоянии покрыть все наши потребности.
Я тоже сторонник свободного софта, но те же MySQL и PostgreSQL еще не научились делать аналитику.



Извините но разве я не назвал Oracle ,что в его сторону тоже можно смотреть???
да чегото нету в psql ,про mysql вобше не говарю -__- там много чего нету

но стоит ли зацикливаться на одном продукте если в определенной задаче не требуются некторые функции а например psql достаточно?

насчет прозрачности библиотек - я писал на c\c++ для mysql psql и все функции в клиентских библиотеках простые и понятные
и документация нормальная

предвидите хоть один аргумент против этого?что вам не понравилось в клиентской библиотеке mysql psql.
или вас не устроила документация по ним?

аналитику чего?? уточните (распишите поподробнее конкретно чего а не аля просто "анализ базы")



halturin писал(а):
07.03.2008 09:45
alfss писал(а):
06.03.2008 22:56
http://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

Re: SQL-сервер с точки зрения программирования

Сообщение diesel »

alfss писал(а):
07.03.2008 12:12
зачем мне тратить 1 гиг оперативы когда мне хватит 128 мегов на mysql для моего проекта?

во-во, поэтому все-таки предлагаю подождать пока топикстартер расскажет о том чего там в базе будет лежать, а не обсуждать сферических коней в открытом космосе.
Спасибо сказали:
Аватара пользователя
halturin
Сообщения: 167
ОС: Linux

Re: SQL-сервер с точки зрения программирования

Сообщение halturin »

alfss писал(а):
07.03.2008 12:12
аналитику чего?? уточните (распишите поподробнее конкретно чего а не аля просто "анализ базы")


Имелись ввиду аналитические функции. Вот для примера.. попробуйте в 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-сервер с точки зрения программирования

Сообщение alfss »

написать функцию?
Спасибо сказали:
agreed
Сообщения: 143
ОС: Fedora 10, Mac OS X 10.5

Re: SQL-сервер с точки зрения программирования

Сообщение agreed »

Подождите... Вы собираетесь что-то решать, советовать, выбирать... а требования к хранилищу данных у вас есть перед глазами? Такие требования, из которых _всегда_ можно сделать наилучший выбор СУБД исходя не из таких воздушных характеристик, как "побесплатнее", "познакомее" и тому подобное. Возьмите пару недель времени, пробегитесь по диагонали глазами по concepts guide'ам разных СУБД и решите, что вам важно.
Моё скромное имхо -- Oracle XE был бы идеальным решением для большинства задач хранения и бизнес-логики, если бы не его недоделанность. :(
Если есть деньги, то Oracle, если нет, то взять Postgres и точить напильником до остервенения.

И это... ORM-ы на костёр.
Спасибо сказали:
vantaker
Сообщения: 166

Re: SQL-сервер с точки зрения программирования

Сообщение vantaker »

если прогеры выбрали .NET (читай C#), то afaik привязать это дело к чему-либо открытому будет несколько сложнее, чем к MS SQL
Спасибо сказали:
Аватара пользователя
serzh-z
Бывший модератор
Сообщения: 8259
Статус: Маньяк
ОС: Arch, Fedora, Ubuntu

Re: SQL-сервер с точки зрения программирования

Сообщение serzh-z »

vantaker писал(а):
07.03.2008 17:28
если прогеры выбрали .NET (читай C#), то afaik привязать это дело к чему-либо открытому будет несколько сложнее, чем к MS SQL
Это почему бы?
Спасибо сказали:
petrushka_sch2
Сообщения: 252
ОС: Mandriva 2007.1

Re: SQL-сервер с точки зрения программирования

Сообщение petrushka_sch2 »

Цитирую испольнителя:
Первый вариант
• Разрабатывается приложение 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-сервер с точки зрения программирования

Сообщение devilr »

Маловато данных. Какого рода данные будут? Будут ли расчеты на сервере или на клиенте? Кол-во пользователей? И т.д.

P.S. Мне показалось, что в обоих вариантах фигурирует M$?
Мудрость приходит с возрастом.
Иногда возраст приходит один.
Эхо разума
Спасибо сказали:
petrushka_sch2
Сообщения: 252
ОС: Mandriva 2007.1

Re: SQL-сервер с точки зрения программирования

Сообщение petrushka_sch2 »

Данные будут текстовые. Типа объекта, имя объекта, ряд его параметров (не более 5_ти). Кол-во пользователей 1-50 человек. Вряд ли более 5_ти единовременно. Где будут рассчеты - зависит от реализации. Это не конкретизировалось, но во втором варианте, видимо, на сервере.
Спасибо сказали:
alfss
Сообщения: 262

Re: SQL-сервер с точки зрения программирования

Сообщение alfss »

простите мы говорим о расчётах на стороне 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-сервер с точки зрения программирования

Сообщение petrushka_sch2 »

Слушайте, я вот тут подумал :) Я же могу влиять на выбор исполнителя, не непосредственно, конечно, но посоветовать могу. А может кто-нибудь знает какую-нибудь контору, которая занимается разработкой ПО и делает это человеческим образом, т.е., по возможности, кросплатформенные приложения, использующие там где это возможно открытые решения, навроде как PostgrteSQL вместо M$ SQL Server и т.п.?
Или может быть, кто-нибудь в такой конторе работает? Я думаю будет некорректно обсуждать этот вопрос на форуме, так что я могу принять сообщение и в личку. Заказ интересный, сразу скажу :)
Спасибо сказали:
sydenis
Сообщения: 59

Re: SQL-сервер с точки зрения программирования

Сообщение sydenis »

вот тут ребята ваяют на firebird системы любой сложности и масштаба http://www.ansoft.ru
кто бывал на последних софтулах могли в этом убедиться, у них стенд всегда рядом с линуксовым (mandriva, wine и прочая компания)

halturin писал(а):
07.03.2008 12:48
Имелись ввиду аналитические функции. Вот для примера.. попробуйте в MySQL или PostgreSQL построить запрос с накоплением суммы.
select rownum num, sum(rownum) over (order by rownum) sumnum from dual connect by rownum < 5

на firebird это делается в теле for select ...
заводим дополнительную переменную, которую суммируем с предыдущим фетчем и выводим вместе с остальными данными
... и никаких чудес изобретательства ;)
Спасибо сказали:
Аватара пользователя
halturin
Сообщения: 167
ОС: Linux

Re: SQL-сервер с точки зрения программирования

Сообщение halturin »

sydenis писал(а):
10.03.2008 12:19
на firebird это делается в теле for select ...
заводим дополнительную переменную, которую суммируем с предыдущим фетчем и выводим вместе с остальными данными
... и никаких чудес изобретательства ;)


можно с этого момента поподробней? просто напиши сиквел точно такой же только для огнептицы. Я за эту СУБД еще не садился, если она что-то подобное умеет, то сие вызовет у меня дикий голод "на посмотреть" :). А то на текущий момент мне известно про нее только то, что она есть и ни больше не меньше. :)
Спасибо сказали:
sydenis
Сообщения: 59

Re: SQL-сервер с точки зрения программирования

Сообщение sydenis »

ну вот что-то типа:

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-сервер с точки зрения программирования

Сообщение halturin »

sydenis писал(а):
10.03.2008 18:20
ну вот что-то типа:

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

наверно, можно как-то более изящно изобразить, но для примера сойдёт :)



БРЕДЯТИНА !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
сама по себе сумма с накоплением - это однопроходная операция, т.е находится в рамках выборки. Более того, результат это суммы находится в том же курсоре, где и сама выборка. Короче говоря, чтобы сделать такую сумму мне не придется трахать базу, а твой случай как раз-таки этим и занимается.
Спасибо сказали: