powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / SUID процедуры
101 сообщений из 101, показаны все 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
SUID процедуры
    #34643303
egorych
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
тынц по моему неплохо всё расписано здесь
...
Рейтинг: 0 / 0
SUID процедуры
    #34643415
Alexey Kudinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
egorych тынц по моему неплохо всё расписано здесьMS SQL Server 2005 (codename “Yukon”) также будет поддерживать возможности RLS. Подробная документация на этот механизм еще не опубликована. Точно известно лишь то, что в T-SQL будут введены специальные конструкции. Судя по имеющимся документам, предикаты безопасности (RULES) будут создаваться как отдельные сущности, а специальные версии команд grant и revoke будут назначать эти предикаты пользователям и группам. а как славно начиналось :)
...
Рейтинг: 0 / 0
SUID процедуры
    #34643508
Bely
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
bpost2 all: Хорошо, оставим пока в покое SUID. Задача остается той же: организовать ограничение доступа пользователя к записям таблицы по некоторому сложному критерию (возможно реализованному в ХП), причем сделать это таким образом, чтобы клиент подключившись к БД под своей учетной записью НИКАКИМИ средствами (ни штатными ни нештатными) не смог "увидеть" или "изменить" "запретные" для него записи. Решение с использованием промежуточного AS оставим за скобками (тут все понятно). СУБД: MS Sql Server 2000 или Interbase/Firebird (на выбор). Как бы Вы решили эту задачу средствами СУБД, и чем Ваше решение принципиально отличается в лучшую сторону от SUID подхода ?СУБД Oracle, FGAC или VIEW - зависит от конкретной задачи.
...
Рейтинг: 0 / 0
SUID процедуры
    #34643573
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
bpostРешение с использованием промежуточного AS оставим за скобками (тут все понятно).
В том числе то, что оно часто убивает на корню решение этой задачи, позволяя спокойно забраться в базу мимо AS и более того, прямо-таки требуя открыть такой путь - например, для подключения генераторов отчетов.

bpostСУБД: MS Sql Server 2000 или Interbase/Firebird (на выбор). Как бы Вы решили эту задачу средствами СУБД, и чем Ваше решение принципиально отличается в лучшую сторону от SUID подхода ?
К сожалению, по-прежнему нет времени на подробный ответ, кратко: решил бы средствами "именованных запросов на сервере", то есть view для любых серверов и/или того, что в MSSQL называется table function (как всегда, они проявили умение выбрать название, совершенно не соответствующее сути, но "маркетинговое". Обратите внимание, я не отношу table function к "ХП", поскольку общего между ними - что между рыбой и сковородкой. Table function - это "параметризованный view").

Общий недостаток ХП-решений по сравнению с этим подходом - они не могут хорошо участвовать в дальнейших SQL-манипуляциях. Скажем, допустим, у меня есть таблицы tab_p и tab_q, а также хранимки sp_p и sp_q, выбирающие из них данные. Предположим, у меня появилась потребность вывести на клиенте следующие данные (и ничего более, например, пользователь захотел видеть на рабочем месте пару новых графиков)

Код: plaintext
1.
2.
select p.*, q.* from sp_p p, sp_q q where p.id = q.id

select p.* from sp_p where date_start >= trunc (current_date, 'MM') and location_id = :location_id

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

Далее, в случае MSSQL2000 наблюдается большая проблема с динамическим SQL - он выполняется с правами вызывающего. Попробуйте, скажем, решить хранимкой следующую задачу: есть таблица, которая может фильтроваться по десяти полям в разничных комбинациях. Для некоторых полей возможна передача списков значений (для проверки в IN), для строковых сравнение может идти как по '=', так и по 'like', даты могут задаваться либо точным значением, либо диапазоном. Решить ее динамическим SQL Вы не сможете (поскольку для этого потребуется давать пользователю грант на доступ к таблице), придется писать накрученный запрос со смыслом "если задано вот это условие, то фильтровать вот так". Добиваться эффективности от таких запросов - очень тяжелое и малоосмысленное занятие; они будут неудобны в сопровождении и плохи по скорости. А чтобы "добить" Вас - подумайте над задачей "в зависимости от того, задано ли условие фильтрации, нужно подключать либо не подключать в запрос еще одну таблицу".

Итого, в целом мы получаем следующее: мы не имеем возможности эффективно манипулировать данными из хранимок ни снаружи (после их вызова), ни внутри (передавая ограничения как параметры). Из чего следует вывод: единственный путь работать эффективно - делать по хранимке на каждый запрос, который только есть в клиенте. Что убивает ту самую независимость, которой мы пытаемся достичь! Сервер с клиентом оказываются связанными аки симские близнецы, можно уверенно сказать, что почти любая модификация потребует изменений во всех компонентах системы. Надеюсь, не надо объяснять, чем это плохо.

О динамическом SQL в интербейсе я знаю очень мало, даже не знаю, есть ли он :)

В общем скажу так: насколько я знаю, в плане решения "возврата датасетов из ХП" Oracle, с которым я работаю, заметно превосходит и MSSQL2000, и Interbase. Но даже при этом - практика остается плохой, хуже чем view.

Если говорить о недостатках view - они есть, но не превосходят недостатков ХП.
...
Рейтинг: 0 / 0
SUID процедуры
    #34643645
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
bpost пишет:
> есть одна проблема. В случае использования прямого доступа к данным
> таблицы возможно обновить только одно поле записи используя конструкцию
> типа UPDATE tablename SET fieldname=@newvalue WHERE id=@id оставив
> остальные поля записи нетронутыми. При использовании SUID, этой операции
> соответствует вызов UPDATE процедуры соответствующей таблицы: EXEC
> tablename_update @id, @fieldname, .... Так вот дело в том, что список
> параметров этой процедуры - список ВСЕХ полей несущей таблицы
> (потенциально может меняться любое из полей), и чтобы вызвать процедуру
> нужно указать ВСЕ параметры (т.е. значения ВСЕХ полей обновляемой
> записи). Но мне не нужно изменять ВСЕ поля, нужно изменить только одно !

Да блин, ну напиши несколько процедур для update , каждая со своим набором
полей. Если нужно все - со всеми. Если нужно часть - только с частью.

> Как отделить поля подлежащие обновлению от остальных ? Как Вы
> организуете свои SUID процедуры ?


Мы организуем их как логические операции в терминах предметной области.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
SUID процедуры
    #34643673
Фотография iscrafm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarer bpostРешение с использованием промежуточного AS оставим за скобками (тут все понятно).
В том числе то, что оно часто убивает на корню решение этой задачи, позволяя спокойно забраться в базу мимо AS и более того, прямо-таки требуя открыть такой путь - например, для подключения генераторов отчетов.

интересно каким образом? AS обеспечивает централизованный доступ к БД. Это 1 пользователь. Если в базу кто-то лазит мимо AS, то разбираетесь с доступом. И зачем что-то открывать для генератора отчетов, если он тоже "ходит" через AS? Я про сервер приложений... Может имелся ввиду конечно совсем другой AS. Интересно еще и то, что наворачиваете умопомрачительную логику, SUI(ci)D-ные процедуры, но при этом ругаете трехзвенку, в которой подобные задачи решаются элементарно. Трехзвенок что-ли не видели?
...
Рейтинг: 0 / 0
SUID процедуры
    #34643821
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iscrafmинтересно каким образом? AS обеспечивает централизованный доступ к БД. Это 1 пользователь.
Именно. Поэтому любая дырка в AS и любой путь мимо AS - это ЧП высшей категории, "злоумышленник получил полный доступ".

iscrafmЕсли в базу кто-то лазит мимо AS, то разбираетесь с доступом.
Ну да, ну да. Уже хорошо видно, как "AS элементарно решает эту задачу".

iscrafmИ зачем что-то открывать для генератора отчетов, если он тоже "ходит" через AS?
Плюньте в лицо тому, кто Вам сказал такую глупость.

Впрочем, с любопытством понаблюдаю, как Вы объясните например Oracle Discoverer-у, что он должен ходить к данным через ваш AS.

iscrafmно при этом ругаете трехзвенку, в которой подобные задачи решаются элементарно. Трехзвенок что-ли не видели?
Не видел, писал. И потому рассказы про "элементарно" вызывают нездоровый смех, примерно такой же, какой ранее вызывали аналогичные рассказы "а наш клиент всегда логинится под одним пользователем, а права проверяет внутри себя".
...
Рейтинг: 0 / 0
SUID процедуры
    #34643823
Один
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 iscrafm
А вы RLS на app server-e делаете ?
И отчеты на нем же ?
...
Рейтинг: 0 / 0
SUID процедуры
    #34643824
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZivМы организуем их как логические операции в терминах предметной области.
Я бы только отметил, что именно поэтому это не SUID-процедуры. Не тупой автоматический код, а "умные" операции, отвечающие постановке задачи.
...
Рейтинг: 0 / 0
SUID процедуры
    #34644006
bpost
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexey Kudinovа как славно начиналось :)
-1 компании Microsoft :)

BelyСУБД Oracle, FGAC
Да, это вешчь :). Но денег наверное стоит немеряно (как сама СУБД, так и минимально приемлимое оборудование ее эксплуатации). Да и входит ли Oracle Label Security в стандартный набор расширений ?

softwarerОбщий недостаток ХП-решений по сравнению с этим подходом - они не могут хорошо участвовать в дальнейших SQL-манипуляциях

Принимается. Наверно будет удобнее решить ту же задачу используя представления + INSTED OF триггеры. Но все равно - прощай индексы в JOINах.

авторДа блин, ну напиши несколько процедур для update , каждая со своим набором
полей. Если нужно все - со всеми. Если нужно часть - только с частью.

Полагаю так делать не стоит Ж)

MasterZivМы организуем их как логические операции в терминах предметной области.

Да, это не SUID. Это операции/методы элементов предметной области.

2 iscrafm: Никто ведь не говорит, что AS - плохое решение. Просто не всегда есть необходимость его использовать.
...
Рейтинг: 0 / 0
SUID процедуры
    #34644071
Фотография iscrafm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarer iscrafmинтересно каким образом? AS обеспечивает централизованный доступ к БД. Это 1 пользователь.
Именно. Поэтому любая дырка в AS и любой путь мимо AS - это ЧП высшей категории, "злоумышленник получил полный доступ".

много наговорили, только о чем - непонятно. Если DBA дает доступ кому-то кроме сервера приложений, то это чья проблема? Предвижу ответ - сервера приложений, но подожду Вашего. :)



softwarer iscrafmЕсли в базу кто-то лазит мимо AS, то разбираетесь с доступом.
Ну да, ну да. Уже хорошо видно, как "AS элементарно решает эту задачу".

см. выше

softwarer iscrafmИ зачем что-то открывать для генератора отчетов, если он тоже "ходит" через AS?
Плюньте в лицо тому, кто Вам сказал такую глупость.
Впрочем, с любопытством понаблюдаю, как Вы объясните например Oracle Discoverer-у, что он должен ходить к данным через ваш AS.

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


softwarer iscrafmно при этом ругаете трехзвенку, в которой подобные задачи решаются элементарно. Трехзвенок что-ли не видели?
Не видел, писал. И потому рассказы про "элементарно" вызывают нездоровый смех, примерно такой же, какой ранее вызывали аналогичные рассказы "а наш клиент всегда логинится под одним пользователем, а права проверяет внутри себя".
softwarer, Ваши высказывания уже вызывают нездоровый смех. Не раз говорилось, что если у Вас не получилось по каким-то причинам сделать трехзвенку, то это не повод при любом упоминании о ней кривиться и кричать "must die".
...
Рейтинг: 0 / 0
SUID процедуры
    #34644116
Alexey Kudinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iscrafmА Вам для иллюстрации, каким образом отчетные системы ходят через сервер приложений к СУБД . А почему в ролике после нажатие на кнопку "Готово" в самом конце картинка принимает типичный вид "глубоко задумавшейся системы" да и остается такой ? Отчет не появляется. Этим же полностью снимается весь перезентационный эффект. Недоработка ИМХО
...
Рейтинг: 0 / 0
SUID процедуры
    #34644136
Фотография iscrafm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexey Kudinov iscrafmА Вам для иллюстрации, каким образом отчетные системы ходят через сервер приложений к СУБД . А почему в ролике после нажатие на кнопку "Готово" в самом конце картинка принимает типичный вид "глубоко задумавшейся системы" да и остается такой ? Отчет не появляется. Этим же полностью снимается весь перезентационный эффект. Недоработка ИМХО
Заметил Алексей, спасибо. Это последний фрейм почему-то таким получился. По кнопке готово прсто закрывается окно, никаких действий больше не выполняется.
...
Рейтинг: 0 / 0
SUID процедуры
    #34644169
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iscrafmмного наговорили, только о чем - непонятно.
Подумайте, может и поймете.

iscrafmЕсли DBA дает доступ кому-то кроме сервера приложений,
Не, не поймете.

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

iscrafmА Вам для иллюстрации, каким образом отчетные системы ходят через сервер приложений к СУБД . Может ролику поверите, а то все словам чьим-то :).
Ну и где там Oracle Discoverer? Правда, не уверен, что ваш ролик работает до конца - у меня он останавливается вот на этом кадре



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

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

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

iscrafmто это не повод при любом упоминании о ней кривиться и кричать "must die".
Поскольку это не первая косвенная ложь, которую Вы допустили в этом топике, предпочту ткнуть Вас носом: будьте так добры, покажите, где я при упоминании в этом топике "кричал must die" либо же публично принести извинения за ложь.
...
Рейтинг: 0 / 0
SUID процедуры
    #34644241
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
bpost BelyСУБД Oracle, FGAC
Да, это вешчь :). Но денег наверное стоит немеряно (как сама СУБД, так и минимально приемлимое оборудование ее эксплуатации). Да и входит ли Oracle Label Security в стандартный набор расширений ?
Во-первых, не стоит путать FGAC и Label Security, это разные вещи. Во-вторых, насчет минимально приемлимого оборудования.... скажем так, пару лет назад одним из серверов моего (тогда) отдела был гигагерцовый целерон с 256 Мб памяти.

bpostПринимается. Наверно будет удобнее решить ту же задачу используя представления + INSTED OF триггеры. Но все равно - прощай индексы в JOINах.
instead - уже не обязательно, обновление вполне неплохо идет и через ХП, я здесь предпочитаю подход, озвученный MasterZiv . Возможность instead of конечно, можно использовать. Насчет индексов - не очень понял, наверное какая-нибудь конкретная ситуация, но скажу так: у вьюх как минимум есть шанс на оптимизацию "запроса в целом", а у независимо выполняемых запросов - ни малейшего.
...
Рейтинг: 0 / 0
SUID процедуры
    #34644303
Фотография iscrafm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarer iscrafmЕсли DBA дает доступ кому-то кроме сервера приложений,
Не, не поймете.
вполне возможно, что у вас права раздает вахтер, не знаю.

softwarerНу и где там Oracle Discoverer? Правда, не уверен, что ваш ролик работает до конца - у меня он останавливается вот на этом кадре
там его нет, интерфейс к нему не включен в список загружаемых . А еще там нет Crystal-а, досадааа!

softwarerкоторый как-то черезчур сбоен для финального, но то, что там показано, более похоже на неубедительную самоделку с экспортом.
Это о чем вообще, разговор поддержать? Кто сбоен и какой экспорт? Сами то поняли?

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

softwarer iscrafmНе раз говорилось, что если у Вас не получилось по каким-то причинам сделать трехзвенку,
Говорилось? И отчего же тогда только в прошлом письме Вы спрашивали про мой опыт? Временно забыли?
не забыл, поэтому и интересуюсь, на основании чего вы делаете множество пространных высказываний.

softwarer iscrafmто это не повод при любом упоминании о ней кривиться и кричать "must die".
Поскольку это не первая косвенная ложь, которую Вы допустили в этом топике, предпочту ткнуть Вас носом: будьте так добры, покажите, где я при упоминании в этом топике "кричал must die" либо же публично принести извинения за ложь.
Извините, дословно "must die" не кричали.
...
Рейтинг: 0 / 0
SUID процедуры
    #34644348
Фотография ChA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarerTable function - это "параметризованный view"Поправлю, в MSSQL есть 2 вида табличных функций: inline - это то, о чем Вы упомянули выше, и multistatement, который также возвращает выборку, но логика внутри может быть почти такой же сложной, как в ХП. И может быть включена в запрос также, как и любая другая таблица. Именно в этом смысле функции называются табличными. Если нетрудно, можете озвучить Ваш вариант определения табличных функций ?
softwarerДалее, в случае MSSQL2000 наблюдается большая проблема с динамическим SQL - он выполняется с правами вызывающего.Может уже пора забывать о 2000 ? Он уже не очень актуален, на дворе середина 2007, и практически все новые проекты реализуются на базе 2005 версии, где эта проблема решена. Впрочем, как множество других...


bpostНаверно будет удобнее решить ту же задачу используя представления + INSTED OF триггеры. Но все равно - прощай индексы в JOINах .Совсем необязательно. И вообще, если уж Вы пытаетесь найти решение для конкретной СУБД, то лучше его искать на профильном форуме, а не здесь. Возможно, там Вам будут предложено много других подходящих вариантов, особенно, если сможете сформулировать требования более четко.
...
Рейтинг: 0 / 0
SUID процедуры
    #34644431
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iscrafmтам его нет, интерфейс к нему не включен в список
Уже что-то. Итак, эксперимент с попыткой подключиться генератором отчетов к вашим данным показал, что AS тут не помощник. Что, собственно, уже доказывает то мое исходное утверждение, на которое Вы пытались возразить. Мало того, ни одного генератора отчетов в списке я не заметил (если Вы про тот список, который от сводной таблицы через FastReport до Excel). Если про другой, прошу дать более точные координаты, например ключевое слово для поиска.

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

iscrafmА еще там нет Crystal-а, досадааа!
С точки зрения Вашей аргументации - безусловно. Итак, Discoverer - это уже даже не разовый эффект, "только к нему и нет". Итого, если я сижу с генератором отчетов и хочу работать с вашими данными, ваш AS вместе с его механизмами RLS идет лесом, я правильно излагаю?

iscrafm softwarerкоторый как-то черезчур сбоен для финального, но то, что там показано, более похоже на неубедительную самоделку с экспортом.
Это о чем вообще, разговор поддержать? Кто сбоен и какой экспорт? Сами то поняли?
Не юродствуйте, судя по уровню, который Вы демонстрируете в разговоре, понимание этой фразы не должно вызывать у Вас проблем. На всякий случай проясню по пунктам.

"Кадр, который черезчур сбоен" - неужели этого недостаточно, чтобы ответить на вопрос "кто сбоен"? Поясняю: кадр. То изображение, которое приведено в сделанном мной снапшоте.

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

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

Да, кстати, я бы советовал вам поправить грамматическую ошибку во фразе " Запуск из web-страниц и flas-презентаций (iconsole://rundocument) " (и на будущее - настоятельно рекомендую прогонять тексты через проверку правописания) и учесть, что при просмотре в FireFox после этой строчки виден двойной промежуток (если мне не изменяет память, это одна из особенностей FireFox после <li>.

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

iscrafmИзвините, дословно "must die" не кричали.
Дословно - принято, теперь, в продолжение темы про Гильчиперчика, будьте так добры показать, где кричал не дословно, на аналогичных условиях.
...
Рейтинг: 0 / 0
SUID процедуры
    #34644446
Bogdanov Andrey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iscrafm А Вам для иллюстрации, каким образом отчетные системы ходят через сервер приложений к СУБД . Может ролику поверите, а то все словам чьим-то :).


Возможно, вы с softwarer'ом понимаете друг друга, но для посторонних поясните пожалуйста. Это ролик что демонстрирует? Взаимодействие написанного вами генератора отчетов с написанным вами сервером приложений?
...
Рейтинг: 0 / 0
SUID процедуры
    #34644474
Andreww
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 iscrafm

Bogdanov Andrey Возможно, вы с softwarer'ом понимаете друг друга, но для посторонних поясните пожалуйста. Это ролик что демонстрирует? Взаимодействие написанного вами генератора отчетов с написанным вами сервером приложений?

Присоединяюсь. Поясните пожалуйста, как через ваш сервере приложений будет работать Microstrategy, например.
...
Рейтинг: 0 / 0
SUID процедуры
    #34644490
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ChAПоправлю, в MSSQL есть 2 вида табличных функций: inline - это то, о чем Вы упомянули выше, и multistatement, который также возвращает выборку, но логика внутри может быть почти такой же сложной, как в ХП. И может быть включена в запрос также, как и любая другая таблица. Именно в этом смысле функции называются табличными. Если нетрудно, можете озвучить Ваш вариант определения табличных функций ?
Спасибо за уточнение, насколько я понимаю, это вопрос больше неточности моей терминологии. В моем представлении, "табличная функция - это функция, которая вычисляет и возвращает таблицу". Подчеркну, именно "вычисляет" - и в этом смысле, насколько я понимаю, это соответствует multistatement table function.

Я подчеркиваю принципиальную разницу этого варианта с вариантом inline, в котором возвращается не таблица, а "запрос". Механизм действия этих "функций" очень сходен с механизмом view, практически это "view с параметрами" и с моей точки зрения, так их и стоит называть - parametrized view. По крайней мере, если я правильно понимаю механику реализации этих функций в MSSQL.

ChA softwarerДалее, в случае MSSQL2000 наблюдается большая проблема с динамическим SQL - он выполняется с правами вызывающего.Может уже пора забывать о 2000 ?
Простите великодушно, но мой собеседник, ставя задачу, настаивал именно на 2000. Полагаете, с моей стороны было бы корректно забыть об этом? Более того, настаивал он не просто так, а чтобы отключить упоминания об RLS средствами СУБД - и мне кажется, было бы странно забыть об одном ликвидированном недостатке 2000-го и при этом не забывать о другом.
...
Рейтинг: 0 / 0
SUID процедуры
    #34644592
Фотография iscrafm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarer iscrafmтам его нет, интерфейс к нему не включен в список
Уже что-то. Итак, эксперимент с попыткой подключиться генератором отчетов к вашим данным показал, что AS тут не помощник. Что, собственно, уже доказывает то мое исходное утверждение, на которое Вы пытались возразить. Мало того, ни одного генератора отчетов в списке я не заметил (если Вы про тот список, который от сводной таблицы через FastReport до Excel). Если про другой, прошу дать более точные координаты, например ключевое слово для поиска.

Бред какой-то. Я не понимаю таких "высоких" мыслей.


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

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


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

мда... Ладно, скажу так: мы не производим ПО для создания демороликов. Если оно вам кажется сбойным, то давайте обсудим, какие есть хорошие несбойные утилиты для создания демороликов.
Не знаю про какой экспорт вы продолжаете упорно твердить, но попробую догадаться. Наверное про слова "Экспорт в Excel".. угадал? Интерфейс - это, например, когда генератору отчета передается на вход указание на набор данных, который он должен отработать.


softwarerДа, кстати, я бы советовал вам поправить грамматическую ошибку во фразе " Запуск из web-страниц и flas-презентаций (iconsole://rundocument) " (и на будущее - настоятельно рекомендую прогонять тексты через проверку правописания) и учесть, что при просмотре в FireFox после этой строчки виден двойной промежуток (если мне не изменяет память, это одна из особенностей FireFox после <li>.
ага, спасибо. обращу внимание. Наконец что-то дельное.
...
Рейтинг: 0 / 0
SUID процедуры
    #34644616
Фотография iscrafm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Bogdanov AndreyВозможно, вы с softwarer'ом понимаете друг друга, но для посторонних поясните пожалуйста. Это ролик что демонстрирует? Взаимодействие написанного вами генератора отчетов с написанным вами сервером приложений?
не понимаем
Ролик показывает как генератором отчетов подключаются к данным через централизованную точку входа: сервер приложений. Softwarer-у срочно понадобилось встроить коннект Discoverer-а не к его родному Applications Server , а к App Серверу Искры (зачем, не знаю. ну да ладно). Вполне возможно он не знает, что OD тоже работает с данными через сервер приложений. Вот в кратце суть разговора.
...
Рейтинг: 0 / 0
SUID процедуры
    #34644626
Фотография iscrafm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarer, не ругайте сильно за грамматическую ошибку. При написании слова вкратце , в предыдущем сообщении, дрогнула рука и случайно нажала на пробел.
...
Рейтинг: 0 / 0
SUID процедуры
    #34644678
Andreww
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iscrafmВполне возможно он не знает, что OD тоже работает с данными через сервер приложений.

Т.е. вы хотите сказать что для работы Discoverer-a с БД НЕОБХОДИМ сервер приложений ?
...
Рейтинг: 0 / 0
SUID процедуры
    #34644716
Фотография iscrafm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AndrewwТ.е. вы хотите сказать что для работы Discoverer-a с БД НЕОБХОДИМ сервер приложений ?
вроде того
...
Рейтинг: 0 / 0
SUID процедуры
    #34644722
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iscrafmБред какой-то. Я не понимаю таких "высоких" мыслей.
Слив номер раз (в этом посте). Но Вам стоило сделать это раньше, до того, как Вы сказали "не умеем".

iscrafmя на вскидку не отвечаю на такие вопросы. Не могу сказать, сколько это будет стоить, по той простой причине что не помню какие интерфейсы предоставляет OD. надеюсь понятно.
Я же сказал, что не особо сомневаюсь в ответе. Впрочем, если таки хотите попробовать - меня вполне устроит качественная характеристика, например

- бесплатно
- вряд ли больше $500
- скорее всего, от $500 до $5'000
- скорее всего, от $5'000 до $50'000
- ....

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

iscrafmмда... Ладно, скажу так: мы не производим ПО для создания демороликов.
Не стоит уводить разговор в сторону, а если пытаетесь, не стоит так грубо. Сбой упомянут только потому, что у меня было уверенности в том, что воспроизведение не обрывается на середине (а где-то дальше показано то взаимодействие, которое меня интересует).

iscrafmЕсли оно вам кажется сбойным, то давайте обсудим, какие есть хорошие несбойные утилиты для создания демороликов.
Не особо разбираюсь. Лично меня полностью устраивал HyperCam, но с этим Вам скорее всего в другой форум и к другим людям.

iscrafmНе знаю про какой экспорт вы продолжаете упорно твердить, но попробую догадаться.
Уже прогресс. Потом попробуйте прочитать и понять.

iscrafmНаверное про слова "Экспорт в Excel".. угадал?
Не только. Слова "Форма представления"..."Сводная таблица"..."Окончательная настройка формы представления" (или как там, не помню точно) очень похожи на внутренний генератор отчетов и совершенно не похожи на интерфейс внешнего генератора. Кроме меня, это отметили уже два человека, одному из которых Вы ответили демагогией.

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

iscrafmага, спасибо. обращу внимание. Наконец что-то дельное.
Учитывая, что не в первый и даже не во второй раз - пора брать деньги :)
...
Рейтинг: 0 / 0
SUID процедуры
    #34644723
Фотография ChA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarerВ моем представлении, "табличная функция - это функция, которая вычисляет и возвращает таблицу". Подчеркну, именно "вычисляет" - и в этом смысле, насколько я понимаю, это соответствует multistatement table function.Непонятное ограничение. Обе функции возвращают результат одного и того же типа, и, в общем случае, только по синтаксису вызова Вы никак не сможете определить, что там "у ей внутре", parametrized view или multistatement. Так почему же одну из них можно называть табличной, а другую нет ? Соответственно, не совсем понятно, почему свою трактовку понятия "табличная функция" Вы считате более правильной, чем трактовку MS.
softwarerПростите великодушно, но мой собеседник, ставя задачу, настаивал именно на 2000. Полагаете, с моей стороны было бы корректно забыть об этом?Виноват. Действительно, был невнимателен, со стороны bpost было условие на версию MSSQL. И, кстати, более чем странное. Вроде потенциально рассматривается новый проект, зачем привязываться к версии, которой уже больше 7 лет, которую и купить-то уже нельзя ? Впрочем, этот вопрос должен быть адресован уже не Вам.
...
Рейтинг: 0 / 0
SUID процедуры
    #34644725
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AndrewwТ.е. вы хотите сказать что для работы Discoverer-a с БД НЕОБХОДИМ сервер приложений ?
В первую очередь он хочет сказать, что AS Искры и AS Discoverer-а - одно и то же, во всяком случае взаимозаменяемы.
...
Рейтинг: 0 / 0
SUID процедуры
    #34644730
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iscrafmвроде того
Ну-ну :) Иллюстрация к классическому "смотрим в книгу"....
...
Рейтинг: 0 / 0
SUID процедуры
    #34644784
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ChAНепонятное ограничение.
Принципиально различная механика работы.

ChAОбе функции возвращают результат одного и того же типа, и, в общем случае, только по синтаксису вызова Вы никак не сможете определить,
В общем случае, только по синтаксису вызова

Код: plaintext
select * from p

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

ChAСоответственно, не совсем понятно, почему свою трактовку понятия "табличная функция" Вы считате более правильной, чем трактовку MS.
По двум причинам. Во-первых, потому что inline table function - это не "функция". Она не соответствует ни математическому понятию функции (как отображения множества входных данных на множество результатов), ни компьютерному (как "подпрограммы, возвращающей значение"). В гугле, кстати, мне понравилась одна фраза, хорошо иллюстрирующая это соображение:

Just like views, inline table functions are macros that are expanded into the query plan.

Надеюсь, разница между функцией и макросом понятна.

Во-вторых потому, что сколь мне изменяет память, они появились тогда, когда это словосочетание уже было занято и по свойственной Microsoft-у привычке тот начал использовать "уже известные слова" в "новом микрософтовском значении". Тут я правда не уверен, а за давностью лет докопаться до истины достаточно трудно, особенно в случае истории Sybase-реализаций.
...
Рейтинг: 0 / 0
SUID процедуры
    #34644795
Andreww
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iscrafmвроде того

Ню ню.

За пару лет работы (вернее мучений) с Discoverer-ом, не разу ни приходилось запускать ни Discoverer Plus ни Discoverer View (это те для которые на картинке слева), вполне хватает Discoverer Desktop и Discoverer Administrator (это те которые на картинке справа), а для них (сюрприз!) не нужен ни Oracle AS ни любой другой сервер приложений, какая бы там заменяемость ни была - хватает ораклового клиента.

Отсюда вывод :

- Для доступа к БД Discoverer МОЖЕТ обойтись без AS (любого)
- В такой конфигурации вся БЕЗОПАСНОСТЬ НА УРОВНЕ AS летит к чёрту, пользователя надо прописать, нужные права ему дать и за ними следить.

Так что рассказы про безопасность через AS\ПРОЦЕДУРЫ автоматом означает - невозможность использования сторонних средств или долгое ковыряние с их интеграцией (про заменяемость Oracle AS на нечто самописное было забавно, спасибо).
...
Рейтинг: 0 / 0
SUID процедуры
    #34644838
Фотография iscrafm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarer AndrewwТ.е. вы хотите сказать что для работы Discoverer-a с БД НЕОБХОДИМ сервер приложений ?
В первую очередь он хочет сказать, что AS Искры и AS Discoverer-а - одно и то же, во всяком случае взаимозаменяемы.
хорошая шутка. как вы там говорите: "смотрим в книгу, а видим...".
...
Рейтинг: 0 / 0
SUID процедуры
    #34644843
Фотография iscrafm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Andreww
- Для доступа к БД Discoverer МОЖЕТ обойтись без AS (любого)
- В такой конфигурации вся БЕЗОПАСНОСТЬ НА УРОВНЕ AS летит к чёрту, пользователя надо прописать, нужные права ему дать и за ними следить.

еще бы не летела. AS то не используется. пятница, как говорится :)
...
Рейтинг: 0 / 0
SUID процедуры
    #34644847
Фотография iscrafm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Andreww
За пару лет работы (вернее мучений) с Discoverer-ом, не разу ни приходилось запускать ни Discoverer Plus ни Discoverer View (это те для которые на картинке слева), вполне хватает Discoverer Desktop и Discoverer Administrator (это те которые на картинке справа), а для них (сюрприз!) не нужен ни Oracle AS ни любой другой сервер приложений, какая бы там заменяемость ни была - хватает ораклового клиента.

отступление от темы: нескромный вопрос. Вы за конечных пользователей сами отчеты делаете, или они в состоянии общаться с Discoverer Descktop (Administrator)?
...
Рейтинг: 0 / 0
SUID процедуры
    #34644849
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iscrafmеще бы не летела. AS то не используется.
Правильно. И вот теперь угадайте, почему с безопасностью у Discoverer-а все в порядке, а при вашей любимой концепции она "летит".

P.S. Скучнеете Вы, если честно. Еще немного - и станете ЧАЛом. Прошу не воспринимать как наезд или что-то подобное, просто личное мнение, высказанное с сожалением и некоторой надеждой на лучшее.
...
Рейтинг: 0 / 0
SUID процедуры
    #34644862
Фотография iscrafm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarer iscrafmеще бы не летела. AS то не используется.
Правильно. И вот теперь угадайте, почему с безопасностью у Discoverer-а все в порядке, а при вашей любимой концепции она "летит".
Andreew же сказал: AS не используется, т.е. моя "любимая концепция" не используется. Так что темы для обсуждения в данном случае нет. Если бы была ситуация работы через AS и все летело, тогда - да. Чувствуете разницу? нет? а она есть..


softwarerP.S. Скучнеете Вы, если честно. Еще немного - и станете ЧАЛом. Прошу не воспринимать как наезд или что-то подобное, просто личное мнение, высказанное с сожалением и некоторой надеждой на лучшее.
какой вопрос- такой и ответ. :)
...
Рейтинг: 0 / 0
SUID процедуры
    #34644881
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iscrafmAndreew же сказал: AS не используется, т.е. моя "любимая концепция" не используется.
Правильно. И именно потому, что Ваша любимая концепция не используется, безопасность работает как надо. Использовалась бы - пролетала бы.

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

iscrafmТак что темы для обсуждения в данном случае нет.
Тема для обсуждения приведена двумя абзацами выше. Ну а на все прочие темы Вы, как и ожидалось, предпочитаете не отвечать.

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

iscrafmЧувствуете разницу?
Безусловно. Она в точности соответствует тому, что я назвал в самом начале и на что Вы попытались возразить - "если есть AS, и безопасность реализована на его уровне, можете попрощаться либо c безопасностью, либо с привычными инструментами работы с данными".
...
Рейтинг: 0 / 0
SUID процедуры
    #34644915
Фотография ChA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarerПринципиально различная механика работы.Вас не смущает, например, что самолеты бывают реактивные, а бывают винтовые ? Или, что мониторы есть ЭЛТ, а есть ЖК ? Впрочем, аналогии могут лишь помочь понять разницу, но не являются доказательствами, так что, по-видимому, эту веточку можно было бы и закончить.

softwarerВ общем случае, только по синтаксису вызова

Код: plaintext
select * from p

я не смогу определить, что такое p - таблица, представление, процедура, материализованное представление, внешняя таблица, синоним к источнику данных в другой БД и так далее.В то же время, столкнувшись с конструкцией
Код: plaintext
select * from p( 2 , 'abc')
вряд ли Вы будете сильно сомневаться, что это вызов функции, и что он возвращает некий рекордсет(таблицу). Или таки засомневаетесь ?

softwarerПо двум причинам. Во-первых, потому что inline table function - это не "функция". Она не соответствует ни математическому понятию функции (как отображения множества входных данных на множество результатов), ни компьютерному (как "подпрограммы, возвращающей значение").Ну тогда и ваше трактовка не устраивает ровно по тем же причинам, да и multistatement туда же. Хотя, мне кажется, Вы просто погорячились, особенно в математическом смысле. Да и в компьютерном, пожалуй, тоже. Это такая же подпрограмма, просто состоит из одного, хотя и, возможно, сложного оператора, что позволяет оптимизатору развернуть его при включении функции в другой запрос. Но это уже его, оптимизатора, внутреннее дело.

softwarerВ гугле, кстати, мне понравилась одна фраза, хорошо иллюстрирующая это соображение:

Just like views, inline table functions are macros that are expanded into the query plan.

Надеюсь, разница между функцией и макросом понятна.Лично я не склонен считать такое различие слишком уж принципиальным. Так же, как между простой функцией и которой указали модификатор inline. На нижнем уровне разница может и есть, но совсем необязательно, так как оптимизирующий компилятор вполне может по месту развернуть функцию вместо ее вызова. В любом случае, это обычно не влияет на результат выполнения, особенно, когда нет доступа к исходнику. Важным это становиться лишь тогда, когда механизм выполнения действительно играет значение. IMHO, в подавляющем большинстве случаев, дела обстоят не так.
...
Рейтинг: 0 / 0
SUID процедуры
    #34644924
Фотография iscrafm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarer iscrafmAndreew же сказал: AS не используется, т.е. моя "любимая концепция" не используется.
Правильно. И именно потому, что Ваша любимая концепция не используется, безопасность работает как надо. Использовалась бы - пролетала бы.
с чего такие выводы? у ORACLE такой дырявый сервер приложений что-ли? Не слышал об этом.


softwarerЯ помню, что Вы очень любите не понимать сказанное, но готов повторить вышеизложенное в различных формулировках столько раз, сколько потребуется для взлома защиты.
тяжело понять такой большой поток сознания.:)

softwarer iscrafmЕсли бы была ситуация работы через AS и все летело, тогда - да.
Поскольку работу через ваш AS Вы показать не в силах, тема представляет сугубо теоретический интерес. "К данным Искры вообще нет доступа" - это, конечно, тоже защита от несанкционированного доступа, но черезчур непрактичная.
да вроде показал. Вы даже скриншот сделали.

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

ChAВ то же время, столкнувшись с конструкцией
Код: plaintext
select * from p( 2 , 'abc')
вряд ли Вы будете сильно сомневаться, что это вызов функции, и что он возвращает некий рекордсет(таблицу). Или таки засомневаетесь ?
Безусловно, засомневаюсь.

ChAНу тогда и ваше трактовка не устраивает ровно по тем же причинам,
Отчего же? Cкажем, следующая табличная функция (надеюсь, достаточно понятно, что она делает):

Код: plaintext
1.
2.
3.
4.
5.
6.
create function Numbers (start integer, finish integer) return TIntegerTable pipelined as
begin
  for i in start..finish loop
    pipe row (i);
  end loop;
  return;
end;

Поясните, пожалуйста, чем она не соответствует тому или иному определению.

ChAЛично я не склонен считать такое различие слишком уж принципиальным. Так же, как между простой функцией и которой указали модификатор inline.
Аналогия с модификатором inline в данном случае не очень корректна, имхо, хотя мы тут уже целиком уходим в область более ощущений, чем аргументов.

ChAВажным это становиться лишь тогда, когда механизм выполнения действительно играет значение. IMHO, в подавляющем большинстве случаев, дела обстоят не так.
С позиций максимального абстрагирования можно вернуться и к моему примеру с P.

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

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

iscrafmтяжело понять такой большой поток сознания.:)
Особенно если очень стараться не понять. Но не отмажетесь. Пока побарахтаетесь, потом я как-нибудь напомню Вам все, на что Вы предпочли не ответить, включая вопрос про "не дословно".

iscrafm softwarerПоскольку работу через ваш AS Вы показать не в силах, ....
да вроде показал. Вы даже скриншот сделали.
Нет, не показали. Показали работу некоторой искровской же хрени. Про дискаверер с кристаллом сказали что не умеете, про микростратеджи промолчали, что касается всех прочих вариантов - тоже все понятно.

iscrafmкаждый волен выбирать.
Безусловно. В том числе из вариантов "попрощаться с безопасностью", "попрощаться с толковыми инструментами" и "попрощаться с кривой концепцией".

И кстати - уверен, что Вы уже готовы орать, что "я назвал концепцию аппсервера кривой". Так вот: не советую, это не так. Хотя в плане Вашей стратегии увести обсуждение как можно дальше от сути будет иметь свой смысл.
...
Рейтинг: 0 / 0
SUID процедуры
    #34644994
Фотография iscrafm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarerНет, не показали. Показали работу некоторой искровской же хрени. Про дискаверер с кристаллом сказали что не умеете, про микростратеджи промолчали, что касается всех прочих вариантов - тоже все понятно.
'смотрю в книгу...' (2 серия). Я хоть словом обмолвился, что OD,CR или MS должны работать через сервер приложений именно Искры (хотя никто не запрещает)? Сами придумали и теперь наслаждаетесь этим? Спасибо, я лучше Otard-ом.

softwarer iscrafmкаждый волен выбирать.
Безусловно. В том числе из вариантов "попрощаться с безопасностью", "попрощаться с толковыми инструментами" и "попрощаться с кривой концепцией".
все таки хотелось бы узнать, почему при использовании App серверов прощаются с безопасностью? Вы уже не раз это повторили.
...
Рейтинг: 0 / 0
SUID процедуры
    #34645072
Фотография ChA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarer ChAВас не смущает, например, что самолеты бывают реактивные, а бывают винтовые ?
Нет, не смущает, потому что разница малопринципиальна по сравнению с общностью. Вот "подводный самолет" меня бы смутил.IMHO, между inline и multistatement разница такого же порядка.
softwarerБезусловно, засомневаюсь.И какие могут быть версии ? С позиции человека, знакомого с программированием вообще и SQL в частности.

softwarer
Код: plaintext
1.
2.
3.
4.
5.
6.
create function Numbers (start integer, finish integer) return TIntegerTable pipelined as
begin
  for i in start..finish loop
    pipe row (i);
  end loop;
  return;
end;

Поясните, пожалуйста, чем она не соответствует тому или иному определению.Так в том то и дело, что соответствует. Отображение множества аргумента(ов) на множество результатов. А теперь возьмем другой пример
Код: plaintext
1.
2.
CREATE FUNCTION Numbers (@start int, @finish int) 
RETURNS TABLE AS
RETURN (SELECT ID FROM IntNums WHERE ID BETWEEN @start AND @finish)
Почему вдруг этой функции отказано в математическом смысле, в сравнении с вышеупомянутым примером ? Разве здесь отсутствует отображение аргументов на результат ? И чем она не похожа на подпрограмму, которая возвращает результат ? Тем, что нет явного цикла ?

softwarerА чтобы конструктивно.... я так понимаю, вопрос сводится к тому, "на что больше похоже - на view или на procedure". Чтобы ответить на этот вопрос, придется для начала договариваться о критериях похожести, что наверное перебор.На мой взгляд, view ничем принципиально не отличается от procedure. Ведь есть же функции и процедуры без параметров, когда результат зависит только от некоей внутренней логики. И с этой точки зрения не очевидна разница между view и, например, той же функцией, но без параметров, или параметрами по умолчанию.
...
Рейтинг: 0 / 0
SUID процедуры
    #34645258
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ChAИ какие могут быть версии ? С позиции человека, знакомого с программированием вообще и SQL в частности.
Тот же самый параметризованный view. Внешний источник данных. Даже не надо выходить за пределы MSSQL - там есть OPENROWSET, вызываемый именно таким синтаксисом. И не надо рассказывать, что это функция :) - в таком случае это единственная в мире lvalue-функция, оксюморон.

ChAТак в том то и дело, что соответствует.
Ну так Вы уж выберите, пожалуйста, что-нибудь одно. Когда в одном письме Вы соглашаетесь с "не соответствует" (говоря "не устраивает в таком же смысле"), а в другом - "соответствует", немного трудно беседовать.

Вашу мысль "они одинаковы" я понимаю, но не разделяю. Свою позицию - эта соответствует, та не соответстует - я определил. Хотелось бы четкости и от Вас.

ChAПочему вдруг этой функции отказано в математическом смысле, в сравнении с вышеупомянутым примером ? Разве здесь отсутствует отображение аргументов на результат ? И чем она не похожа на подпрограмму, которая возвращает результат ? Тем, что нет явного цикла ?
Да, здесь отсутствует отображение параметров на результат. Результатом этой "функции" является не "выборка", а "константный объект (запрос, или селектор, или как угодно еще его можно назвать), который может быть будет выполнен позже". Ну а константа - это не функция. Точнее, иногда для удобства манипуляций ее рассматривают как вырожденную функцию, не более того.

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

В общем, "утка, только не плавает, а тонет, и не крякает, а матерится".

ChAНа мой взгляд, view ничем принципиально не отличается от procedure. .....
То есть Вы предпочитаете продвигаться в другую обрисованную мной сторону - объявить одним словом все "источники данных". Собственно, это показывает успех кампании СУБД по абстрагированию оных, но все же не всегда практично.

Возвращаясь к примеру самолетов - есть общее понятие "летательный аппарат", ЛА. Сюда включают самолеты, вертолеты, ракеты, винтокрылы, более экзотические конструкции, скажем экранопланы. Не знаю, включают ли аэростаты, но скорее всего да. У самолетов есть куча классификаций, как устаревших, так и действующих; скажем, по двигателям они делятся на поршневые (винтовые), реактивные (прямоточные, пульсирующие) и газотурбинные (турбовинтовые, турбореактивные и их вариации). Почему инженеры придумывают такую кучу слов, а не используют одно-единственное "ЛА"? Имхо, ответ вполне очевиден: так удобнее.
...
Рейтинг: 0 / 0
SUID процедуры
    #34645516
Фотография ChA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarerТот же самый параметризованный view.Да хоть горшком обзовите. Вы явно указываете значения параметров в аналогичной вызову функции манере. А с учетом синтаксиса SQL, явно получаете результат и он имеет табличный характер. У меня есть сильное подозрение, что если подобное выражение показать 10 программистам БД, даже MSSQL-щикам, и они не знают, что OPENROWSET можно использовать в модифицирующих операторах, по крайней мере 9 из них уверенно скажут, что это вызов функции, и только 10 просто почувствует подвох в вопросе, хотя по-прежнему не будет знать правильного ответа. Короче, если двигаться в предложенном Вами направлении, то мало, что оно выглядит как утка, ходит как утка и крякает как утка, надо непременно знать, что у нее внутри, чтобы убедиться, что это утка. Позиция понятна, хотя не готов разделить ее в данном случае. Есть много нюансов, обсуждение которых может занять неоправданно много времени с мизерным результатом.
softwarerНу так Вы уж выберите, пожалуйста, что-нибудь одно. Когда в одном письме Вы соглашаетесь с "не соответствует" (говоря "не устраивает в таком же смысле"), а в другом - "соответствует", немного трудно беседовать.
Вашу мысль "они одинаковы" я понимаю, но не разделяю. Свою позицию - эта соответствует, та не соответстует - я определил. Хотелось бы четкости и от Вас.Ну, это просто, не надо отходить от контекста, в котором фраза была сказана. От противного, если inline-функция не удовлетворяет Вашему пониманию табличной функции, хотя, на мой, и, уверен, не только на мой, взгляд, имеет все те же самые признаки, как multistatement или вариант, предложенный Вами, то наверное имеет смысл выбрать другие критерии, по которым можно судить о том, что такое функция вообще и ее "табличность" в частности.
Версия об inline-функции, как о параметризованном view, безусловно имеет право на жизнь, но вряд ли ее можно доказать в буквальном смысле, не имея доступа к исходникам. Мы просто не можем "разобрать эту утку". Не исключено, что эта версия лишь метафора, применимая в определенном контексте, степень удачности который сильно зависит от ситуации.
softwarer ChAПочему вдруг этой функции отказано в математическом смысле, в сравнении с вышеупомянутым примером ? Разве здесь отсутствует отображение аргументов на результат ?здесь отсутствует отображение параметров на результат. Результатом этой "функции" является не "выборка", а "константный объект (запрос, или селектор, или как угодно еще его можно назвать), который может быть будет выполнен позже".
Параметры - не передаются в эту функцию, они всего лишь описываются в ее заголовке, а реально передаются в тот самый результат, который из функции возвращается (а вернее даже и не туда, а в запрос, сконструированный в том числе из переделанного "результата").Как-то не очень удачно сформулировано, не находите ? Интересно было бы узнать, как много программистов поймут и согласятся с подобной формулировкой ? Мне, к сожалению, даже после многократного перечитывания, понять ход мысли не удалось. Особенно - "реально передаются в тот самый результат". Даже не касаясь смысла "реальности передачи", то это признак чего ? Функции или ее "табличности". Впрочем, по ходу, возникает другой вопрос. Если внутри функции, приведенной Вами в качестве примера, использовать запросы к каким-либо таблицам, хотя бы аналогично моему примеру, она останется табличной функцией или нет ? И если "да", то почему ?

softwarerТо есть Вы предпочитаете продвигаться в другую обрисованную мной сторону - объявить одним словом все "источники данных". Собственно, это показывает успех кампании СУБД по абстрагированию оных, но все же не всегда практично.Возможно не всегда, но, IMHO, более чем часто. Особенно учитывая, что программирование, в целом, явно движется в сторону закрытости кода в форме компонент, доступ к которым осуществляется только посредством интерфейса. В таких случаях, мы можем судить о том, что за ним скрывается лишь по некоторым формальным признакам, например, синтаксису вызова. То же свойство может быть просто переменной, но может и представлять собой пару методов Get/Set.
Таким образом, в обсуждаемом нами примере, мы передаем параметры определенным образом, обычно принятом при вызове функций, получаем результат, который можно использовать в качестве таблицы, значит это функция табличного вида. В определенных ситуациях можно подняться в абстрагировании на уровень выше, например, в клиентских компонентах часто используется понятие datasource, и его вполне достаточно, чтобы понимать, что мы можем получить некие данные, а в контексте работы с СУБД, наверняка в табличном виде. Хотя в общем случае, это просто некий массив данных, у которого есть количество измерений и границы. Далее, вы используете эту метафору независимо от того, что на самом деле послужило источником данных.

softwarerВозвращаясь к примеру самолетов - есть общее понятие "летательный аппарат", ЛА. Сюда включают самолеты, вертолеты, ракеты, винтокрылы, более экзотические конструкции, скажем экранопланы. Не знаю, включают ли аэростаты, но скорее всего да. У самолетов есть куча классификаций, как устаревших, так и действующих; скажем, по двигателям они делятся на поршневые (винтовые), реактивные (прямоточные, пульсирующие) и газотурбинные (турбовинтовые, турбореактивные и их вариации). Почему инженеры придумывают такую кучу слов, а не используют одно-единственное "ЛА"? Имхо, ответ вполне очевиден: так удобнее.Все это конечно правильно, но если я, допустим, скажу, что прилечу на самолете, насколько важно собеседнику, какого именно вида самолет ? А если я просто скажу, что прилечу ? Т.е., уточнение может играть роль лишь в определенном контексте. Даже в обыденной жизни мы постоянно пользуемся абстрагированием, уровень которого сильно зависит от контекста.
...
Рейтинг: 0 / 0
SUID процедуры
    #34645863
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ChAУ меня есть сильное подозрение, что если подобное выражение показать 10 программистам БД, даже MSSQL-щикам, и они не знают, что OPENROWSET можно использовать в модифицирующих операторах, по крайней мере 9 из них уверенно скажут, что это вызов функции, и только 10 просто почувствует подвох в вопросе, хотя по-прежнему не будет знать правильного ответа.
То есть предлагаете подстраиваться под ламеров? Извините, не нравится мне этот путь.

ChAКак-то не очень удачно сформулировано, не находите ?
Может быть. Я вообще не очень удачно объясняю, а в тот момент еще и спешил.

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

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

ChAВозможно не всегда, но, IMHO, более чем часто. Особенно учитывая, что программирование, в целом, явно движется в сторону закрытости кода в форме компонент, доступ к которым осуществляется только посредством интерфейса.
В случае СУБД развитие программирования пришло к этому еще тридцать лет назад.

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

ChAТо же свойство может быть просто переменной, но может и представлять собой пару методов Get/Set.
Верно. И это влечет за собой некоторые особенности - скажем, если я закачаю в StringList миллион строк, а потом буду активно использовать StringList.Text, это будет несколько небыстро.

ChAТаким образом, в обсуждаемом нами примере, мы передаем параметры определенным образом, обычно принятом при вызове функций,
Нет. Параметры никуда не передаются. Мы "записываем параметры в том же синтаксисе, что и при вызове функций". Аналогично с "получаем результат".

Так же мы одинаковым синтаксисом записываем обращение к таблице и вьюхе. Если хотите использовать для них одно и то же слово - предлагайте соответствующий вариант, проголосуем. Надеюсь, Вы согласны, что если подход с "объединением по синтаксису" правилен, он должен использоваться повсеместно?

ChAВсе это конечно правильно, но если я, допустим, скажу, что прилечу на самолете, насколько важно собеседнику, какого именно вида самолет ?
Настолько же, насколько вашему пользователю важно, пишете ли Вы программу на Клиппере или на Каше. Однако, Вы - не Ваш пользователь, и если полагаете сходство между ними - в том, что оба начинаются на "К" - более существенным, нежели все остальное..... не хотел бы я лететь на Вашем самолете.
...
Рейтинг: 0 / 0
SUID процедуры
    #34645958
Фотография ChA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarerТо есть предлагаете подстраиваться под ламеров? Извините, не нравится мне этот путь.Можно ли понять так, что если кто-то не знает того, что знаете Вы, то он ламер ? А если бы Вам были неизвестны особенности OPENROWSET, Вы тоже были бы им ?
*Вообще, когда начинают поминать ламеров всуе, то лично я начинаю подозревать, что у человека комплекс кулхацкера. Предлагается, в дальнейшем, не использовать уничижительные оценки там, где, IMHO, этому не место. В любом случае, именование кого-либо ламером не может являться аргументом.
softwarerЕще раз: эта "функция" не возвращает никакого результата. Вообще. И даже не вызывается. Это просто запись в системной таблице - "вот такая константа есть то, что следует подставить в запрос вместо упоминания этой функции".Inline-функция ? Так все функции и процедуры в MSSQL, насколько мне известно, это записи в системных таблицах.
И не просто подставляется в запрос, а учитывая значения параметров, указанные в момент вызова, и результат будет от них зависеть. softwarerБезусловно, останется. Потому что берет и по-прежнему таки вычисляет результат на основании входных параметров. Текущий контекст - включая снапшот состояния БД - есть неявный параметр любых ХП, точно так же, как например в Oracle - состояние пакетов, установленные переменные контекста, политики доступа.По-прежнему, несколько бессвязно, IMHO. Особенно непонятно, при чем здесь снапшоты, состояния пакетов и политики доступа, бишь контекст времени выполнения кода. Inline-функция тоже его вполне учитывает.
softwarerОднако, специфицированный интерфейс никогда не отменял необходимости знать особенности реализации. Его роль в том, что он позволяет думать о реализации не каждую минуту, а только при необходимости - при планировании эффективности и при оптимизации.Если имеется закрытый компонент, то каким образом он реализован, как правило, неизвестно. Более того, сами производители таких компонент не очень охотно раскрывают, если раскрывают, детали реализации. А дизассемблирование, на мой взгляд, не оправдано в промышленных разработках, разве что в редчайших случаях, когда цена получения функционального аналога неоправданно высока. Впрочем, эта ветка слишком сильно ушла в сторону от темы обсуждения, так что есть предложение ее закрыть.
softwarerНет. Параметры никуда не передаются. Мы "записываем параметры в том же синтаксисе, что и при вызове функций". Аналогично с "получаем результат".В данном случае, у вас нет другого способа доказать это, кроме как предьявить исходники. Остальное, не более чем домыслы, основанные на одной фразе из Google. Причем не разработчика, надо заметить, а пусть и квалифицированного, но пользователя MSSQL.
То, что inline-функцию можно воспринимать, как parameterised views, не значит, что она ею и является. Но даже если не цепляться к букве, почему parameterised views не является функцией ? Т.е., где граница, до которой "не вычисляет", а после "вычисляет" ? Короче, хотелось бы какой-нибудь внятной ссылки на явное и четкое определение ? А то может получается, что мы обсуждаем только Ваше личное понимание табличных функций, которое противоставляено трактовке MSSQL. Если дела обстоят таким образом, то не вижу смысла продолжать прения.
softwarerНастолько же, насколько вашему пользователю важно, пишете ли Вы программу на Клиппере или на Каше. Однако, Вы - не Ваш пользователь, и если полагаете сходство между ними - в том, что оба начинаются на "К" - более существенным, нежели все остальное..... не хотел бы я лететь на Вашем самолете.Без обид, но это один из Ваших стандартных приемов. Приписать собеседнику нечто, и сделать из этого неутешительный вывод. Если хотите продолжать и далее в таком же духе, то я, опять же, не вижу смысла в продолжении.
...
Рейтинг: 0 / 0
SUID процедуры
    #34646481
drev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarer
В целом, подход "только ХП" не обеспечивает практически более высокой независимости звеньев по сравнению с подходом "разумно использовать DML с клиента".



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

Представим себе систему, в которой основной единицей информации являются некие XML документы.

Типичная структура документа - master и несколько details.

На уровне интерфейса каждый документ является независимым.

Необходимость операций над записями details как единого множества предполагает реляционную структуру хранения.

Ввод информации в БД осуществляется через процедуры, принимающие XML в качестве параметра.

Таким образом:

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

ИМХО, вышеперечисленное является преимуществом подхода.

Аналогичным образом, выборка информации из базы осуществляется с помощью вызова процедур, которым передаётся скажем id документа. Возвращается опять же XML за одну интеракцию.
...
Рейтинг: 0 / 0
SUID процедуры
    #34646718
Alexey Kudinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarer ChAВас не смущает, например, что самолеты бывают реактивные, а бывают винтовые ? Нет, не смущает, потому что разница малопринципиальна по сравнению с общностью. Вот "подводный самолет" меня бы смутил. Было такое. ЛПЛ (летающая подводная лодка) Ушакова, осталась на бумаге. У американцев в 60-х какой-то энтузиаст построил именно подводный самолет (модель). В серию ессно не пошел

В каком-то около MS-ном блоге я читал, что, действительно на этапе разработки InLine функции назывались параметризированными View и только перед выпуском продукта были переименованы в функции. ИМХО зря
...
Рейтинг: 0 / 0
SUID процедуры
    #34646730
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarer пишет:
> MasterZiv
> Мы организуем их как логическ
> Я бы только отметил, что именно поэтому это не SUID-процедуры. Не тупой
> автоматический код, а "умные" операции, отвечающие постановке задачи.

Да, именно так. Но среди них довольно часто встречаются и тупой автоматический
код, именно те самые SUID-процедуры в чистом виде. Если они, конечно, не
противоречат постановке задачи.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
SUID процедуры
    #34646831
Bogdanov Andrey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
drev
Давайте я попробую привести Вам пример некоей архитектуры, а Вы скажите, есть ли выигрыш в использовании процедур или нет.
<skipped>

Замечу, что описаное не имеет никакого отношения к SUID-процедурам. Это тот самый слой бизнес представления информации храняшейся в базе данных. Соответственно клиентское приложение работает не с таблицами, а некоторыми бизнес-объектами, которые вы называете XML-документами. И в данном случае реализация средствами ХП это не вопрос выбора удобного интерфейса к СУБД, а вопрос выбора места реализации бизнес-логики.

Ну и немного по-поводу преимуществ:
drev
- реальная структура базы полностью изолирована от аппликации
- изменение структуры документа не требует изменения модуля доступа к БД.

Так приложение все-таки работает с данными XML-документов или оперирует только всем документом как единым целым? Если работает, то оно наверное как-то обращается к полям этого XML, а значит изменение структуры документа требует изменения как базы данных, так и приложения. Поэтому говорить о независимости структуры - нельзя. Ведь если вы захотите добавить какое-то поле в документ, то добавите как колонку в таблицу, так и соответствующее поле в экранную форму.
...
Рейтинг: 0 / 0
SUID процедуры
    #34646954
Aviant
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
drev- реальная структура базы полностью изолирована от аппликации
Ну вот опять. Это не преимущество само по себе. Ну изолирована, ну и что ?

drev - ваша схема работы понятна, схема как схема, если отточили и работает то и ладненько. Однако вы имеете каждый раз накладные расходы по составлению и распарсиванию XML на клиенте и сервере просто так, ради красоты идеи.

Кроме того сильно подозреваю, что отлаживать ваши процедуры путем запуска их отдельно от приложения не очень то удобно.
...
Рейтинг: 0 / 0
SUID процедуры
    #34647013
drev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Bogdanov Andrey drev
Давайте я попробую привести Вам пример некоей архитектуры, а Вы скажите, есть ли выигрыш в использовании процедур или нет.
<skipped>

Замечу, что описаное не имеет никакого отношения к SUID-процедурам. Это тот самый слой бизнес представления информации храняшейся в базе данных. Соответственно клиентское приложение работает не с таблицами, а некоторыми бизнес-объектами, которые вы называете XML-документами. И в данном случае реализация средствами ХП это не вопрос выбора удобного интерфейса к СУБД, а вопрос выбора места реализации бизнес-логики.

Ну и немного по-поводу преимуществ:
drev
- реальная структура базы полностью изолирована от аппликации
- изменение структуры документа не требует изменения модуля доступа к БД.

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


1. SUID-процедуры - частный случай представленной архитектуры
2. организация ввода-вывода информации в базу данных не совсем бизнес логика, правда?
3. Вы почему то не обратили внимание на слова "изменения модуля доступа к БД." Он не включает в себя экранные формы, к счастью.

Давайте я приведу Вам пример:

Предположим, в базе было принято решение изменить хранение одного из details. Вместо отдельной таблицы использовать XML-type.

Приложение (в месте отправки информациии в базу данных) не изменится.

А фразы, выделеной красным, я вообще не понял
...
Рейтинг: 0 / 0
SUID процедуры
    #34647074
drev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Aviant drev- реальная структура базы полностью изолирована от аппликации
Ну вот опять. Это не преимущество само по себе. Ну изолирована, ну и что ?

drev - ваша схема работы понятна, схема как схема, если отточили и работает то и ладненько. Однако вы имеете каждый раз накладные расходы по составлению и распарсиванию XML на клиенте и сервере просто так, ради красоты идеи.

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


1. Про изоляцию смотрите пример с XML-type выше. Я уже не говорю о миграции на другой сервер.
2. А кто вам сказал, что ХМЛ парсается и составляется на клиенте? Он там может жить:) Или передаваться из другого приложения.
3. Попробуйте сравнить время выполнения такой процедуры и нескольких десятков инсеров из аппликацции. Сильно будете удивлены.
4. Подозрения не оправданы
...
Рейтинг: 0 / 0
SUID процедуры
    #34647115
Bogdanov Andrey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
drev
1. SUID-процедуры - частный случай представленной архитектуры

SUID-процедуры отношения к архитектуре не имеют. Это вопрос стандартов кодирования. Вместо insert into a values (1,2,3) пишем insert_into_a(1,2,3). Причем здесь архитектура?

drev
2. организация ввода-вывода информации в базу данных не совсем бизнес логика, правда?

Согласен, это не совсем бизнес-логика. Но это и не SUID-процедуры. Они занимаются преобразованием данных.

drev
3. Вы почему то не обратили внимание на слова "изменения модуля доступа к БД." Он не включает в себя экранные формы, к счастью.

То есть у вас между экранными формами, которые могли бы работать с БД напрямую, и базой данных навернуто еще три слоя? Сначала преобразование данных формы в XML, потом некий "модуль доступа", а потом еще ХП, делающие обратное преобразование? И это плата за изоляцию?
Но в вашем варианте какие-то преимущества подхода я обнаруживаю. Хотя на мой взгляд недостатков они не покрывают (хотя это зависит от внешних требований). А вот для случая SUID-процедур я никаких преимуществ не вижу.
...
Рейтинг: 0 / 0
SUID процедуры
    #34647181
Aviant
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
drev1. Про изоляцию смотрите пример с XML-type выше.Я понял про xml-тип, спасибо, позитивные эмоции полезны
drev Я уже не говорю о миграции на другой сервер. ... где этого типа может и не быть.
drev2. А кто вам сказал, что ХМЛ парсается и составляется на клиенте? Он там может жить:) Или передаваться из другого приложения. Все на XML !
drev3. Попробуйте сравнить время выполнения такой процедуры и нескольких десятков инсеров из аппликацции. Сильно будете удивлены. Да сравнивал уже когда-то, действительно был сильно удивлен насколько тормознутый этот XML. Вы же ничего не упомянули про ваш сервер БД и я не буду :)
drev4. Подозрения не оправданы Конечно, всего лишь каждый раз ручками быстренько написать xml-чик. Круче этого только все передавать blob-ом или огромной битовой маской.

Я понял, вам очень-очень нравится ваш подход. Мне он нравится не очень.

В этом топике про SUID уже поговорили, про RLS поговорили, про трехзвенку поговорили, про что такое функции поговорили, сейчас специалисты попьют кофе и расскажут вам про XML

День удался
...
Рейтинг: 0 / 0
SUID процедуры
    #34647266
drev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Bogdanov Andrey[quot drev]
То есть у вас между экранными формами, которые могли бы работать с БД напрямую , и базой данных навернуто еще три слоя? Сначала преобразование данных формы в XML, потом некий "модуль доступа", а потом еще ХП, делающие обратное преобразование? И это плата за изоляцию?
Но в вашем варианте какие-то преимущества подхода я обнаруживаю. Хотя на мой взгляд недостатков они не покрывают (хотя это зависит от внешних требований). А вот для случая SUID-процедур я никаких преимуществ не вижу.

1. Понимаете, формы не всегда работают ц БД напрямую:) Если совсем честно, за последние лет 10 я такого не видел. Умные люди придумали такое понятие как data access layer.

2. Понимаете, есть такие приложения, когда данные из формы приходят в виде XML :) И их преобразовывать не нужно:)
...
Рейтинг: 0 / 0
SUID процедуры
    #34647359
drev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Aviant drev Я уже не говорю о миграции на другой сервер. ... где этого типа может и не быть.


Вы мне нравитесь:) Логикой:) Вернее.. Cлова "Не говоря уже" являются семантическим разделителем. грубо говоря, это уже другое высказывание, независимое от первого. Суть ВТОРОГО высказывания в том, что в данной модели приложению безразличного какие фунциональные возможности предоставляет вендор и какова реально структура базы.


Aviant


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


Может, криво написали?:) 2005.

Aviant

drev4. Подозрения не оправданы Конечно, всего лишь каждый раз ручками быстренько написать xml-чик. Круче этого только все передавать blob-ом или огромной битовой маской

.
Вы не пробовали при тестировании не каждый раз писать ручками, а , сохранять скажем:) и почему ручками?:)
Aviant
сейчас специалисты попьют кофе и расскажут вам про XML



с удовольствием послушаю:)
...
Рейтинг: 0 / 0
SUID процедуры
    #34647888
Bogdanov Andrey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
drev
1. Понимаете, формы не всегда работают ц БД напрямую:) Если совсем честно, за последние лет 10 я такого не видел. Умные люди придумали такое понятие как data access layer.

Умные люди не занимаются бессмысленными сериализациями/десериализациями данных внутри этого data access layer. Да и напрямую умные люди очень даже работают.

drev
2. Понимаете, есть такие приложения, когда данные из формы приходят в виде XML :) И их преобразовывать не нужно:)
То есть пользователь в форму прямо xml вбивает? Я вам завидую - мне бы таких пользователей. :)
...
Рейтинг: 0 / 0
SUID процедуры
    #34647921
drev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Bogdanov Andrey drev
1. Понимаете, формы не всегда работают ц БД напрямую:) Если совсем честно, за последние лет 10 я такого не видел. Умные люди придумали такое понятие как data access layer.

Умные люди не занимаются бессмысленными сериализациями/десериализациями данных внутри этого data access layer. Да и напрямую умные люди очень даже работают.

drev
2. Понимаете, есть такие приложения, когда данные из формы приходят в виде XML :) И их преобразовывать не нужно:)
То есть пользователь в форму прямо xml вбивает? Я вам завидую - мне бы таких пользователей. :)

1. я же объяснил, сериализация не всегда нужна.

2. Формы могут на web находится. И приходить на сервер в виде XML.

3. Это Вы про что-то типа Oracle Forms?:)
...
Рейтинг: 0 / 0
SUID процедуры
    #34648013
Bogdanov Andrey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
drev2. Формы могут на web находится. И приходить на сервер в виде XML.
Web-формы вполне и без xml обходиться могут. А вот без сервера приложений - наверное не могут.

drev3. Это Вы про что-то типа Oracle Forms?:)
Сейчас достаточно инструментариев для разработки клиент-серверных приложений. И большинство из них вполне адекватно работают с базой данных. Хотя некоторые программисты пытаются приделать даже к этим инструментариям пятую ногу в виде дополнительной прослойки между программистом и базой данных.
Я подозрерваю, что это от безграмотности - вижу множество людей неплохо пишущих на C или Java, но при слове Oracle их почему-то в дрожь бросает.

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

Эти задачи - разные и решать их одинаковыми методами - неразумно.
Но почему-то все апологеты процедурного сохранения пытаются представить их как нечто универсальное.
...
Рейтинг: 0 / 0
SUID процедуры
    #34648190
drev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Bogdanov Andrey drev2. Формы могут на web находится. И приходить на сервер в виде XML.
Web-формы вполне и без xml обходиться могут. А вот без сервера приложений - наверное не могут.

drev3. Это Вы про что-то типа Oracle Forms?:)
Сейчас достаточно инструментариев для разработки клиент-серверных приложений. И большинство из них вполне адекватно работают с базой данных. Хотя некоторые программисты пытаются приделать даже к этим инструментариям пятую ногу в виде дополнительной прослойки между программистом и базой данных.
Я подозрерваю, что это от безграмотности - вижу множество людей неплохо пишущих на C или Java, но при слове Oracle их почему-то в дрожь бросает.

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

Эти задачи - разные и решать их одинаковыми методами - неразумно.
Но почему-то все апологеты процедурного сохранения пытаются представить их как нечто универсальное.

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

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

Во-первых, я не призывал "разбрасывать" запросы по коду. Не понятно только, почему единственной альтернативой разбрасыванию видят ХП? Кстати, вызовы ХП при этом у большинства точно также разбросаны по коду :)
А во-вторых, в вашем случае проблема с поддержкой и изменением никуда не девается. Просто проявляется в другой момент. После того как разработчик ХП поменяет имя обрабатываемого тэга в своей процедуре вам ровно также придется искать все места, где формируется тот самый xml и изменять их. И кстати, если вы что-то пропустите то последствия могут быть более катастрофическими, чем в случае прямых insert/update. В случае sql-операторов приложение просто упадет ничего не сломав, а в вашем случае он неизвестно что и неизвестно куда сохранит.

drev
Варианта б) практически не существует.. В большинстве случаев не приложение интерфейс базы данных, а база данных - одно из хранилищ информации приложения. И это не единственное хранилище.
Думаю, что 80% программ, которые я видел были именно небольшими (практически десктопными) приложениями. И практически ни одно из них не работало с разными хранилищами информации - очень меня мучает вопрос интеграции с такими приложениями, потому как почти никто не умеет сохранить данные куда-нибудь кроме как в свою БД. Я, правда, сам предпочитаю заниматься созданием больших систем (вам, видимо, это тоже больше нравится), но даже в больших системах не так часто используют множество хранилищ.
...
Рейтинг: 0 / 0
SUID процедуры
    #34648558
Bely
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
drevВарианта б) практически не существует.. В большинстве случаев не приложение интерфейс базы данных, а база данных - одно из хранилищ информации приложения. И это не единственное хранилище.Мой опыт говорит как раз об обратном - в нормальных системах все вертится вокруг базы (или нескольких баз), а приложения - это обработка/отображение/представление данных из базы.

Не помню кто, но кто-то из классиков сформулировал принцип: не алгоритм управляет данными - а данные управляют работой алгоритма.
Это к вопросу о том, кто главнее - данные или программы.
...
Рейтинг: 0 / 0
SUID процедуры
    #34649398
SPQR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Bogdanov AndreyА во-вторых, в вашем случае проблема с поддержкой и изменением никуда не девается. Просто проявляется в другой момент. После того как разработчик ХП поменяет имя обрабатываемого тэга в своей процедуре вам ровно также придется искать все места, где формируется тот самый xml и изменять их. И кстати, если вы что-то пропустите то последствия могут быть более катастрофическими, чем в случае прямых insert/update. В случае sql-операторов приложение просто упадет ничего не сломав, а в вашем случае он неизвестно что и неизвестно куда сохранит.
В одной российской банковской системе был использован подход весьма близкий к изложенному господином drev и, по страному стечению обстоятельств, Андреем Богдановым....
Я не ошибся, Bogdanov Andrey это именно "тот" Богданов ?
...
Рейтинг: 0 / 0
SUID процедуры
    #34649473
drev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Bely drevВарианта б) практически не существует.. В большинстве случаев не приложение интерфейс базы данных, а база данных - одно из хранилищ информации приложения. И это не единственное хранилище.Мой опыт говорит как раз об обратном - в нормальных системах все вертится вокруг базы (или нескольких баз), а приложения - это обработка/отображение/представление данных из базы.

Не помню кто, но кто-то из классиков сформулировал принцип: не алгоритм управляет данными - а данные управляют работой алгоритма.
Это к вопросу о том, кто главнее - данные или программы.

Будет очень интересно услышать мнение людей, которые написали CISCO Call Manager по этому поводу :)
Что SQL Server, который был использован в четверке как место хранения - главная часть их системы:)
...
Рейтинг: 0 / 0
SUID процедуры
    #34649722
Bely
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
drev BelyНе помню кто, но кто-то из классиков сформулировал принцип: не алгоритм управляет данными - а данные управляют работой алгоритма.
Это к вопросу о том, кто главнее - данные или программы.

Будет очень интересно услышать мнение людей, которые написали CISCO Call Manager по этому поводу :)
Что SQL Server, который был использован в четверке как место хранения - главная часть их системы:)Не передергивайте.
Для CCM главные данные - VoIP пакеты и таблицы маршрутизации этих пакетов.

Если смотреть на коня сзади, то может показаться, что управлять им надо дергая за хвост.
Смотреть надо - с правильной стороны.
...
Рейтинг: 0 / 0
SUID процедуры
    #34649738
drev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Bely drev BelyНе помню кто, но кто-то из классиков сформулировал принцип: не алгоритм управляет данными - а данные управляют работой алгоритма.
Это к вопросу о том, кто главнее - данные или программы.

Будет очень интересно услышать мнение людей, которые написали CISCO Call Manager по этому поводу :)
Что SQL Server, который был использован в четверке как место хранения - главная часть их системы:)Не передергивайте.
Для CCM главные данные - VoIP пакеты и таблицы маршрутизации этих пакетов.

Если смотреть на коня сзади, то может показаться, что управлять им надо дергая за хвост.
Смотреть надо - с правильной стороны.

Хм.. это я передергиваю? Леги где хранятся?:) В базе, правда?
...
Рейтинг: 0 / 0
SUID процедуры
    #34649962
Bely
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
drev Bely drev BelyНе помню кто, но кто-то из классиков сформулировал принцип: не алгоритм управляет данными - а данные управляют работой алгоритма.
Это к вопросу о том, кто главнее - данные или программы.

Будет очень интересно услышать мнение людей, которые написали CISCO Call Manager по этому поводу :)
Что SQL Server, который был использован в четверке как место хранения - главная часть их системы:)Не передергивайте.
Для CCM главные данные - VoIP пакеты и таблицы маршрутизации этих пакетов.

Если смотреть на коня сзади, то может показаться, что управлять им надо дергая за хвост.
Смотреть надо - с правильной стороны.

Хм.. это я передергиваю? Леги где хранятся?:) В базе, правда?Учимся читать...
авторДля CCM главные данные - VoIP пакеты и таблицы маршрутизации этих пакетов.
...
Рейтинг: 0 / 0
SUID процедуры
    #34650442
drev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Bely drev Bely drev BelyНе помню кто, но кто-то из классиков сформулировал принцип: не алгоритм управляет данными - а данные управляют работой алгоритма.
Это к вопросу о том, кто главнее - данные или программы.

Будет очень интересно услышать мнение людей, которые написали CISCO Call Manager по этому поводу :)
Что SQL Server, который был использован в четверке как место хранения - главная часть их системы:)Не передергивайте.
Для CCM главные данные - VoIP пакеты и таблицы маршрутизации этих пакетов.

Если смотреть на коня сзади, то может показаться, что управлять им надо дергая за хвост.
Смотреть надо - с правильной стороны.

Хм.. это я передергиваю? Леги где хранятся?:) В базе, правда?Учимся читать...
авторДля CCM главные данные - VoIP пакеты и таблицы маршрутизации этих пакетов.

1. Учимся не хамить :)
2. Учимся отвечать на вопросы по существу, а не прикрывать свое непонимание демагогией :)
...
Рейтинг: 0 / 0
SUID процедуры
    #34650481
drev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
drev Bely drev Bely drev BelyНе помню кто, но кто-то из классиков сформулировал принцип: не алгоритм управляет данными - а данные управляют работой алгоритма.
Это к вопросу о том, кто главнее - данные или программы.

Будет очень интересно услышать мнение людей, которые написали CISCO Call Manager по этому поводу :)
Что SQL Server, который был использован в четверке как место хранения - главная часть их системы:)Не передергивайте.
Для CCM главные данные - VoIP пакеты и таблицы маршрутизации этих пакетов.

Если смотреть на коня сзади, то может показаться, что управлять им надо дергая за хвост.
Смотреть надо - с правильной стороны.

Хм.. это я передергиваю? Леги где хранятся?:) В базе, правда?Учимся читать...
авторДля CCM главные данные - VoIP пакеты и таблицы маршрутизации этих пакетов.

1. Учимся не хамить :)
2. Учимся отвечать на вопросы по существу, а не прикрывать свое непонимание демагогией :)

P.S. Кстати, Вы .. этот .. "все ещё программист" :) Может, слышали про STL? Алгоритмы как бы одни и те же?:) От данных не зависят?:)
...
Рейтинг: 0 / 0
SUID процедуры
    #34650767
Bely
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
drev1. Учимся не хамить :)
2. Учимся отвечать на вопросы по существу, а не прикрывать свое непонимание демагогией :)Никто не хамит, просто в таком ключе, как он идет, разговор вести бессмысленно.
Демагогией занимаетесь именно Вы.
Вы просто игнорируете те фразы, которые вам не удобны и перевираете вырванные из контекста другие фразы.

Про логи IPCC (и любого другого) - это отдельный впомоательный модуль системы.
Если логи хранятся на SQL сервере - то процедура записи в лог может выглядеть как ХП, так и как обычный INSERT. Логи могут вообще писаться в текстовый файл.
Главное здесь - поток логируемых ДАННЫХ. Модуль их обработки - может быть любой, какой удобен в каждом конкретном случае и который справляется с необходимой скоростью поступления данных.

Кроме этого - логи бывают разного уровня.
Debug Info - мало кто пишет в базу. Их обычно пишут в обычный текстовый или бинарный файл.
Классическая программа, которая ТОЛЬКО пишет в лог (ее основная функция) - это SYSLOG.

Теперь что касается данных и алгоритмов.
То что я привел - это мнение (кажется Дэйкстры) по поводу того, что первично - алгоритм или данные.
Так вот, данные - первичны. Именно данные в первую очередь определят КАК работает программа.
Развитием этой концепции стал ООП подход, где к ДАННЫМ пристыковываются МЕТОДЫ их обработки (а не наоборот).

Теперь перечитайте свои последние посты... конструктива в них ноль, демагогии полно.
Попытки вникнуть в чужие слова - я вобще не обнаружил.
Общаться в таком ключе - мне не интересно....

за сим откланиваюсь
...
Рейтинг: 0 / 0
SUID процедуры
    #34650898
Bogdanov Andrey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SPQR Bogdanov AndreyА во-вторых, в вашем случае проблема с поддержкой и изменением никуда не девается. Просто проявляется в другой момент. После того как разработчик ХП поменяет имя обрабатываемого тэга в своей процедуре вам ровно также придется искать все места, где формируется тот самый xml и изменять их. И кстати, если вы что-то пропустите то последствия могут быть более катастрофическими, чем в случае прямых insert/update. В случае sql-операторов приложение просто упадет ничего не сломав, а в вашем случае он неизвестно что и неизвестно куда сохранит.
В одной российской банковской системе был использован подход весьма близкий к изложенному господином drev и, по страному стечению обстоятельств, Андреем Богдановым....
Я не ошибся, Bogdanov Andrey это именно "тот" Богданов ?

Так как я не знаю ту ли банковскую систему вы имеете ввиду, то не могу и ответить на вопрос "тот ли это Богданов". :)
В той же банковской системе, которую делал я хранимые процедуры представляли собой не интерфейс хранилища базы данных, а интерфейс "машины операций" - системы реализации бизнес логики. И этот интерфейс оперировал не понятиями типа "сохранить данные в такую-то табличку", а понятиями вида "выполнить такую-то бизнес-операцию" (например, открыть счет/закрыть счет).
Ну и последнее. Как мне кажется, моя причастность к такому подходу дает мне право "ругать" его - я лучше многих других знаю его недостатки.
...
Рейтинг: 0 / 0
SUID процедуры
    #34651780
drev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Bely drev1. Учимся не хамить :)
2. Учимся отвечать на вопросы по существу, а не прикрывать свое непонимание демагогией :)Никто не хамит, просто в таком ключе, как он идет, разговор вести бессмысленно.
Демагогией занимаетесь именно Вы.
Вы просто игнорируете те фразы, которые вам не удобны и перевираете вырванные из контекста другие фразы.

Про логи IPCC (и любого другого) - это отдельный впомоательный модуль системы.
Если логи хранятся на SQL сервере - то процедура записи в лог может выглядеть как ХП, так и как обычный INSERT. Логи могут вообще писаться в текстовый файл.
Главное здесь - поток логируемых ДАННЫХ. Модуль их обработки - может быть любой, какой удобен в каждом конкретном случае и который справляется с необходимой скоростью поступления данных.

Кроме этого - логи бывают разного уровня.
Debug Info - мало кто пишет в базу. Их обычно пишут в обычный текстовый или бинарный файл.
Классическая программа, которая ТОЛЬКО пишет в лог (ее основная функция) - это SYSLOG.

Теперь что касается данных и алгоритмов.
То что я привел - это мнение (кажется Дэйкстры) по поводу того, что первично - алгоритм или данные.
Так вот, данные - первичны. Именно данные в первую очередь определят КАК работает программа.
Развитием этой концепции стал ООП подход, где к ДАННЫМ пристыковываются МЕТОДЫ их обработки (а не наоборот).

Теперь перечитайте свои последние посты... конструктива в них ноль, демагогии полно.
Попытки вникнуть в чужие слова - я вобще не обнаружил.
Общаться в таком ключе - мне не интересно....

за сим откланиваюсь


У Вас удачно получается спорить о вкусе устриц с теми, кто их ел.

Вы с такой уверенностью рассуждали об архитектуре Call Manager, что мне и в голову не пришло, что Вы настолько его не знаете.

drev
Хм.. это я передергиваю? Леги где хранятся?:) В базе, правда?


Я ни разу не упомянул лОги (logs). ЛЕги , упомянутые мной - Call Legs.

A call leg is a logical connection between two router/gateways or between a router/gateway and an IP Telephony device (for example Cisco CallManager, SIP Server, and so forth).

(http://www.cisco.com/warp/public/788/voip/dialpeer_call_leg.html#peers)

Смотрите картинку.

Извините, но в виду того, что мы говорим о телефонии, поговорка "Слышу звон, но не знаю, где он" приобретает двойной смысл:)

Далее становится ещё интереснее:

BelyТо что я привел - это мнение (кажется Дэйкстры) по поводу того, что первично - алгоритм или данные.
Так вот, данные - первичны.

В русской трансляции он скорее Дийкстра, но это так, к слову.

Понимаете, молодой человек, мнение , даже такого уважаемого человека, не обязательно есть истина в последней инстанции.

Помимо ООП (который,судя по Вашим высказываниям, Вы понимаете нескоько упрощённо), есть и другие парадигмы, например, generic programming.

STL (Standard Template Library), есть одна из имплементаций данной парадигмы. Сильно упрощённый пример - создаётся алгоритм, например, sort, который единообразно сортирует любые данные. T.e. алгоритм - первичен, не так ли?

Резюмируя

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

Вы пишете о себе: " все еще программист :)"

На мой взгляд, скорее " ещё не ".
...
Рейтинг: 0 / 0
SUID процедуры
    #34651920
Bely
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
drevУ Вас удачно получается спорить о вкусе устриц с теми, кто их ел.

Вы с такой уверенностью рассуждали об архитектуре Call Manager, что мне и в голову не пришло, что Вы настолько его не знаете.С Циско Call Manager-ом не знаком, это верно.
Знаком с АТС Panasonic KXT-D500 и IPCC FrontRange.

Что основного я вынес из общения с этим зоопарком - то что стандартизации терминов в этой отрасли НЕТ.

drevХм.. это я передергиваю? Леги где хранятся?:) В базе, правда? Насколько я знаю, есть два варианта CCM - первый работает на выделенном сервере (полноценный), второй (кажется называется Express) - работает непосредственно на маршрутизаторе.
Во втором случае - где будут храниться Леги?

Кстати, из приведенного документа я так и не увидел, что они будут вообще храниться.
Наоборот, складывается впечатление, что это аналог хоп-ов при передаче IP пакетов.

drev BelyТо что я привел - это мнение (кажется Дэйкстры) по поводу того, что первично - алгоритм или данные.
Так вот, данные - первичны.

В русской трансляции он скорее Дийкстра, но это так, к слову. к слову , хотя всегда можно сказать, что википедию пишут лохи.

drevSTL (Standard Template Library), есть одна из имплементаций данной парадигмы. Сильно упрощённый пример - создаётся алгоритм, например, sort, который единообразно сортирует любые данные. T.e. алгоритм - первичен, не так ли?Не так.
1. STL как самоцель никому не нужна. Это просто библиотека уже готовых функций.
2. sort отсортирует не любые данные, а те которые УМЕЕТ сортировать.
3. Вы никогда не замечали, что в серьезных изложениях алгоритмов (типа нейронных сетей) кроме описания самого алгоритма приводится структуры данных, которые используются в данном алгоритме и способы оптимизации хранения этих данных?

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

drevВы пишете о себе: " все еще программист :)"
На мой взгляд, скорее " ещё не ".Спасибо товарищу Сталину за наще счастливое детство!!!
Спасибо, что ВООБЩЕ обратили на меня свой взгляд!
главное, чтоб этот взгляд упершись в зеркало не подумал... хто это чудище...
...
Рейтинг: 0 / 0
101 сообщений из 101, показаны все 5 страниц
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / SUID процедуры
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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