Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

IB или MS SQL Server [D6]


Страницы:   1 2 3 4

ev ©   (2002-02-22 21:05:00) 

Сейчес работаю с IB, но думаю перейти на MS SQL Server.
Помогите определиться!
Какие отличия, плюсы, минусы?
С какими компонентами лучше работать?
Плюсы, минусы ADO?


Johnny Smith   (2002-03-04 12:48:00) [1]

2SVM & 2 evgeg
На конкурсе пословиц и поговорок вы разделите 1 место :-)) Только не нужно использовать их (поговорки) как аргумент в споре. А насчет одного талантливого программиста - господа, здесь речь не о шедевре программирования, а о программном продукте, что есть разные вещи.

По существу: для "плевых" задач (2-3 клиента) IB действительно подходит, а для более или менее серьезных - MSSQL.


SVM   (2002-03-04 10:29:00) [2]

> Это о многом скажет. И еще сопоставьте количество разработчиков, создающих их. Насколько я знаю, в Phoenix"е, создающем FireBird их 25, а в Майкрософте - несколько сотен. И будь эти 25 конгениальными парнями, им не оскакать в качестве и объеме продукции Майкрософт.

У семи нянек дитя без глазу.


AlexNord   (2002-03-04 03:03:00) [3]

Delirium Да в принципе сравнивать можно! IB 6-й версии идет полностью бесплатный и с открытым исходником и на неограниченное количество пользователей, так что я на нем пищу и ни капли не жалею, правда задачка плёвая, но все равно! Хотя может я и не прав!:)


evgeg   (2002-02-28 22:55:00) [4]

> Это о многом скажет. И еще сопоставьте количество разработчиков, создающих их. Насколько я знаю, в Phoenix"е, создающем FireBird их 25, а в Майкрософте - несколько сотен. И будь эти 25 конгениальными парнями, им не оскакать в качестве и объеме продукции Майкрософт.

Один гений сделает то, чего никогда не сделает сто тысяч идиотов. (Я не утверждаю, что Interbase разрабатывают гении, а MS SQL - идиоты, просто смешно слушать такие аргументы).
Кстати, почитай на досуге Брукса, чем больше разработчиков -- тем больше связей между ними, тем больше ненужной работы они делают. Один талантливый программист сделает больше, чем 10 посредственных, и ошибок у него будет меньше.

> Добавлю еще пару соображений: посмотрите на доли рынка СУБД, приходящуюся на ту и другую системы.

При чем тут доли рынка? Мы говорим о системе, а не о маркетинге. Какая человеку разница, кто кроме него пользуется этой системой? Главное, чтобы у него все работало, а от тысяч других пользователей какой ему толк, если у него система не работает как надо?


vuk   (2002-02-28 22:09:00) [5]

>По поводу "сбиваются" не слышал и не видел, хотя работаю с
>MSSQL не первый год.
Вот было как-то пару раз... После этого и отказались. Потом уже не возникало желание искать причину, поскольку проблем больше не возникало (возможно всвязи с тем, что мы identity больше не используем). Потом оказалось, что так оно надежнее с точки зрения управления генерацией идентификаторов. То есть можно для определенных случаев задавать свои правила генерации, а не просто считать от 0 и дальше. Хотя это все уже упирается в проблему искусственных ключей.

>Проблема автоинкремента, вернее получение его с сервера очень
>красиво решается с помощью ADO.
Софт уже давно пишется так, что до вставки никакие идентификаторы на клиенте не нужны. Так что не проблема это.


>Не хочу спорить из принципиальных соображений: все равно каждый
>останется при своем.
Это да. Здесь каждый выбирает то, что в его случае удобнее. В нашем оказалось удобнее использовать управляемую генерацию идентификаторов.

P.S. А с MS SQL тоже уже не первый год работаем...


TSV   (2002-02-28 21:53:00) [6]

По поводу "сбиваются" не слышал и не видел, хотя работаю с MSSQL не первый год. Проблема автоинкремента, вернее получение его с сервера очень красиво решается с помощью ADO. Есть там такая вещь, Resync Command называется.

Не хочу спорить из принципиальных соображений: все равно каждый останется при своем. :-)


vuk   (2002-02-28 20:23:00) [7]

Я тут влезу малость. :o)
to Shirson:
>В таблицах, напротив идентификаторов отмечать галочкой
>пропертину Is RowGuid :)
Да уж... Может местами это и приемлемо, но к упорядоченной генерации идентификаторов отношения не имеет.

>insert into tmp_bal
>exec SProc @SDate, @FDate, "%", 0 и т.д.
Это-то все документировано. Гораздо интереснее было бы делать select по результатам выполнения процедуры без всяких временных таблиц. Хотя... Внутри у MS SQL много загадочного есть. Даже то, чего официально нет. :o) Например, есть там и select из процедуры (почти как в IB) но только не для всех. :o) Прикола ради зайдите в базу master и попробуйте написать:

select * from sysremote_catalogs

Много интересного будет написано в сообщении об ошибке... :o)

А правильно так :

select *
from dbo.SYSREMOTE_CATALOGS < "server" >


to Bachin:
>1. влиолепно берется из inserted (в тригере)
Имелось в виду - до вставки. В MS SQL - никак. А глобальная переменная есть - @@identity. Значение ее можно получить только после вставки.

Кстати об identity. У них в MS SQL есть неприятная особенность - иногда они сбиваются (причина неизвестна), поэтому мы у себя от них отказались в пользу механизмов, похожих на generator"ы InterBase. Получается более надежно и более управляемо.


Bachin   (2002-02-28 19:02:00) [8]

2Deniz: прошу прощения на текст. но ведь ты получил именно то, что хотел: сделал insert, не сделал commit и читал read commited...
предотвращая следующее заявление типа "а вот IB так работает" скажу: у Oracle тот же принцип (в данном случае) что и у MS. :)

насчет ID вставленной записи: 1. влиолепно берется из inserted (в тригере) 2. по-моему есть глобальная переменная (ну нет у меня MSSQL :)


wicked   (2002-02-28 17:50:00) [9]

2 Deniz ©



> Не так давно был вопрос:"Как узнать ID вставленной записи,
> или как получить следующий ID на клиента перед вставкой".
> Точно не помню, но "нормального" варианта для MS-SQL не
> было


insert <таблица> <что-то>
select @@identity


McSimm   (2002-02-28 17:07:00) [10]

>Bachin (28.02.02 14:56)
>что-то типа:


Давно я в IB не писал, года 3-4. Если ошибусь - знатоки поправят:
SET TRANSACTION NAME T1 READ COMMITTED;
..statement..
COMMIT T1; - необязательно


Deniz   (2002-02-28 15:17:00) [11]

По поводу автоинкрементного поля в MS-SQL.
Не так давно был вопрос:"Как узнать ID вставленной записи, или как получить следующий ID на клиента перед вставкой". Точно не помню, но "нормального" варианта для MS-SQL не было.
ЗЫЖ Хотел ответить раньше (по поводу кода и ручек Bachin (26.02.02 21:21)), но Inet на работе отрубили. А сейчас вроде "остыл" уже.


Bachin   (2002-02-28 14:56:00) [12]

McSimm © (28.02.02 13:15)
Откуда появилась мысль об отсутствии в IB именованных транзакций?

Просто механизм вложенности транзакций такой, что в использовании имен часто нет необходимости.
А так - есть. Используйте сколько хотите.


Наконец то услышали! :)))) Плиииз ,ув. McSimm, покажите мне именованную транзакцию в Interbase.

что-то типа:
begin transaction t1
end transaction t1


Johnny Smith   (2002-02-28 14:43:00) [13]

Я, может быть, отклонюсь от линии текущего обсуждения (хранимые процедуры, трехзвенки, временные таблицы и проч.)но вякну по теме вопроса - "IB или MSSQL".
Здесь есть два момента: а) декларируемые возможности и б) соответствуют ли они реальности. В первом случае можно разделить листик бумаги надвое и написать справа - возможности IB, а слева - возможности MSSQL. НО! Это не решит вопрос окончательно, поскольку IB глючит немилосердно в самых неожиданных местах и вот тут-то всплывает второй момент: далеко не все, что заявлено в IB, выполняется. Про MSSQL не скажу, поскольку не так много с ним работал.
Добавлю еще пару соображений: посмотрите на доли рынка СУБД, приходящуюся на ту и другую системы. Это о многом скажет. И еще сопоставьте количество разработчиков, создающих их. Насколько я знаю, в Phoenix"е, создающем FireBird их 25, а в Майкрософте - несколько сотен. И будь эти 25 конгениальными парнями, им не оскакать в качестве и объеме продукции Майкрософт.


SVM   (2002-02-28 14:15:00) [14]

Вопрос: а зачем создавать временную таблицу, если можно
просто выбрать из StoredProc (как в IB).

Разумеется, для IB наиболее эффективны:
Delphi - IBO - Interbase
Delphi - IBX - Interbase



McSimm   (2002-02-28 13:15:00) [15]

Откуда появилась мысль об отсутствии в IB именованных транзакций?

Просто механизм вложенности транзакций такой, что в использовании имен часто нет необходимости.
А так - есть. Используйте сколько хотите.


Shirson   (2002-02-28 12:07:00) [16]

Мы так юзаем:

insert into tmp_bal
exec SProc @SDate, @FDate, "%", 0 и т.д.

Прекрасно работает.


Delirium   (2002-02-28 11:59:00) [17]

Тут кто-то заявил, что в MSSQL нельзя получить результаты хранимой процедуры в таблицу, так вот вам пример:

SELECT * INTO #Temp
FROM OPENQUERY(OPEN_MASTER,"EXECUTE master..sp_help")

SELECT * FROM #Temp

где OPEN_MASTER - Linked Server к самому себе.


Shirson   (2002-02-28 11:50:00) [18]

>Awex
"Допустим я хочу чтоб индефикаторы во всех таблицах были сквозные для всей базы ? Если в IB для этого можно использовать один генератор то какой межанизм ты посоветуешь для MS-SQL ?"

В таблицах, напротив идентификаторов отмечать галочкой пропертину Is RowGuid :)


Roma   (2002-02-28 11:42:00) [19]

Отцы, это спор старый и бесконечный... "Одному нравится арбуз, а другому - свиной хрящик".
Но давайте посмотрим на вопрос с другой точки зрения. Очевидно, что все (или большинство) участвующие занимаются созданием трех-звенных распределенных клиент-сервеных систем. Т.е. можно говорить о тройке "службы_представления" - "службы_бизнеса" (среднее звено, middleware) - "службы_данных". И надо, на мой взгляд, рассматривать все в совокупности... Т.е., выделять такие тройки, которые будут оптимальны. Понятно, что все производители бьют себя в грудь (так, что молоко брызжет на стены... ;)))), мол, их системы работают со всем и вся. Это, конечно, не вранье, но все таки с чем-то какая-нибудь конкрентная система работает очень эффективно, а с чем-то - просто работает. И вот какие тройки, имхо, оптимальны и наиболее эффективны:
Visual C++ (Basic) - ADO - MSSQL
Delphi - BDE - Interbase

Oracle какое-то свое API для middleware тоже сделал, но в Oracle "чукча не писатель"... :(


Bachin   (2002-02-28 11:18:00) [20]

еще раз повторюсь:
В IB отсутствуютимнованные транзакции. И никто не заставляет Вас использовать в MSSQL. Просто это часто удобней и в IB приходится без них некоторые вещи делать через $%^&...

Но это все беспредметный спор. Если Вы не работали с MSSQL (я не имею ввиду видеть), то и не поймете этого...

Сейча я работаю с Informix и IB. Мне также не хватает многих конструкций да и других вещей, но! Те кто начинал с этой СУБД не знают об этих возможностях и абсолютно не жалеют об их отсутствии :)))


Страницы:   1 2 3 4

Наверх

Титульная страница Поиск, карта сайта Написать письмо