powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / SUID процедуры
25 сообщений из 101, страница 1 из 5
SUID процедуры
    #34640002
bpost
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Здравствуйте коллеги !

Часто при работе с БД используется технология организации доступа к данным таблиц используя т.н. SUID процедуры (для каждой из таблиц пишутся ХП чтения, вставки, обновления и удаления записей, вызываемые в дальнейшем клиентской частью). Приемуществ у этого подхода масса, но есть одна проблема. В случае использования прямого доступа к данным таблицы возможно обновить только одно поле записи используя конструкцию типа UPDATE tablename SET fieldname=@newvalue WHERE id=@id оставив остальные поля записи нетронутыми. При использовании SUID, этой операции соответствует вызов UPDATE процедуры соответствующей таблицы: EXEC tablename_update @id, @fieldname, .... Так вот дело в том, что список параметров этой процедуры - список ВСЕХ полей несущей таблицы (потенциально может меняться любое из полей), и чтобы вызвать процедуру нужно указать ВСЕ параметры (т.е. значения ВСЕХ полей обновляемой записи). Но мне не нужно изменять ВСЕ поля, нужно изменить только одно ! Как отделить поля подлежащие обновлению от остальных ? Как Вы организуете свои SUID процедуры ?
...
Рейтинг: 0 / 0
SUID процедуры
    #34640168
Ivan A Kostko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добавить какое нить значение поумолчанию и в случае, если у поля в замену идет такое значение, то не изменять его. А можно с клиента переписывать все значения - измененные и неизмененные.
...
Рейтинг: 0 / 0
SUID процедуры
    #34640307
Bogdanov Andrey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
bpostПриемуществ у этого подхода масса,

А нельзя ли поподробнее про преимущества? Но именно у описанного подхода: "для каждой из таблиц пишутся ХП чтения, вставки, обновления и удаления записей, вызываемые в дальнейшем клиентской частью". Я пока только недостатки вижу.
...
Рейтинг: 0 / 0
SUID процедуры
    #34640335
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
bpostЧасто при работе с БД используется технология организации доступа к данным таблиц используя т.н. SUID процедуры
Есть такая глупость.

bpostПриемуществ у этого подхода
Только одно: он наиболее понятен тупому мозгу. В остальном исключительно недостатки. Один из этих недостатков Вы описываете.
...
Рейтинг: 0 / 0
SUID процедуры
    #34640569
2b&2b
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Только одно: он наиболее понятен тупому мозгу. В остальном исключительно недостатки. Один из этих недостатков Вы описываете.

А с точки зрения построения систем по архитектуре DB <-> AppServer <-> Client ?
...
Рейтинг: 0 / 0
SUID процедуры
    #34640692
Bogdanov Andrey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2b&2b

А с точки зрения построения систем по архитектуре DB <-> AppServer <-> Client ?

Большинсиво из видимых мне недостатков suid процедур никак не исчезают при вставке между СУБД и клиентом дополнительного звена, а некоторые даже проявляются ярче.
Ну а преимуществ пока никто не назвал.
...
Рейтинг: 0 / 0
SUID процедуры
    #34640863
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2b&2bА с точки зрения построения систем по архитектуре DB <-> AppServer <-> Client ?
Никакой разницы. Точнее, пожалуй, так: если AppServer и так плохо работает с DB, то CRUD-процедуры картину не испортят, в остальном - никакой разницы.
...
Рейтинг: 0 / 0
SUID процедуры
    #34640971
Один
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarerТолько одно: он наиболее понятен тупому мозгу. В остальном исключительно недостатки. Если смотреть на подход как на таковой, то да. Если смотреть на общее решение работы с базой то тут всплывает фактор "безобразно, зато единообразно"

Сейчас у меня в проекте есть некий мэппер, который умеет мэпить объект на параметры ХП. Научить его работать напрямую с таблицами можно, конечно, но зачем ?

Подчеркиваю, я

не являюсь сторонником концепции "все на процедурах !"
не являюсь поклонником ORM

Однако используя и то и то я не заметил сколь либо серьезных недостатков, равно как и достоинств.

К bpost
Либо обновляются все поля, что не есть проблема чаще всего. Либо пишите хранимую, обрабатывающую только нужные вам параметры в той комбинации, как вам этого хочется. Либо эксперементируйте с динамическим SQL
...
Рейтинг: 0 / 0
SUID процедуры
    #34641212
Bogdanov Andrey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Один softwarerТолько одно: он наиболее понятен тупому мозгу. В остальном исключительно недостатки. Если смотреть на подход как на таковой, то да. Если смотреть на общее решение работы с базой то тут всплывает фактор "безобразно, зато единообразно"

Сейчас у меня в проекте есть некий мэппер, который умеет мэпить объект на параметры ХП. Научить его работать напрямую с таблицами можно, конечно, но зачем ?

А зачем вы свой мэппер писали? И что мешало сразу написать мэппер, работающий с таблицами?
То есть кроме того, что "мы уже так сделали" никаких других преимуществ назвать нельзя?
...
Рейтинг: 0 / 0
SUID процедуры
    #34641359
Один
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Bogdanov AndreyА зачем вы свой мэппер писали? Откуда вы взяли, что мы писали мэппер ? Bogdanov AndreyИ что мешало сразу написать мэппер, работающий с таблицами? Мешало то, что мы мэппер не писали.
Bogdanov AndreyТо есть кроме того, что "мы уже так сделали" никаких других преимуществ назвать нельзя? С чего вы взяли, что я говорю о каких-то преимуществах ?

Поясняю.
Мы нашли устраивавшее нас решение, особенностью которого было то, что оно (без доработок) позволяло работать только через ХП. В ходе эксплуатации выяснилось, что в устранении этого "недостатка" необходимости нет. Если бы мы почувствовали сколь-либо существенные неудобства, то доработали бы мэппер.

Как контр-пример, мэппер, который умеет работать ТОЛЬКО напрямую с таблицами пришлось бы дорабатывать наверняка.
...
Рейтинг: 0 / 0
SUID процедуры
    #34641368
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ОдинЕсли смотреть на общее решение работы с базой то тут всплывает фактор "безобразно, зато единообразно"
Согласен, всплывает. В графе "недостатки".

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

- А метро быстрее!
- А мерседес круче!
- А мне пешком нравится!

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

ОдинСейчас у меня в проекте есть некий мэппер, который умеет мэпить объект на параметры ХП. Научить его работать напрямую с таблицами можно, конечно, но зачем ?
Во-первых, Вы в этой фразе предлагаете согласиться с логической ошибкой. "Отказ от тупых процедур" - вовсе не обязательно "напрямую с таблицами", и не стоит приплетать сюда эту "прямую работу" - тут же появятся личности, которые "не умеют готовить" и обсуждение превратится в ликбез на совершенно другую тему.

Во-вторых, суть именно в вопросе "работать единообразно или эффективно". Судя по последним фразам Вашего письма, Вы согласны с тем, что "одна простая процедура" - не всегда удовлетворит потребности. Давайте смотреть, что мы имеем в этом случае. Предположим, что у нас есть, например, три метода, которые должны применяться в приложении для достаточно качественной работы с БД. "Естественный" вариант - научить им маппера, сделать в нем соответствующие настройки или логику выбора и наслаждаться. Какие другие варианты?..

Вы, собственно, предлагаете: если нам нужно применить метод2 или метод3, давайте обернем вызов соответствующего кода в код, соответствующий методу1. Что же в этом хорошего? Ровно одно: обертки, может быть, будет писать кто-то другой. Сложность никуда не девается; просто вместо того, чтобы реализовать ее в одном месте, Вы предлагаете размазать ее по всем местам, где она потребуется. Неизбежно появится дублирование кода (поскольку очень похожие вещи придется реализовывать в куче мест), в самом лучшем случае - сформируется еще некоторое "оберточное API". Эффективность от того не улучшится - конечно, и упадет несильно, но сколько-то ресурсов заберет совершенно напрасно. А самое главное - таким образом мы удалимся от главной цели: легко и просто писать бизнес-функции.

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

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

ОдинОднако используя и то и то я не заметил сколь либо серьезных недостатков, равно как и достоинств.
Главный недостаток - никто не будет писать эти обертки. Будут писать тупые процедуры, делающие на порядок больше ввода-вывода, чем нужно, а потом кричать про "сервера БД плохо масштабируются, нужна многозвенка".
...
Рейтинг: 0 / 0
SUID процедуры
    #34641455
Bogdanov Andrey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ОдинОткуда вы взяли, что мы писали мэппер ?
...
Мешало то, что мы мэппер не писали.
...
С чего вы взяли, что я говорю о каких-то преимуществах ?

Прошу прощения, если неправильно вас понял. Мне показалось, что вы выступили на стороне той точки зрения, что работать через ХП - хорошо. Ну нет, так нет.
Мне, действительно, было бы интересно услышать хоть что-то о преримуществах такого подхода. А то про него многие говорят. Жаль, что вы не апологет процедур.
...
Рейтинг: 0 / 0
SUID процедуры
    #34641583
Один
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarer Извините, как-то очень много букв, но нить ваших рассуждений я так и не смог понять :(

Бог с ним, тема не настолько интересная, чтобы пять страниц выяснять кто и что имел ввиду.

Все что я хотел сказать в данном топике: я не наблюдаю никаких особенных ужасов при использовании действительно не очень красивого подхода "все через ХП"

Хотя теоретически они, ужасы, есть.

В целом - все фигня, главное пчелы. Архитектура приложения вообще не так важна, как это кажется программистам
...
Рейтинг: 0 / 0
SUID процедуры
    #34641686
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ОдинБог с ним, тема не настолько интересная, чтобы пять страниц выяснять кто и что имел ввиду.
"Безобразно, но единообразно" - не достоинство, ни вообще, ни в данном случае.

ОдинВсе что я хотел сказать в данном топике: я не наблюдаю никаких особенных ужасов при использовании действительно не очень красивого подхода "все через ХП"

Хотя теоретически они, ужасы, есть.
Красота - категория абстрактная. Я предпочитаю удобство; если мне нужно что-то сделать, к API один вопрос: "можно сделать" или "надо извращаться".

"Я не наблюдаю" - сами понимаете, флеймово-уязвимая позиция.
...
Рейтинг: 0 / 0
SUID процедуры
    #34641943
Один
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarer"Безобразно, но единообразно" - не достоинство, ни вообще, ни в данном случае. Ну это как сказать. Я не хотел отвечать в первый раз, но раз уж зацепились..
Разнообразие выбора - это не достоинство само по себе. Важно что это разнообразие обеспечивает. В идеальном случае должн быть один-единственный вариант, который удовлетворит всех. С одной стороны.
С другой, при выборе архитектуры решения мы не стремимся удовлетворить прихоти программистов (я хочу пешком, а я на мерседесе), ведь так ? Мы стремимся найти оптимальное решение каких-то проблем. Опять таки, идеально, если это будет одно, _единое_ решение.

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

Я каждый день езжу на машине по мосту через речку. А вернее стою в пробке на нем. По этому же мосту проходит метро и еще тротуары есть. С моей точки зрения автомобилиста метро надо убрать и тротуары тоже. И сделать еще 3 полосы. Мне нужно единообразие. На ор других мне в общем то наплевать. Так что все в порядке с человеком, разнообразие "вообще" ему не нужно, ему нужно чтобы был устраивающий его вариант.

softwarer"Я не наблюдаю" - сами понимаете, флеймово-уязвимая позиция. Ну я считаю, что она честная по крайней мере. Уязвимая сторона всех этих рассуждений о пользе-вреде какой-либо технологии заключается в том, что на форуме она рассматривается в отрыве от всего остального. Легко выдрать какой-то кусок и теоретически порассуждать о его достоинствах-недостатках. И можно много всего понапридумывать. Поэтому я и говорю, что я не наблюдаю, хотя вполне возможно что я не вижу полной картины или недостатки нивелируются чем-то или весь процесс именно нашей разработки не приводит к ним.

Что вижу, о том и пою.
...
Рейтинг: 0 / 0
SUID процедуры
    #34642015
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ОдинРазнообразие выбора - это не достоинство само по себе.
Согласен. Важную роль в рассмотрении играет "безобразно".

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

Ну а к сказанному ранее, кстати: Вы предлагали вместо [единообразный интерфейс маппера] - [разнообразные реализации] делать [единообразный интерфейс маппера] - [единообразный интерфейс ХП] - [разнообразные реализации]. Смысла в этом я пока что не вижу, просто лишнее звено.

ОдинНу я считаю, что она честная по крайней мере.
Безусловно. Я просто отметил, что он... неконструктивен, что ли. Если начинать разбирать, уйдем в стандартные флеймы, чего не хочется, а в таком виде.... допустим, Вы скажете: "я не видел слона". Я отвечу: "А я не видел жирафа". И все, поговорили, но пользы с того...
...
Рейтинг: 0 / 0
SUID процедуры
    #34642039
Sergey Tokarev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Одна из возможностей хранимых процедур - это инкапсуляция.

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

Вторая (и не последняя) возможность - это включение процедурных расширений SQL.

Названное выше - это отнюдь не преимущества или недостатки, а всего лишь возможности. Использовать их или нет - это вопрос другой. Но ежели принято решение держать бизнес-логику в СУБД, то процедуры, ИМХО, - это более предпочтительный подход.
...
Рейтинг: 0 / 0
SUID процедуры
    #34642090
Один
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarerНу а к сказанному ранее, кстати: Вы предлагали вместо [единообразный интерфейс маппера] - [разнообразные реализации] делать [единообразный интерфейс маппера] - [единообразный интерфейс ХП] - [разнообразные реализации]. Смысла в этом я пока что не вижу, просто лишнее звено. Я наверное как то плохо сформулировал. Я не предлагал такое решение. Я не агитирую за него. Я его описал и сказал, что ничего страшно плохого не заметил.
softwarerБезусловно. Я просто отметил, что он... неконструктивен, что ли. Если начинать разбирать, уйдем в стандартные флеймы, чего не хочется, а в таком виде.... допустим, Вы скажете: "я не видел слона". Я отвечу: "А я не видел жирафа". И все, поговорили, но пользы с того... А мы узнаем что бывает слон и жираф. Для меня это польза. А иначе получается что мы описываем абстрактное животное, толстое и с длинной шеей. И начинаем придумывать как оно живет и питается. Хотя это интереснее, конечно
...
Рейтинг: 0 / 0
SUID процедуры
    #34642314
Bely
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sergey TokarevОдна из возможностей хранимых процедур - это инкапсуляция.

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

Если добавляются поля, которые надо выносить в UI - то здесь весь выигрыш пропадает.

Sergey TokarevВторая (и не последняя) возможность - это включение процедурных расширений SQL. VIEW + Instead of trigger
Нужны в особо изощренных случаях.

Sergey TokarevНазванное выше - это отнюдь не преимущества или недостатки, а всего лишь возможности. Использовать их или нет - это вопрос другой. Но ежели принято решение держать бизнес-логику в СУБД, то процедуры, ИМХО, - это более предпочтительный подход.Не путайте бизнес логику с элементарным сохранением данных.
...
Рейтинг: 0 / 0
SUID процедуры
    #34642318
bpost
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Благодарю всех за насыщенные комментарии :)

По поводу преимуществ SUID подхода - для меня важны два:

1) Возможность организовать гибкое разделение доступа пользователей к данным.
Допустим, что необходимо ограничить "видимость" данных для пользователя записями относящимися к его подразделению и имеющими сумму контракта не более $10000, находящимися в статусе "подготовлено", расчетный /ХП/ коэффициент риска для которых не превышает 0,85. (Примерчик простоват, реально критерии бывают и посложнее). Средствами управления доступа встроенными в СУБД (permissions) как правило можно ограничить доступ к таблице или ее полям, но не к записям (тем более по достаточно сложным критериям). Эту задачу можно решить А) Накладывая указанные ограничения в SQL SELECT запросе на клиенте; Б) Фильтруя записи в AS; В) В SELECT процедуре SUID. Приемущество подходов Б) и В) в том, что при правильно настроенных permissions клиент не сможет получить закрытые для него данные никаким способом (включая ISQL). В случае, если использование AS в ИС не планируется, то SELECT процедура - неплохой выход. Аналогично, сложные ограничения доступа можно накладывать и процедурах удаления и изменения записей. (Да и вероятность того, что умный/зловредный юзер наберет в ISQL "DELETE FROM tablename" исключается).

2) Изоляция клиенских приложений от деталей структуры БД. В этом смысле SUID процедуры могут действовать подобно интерфейсам (контрактам) ЯП общего назначения, позволяя изменять детали реализации БД гарантированно изолируясь от клиенских приложений использующих ее.

На самом и 1) и 2) можно реализовать и в AS, и в SUID процедурах но, повторяю, не всегда есть необходимость строить AS для этого, тем более что все это можно решить средствами СУБД.

Конечно есть и минусы (см. посты выше); основной ИМХО - снижение производительности.

Теперь по теме топика :)
Пришел к выводу, что в UPDATE процедуры придется добавлять дополнительный параметр (BITMASK) с перечнем измененных полей (изменять все не катит).

Еще раз всем спасибо :)
...
Рейтинг: 0 / 0
SUID процедуры
    #34642351
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
bpost1) Возможность организовать гибкое разделение доступа пользователей к данным.
Процедуры для этого сугубо не обязательны.

bpostЭту задачу можно решить
В том числе способами, которые Вы забыли упомянуть.

bpostПриемущество подходов Б) и В) ..
И не только их...

bpost(Да и вероятность того, что умный/зловредный юзер наберет в ISQL "DELETE FROM tablename" исключается).
Хм. Такое впечатление, что Вы попали в ту самую упомянутую выше логическую ошибку "либо тупые процедуры, либо прямой доступ".

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

bpostПришел к выводу, что в UPDATE процедуры придется добавлять дополнительный параметр (BITMASK) с перечнем измененных полей (изменять все не катит).
Плохое решение, имхо, причем со всех точек зрения, начиная с идеологической и кончая сугубой техникой. Для начала Вам придется громоздить этакий генератор sql-я, либо копируя по процедурам прорву очень похожего кода, либо натыкаясь на недостаточность серверного языка для решения этой задачи. Когда справитесь с этой задачей, пойдут проблемы динамического sql.
...
Рейтинг: 0 / 0
SUID процедуры
    #34642387
bpost
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 softwarer:
softwarerДля начала Вам придется громоздить этакий генератор sql-я, либо копируя по процедурам прорву очень похожего кода, либо натыкаясь на недостаточность серверного языка для решения этой задачи. Когда справитесь с этой задачей, пойдут проблемы динамического sql

Не думаю, шаблоны SUID процедур форируются PowerDesigner-ом, ну а от реализации логики доступа все равно не уйдешь. Мне проще делать это на языке ХП.

По поводу остального: разумеется использование SUID - не единственный подход, но это возможный подход для реализации комплексной логики доступа.

softwarerВ том числе способами, которые Вы забыли упомянуть - ну разумеется :) нельзя объять необъятного (С).
softwarerВпрочем, и само по себе желание - отправдано только с точки зрения сугубых теоретиков
Изоляция звеньев, формальные контракты между ними необходимы в многоуровневой ИС, иначе может случиться, что изменение реализации звена 1 приведет к неработоспособности звеньев 2,3,4... , которые, возможно, разрабатываются не Вами (или, упаси Господи, вообще уже не сопровождаются разработчиком :)).
...
Рейтинг: 0 / 0
SUID процедуры
    #34642435
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
bpostНе думаю, шаблоны SUID процедур форируются PowerDesigner-ом,
Угу, уже требуется костыль. Все больше тупого кода, все труднее искать и сопровожать "нетупой".

bpostПо поводу остального: разумеется использование SUID - не единственный подход, но это возможный подход для реализации комплексной логики доступа.
Возможный. Но это не синоним "достаточно качественный".

bpost softwarerВ том числе способами, которые Вы забыли упомянуть - ну разумеется :) нельзя объять необъятного (С).
Разумеется. Однако, рассуждения, который Вы приводите сразу после этого, как раз и пытаются заняться этим. Грубо говоря, из факта "один плохой способ лучше другого плохого способа" ничего особенного не следует.

bpostИзоляция звеньев, формальные контракты между ними ....
Простите, у меня нет времени подробно рассказывать о разнице между теорией и практикой. Буквально в два слова: во-первых, СУБД сама по себе является движком высокоуровневых абстракций, таких как view и table function, и они обеспечивают все потребности "изоляции" вкупе с много лучшим качеством других операций. Во-вторых, "изменения", затрагивающие БД, можно разделить на две больших группы, из каждой из которых приведу по примеру:

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

2. Появились иностранные сотрудники, зарплата которым перечисляется в национальных валютах. Это приведет к необходимости изменений во многих компонентах; в БД появятся дополнительные поля и скорее всего логика, на клиенте - дополнительные колонки и настройки, интерфейс с банком дополнится валютой перечисления и так далее.

В целом, подход "только ХП" не обеспечивает практически более высокой независимости звеньев по сравнению с подходом "разумно использовать DML с клиента".
...
Рейтинг: 0 / 0
SUID процедуры
    #34642467
Bogdanov Andrey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну буду подробно комментировать вопросы разделения доступа, про это и sofwarer ответил, а вот про "изоляцию" хочется добавить пару слов.

Вот это
bpost2) Изоляция клиенских приложений от деталей структуры БД. В этом смысле SUID процедуры могут действовать подобно интерфейсам (контрактам) ЯП общего назначения, позволяя изменять детали реализации БД гарантированно изолируясь от клиенских приложений использующих ее.
никак не увязывается у меня вот с этим:
bpostдля каждой из таблиц пишутся ХП чтения, вставки, обновления и удаления записей, вызываемые в дальнейшем клиентской частью
Как я ж тут изоляция, если клиентское приложение все равно знает обо всех таблицах и их колонках, просто вместо удобного, выработанного годами интерфейса к ним имеет некую неполноценную подпорку?

Sergey TokarevНо ежели принято решение держать бизнес-логику в СУБД, то процедуры, ИМХО, - это более предпочтительный подход.
Не надо путать SUID процедуры и бизнес-логику. SUID процедуры никакого отношения к бизнес-логике не имеют. Это всего лишь некий интерфейс.
Никто не спорит процедуры - вещь удобная и отказываться от них нет никакого резону, но использовать их надо когда надо. А добровольно выкручивать себе руки, запрещая использовать удобный SQL-интерфейс, а потом героически решать возникающие проблемы- это, извините, не нормально.
...
Рейтинг: 0 / 0
SUID процедуры
    #34642521
bpost
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 softwarer: Топик получается интересным.

2 all: Хорошо, оставим пока в покое SUID. Задача остается той же: организовать ограничение доступа пользователя к записям таблицы по некоторому сложному критерию (возможно реализованному в ХП), причем сделать это таким образом, чтобы клиент подключившись к БД под своей учетной записью НИКАКИМИ средствами (ни штатными ни нештатными) не смог "увидеть" или "изменить" "запретные" для него записи. Решение с использованием промежуточного AS оставим за скобками (тут все понятно). СУБД: MS Sql Server 2000 или Interbase/Firebird (на выбор). Как бы Вы решили эту задачу средствами СУБД, и чем Ваше решение принципиально отличается в лучшую сторону от SUID подхода ?
...
Рейтинг: 0 / 0
25 сообщений из 101, страница 1 из 5
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / SUID процедуры
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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