|
|
|
IB and MS SQL
|
|||
|---|---|---|---|
|
#18+
Всем привет! Я вот много уже использовал 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. Является ли это результатом хорошо проведенной рекламной компании, или он действительно имеет серьезные показатели работы. Всем заранее спасибо за ответ. Виталий ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.11.2002, 18:35:19 |
|
||
|
IB and MS SQL
|
|||
|---|---|---|---|
|
#18+
Нет слов. За такое положен расстрел. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.11.2002, 18:49:36 |
|
||
|
IB and MS SQL
|
|||
|---|---|---|---|
|
#18+
А теперь обьясните мне кто-нибудь, что я не так сделал, и чего вы вдвоем на меня бочку катите. Я ведь задал этот вопрос из лучших побуждений, думал, что сий топик будет интерестен и мне, и многим участникам форума. Если я что не так сделал, то извините, я не преднамеренно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.11.2002, 19:05:58 |
|
||
|
IB and MS SQL
|
|||
|---|---|---|---|
|
#18+
гых... скорость.... при грамотном проектировании - скорост как минимум на порядок выше... маштабируемость.... объем данных.... репликация.... версиониность без транзакций не бывает... так как она реализована в IB - то лучше вообще не использовать(под вопросом целостность данных)... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.11.2002, 19:11:40 |
|
||
|
IB and MS SQL
|
|||
|---|---|---|---|
|
#18+
Хм, а почему целостность данных под вопросом, не могу понять. По моему там все с умом реализовано. Я с многоверсионностью в свое время разбирался, но где там может быть нарушение целостности, ума не приложу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.11.2002, 19:16:05 |
|
||
|
IB and MS SQL
|
|||
|---|---|---|---|
|
#18+
ты конкретно ее использовал? когда чел 30 работают и причем конкретно... при мне была интересная ситуация... кароче на двух соседних компах результаты одного и того же отчета разные..... причем суммы не маленькие.... гарантирование целостности данных? ага... авария сервера... загружаемся - база в ауте... пытаемся восстановит - хФигФам.... из бэка ... день работы насмарку.... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.11.2002, 19:43:00 |
|
||
|
IB and MS SQL
|
|||
|---|---|---|---|
|
#18+
VETAL А еще твой любимый IB не позволяет вернуть дисковое пространство ОС после удаления записей, не позволяет убить зацикливший или зависший на сервере процесс, постепенно забирает у системы всю оперативную память, после чего просто вешает комп. Если есть возражения, то сходи-ка сначала на свой форум и почитай внимательно, что там пишут. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.11.2002, 21:11:22 |
|
||
|
IB and MS SQL
|
|||
|---|---|---|---|
|
#18+
лучшее управление транзакциями Что значит "лучшее"? практически полное отсутствие блокировок (разве что только когда они нужны) при обычной работе с БД (удаление, обновление, вставка). Выходит, что Microsoft SQL Server держит блокировки даже когда они не нужны, так? И, если не трудно, просветите меня, как в многопользовательской системе можно обойтись без блокировок, если важна целостность и непротиворечивость данных? В MS SQL же при обновлении записей устанавливаются блокировки на соответствующие страницы (с фиксированным размером 8кб кстати, а в IB возможны разные размеры страниц). Это откровение. Я-то думал, что в SQL Server'е 2000 блокировки могут быть на уровне записи. Механизм триггеров с моей точки зрения в IB лучше, так как триггер срабатывает для каждой строки таблицы. Да, в Oracle тоже есть FOR EACH ROW и это в некотором смысле неудобно, т.к. разработчику приходится писать немного больше кода в некоторых случаях. Но это мелочь. В MS SQL же триггеры срабатывают только после указанных операций, при этом триггер срабатывает один раз на таблицу Триггер срабатывает на событие. Есть еще и INSTEAD OF триггера... Получить доступ к старым/новым записям при обновлении я даже не знаю как можно. Через те же таблицы deleted & inserted. Наличие событий в IB Это еще что такое - событие? Что конкретно хотелось бы реализовать? уменьшение размера базы данных путем удаления пустой информации Вот уж сказал, так сказал :) Execute Varchar Что это за монстр такой? Все написанное мной является моим личным субъективным мнением. Верно, и именно поэтому следовало бы сначала изучить продукт, потом грамотно поделиться результатами в разделе “Сравнение СУБД”. Удачи ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.11.2002, 23:56:38 |
|
||
|
IB and MS SQL
|
|||
|---|---|---|---|
|
#18+
можно я свои 5 копеек вставлю? Выходит, что Microsoft SQL Server держит блокировки даже когда они не нужны, так? По-моему когда делается select блокировки ставить не обязательно, чего и не делает Interbase, а MS делает. Это откровение. Я-то думал, что в SQL Server'е 2000 блокировки могут быть на уровне записи. Это да, но сервер моджет сам принять решение о смене типа блокировки строка->cтраница->екстент... даже в том случае, если ему вручную указать блокировку записи. В MS SQL же триггеры срабатывают только после указанных операций, при этом триггер срабатывает один раз на таблицу Триггер срабатывает на событие. Есть еще и INSTEAD OF триггера... Во многих случаях удобнее не допустить события, поставив триггер before? чем потом его откатывать триггером after. Это еще что такое - событие? Что конкретно хотелось бы реализовать? Имелись ввиду наверное Events. Т.е. клиент получает уведомление при commit транзакции, и может каким-то образом отреагировать. Execute Varchar Что это за монстр такой? Это аналог execute @SQL, правда он только появился. Звиняйте, ежели что не так. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.11.2002, 09:52:17 |
|
||
|
IB and MS SQL
|
|||
|---|---|---|---|
|
#18+
Выходит, что Microsoft SQL Server держит блокировки даже когда они не нужны, так? По-моему когда делается select блокировки ставить не обязательно, чего и не делает Interbase, а MS делает а вот тут блокировки обычно нужны.... нужна гарантия неизменности данных на протяжении процесса обработки... .... да и хинт nolock есть если уж нужно... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.11.2002, 10:12:19 |
|
||
|
IB and MS SQL
|
|||
|---|---|---|---|
|
#18+
Я в посте от Vetal провокации не увидел, пост в корректных тонах и с конкретикой. Подозреваю, что искренне хочет разобраться. Попробую прояснить некоторые моменты. Итак, версионность vs блокировки. Версионность - это конечно удобно, спору нет. Но ресурсов жрет немеряно (выделение места, копирование, отслеживание версий, сборка мусора). В то же время блокировки - это то, что не требует ресурсов вообще никаких. Это есть просто флаг на данных, наткнувшись на который, поток останавливается и ждет (функцией WaitForSingleObject). Простаивающий поток не потребляет ресурсы. Поэтому, принципиально блокировочник производительнее версионника. Это физика. Хотя, неаккуратным обращением с блокировками можно добится противоположного результата. Далее, насчет плюсов и минусов. И там, и там есть и достоинства и недостатки. К тому перечню, который уже есть, добавлю: 1) В MSSQL мощный оптимизатор, поэтому сложные запросы выполняются гораздо лучше, чем на IB 2) Язык запросов в MSSQL на порядок-два богаче. После программирования на MSSQL при попытке запрограммить на IB чувствуешь себя связанным и в тесной клетке. 3) Готовых средств в MSSQL (функции, утилиты, набор процедур) на порядок-два больше. 4) Наличие в MSSQL средств репликации, распределенных запросов, использование внешних источников данных, поддержка кластеров, архивирование лога, многофайловая БД на разных дисках и много еще чего, что отсутствует в IB. Как раз отсутствие таких средств в IB и не позволяет его рассматривать в качестве СУБД предприятия. Спорить, что лучше - триггеры BEFORE или AFTER, UDF или Extended Stored Procedure, триггеры на запись или на операцию - бесполезно. Это всего лишь особенности того или иного сервера. Одного и того же результата можно добиться разными средствами, только и всего. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.11.2002, 10:15:04 |
|
||
|
IB and MS SQL
|
|||
|---|---|---|---|
|
#18+
Извините Vetal, но из всех приведённых вами преимуществ IB справедливо лишь наличие событий, хотя честно говоря не понимаю, как его использовать например в ASP. Остальные "преимущества" приведены вами, лишь ввиду плохой осведомлёности о возможностях MSSQL. Преимущества обсуждать не могу, т.к. плохо знаком с IB последних версий, но думаю по мере ознакомления с MSSQL и продвижении в разработке проекта вы будете находить их больше и больше. ЗЫ Обойтись можно без чего угодно, пока вы не научились этим пользоваться. Другое дело, когда вы осознаете всю мощь MSSQL, обойтись без него для вас будет очень трудно. Хорошо изученное, но более слабое по возможностям средство, эффективнее чем плохо изученное более сильное, но где же прогресс? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.11.2002, 10:59:10 |
|
||
|
IB and MS SQL
|
|||
|---|---|---|---|
|
#18+
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 - надежнейший сервер, не требующий администрирования (ну кроме сбоев аппаратной части) - проверено, год-два работы без ошибок и проблем, при этом пользователи вообще не подозревали о наличии сервера БД (может, и к лучшему) :-)) Могло бы работать и дольше, просто я профилактику провел... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.11.2002, 11:40:11 |
|
||
|
IB and MS SQL
|
|||
|---|---|---|---|
|
#18+
В InterBase есть события. В InterBase нет гемора с фантомным чтением. НО ОН ВСЁ РАВНО raBHo. Sorry, это мой внутренний голос вмешивается. Я хотел сказать, что MSSQL ВСЁ-ТАКИ лучше! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.11.2002, 11:45:03 |
|
||
|
IB and MS SQL
|
|||
|---|---|---|---|
|
#18+
Прошу прощения, но я в недоумении, форум все таки называется "Microsoft SQL Server" а не "Сравнение СУБД", и это уже второе сообщение не в тему. Да и по моему, тема смысла не имеет, три месяца назад сделанный проект на IB, был переделан на MSSQL, и ничего нормально... так может все наезды на IB и на MSSQL из за недостаточного знания продукта? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.11.2002, 11:55:48 |
|
||
|
IB and MS SQL
|
|||
|---|---|---|---|
|
#18+
Вот именно :-)) Сравнивать особого смысла не имеет, главное, выбрать именно тот продукт, который требуется для решения задачи, причем это обычно делается по многим параметрам - производительности, условий использования, знание этого инструмента разработчиками... Хотя вопрос не в сравнении, "при этом все время думал, что Interbase - это середнячковый сервер БД с ограниченными возможностями и невысокой производительностью" Отвечаю - достаточно мощный сервер с неплохой производительностью, пользуются многие. Самое интересное, что в одном из недавних номеров Компьтерры была статья, посвященная IB, правда, непонятно, с чего вдруг... Ссылка: http://www.computerra.ru/offline/2002/467/21443/ Кто пользует (и как) IB можно узнать здесь http://www.cvalde.com/WhoUsesIB.htm Думаю, это и есть ответ на вопрос :-)) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.11.2002, 12:06:10 |
|
||
|
IB and MS SQL
|
|||
|---|---|---|---|
|
#18+
WINDOWS, - чую что бесовщина, но обосновать не могу... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.11.2002, 15:19:59 |
|
||
|
IB and MS SQL
|
|||
|---|---|---|---|
|
#18+
Всем огромное спасибо за помощь и понимание. Я ведь действительно искренне разобраться, что лучше использовать, и не хочу поливать грязью никакой продукт. А за то что влез без спроса именно в этот форум, а не "сравнение БД", то извините, я здесь новый, местных правил не знаю. Я так понял по вашим сообщениям, что оба сервера являются достойными уважения, у каждого есть свои достоинства и недостатки, и для отностительно небольших информационных систем оба сервера хороши. Но если уже говорить о системах масштаба большого предприятия, то тут уж стоит выбирать MS SQL. Что касается ньюансов, то: Мне кажется, что многоверсионность все-таки быстрее и функциональнее блокировок, так как если с БД работает одновременно много пользователей, ставится куча блокировок, и сервер ожидает снятия блокировки в многих случаях. При многоверсионности этого нет, и поэтому при многопользовательской работе с БД обновление и чтение данных происходит быстрее. Кроме того, хоть и MS SQL сервер и имеет возможность ставить блокировки на запись, по умолчанию такие блокировки он ставит только на INSERT, при выборке же или обновлении данных, он ставит блокировки на страницы, при этом он может самостоятельно принять решение о блокировке на таблицу, если заблокированных страниц слишком много. Вот и получается, что если нужно обновить запись, которая нигде не читается или пишется, но находится на заблокированной странице, то здесь уже будет ожидание снятия блокировки. При механизме же версионности также соблюдается и целостность и непротиворечивость данных. Насчет триггеров: Непонятно, как узнать старое и новое значение записей при UPDATE События в интербейзе можно создавать не только при коомите, а и в любой другой момент ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.11.2002, 15:40:00 |
|
||
|
IB and MS SQL
|
|||
|---|---|---|---|
|
#18+
Насчет триггеров: Непонятно, как узнать старое и новое значение записей при UPDATE События в интербейзе можно создавать не только при коомите, а и в любой другой момент См. BOL ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.11.2002, 15:44:34 |
|
||
|
IB and MS SQL
|
|||
|---|---|---|---|
|
#18+
Где-то уж тут постил, но не помню где....: Есть, точнее БЫЛ, опыт использования IB. Думал - отличный сервер, и маааааленький такой, и ставится везде.... Уж как два года опыт активного использования MS SQL 2000. С нуля. Е-мое!!!!! Какая разница! - естественно в лучшую сторону. Как будто пересел из Запорожца в Мерс :)) Есть конечно и баги - но они везде есть, как микробы :)) Сравнивать невозможно эти продукты. До сих пор несколько раз пытался поставить IB да чего-нибудь на нем сделать - а было чего, маленькое такое- да никак рука не поднималась к клавиатуре, тошненько. Так и не делал больше ничего на IB. Последняя прога 1.5 года назад, намучился - и хватит. А по поводу версионности и другого такого - это маркетинг, а на самом деле - фигня все это и жуткие тормоза. Event-ы - до сих пор такой острой необходимости в них не было. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.11.2002, 15:48:30 |
|
||
|
IB and MS SQL
|
|||
|---|---|---|---|
|
#18+
Смотрел, и там понял, что старое/новое значения при инсерте и удаление можно получить через переменные inserted и deleted. А как получить эти значения при UPDATE - ??? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.11.2002, 15:49:49 |
|
||
|
IB and MS SQL
|
|||
|---|---|---|---|
|
#18+
Мне кажется, что многоверсионность все-таки быстрее и функциональнее блокировок, так как если с БД работает одновременно много пользователей, ставится куча блокировок, и сервер....... То есть, если 30 пользователей видят 30 разных результатов, то это хорошо? А потом при сборке мусора сервер в ступор уходит..... В deleted лежат данные старые, inserted - новые. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.11.2002, 15:54:21 |
|
||
|
IB and MS SQL
|
|||
|---|---|---|---|
|
#18+
Вот эти ваши высказывания Кроме того, хоть и MS SQL сервер и имеет возможность ставить блокировки на запись, по умолчанию такие блокировки он ставит только на INSERT, при выборке же или обновлении данных, он ставит блокировки на страницы, при этом он может самостоятельно принять решение о блокировке на таблицу, если заблокированных страниц слишком много. Вот и получается, что если нужно обновить запись, которая нигде не читается или пишется, но находится на заблокированной странице, то здесь уже будет ожидание снятия блокировки. и Смотрел, и там понял, что старое/новое значения при инсерте и удаление можно получить через переменные inserted и deleted. А как получить эти значения при UPDATE - ??? Говорят о том, что с MS SQL Server Вы практически не знакомы, поэтому простой совет, возьмите книгу, например, того же Мамаева и почитайте, а потом уже сравнивайте. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.11.2002, 16:03:23 |
|
||
|
|

start [/forum/topic.php?fid=46&msg=32071079&tid=1818567]: |
0ms |
get settings: |
5ms |
get forum list: |
9ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
34ms |
get topic data: |
6ms |
get forum data: |
1ms |
get page messages: |
34ms |
get tp. blocked users: |
1ms |
| others: | 200ms |
| total: | 294ms |

| 0 / 0 |
