Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / IB and MS SQL / 25 сообщений из 26, страница 1 из 2
21.11.2002, 18:35:19
    #32071018
Vetal
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
IB and MS SQL
Всем привет!

Я вот много уже использовал Interbase в своих приложениях, и при этом все время думал, что Interbase - это середнячковый сервер БД с ограниченными возможностями и невысокой производительностью. А вот такие сервера, как MS SQL или Oracle - это гиганты индустрии. Но сейчас начал писать проект на MS SQL, и пришел к выводу, что Interbase опережает MS SQL по многим параметрам, и является мощным сервером БД с большими возможностями.

В частности, c моей субьективной точки зрения, я вижу следующие преимущества Interbase перед MS SQL:

- Многоверсионность записей, лучшее управление транзакциями, практически полное отсутствие блокировок (разве что только когда они нужны) при обычной работе с БД (удаление, обновление, вставка). В MS SQL же при обновлении записей устанавливаются блокировки на соответсвующие страницы (с фиксированным размером 8кб кстати, а в IB возможны разные размеры страниц).

- Механизм триггеров с моей точки зрения в IB лучше, так как триггер срабатывает для каждой строки таблицы. При этом возможны триггеры как перед удалением/обновлением/вставкой, так и после. Есть также перменные Old&New, позволяющие обратиться к старым и новым значением записи. В MS SQL же триггеры срабатывают только после указанных операций, при этом триггер срабатывает один раз на таблицу, а доступ к удаленным/вставленным записям осуществляется через наборы данных deleted&inserted. Получить доступ к старым/новым записям при обновлении я даже не знаю как можно. С другой стороны, такой механизм наверное является более производительным.

- В IB UDF реализованы как функции в dll, написанные на языках высокого уровня. В MS SQL UDF практически ничем не отличаются от хранимых процедур и пишутся на SQL. С другой стороны в MS SQL имеются расширенные хранимые процедуры, которые пишутся на языках высокого уровня.

- Наличие событий в IB. В MS SQL есть только отправка e-mail.


С другой строны, MS SQL с моей точки зрения имеет следующие преимущества:

- Более мощно реализованы административные функции: архивирование, восстановление по расписанию (хотя это больше функции программной оболочки, чем сервера), репликация, уменьшение размера базы данных путем удаления пустой информации, ремонт БД после сбоя

- Execute Varchar, правда оной уже появился и в новых версиях Interbase

- Наличие правил

- Возможность построение диаграмм (снова таки это функция программной оболочки)

- Куча встроенных расширенных процедур, таких как отсылка e-mail

- Наличие полно-текстовых каталогов и полно-текстовых индексов

- Рекурсивные триггеры, правда с ограничением 32. Не знаю, есть ли в IB такое


С моей точки зрения, описанные возможности MS SQL являются важными, но можно обойтись и без них. Описанные преимущества же Interbase являются очень важными преимуществами сервера БД.
Интересно, какой из этих двух серверов является более ПРОИЗВОДИТЕЛЬНЫМ по скорости, и кушает меньше ресурсов.

Все написанное мной является моим личным субьективным мнением. Я не считаю себя большим знатоком баз данных, и рассказал только свое понимание ситуации. Я хотел бы услышать мнение других по рассказанным выше вопросам. Хотелось бы знать, в чем я ошибаюсь, и почему все-таки для серьезных проектов компании часто выбирают именно MS SQL Server. Является ли это результатом хорошо проведенной рекламной компании, или он действительно имеет серьезные показатели работы.

Всем заранее спасибо за ответ.

Виталий
...
Рейтинг: 0 / 0
21.11.2002, 18:49:36
    #32071029
jimmers
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
IB and MS SQL
Нет слов. За такое положен расстрел.
...
Рейтинг: 0 / 0
21.11.2002, 18:57:26
    #32071037
snake
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
IB and MS SQL
бля, и здесь...
...
Рейтинг: 0 / 0
21.11.2002, 19:05:58
    #32071041
Vetal
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
IB and MS SQL
А теперь обьясните мне кто-нибудь, что я не так сделал, и чего вы вдвоем на меня бочку катите.
Я ведь задал этот вопрос из лучших побуждений, думал, что сий топик будет интерестен и мне, и многим участникам форума. Если я что не так сделал, то извините, я не преднамеренно.
...
Рейтинг: 0 / 0
21.11.2002, 19:11:40
    #32071046
MiCe
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
IB and MS SQL
гых... скорость.... при грамотном проектировании - скорост как минимум на порядок выше...
маштабируемость.... объем данных.... репликация....
версиониность без транзакций не бывает...
так как она реализована в IB - то лучше вообще не использовать(под вопросом целостность данных)...
...
Рейтинг: 0 / 0
21.11.2002, 19:16:05
    #32071049
Vetal
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
IB and MS SQL
Хм, а почему целостность данных под вопросом, не могу понять. По моему там все с умом реализовано. Я с многоверсионностью в свое время разбирался, но где там может быть нарушение целостности, ума не приложу.
...
Рейтинг: 0 / 0
21.11.2002, 19:43:00
    #32071063
MiCe
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
IB and MS SQL
ты конкретно ее использовал?
когда чел 30 работают и причем конкретно...
при мне была интересная ситуация...
кароче на двух соседних компах результаты одного и того же отчета разные..... причем суммы не маленькие....
гарантирование целостности данных?
ага... авария сервера... загружаемся - база в ауте...
пытаемся восстановит - хФигФам.... из бэка ... день работы насмарку....
...
Рейтинг: 0 / 0
21.11.2002, 21:11:22
    #32071079
Доброжелатель
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
IB and MS SQL
VETAL
А еще твой любимый IB не позволяет вернуть дисковое пространство ОС после удаления записей, не позволяет убить зацикливший или зависший на сервере процесс, постепенно забирает у системы всю оперативную память, после чего просто вешает комп. Если есть возражения, то сходи-ка сначала на свой форум и почитай внимательно, что там пишут.
...
Рейтинг: 0 / 0
21.11.2002, 23:56:38
    #32071097
jimmers
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
IB and MS SQL
лучшее управление транзакциями
Что значит "лучшее"?

практически полное отсутствие блокировок (разве что только когда они нужны) при обычной работе с БД (удаление, обновление, вставка).
Выходит, что Microsoft SQL Server держит блокировки даже когда они не нужны, так?
И, если не трудно, просветите меня, как в многопользовательской системе можно обойтись без блокировок, если важна целостность и непротиворечивость данных?

В MS SQL же при обновлении записей устанавливаются блокировки на соответствующие страницы (с фиксированным размером 8кб кстати, а в IB возможны разные размеры страниц).
Это откровение. Я-то думал, что в SQL Server'е 2000 блокировки могут быть на уровне записи.

Механизм триггеров с моей точки зрения в IB лучше, так как триггер срабатывает для каждой строки таблицы.
Да, в Oracle тоже есть FOR EACH ROW и это в некотором смысле неудобно, т.к. разработчику приходится писать немного
больше кода в некоторых случаях. Но это мелочь.

В MS SQL же триггеры срабатывают только после указанных операций, при этом триггер срабатывает один раз на таблицу
Триггер срабатывает на событие. Есть еще и INSTEAD OF триггера...

Получить доступ к старым/новым записям при обновлении я даже не знаю как можно.
Через те же таблицы deleted & inserted.

Наличие событий в IB

Это еще что такое - событие? Что конкретно хотелось бы реализовать?

уменьшение размера базы данных путем удаления пустой информации

Вот уж сказал, так сказал :)

Execute Varchar

Что это за монстр такой?

Все написанное мной является моим личным субъективным мнением.

Верно, и именно поэтому следовало бы сначала изучить продукт, потом грамотно поделиться результатами в разделе “Сравнение СУБД”.

Удачи
...
Рейтинг: 0 / 0
22.11.2002, 09:52:17
    #32071155
IgorK
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
IB and MS SQL
можно я свои 5 копеек вставлю?

Выходит, что Microsoft SQL Server держит блокировки даже когда они не нужны, так?
По-моему когда делается select блокировки ставить не обязательно, чего и не делает Interbase, а MS делает.

Это откровение. Я-то думал, что в SQL Server'е 2000 блокировки могут быть на уровне записи.
Это да, но сервер моджет сам принять решение о смене типа блокировки строка->cтраница->екстент... даже в том случае, если ему вручную указать блокировку записи.

В MS SQL же триггеры срабатывают только после указанных операций, при этом триггер срабатывает один раз на таблицу
Триггер срабатывает на событие. Есть еще и INSTEAD OF триггера...

Во многих случаях удобнее не допустить события, поставив триггер before? чем потом его откатывать триггером after.

Это еще что такое - событие? Что конкретно хотелось бы реализовать?
Имелись ввиду наверное Events. Т.е. клиент получает уведомление при commit транзакции, и может каким-то образом отреагировать.

Execute Varchar
Что это за монстр такой?

Это аналог execute @SQL, правда он только появился.

Звиняйте, ежели что не так.
...
Рейтинг: 0 / 0
22.11.2002, 10:12:19
    #32071164
MiCe
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
IB and MS SQL
Выходит, что Microsoft SQL Server держит блокировки даже когда они не нужны, так?
По-моему когда делается select блокировки ставить не обязательно, чего и не делает Interbase, а MS делает

а вот тут блокировки обычно нужны.... нужна гарантия неизменности данных на протяжении процесса обработки...
.... да и хинт nolock есть если уж нужно...
...
Рейтинг: 0 / 0
22.11.2002, 10:15:04
    #32071166
ziktuw
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
IB and MS SQL
Я в посте от Vetal провокации не увидел, пост в корректных тонах и с конкретикой. Подозреваю, что искренне хочет разобраться. Попробую прояснить некоторые моменты.

Итак, версионность vs блокировки. Версионность - это конечно удобно, спору нет. Но ресурсов жрет немеряно (выделение места, копирование, отслеживание версий, сборка мусора). В то же время блокировки - это то, что не требует ресурсов вообще никаких. Это есть просто флаг на данных, наткнувшись на который, поток останавливается и ждет (функцией WaitForSingleObject). Простаивающий поток не потребляет ресурсы. Поэтому, принципиально блокировочник производительнее версионника. Это физика. Хотя, неаккуратным обращением с блокировками можно добится противоположного результата.

Далее, насчет плюсов и минусов. И там, и там есть и достоинства и недостатки.
К тому перечню, который уже есть, добавлю:
1) В MSSQL мощный оптимизатор, поэтому сложные запросы выполняются гораздо лучше, чем на IB
2) Язык запросов в MSSQL на порядок-два богаче. После программирования на MSSQL при попытке запрограммить на IB чувствуешь себя связанным и в тесной клетке.
3) Готовых средств в MSSQL (функции, утилиты, набор процедур) на порядок-два больше.
4) Наличие в MSSQL средств репликации, распределенных запросов, использование внешних источников данных, поддержка кластеров, архивирование лога, многофайловая БД на разных дисках и много еще чего, что отсутствует в IB. Как раз отсутствие таких средств в IB и не позволяет его рассматривать в качестве СУБД предприятия.

Спорить, что лучше - триггеры BEFORE или AFTER, UDF или Extended Stored Procedure, триггеры на запись или на операцию - бесполезно. Это всего лишь особенности того или иного сервера. Одного и того же результата можно добиться разными средствами, только и всего.
...
Рейтинг: 0 / 0
22.11.2002, 10:59:10
    #32071196
akuz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
IB and MS SQL
Извините Vetal, но из всех приведённых вами преимуществ IB справедливо лишь наличие событий, хотя честно говоря не понимаю, как его использовать например в ASP.
Остальные "преимущества" приведены вами, лишь ввиду плохой осведомлёности о возможностях MSSQL.

Преимущества обсуждать не могу, т.к. плохо знаком с IB последних версий, но думаю по мере ознакомления с MSSQL и продвижении в разработке проекта вы будете находить их больше и больше.

ЗЫ
Обойтись можно без чего угодно, пока вы не научились этим пользоваться. Другое дело, когда вы осознаете всю мощь MSSQL, обойтись без него для вас будет очень трудно.

Хорошо изученное, но более слабое по возможностям средство, эффективнее чем плохо изученное более сильное, но где же прогресс?
...
Рейтинг: 0 / 0
22.11.2002, 11:40:11
    #32071226
Roman Ignatiev
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
IB and MS SQL
Dankov
Поправка:
в IB Репликатор вроде есть, правда, я им не пользовался, но поставляется. Распределенные запросы - увы :-(( Но есть распределенные транзакции к нескольким базам, что компенсирует. К сожалению, только к разным базам одного сервера. Архивирования лога нет по причине его отсутствия :-)) С одной стороны, невозможно сделать восстановление на момент краха базы, только на момент начала backup, с другой стороны, нет постоянно растущего лога (это еще и к тому, что версионность записей требует места, а блокировки - лога :-))). Можно пользоваться зеркалированием - так и делаю, когда нужно. Если уж полетело одновременно два RAID, то на MSSQL будет тот же результат, имхо :-))
Многофайловая БД на разных дисках - какие проблемы? Все есть.
Оптимизатор в MSSQL действительно лучше, правда, сомневаюсь, что на порядок. MS запрещает тестирование своих продуктов, так что... Но можно попробовать, IB и клоны тестированы, есть же стандартные тесты TPC-R. http://www.interbase-world.com/yaffil/yaffiltpcr.php
Теперь мне очень захотелось попробовать Yaffil :-))

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

То, что язык запросов богаче у MSSQL - это точно, в IB не хватает некоторых функций, правда, в Firebird & Yaffil уже много чего добавлено :-)) А так.. Зажимает не особо - первая процедура, которую я написал еще на IB4, была выдача числа прописью, причем UDF я не пользовался :-))

Хотелось бы к сказанному добавить еще немного :-))
1. Клоны Interbase - бесплатны, с открытым кодом и мультиплатформны :-))
2. IB - надежнейший сервер, не требующий администрирования (ну кроме сбоев аппаратной части) - проверено, год-два работы без ошибок и проблем, при этом пользователи вообще не подозревали о наличии сервера БД (может, и к лучшему) :-)) Могло бы работать и дольше, просто я профилактику провел...
...
Рейтинг: 0 / 0
22.11.2002, 11:45:03
    #32071231
Зайцев Фёдор
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
IB and MS SQL
В InterBase есть события.
В InterBase нет гемора с фантомным чтением.
НО ОН ВСЁ РАВНО raBHo. Sorry, это мой внутренний голос вмешивается. Я хотел сказать, что MSSQL ВСЁ-ТАКИ лучше!
...
Рейтинг: 0 / 0
22.11.2002, 11:55:48
    #32071245
fima
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
IB and MS SQL
Прошу прощения, но я в недоумении, форум все таки называется "Microsoft SQL Server" а не "Сравнение СУБД", и это уже второе сообщение не в тему. Да и по моему, тема смысла не имеет, три месяца назад сделанный проект на IB, был переделан на MSSQL, и ничего нормально... так может все наезды на IB и на MSSQL из за недостаточного знания продукта?
...
Рейтинг: 0 / 0
22.11.2002, 12:06:10
    #32071271
Roman Ignatiev
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
IB and MS SQL
Вот именно :-))
Сравнивать особого смысла не имеет, главное, выбрать именно тот продукт, который требуется для решения задачи, причем это обычно делается по многим параметрам - производительности, условий использования, знание этого инструмента разработчиками...
Хотя вопрос не в сравнении, "при этом все время думал, что Interbase - это середнячковый сервер БД с ограниченными возможностями и невысокой производительностью"
Отвечаю - достаточно мощный сервер с неплохой производительностью, пользуются многие. Самое интересное, что в одном из недавних номеров Компьтерры была статья, посвященная IB, правда, непонятно, с чего вдруг... Ссылка: http://www.computerra.ru/offline/2002/467/21443/
Кто пользует (и как) IB можно узнать здесь http://www.cvalde.com/WhoUsesIB.htm
Думаю, это и есть ответ на вопрос :-))
...
Рейтинг: 0 / 0
22.11.2002, 15:19:59
    #32071403
snake
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
IB and MS SQL
WINDOWS, - чую что бесовщина, но обосновать не могу...
...
Рейтинг: 0 / 0
22.11.2002, 15:40:00
    #32071412
Vetal
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
IB and MS SQL
Всем огромное спасибо за помощь и понимание. Я ведь действительно искренне разобраться, что лучше использовать, и не хочу поливать грязью никакой продукт. А за то что влез без спроса именно в этот форум, а не "сравнение БД", то извините, я здесь новый, местных правил не знаю.
Я так понял по вашим сообщениям, что оба сервера являются достойными уважения, у каждого есть свои достоинства и недостатки, и для отностительно небольших информационных систем оба сервера хороши. Но если уже говорить о системах масштаба большого предприятия, то тут уж стоит выбирать MS SQL.

Что касается ньюансов, то:
Мне кажется, что многоверсионность все-таки быстрее и функциональнее блокировок, так как если с БД работает одновременно много пользователей, ставится куча блокировок, и сервер ожидает снятия блокировки в многих случаях. При многоверсионности этого нет, и поэтому при многопользовательской работе с БД обновление и чтение данных происходит быстрее. Кроме того, хоть и MS SQL сервер и имеет возможность ставить блокировки на запись, по умолчанию такие блокировки он ставит только на INSERT, при выборке же или обновлении данных, он ставит блокировки на страницы, при этом он может самостоятельно принять решение о блокировке на таблицу, если заблокированных страниц слишком много. Вот и получается, что если нужно обновить запись, которая нигде не читается или пишется, но находится на заблокированной странице, то здесь уже будет ожидание снятия блокировки. При механизме же версионности также соблюдается и целостность и непротиворечивость данных.

Насчет триггеров:
Непонятно, как узнать старое и новое значение записей при UPDATE

События в интербейзе можно создавать не только при коомите, а и в любой другой момент
...
Рейтинг: 0 / 0
22.11.2002, 15:44:34
    #32071418
Зайцев Фёдор
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
IB and MS SQL
Насчет триггеров:
Непонятно, как узнать старое и новое значение записей при UPDATE

События в интербейзе можно создавать не только при коомите, а и в любой другой момент

См. BOL
...
Рейтинг: 0 / 0
22.11.2002, 15:48:30
    #32071422
tygra
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
IB and MS SQL
Где-то уж тут постил, но не помню где....:

Есть, точнее БЫЛ, опыт использования IB. Думал - отличный сервер, и маааааленький такой, и ставится везде....

Уж как два года опыт активного использования MS SQL 2000. С нуля.
Е-мое!!!!! Какая разница! - естественно в лучшую сторону. Как будто пересел из Запорожца в Мерс :))
Есть конечно и баги - но они везде есть, как микробы :))
Сравнивать невозможно эти продукты.

До сих пор несколько раз пытался поставить IB да чего-нибудь на нем сделать - а было чего, маленькое такое- да никак рука не поднималась к клавиатуре, тошненько. Так и не делал больше ничего на IB. Последняя прога 1.5 года назад, намучился - и хватит.


А по поводу версионности и другого такого - это маркетинг, а на самом деле - фигня все это и жуткие тормоза. Event-ы - до сих пор такой острой необходимости в них не было.
...
Рейтинг: 0 / 0
22.11.2002, 15:49:49
    #32071423
Vetal
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
IB and MS SQL
Смотрел, и там понял, что старое/новое значения при инсерте и удаление можно получить через переменные inserted и deleted. А как получить эти значения при UPDATE - ???
...
Рейтинг: 0 / 0
22.11.2002, 15:54:21
    #32071424
tygra
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
IB and MS SQL
Мне кажется, что многоверсионность все-таки быстрее и функциональнее блокировок, так как если с БД работает одновременно много пользователей, ставится куча блокировок, и сервер.......

То есть, если 30 пользователей видят 30 разных результатов, то это хорошо? А потом при сборке мусора сервер в ступор уходит.....

В deleted лежат данные старые, inserted - новые.
...
Рейтинг: 0 / 0
22.11.2002, 16:03:23
    #32071432
Genady
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
IB and MS SQL
Вот эти ваши высказывания
Кроме того, хоть и MS SQL сервер и имеет возможность ставить блокировки на запись, по умолчанию такие блокировки он ставит только на INSERT, при выборке же или обновлении данных, он ставит блокировки на страницы, при этом он может самостоятельно принять решение о блокировке на таблицу, если заблокированных страниц слишком много. Вот и получается, что если нужно обновить запись, которая нигде не читается или пишется, но находится на заблокированной странице, то здесь уже будет ожидание снятия блокировки.
и
Смотрел, и там понял, что старое/новое значения при инсерте и удаление можно получить через переменные inserted и deleted. А как получить эти значения при UPDATE - ???
Говорят о том, что с MS SQL Server Вы практически не знакомы, поэтому простой совет, возьмите книгу, например, того же Мамаева и почитайте, а потом уже сравнивайте.
...
Рейтинг: 0 / 0
22.11.2002, 17:23:12
    #32071489
Vetal
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
IB and MS SQL
Ладно, насчет триггера на обновление я раздуплился, виноват, прошу прощения, недоразобрался.

To tygra:
Многоверсионность не в этом заключается.

To Gennady:
Обьясните пожалуйста, в чем я не прав по поводу блокировок
...
Рейтинг: 0 / 0
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / IB and MS SQL / 25 сообщений из 26, страница 1 из 2
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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