Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Сравнение СУБД Новый топик    Ответить
Топик располагается на нескольких страницах: Ctrl  назад   1 2 [3] 4 5 6 7 8 9 10 .. 17   вперед  Ctrl
 Re: А зачем нужен этот монстр....... MS SQL?  [new]
ASCRUS
Member

Откуда: МО Электросталь
Сообщений: 5994
www.fun4me.narod.ru
Клиентское приложение не должно полагать, что оно имеет право выдумывать свои собственные операции по работе с данными. Если требуется удалить строки с какими-то опциями, то почему бы не написать процедуру сп_Удалить_Кучу_Записей, с параметрами? В процедуре проверка. И вуаля! Всё просто, быстро и понятно. И переносимо, если процедуры через ODBC {call ...} вызываются.

Клиентское приложение, а так же администратор и проектировщик БД, вправе полагать, что SQL был придуман не только для его использования в хранимых процедурах. Поэтому как клиент, так и клиентское приложение имеют полное право (если конечно есть нужный грант) выполнить DELETE FROM и не "изобретать" процедуру "с кучей параметров" и "геммора". А сама БД вправе полагать, что любое изменение данных, вне зависимости откуда оно будет произведено - с процедуры, ISQL или с менеджера БД и кем - юзером, админом или овнером, будет всегда контролироваться логикой и любое изменение информации приведет к проверке условий, пересчету аггрегатных таблиц и прочих действий. Кроме триггеров больше никто этого гарантировать не может. Так что перед законом все должны быть равны. Хотя тут уже в силу вступает реализация триггеров в каждой СУБД - если она где то урезана функционально, то может действительно оказаться выгоднее все проводить через ХП. У меня, например, в ASA триггера сделаны очень толково - те же BEFORE триггера срабатывают до проверки CHECK и CONSTRAINTS и на момент блокирования записи до начала логирования операции над таблицей. Соотвествующе это дает прекрасную возможность инициализировать значения полей собственными значениями (например если в поле NULL, то занести в него свое значение, или же принудительно привести текстовое поле к верхнему регистру и т.д.). Плюс это позволяет в случае генерации ошибки из триггера быстро откатить операцию, раз не было физической записи в БД и логе и снизить время и ресурсы блокировки обрабатываемых записей (например, если уже на первой записи из обрабатываемого миллиона записей не прошло условие и триггер дал откат, то на текущий момент только первая запись и была блокирована писателем, следующие уже записи блокироваться не будут, операция будет просто прервана). Могу ошибиться, но по моему в Оракле используется такая же эффективная схема работы триггеров (единственное, что там не хватает - это AFTER триггеров на весь массив записей с доступом к нему из триггера, ко временной таблице). Так что в таких случаях по моему грех отказываться от триггеров.
5 окт 04, 10:19    [1008411]     Ответить | Цитировать Сообщить модератору
 Re: А зачем нужен этот монстр....... MS SQL?  [new]
MasterZiv
Member

Откуда: Питер
Сообщений: 34709
vadiminfo

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


Триггера появились в СУБД ДО появления поддержки декларативной ссылочной целостности.

vadiminfo

Но главное, триггеры - это ХП процедуры, которые вызываются в ответ на события, связанные с изменением состояния БД. ...


Можно вместо DML вызывать процедуру. Тогда никаких событий не нужно. Все то же самое можно сделать и в процедуре. Процедура имеет нормальную и гибкую логику работы ( в отличие от триггеров, работа которых должна быть согласованной с основной модификацией данных, производится ТОЛЬКО внутри транзакции и т.п.). Процедура позволяет скрывать от приложения структуру базы данных, что добавляет доп. гибкость. В последнее время во всех СУБД развивается декларативная ссылочная целостность (каскадные удаления и прочие операции). В итоге мораль - триггера будут скоро просто не нужны, а уж о их вреде (для производительности, в основном) давно известно (правда оговорюсь - это зависит от СУБД).
5 окт 04, 10:56    [1008556]     Ответить | Цитировать Сообщить модератору
 Re: А зачем нужен этот монстр....... MS SQL?  [new]
ASCRUS
Member

Откуда: МО Электросталь
Сообщений: 5994
MasterZiv
В итоге мораль - триггера будут скоро просто не нужны, а уж о их вреде (для производительности, в основном) давно известно (правда оговорюсь - это зависит от СУБД).

Я бы сказал, что производительность и эффективность триггеров наверное даже больше не от СУБД зависит, а от драйвера "ПрямыеРуки.sys" :)
5 окт 04, 11:28    [1008720]     Ответить | Цитировать Сообщить модератору
 Re: А зачем нужен этот монстр....... MS SQL?  [new]
savage79
Member

Откуда:
Сообщений: 27
Согласен что для современных систем триггеры и прочая фигня, вполодь до ссылочной целостности зачастую уже и не нужно. Объясню почему. Раньше народ писал клиент-серверный софт и тогда, чтобы им не заморачиваться с отслеживанием на клиенте целостности и непротиворечивости данных в БД использовались триггеры и хр.процедуры. Сейчас софт пишут с использованием 3х- и более звенной архитектуры, где вся бизнес логика сосредоточена на сервере приложений, который и отвечает за работу с данными. Типичный пример такой работы - технология J2EE, используя entitybeans можно прекрасно обходится без всех дополнительных наворотов БД, включаю аутентификацию пользователей. Так, например PDM система Windchill вообще не использует никаких преимуществ Оракла, обходясь только обычным хранением данных в таблицах, для чего мог сойти и mysql. При этом очень удобно работать с данными. Фактически клиентское приложение, а это зачастую JSP/Servlet клиент работает с обычными объектами языка java не думая о том как и где они хранятся.
5 окт 04, 11:57    [1008852]     Ответить | Цитировать Сообщить модератору
 Re: А зачем нужен этот монстр....... MS SQL?  [new]
tygra
Member

Откуда: Тверь (Иркутск, Край)
Сообщений: 9997
автор
Раньше народ писал клиент-серверный софт и тогда, чтобы им не заморачиваться с отслеживанием на клиенте целостности и непротиворечивости данных в БД использовались триггеры и хр.процедуры. Сейчас софт пишут с использованием 3х- и более звенной архитектуры, где вся бизнес логика сосредоточена на сервере приложений, который и отвечает за работу с данными


Очень резкое завление, учитывая "всех" тех, кого вы упоминаете, составляющих 5-10% от всего рынка систем. Если лично вы пишете софт с помощью J2EE, то это не значит, что делают все так.

Или вы год перепутали и сейчас уже 2055?

-- Tygra's --
5 окт 04, 12:38    [1009046]     Ответить | Цитировать Сообщить модератору
 Re: А зачем нужен этот монстр....... MS SQL?  [new]
tygra
Member

Откуда: Тверь (Иркутск, Край)
Сообщений: 9997
Уточнение: не рынка систем, а всех разрабатываемых систем - а то ведь придерутся, скажут, что продается три системы и все они не используют устаревшие методы, использующие ХП и триггеры

-- Tygra's --
5 окт 04, 12:40    [1009062]     Ответить | Цитировать Сообщить модератору
 Re: А зачем нужен этот монстр....... MS SQL?  [new]
savage79
Member

Откуда:
Сообщений: 27
Ведь мы с вами не будем жить вчерашним днем!
Клиент-сервер устаревшая технология, хотя и будет всегда использоваться для небольших систем. А вот удел большиi систем - многозвенные технологии. Хотя абсурдно получается, что для боьших систем достаточно mysql. А для остальных нужены MS SQL и Oracle ))
Кста, вот пример, SAP устаревшую систему R3, в скором будущем не будет сопровождать, а весь упор делается на систему mySAP ERP, которая как раз и написана на J2EE, использующая распределенные вычисления и компонентную структуру.
5 окт 04, 12:55    [1009131]     Ответить | Цитировать Сообщить модератору
 Re: А зачем нужен этот монстр....... MS SQL?  [new]
ASCRUS
Member

Откуда: МО Электросталь
Сообщений: 5994
С ума сойти. Может быть уже и SQL устаревшая технология ? Какие революционные заявления однако :)
5 окт 04, 13:53    [1009397]     Ответить | Цитировать Сообщить модератору
 Re: А зачем нужен этот монстр....... MS SQL?  [new]
SergSuper
Member

Откуда: SPb
Сообщений: 5488
представители новых технологий, ответьте представителю устаревших!

допустим есть таблица проводок, добавление/удаление/модификация записей должна вызывать изменение в таблице остатков. На другой уровень (с сервера на клиента или промежуточный уровень) выносить нельзя - должно быть в одной транзакции. Проводки вставляются из разных мест, где по одной, где по несколько, удаляться тоже могут по каким-то заранее неизвестным условиям(допустим удалить все документы переоценки за какой-то день и проводки к ним). Как вы обычно такое реализовываете, что б без триггеров?
5 окт 04, 14:34    [1009629]     Ответить | Цитировать Сообщить модератору
 Re: А зачем нужен этот монстр....... MS SQL?  [new]
tygra
Member

Откуда: Тверь (Иркутск, Край)
Сообщений: 9997
Представители новых технологий на такие вопросы не отвечают - они про такое просто не знают, у них есть одно магическое слово J2EE и в их новейших системах никаких проводок нет вообще - там коммунизм

Может они знают все-же, сколько внедрений SAP/R3 по России и по всему миру и сколько десятых процента это будет от всех систем.

И еще - новейшим товарищам предлагаю еще обязательно добавлять к J2ee еще и Windows must die, а то иначе как-то не то получается

Да, SAP скоро сопровождать не будет - лет этак через 30 перестанет

-- Tygra's --
5 окт 04, 14:54    [1009724]     Ответить | Цитировать Сообщить модератору
 Re: А зачем нужен этот монстр....... MS SQL?  [new]
savage79
Member

Откуда:
Сообщений: 27
SergSuper
представители новых технологий, ответьте представителю устаревших!

допустим есть таблица проводок, добавление/удаление/модификация записей должна вызывать изменение в таблице остатков. На другой уровень (с сервера на клиента или промежуточный уровень) выносить нельзя - должно быть в одной транзакции. Проводки вставляются из разных мест, где по одной, где по несколько, удаляться тоже могут по каким-то заранее неизвестным условиям(допустим удалить все документы переоценки за какой-то день и проводки к ним). Как вы обычно такое реализовываете, что б без триггеров?


одной транзакцией все это и делается, причем тут триггер? существует объект который называется "проводка", при изменении этого объекта нужно выполнить 1 транзакцию, в которой выполнить 2 операции изменения 2х таблиц БД, затем транзакцию завершить либо отменить, если объект поймал исключение.
5 окт 04, 15:05    [1009770]     Ответить | Цитировать Сообщить модератору
 Re: А зачем нужен этот монстр....... MS SQL?  [new]
tygra
Member

Откуда: Тверь (Иркутск, Край)
Сообщений: 9997
Ну? Так и чем лучше ваша трехзвенная технология? Хотя бы в конкретном этом примере?

-- Tygra's --
5 окт 04, 15:10    [1009800]     Ответить | Цитировать Сообщить модератору
 Re: А зачем нужен этот монстр....... MS SQL?  [new]
Scott Tiger
Member

Откуда: вмваре
Сообщений: 6904
А вот в лучшей СУБД всех времён и народов для таких случаев есть materialized view, в том числе и refresh on commit.

Требую отставки Президента РФ
5 окт 04, 15:11    [1009805]     Ответить | Цитировать Сообщить модератору
 Re: А зачем нужен этот монстр....... MS SQL?  [new]
tygra
Member

Откуда: Тверь (Иркутск, Край)
Сообщений: 9997
Был уже топик по поводу многозвенок - почитайте его, чтобы тут флэйм не раздувать.

-- Tygra's --
5 окт 04, 15:18    [1009838]     Ответить | Цитировать Сообщить модератору
 Re: А зачем нужен этот монстр....... MS SQL?  [new]
tygra
Member

Откуда: Тверь (Иркутск, Край)
Сообщений: 9997
Предыдущее мое к savage79

2 Scott Tiger

Про оставку - это в сторону или ваша предвыборая компания?
Я тоже требую отставки президента РФ. И США

-- Tygra's --
5 окт 04, 15:20    [1009849]     Ответить | Цитировать Сообщить модератору
 Re: А зачем нужен этот монстр....... MS SQL?  [new]
savage79
Member

Откуда:
Сообщений: 27
tygra
Ну? Так и чем лучше ваша трехзвенная технология? Хотя бы в конкретном этом примере?

-- Tygra's --

а тем что работаешь не с таблицами БД, а с объектами языка программирования и не ломаешь голову о том как и какие запросы нужно делать, все это делает какая-нить служба persistent manager сервера приложений.

Далее, трехзвенная архитектура нужна для разработки больших и сложных приложений, где сервер приложений работает круглые сутки и обслуживает запросы пользователей или других информационных систем. Такие системы могут иметь множество интерфейсов для работы пользователя, например как графический интерфейс GUI так и веб-интерфейс. Интерфейсы занимаются только отображением и вводом информации. А вся бизнес логика сосредоточена на сервере приложений, который может взяимодействовать с сервером БД, сервером LDAP для аутентификации пользователей и пр. звеньями системы. Может взаимодействовать с другими серверами приложений, отвечающих за другие бизнес функции.
5 окт 04, 15:37    [1009922]     Ответить | Цитировать Сообщить модератору
 Re: А зачем нужен этот монстр....... MS SQL?  [new]
Yo!
Guest
новые, не новые - признаем сразу sql в прошлом, oop - sux. будующее за XQL (или как там язык запросов на xml завется) и сервис-ориентет программированием :) а то обсуждаете тут технологии 30 летней давности :)

ЗЫ. шучу
5 окт 04, 15:46    [1009965]     Ответить | Цитировать Сообщить модератору
 Re: А зачем нужен этот монстр....... MS SQL?  [new]
Alexey Kudinov
Member

Откуда:
Сообщений: 14547
Иногда вынос бизнес логики в SP рассматривается как отдельный уровень приложения. Это к вопросу об n-звенных структурах.

А вообще всем ярым фанатам какой-либо одной архитектуры, утверждающим, что вот именно за этим будующее, а все остальное пригодно для "для небольших систем" советую просто поднабраться опыта, поучаствовать в проектах многозвенок, клиент-сервера, с логикой на клиенте. Чем больше разных проектов - тем лучше.

Тогда поймете что, как и когда применяется и какие у этого последствия. А размахивать рекламными слоганами - это детский сад.
5 окт 04, 15:53    [1010001]     Ответить | Цитировать Сообщить модератору
 Re: А зачем нужен этот монстр....... MS SQL?  [new]
Scott Tiger
Member

Откуда: вмваре
Сообщений: 6904
savage79 неправильно воспринимает БД как black box со сложной технологией доступа к нему. Неэффективность persistent manager-ов доказана, сложность любого ООП-языка на порядки выше любого диалекта SQL, куда естественней, проще и производительней сделать простой селект от таблицы, чем (ёпти!) в цикле по коллекции первичных ключей вызывать геттеры.

Требую отставки Президента РФ
5 окт 04, 15:56    [1010034]     Ответить | Цитировать Сообщить модератору
 Re: А зачем нужен этот монстр....... MS SQL?  [new]
ASCRUS
Member

Откуда: МО Электросталь
Сообщений: 5994
Итак меняю термины, получается:
РСУБД нужна для разработки больших и сложных приложений, где сервер баз данных работает круглые сутки и обслуживает запросы пользователей или других информационных систем. Такие системы могут иметь множество интерфейсов для работы пользователя, например как графический интерфейс GUI так и веб-интерфейс, для реализации которых существует множество проверенных временем ПО. Интерфейсы занимаются только отображением и вводом информации. А вся бизнес логика сосредоточена на сервере баз данных, которому ни с кем особо без необходимости не нужно взаимодействовать.

И где тут наглядное преимущество 3-его звена ? Судя по высказыванию:
автор
а тем что работаешь не с таблицами БД, а с объектами языка программирования и не ломаешь голову о том как и какие запросы нужно делать, все это делает какая-нить служба persistent manager сервера приложений.

самое лучшее преимущество - это то, что не нужно учить правила проектирования БД и SQL (и возможно кое где менять взгляды на жизнь), а делать приложения на привычных классах и получать большую зп только из за того, что сама трудоемкость создания 3-х звенных приложений (особенно на J2EE) повыше будет, чем у 2-х звенок :)
5 окт 04, 16:00    [1010056]     Ответить | Цитировать Сообщить модератору
 Re: А зачем нужен этот монстр....... MS SQL?  [new]
tygra
Member

Откуда: Тверь (Иркутск, Край)
Сообщений: 9997
автор
а тем что работаешь не с таблицами БД, а с объектами языка программирования и не ломаешь голову о том как и какие запросы нужно делать, все это делает какая-нить служба persistent manager сервера приложений.


А сервер приложений роботы марсианские пишут?
Ну а раз уж не хочется запросы писать - нечего в программисты идти, можно в аналитики

Вот по поводу дальнейшего читайте тот топик, на который ссылку я привел.
Могу и тут повторить:

автор
Далее, трехзвенная архитектура нужна для разработки больших и сложных приложений, где сервер приложений работает круглые сутки и обслуживает запросы пользователей или других информационных систем.

Неужели? Как же тогда другие системы работают? А когда есть БД и нет сервера приложений - и тоже работают. Это как? Без сервера приложений - и работают, причем тоже круглые сутки. Значит не нужен он - как собаке пятая нога :)

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

Действительно, без сервера приложений невозможно сделать гуи и веб-интерфейс. Явно у нас где-то он затаился, сволочь

автор
Интерфейсы занимаются только отображением и вводом информации.

Глубокая мысль :)

автор
А вся бизнес логика сосредоточена на сервере приложений, который может взяимодействовать с сервером БД, сервером LDAP для аутентификации пользователей и пр. звеньями системы.

А у нас за это все отвечает БД и там же сосредоточена вся логика! И аутентификация тоже там! И представляете, кто бы не полез в БД - все-равно бизнес-логику не нарушит. В отличие от вашей системы, где без сервера приложений бизнес-логики нет нихрена

автор
Может взаимодействовать с другими серверами приложений, отвечающих за другие бизнес функции.

Да нет проблем!

В общем - в топик тот вам, в топик. Не надо тут флейма, давайте уж там....

-- Tygra's --
5 окт 04, 16:01    [1010062]     Ответить | Цитировать Сообщить модератору
 Re: А зачем нужен этот монстр....... MS SQL?  [new]
tygra
Member

Откуда: Тверь (Иркутск, Край)
Сообщений: 9997
2 ASCRUS

Классно поменял термины! :)

-- Tygra's --
5 окт 04, 16:08    [1010089]     Ответить | Цитировать Сообщить модератору
 Re: А зачем нужен этот монстр....... MS SQL?  [new]
savage79
Member

Откуда:
Сообщений: 27
спрашивается зачем тогда разработчики пишут сервера приложений???
или вы думаете что у MS asp странички напрямую к MS SQL Server-у обращаются???
или зачем Оракл выпустил Oracle Application Server???

какие именно системы работают без AppServer-а???? пример? форум какой-нить, это для вас система?
5 окт 04, 16:17    [1010129]     Ответить | Цитировать Сообщить модератору
 Re: А зачем нужен этот монстр....... MS SQL?  [new]
Yo!
Guest
автор
сложность любого ООП-языка на порядки выше любого диалекта SQL, куда естественней, проще и производительней сделать простой селект от таблицы, чем (ёпти!) в цикле по коллекции первичных ключей вызывать геттеры.


с одинаковыми скилс pl/sql developer дороже java developera, если разницу помножить на время то иногда можно и проц второй добавить. какой из этих 2х подходов эфективней решает задача, кое где плюсы 3х звенки перекрывают в разы фишки 2-звенки и наоборот.
5 окт 04, 16:21    [1010151]     Ответить | Цитировать Сообщить модератору
 Re: А зачем нужен этот монстр....... MS SQL?  [new]
Gluk (Kazan)
Member

Откуда:
Сообщений: 9365
??? У меня биллинговые системы ПРЕКРАСНО работают БЕЗ сервера приложений.

Пойдет ?
5 окт 04, 16:22    [1010155]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: Ctrl  назад   1 2 [3] 4 5 6 7 8 9 10 .. 17   вперед  Ctrl
Все форумы / Сравнение СУБД Ответить