|
|
|
SUID процедуры
|
|||
|---|---|---|---|
|
#18+
AndrewwТ.е. вы хотите сказать что для работы Discoverer-a с БД НЕОБХОДИМ сервер приложений ? вроде того ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.07.2007, 17:43 |
|
||
|
SUID процедуры
|
|||
|---|---|---|---|
|
#18+
iscrafmБред какой-то. Я не понимаю таких "высоких" мыслей. Слив номер раз (в этом посте). Но Вам стоило сделать это раньше, до того, как Вы сказали "не умеем". iscrafmя на вскидку не отвечаю на такие вопросы. Не могу сказать, сколько это будет стоить, по той простой причине что не помню какие интерфейсы предоставляет OD. надеюсь понятно. Я же сказал, что не особо сомневаюсь в ответе. Впрочем, если таки хотите попробовать - меня вполне устроит качественная характеристика, например - бесплатно - вряд ли больше $500 - скорее всего, от $500 до $5'000 - скорее всего, от $5'000 до $50'000 - .... Напомню, в вопрос также входит эффективность работы получившегося отчета. iscrafmмда... Ладно, скажу так: мы не производим ПО для создания демороликов. Не стоит уводить разговор в сторону, а если пытаетесь, не стоит так грубо. Сбой упомянут только потому, что у меня было уверенности в том, что воспроизведение не обрывается на середине (а где-то дальше показано то взаимодействие, которое меня интересует). iscrafmЕсли оно вам кажется сбойным, то давайте обсудим, какие есть хорошие несбойные утилиты для создания демороликов. Не особо разбираюсь. Лично меня полностью устраивал HyperCam, но с этим Вам скорее всего в другой форум и к другим людям. iscrafmНе знаю про какой экспорт вы продолжаете упорно твердить, но попробую догадаться. Уже прогресс. Потом попробуйте прочитать и понять. iscrafmНаверное про слова "Экспорт в Excel".. угадал? Не только. Слова "Форма представления"..."Сводная таблица"..."Окончательная настройка формы представления" (или как там, не помню точно) очень похожи на внутренний генератор отчетов и совершенно не похожи на интерфейс внешнего генератора. Кроме меня, это отметили уже два человека, одному из которых Вы ответили демагогией. iscrafmИнтерфейс - это, например, когда генератору отчета передается на вход указание на набор данных, который он должен отработать. Ну.... плохое определение, но если не углубляться, можно принять и так. iscrafmага, спасибо. обращу внимание. Наконец что-то дельное. Учитывая, что не в первый и даже не во второй раз - пора брать деньги :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.07.2007, 17:45 |
|
||
|
SUID процедуры
|
|||
|---|---|---|---|
|
#18+
softwarerВ моем представлении, "табличная функция - это функция, которая вычисляет и возвращает таблицу". Подчеркну, именно "вычисляет" - и в этом смысле, насколько я понимаю, это соответствует multistatement table function.Непонятное ограничение. Обе функции возвращают результат одного и того же типа, и, в общем случае, только по синтаксису вызова Вы никак не сможете определить, что там "у ей внутре", parametrized view или multistatement. Так почему же одну из них можно называть табличной, а другую нет ? Соответственно, не совсем понятно, почему свою трактовку понятия "табличная функция" Вы считате более правильной, чем трактовку MS. softwarerПростите великодушно, но мой собеседник, ставя задачу, настаивал именно на 2000. Полагаете, с моей стороны было бы корректно забыть об этом?Виноват. Действительно, был невнимателен, со стороны bpost было условие на версию MSSQL. И, кстати, более чем странное. Вроде потенциально рассматривается новый проект, зачем привязываться к версии, которой уже больше 7 лет, которую и купить-то уже нельзя ? Впрочем, этот вопрос должен быть адресован уже не Вам. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.07.2007, 17:46 |
|
||
|
SUID процедуры
|
|||
|---|---|---|---|
|
#18+
AndrewwТ.е. вы хотите сказать что для работы Discoverer-a с БД НЕОБХОДИМ сервер приложений ? В первую очередь он хочет сказать, что AS Искры и AS Discoverer-а - одно и то же, во всяком случае взаимозаменяемы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.07.2007, 17:47 |
|
||
|
SUID процедуры
|
|||
|---|---|---|---|
|
#18+
iscrafmвроде того Ну-ну :) Иллюстрация к классическому "смотрим в книгу".... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.07.2007, 17:49 |
|
||
|
SUID процедуры
|
|||
|---|---|---|---|
|
#18+
ChAНепонятное ограничение. Принципиально различная механика работы. ChAОбе функции возвращают результат одного и того же типа, и, в общем случае, только по синтаксису вызова Вы никак не сможете определить, В общем случае, только по синтаксису вызова Код: plaintext я не смогу определить, что такое p - таблица, представление, процедура, материализованное представление, внешняя таблица, синоним к источнику данных в другой БД и так далее. Однако это совершенно не повод называть все перечисленные понятия одним словом - потому что у них принципиально разная реализация, а вот общность интерфейса - важная концепция, благодаря которой СУБД и обеспечивает ту самую изоляцию-независимость, о которой мы много говорили немногим ранее. ChAСоответственно, не совсем понятно, почему свою трактовку понятия "табличная функция" Вы считате более правильной, чем трактовку MS. По двум причинам. Во-первых, потому что inline table function - это не "функция". Она не соответствует ни математическому понятию функции (как отображения множества входных данных на множество результатов), ни компьютерному (как "подпрограммы, возвращающей значение"). В гугле, кстати, мне понравилась одна фраза, хорошо иллюстрирующая это соображение: Just like views, inline table functions are macros that are expanded into the query plan. Надеюсь, разница между функцией и макросом понятна. Во-вторых потому, что сколь мне изменяет память, они появились тогда, когда это словосочетание уже было занято и по свойственной Microsoft-у привычке тот начал использовать "уже известные слова" в "новом микрософтовском значении". Тут я правда не уверен, а за давностью лет докопаться до истины достаточно трудно, особенно в случае истории Sybase-реализаций. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.07.2007, 18:05 |
|
||
|
SUID процедуры
|
|||
|---|---|---|---|
|
#18+
iscrafmвроде того Ню ню. За пару лет работы (вернее мучений) с Discoverer-ом, не разу ни приходилось запускать ни Discoverer Plus ни Discoverer View (это те для которые на картинке слева), вполне хватает Discoverer Desktop и Discoverer Administrator (это те которые на картинке справа), а для них (сюрприз!) не нужен ни Oracle AS ни любой другой сервер приложений, какая бы там заменяемость ни была - хватает ораклового клиента. Отсюда вывод : - Для доступа к БД Discoverer МОЖЕТ обойтись без AS (любого) - В такой конфигурации вся БЕЗОПАСНОСТЬ НА УРОВНЕ AS летит к чёрту, пользователя надо прописать, нужные права ему дать и за ними следить. Так что рассказы про безопасность через AS\ПРОЦЕДУРЫ автоматом означает - невозможность использования сторонних средств или долгое ковыряние с их интеграцией (про заменяемость Oracle AS на нечто самописное было забавно, спасибо). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.07.2007, 18:10 |
|
||
|
SUID процедуры
|
|||
|---|---|---|---|
|
#18+
softwarer AndrewwТ.е. вы хотите сказать что для работы Discoverer-a с БД НЕОБХОДИМ сервер приложений ? В первую очередь он хочет сказать, что AS Искры и AS Discoverer-а - одно и то же, во всяком случае взаимозаменяемы. хорошая шутка. как вы там говорите: "смотрим в книгу, а видим...". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.07.2007, 18:29 |
|
||
|
SUID процедуры
|
|||
|---|---|---|---|
|
#18+
Andreww - Для доступа к БД Discoverer МОЖЕТ обойтись без AS (любого) - В такой конфигурации вся БЕЗОПАСНОСТЬ НА УРОВНЕ AS летит к чёрту, пользователя надо прописать, нужные права ему дать и за ними следить. еще бы не летела. AS то не используется. пятница, как говорится :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.07.2007, 18:31 |
|
||
|
SUID процедуры
|
|||
|---|---|---|---|
|
#18+
Andreww За пару лет работы (вернее мучений) с Discoverer-ом, не разу ни приходилось запускать ни Discoverer Plus ни Discoverer View (это те для которые на картинке слева), вполне хватает Discoverer Desktop и Discoverer Administrator (это те которые на картинке справа), а для них (сюрприз!) не нужен ни Oracle AS ни любой другой сервер приложений, какая бы там заменяемость ни была - хватает ораклового клиента. отступление от темы: нескромный вопрос. Вы за конечных пользователей сами отчеты делаете, или они в состоянии общаться с Discoverer Descktop (Administrator)? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.07.2007, 18:35 |
|
||
|
SUID процедуры
|
|||
|---|---|---|---|
|
#18+
iscrafmеще бы не летела. AS то не используется. Правильно. И вот теперь угадайте, почему с безопасностью у Discoverer-а все в порядке, а при вашей любимой концепции она "летит". P.S. Скучнеете Вы, если честно. Еще немного - и станете ЧАЛом. Прошу не воспринимать как наезд или что-то подобное, просто личное мнение, высказанное с сожалением и некоторой надеждой на лучшее. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.07.2007, 18:36 |
|
||
|
SUID процедуры
|
|||
|---|---|---|---|
|
#18+
softwarer iscrafmеще бы не летела. AS то не используется. Правильно. И вот теперь угадайте, почему с безопасностью у Discoverer-а все в порядке, а при вашей любимой концепции она "летит". Andreew же сказал: AS не используется, т.е. моя "любимая концепция" не используется. Так что темы для обсуждения в данном случае нет. Если бы была ситуация работы через AS и все летело, тогда - да. Чувствуете разницу? нет? а она есть.. softwarerP.S. Скучнеете Вы, если честно. Еще немного - и станете ЧАЛом. Прошу не воспринимать как наезд или что-то подобное, просто личное мнение, высказанное с сожалением и некоторой надеждой на лучшее. какой вопрос- такой и ответ. :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.07.2007, 18:45 |
|
||
|
SUID процедуры
|
|||
|---|---|---|---|
|
#18+
iscrafmAndreew же сказал: AS не используется, т.е. моя "любимая концепция" не используется. Правильно. И именно потому, что Ваша любимая концепция не используется, безопасность работает как надо. Использовалась бы - пролетала бы. Я помню, что Вы очень любите не понимать сказанное, но готов повторить вышеизложенное в различных формулировках столько раз, сколько потребуется для взлома защиты. iscrafmТак что темы для обсуждения в данном случае нет. Тема для обсуждения приведена двумя абзацами выше. Ну а на все прочие темы Вы, как и ожидалось, предпочитаете не отвечать. iscrafmЕсли бы была ситуация работы через AS и все летело, тогда - да. Поскольку работу через ваш AS Вы показать не в силах, тема представляет сугубо теоретический интерес. "К данным Искры вообще нет доступа" - это, конечно, тоже защита от несанкционированного доступа, но черезчур непрактичная. iscrafmЧувствуете разницу? Безусловно. Она в точности соответствует тому, что я назвал в самом начале и на что Вы попытались возразить - "если есть AS, и безопасность реализована на его уровне, можете попрощаться либо c безопасностью, либо с привычными инструментами работы с данными". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.07.2007, 18:54 |
|
||
|
SUID процедуры
|
|||
|---|---|---|---|
|
#18+
softwarerПринципиально различная механика работы.Вас не смущает, например, что самолеты бывают реактивные, а бывают винтовые ? Или, что мониторы есть ЭЛТ, а есть ЖК ? Впрочем, аналогии могут лишь помочь понять разницу, но не являются доказательствами, так что, по-видимому, эту веточку можно было бы и закончить. softwarerВ общем случае, только по синтаксису вызова Код: plaintext я не смогу определить, что такое p - таблица, представление, процедура, материализованное представление, внешняя таблица, синоним к источнику данных в другой БД и так далее.В то же время, столкнувшись с конструкцией Код: plaintext softwarerПо двум причинам. Во-первых, потому что inline table function - это не "функция". Она не соответствует ни математическому понятию функции (как отображения множества входных данных на множество результатов), ни компьютерному (как "подпрограммы, возвращающей значение").Ну тогда и ваше трактовка не устраивает ровно по тем же причинам, да и multistatement туда же. Хотя, мне кажется, Вы просто погорячились, особенно в математическом смысле. Да и в компьютерном, пожалуй, тоже. Это такая же подпрограмма, просто состоит из одного, хотя и, возможно, сложного оператора, что позволяет оптимизатору развернуть его при включении функции в другой запрос. Но это уже его, оптимизатора, внутреннее дело. softwarerВ гугле, кстати, мне понравилась одна фраза, хорошо иллюстрирующая это соображение: Just like views, inline table functions are macros that are expanded into the query plan. Надеюсь, разница между функцией и макросом понятна.Лично я не склонен считать такое различие слишком уж принципиальным. Так же, как между простой функцией и которой указали модификатор inline. На нижнем уровне разница может и есть, но совсем необязательно, так как оптимизирующий компилятор вполне может по месту развернуть функцию вместо ее вызова. В любом случае, это обычно не влияет на результат выполнения, особенно, когда нет доступа к исходнику. Важным это становиться лишь тогда, когда механизм выполнения действительно играет значение. IMHO, в подавляющем большинстве случаев, дела обстоят не так. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.07.2007, 19:07 |
|
||
|
SUID процедуры
|
|||
|---|---|---|---|
|
#18+
softwarer iscrafmAndreew же сказал: AS не используется, т.е. моя "любимая концепция" не используется. Правильно. И именно потому, что Ваша любимая концепция не используется, безопасность работает как надо. Использовалась бы - пролетала бы. с чего такие выводы? у ORACLE такой дырявый сервер приложений что-ли? Не слышал об этом. softwarerЯ помню, что Вы очень любите не понимать сказанное, но готов повторить вышеизложенное в различных формулировках столько раз, сколько потребуется для взлома защиты. тяжело понять такой большой поток сознания.:) softwarer iscrafmЕсли бы была ситуация работы через AS и все летело, тогда - да. Поскольку работу через ваш AS Вы показать не в силах, тема представляет сугубо теоретический интерес. "К данным Искры вообще нет доступа" - это, конечно, тоже защита от несанкционированного доступа, но черезчур непрактичная. да вроде показал. Вы даже скриншот сделали. softwarer iscrafmЧувствуете разницу? Безусловно. Она в точности соответствует тому, что я назвал в самом начале и на что Вы попытались возразить - "если есть AS, и безопасность реализована на его уровне, можете попрощаться либо c безопасностью, либо с привычными инструментами работы с данными". каждый волен выбирать. Только непонятно почему с безопасностью прощаться? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.07.2007, 19:10 |
|
||
|
SUID процедуры
|
|||
|---|---|---|---|
|
#18+
ChAВас не смущает, например, что самолеты бывают реактивные, а бывают винтовые ? Нет, не смущает, потому что разница малопринципиальна по сравнению с общностью. Вот "подводный самолет" меня бы смутил. ChAВ то же время, столкнувшись с конструкцией Код: plaintext Безусловно, засомневаюсь. ChAНу тогда и ваше трактовка не устраивает ровно по тем же причинам, Отчего же? Cкажем, следующая табличная функция (надеюсь, достаточно понятно, что она делает): Код: plaintext 1. 2. 3. 4. 5. 6. Поясните, пожалуйста, чем она не соответствует тому или иному определению. ChAЛично я не склонен считать такое различие слишком уж принципиальным. Так же, как между простой функцией и которой указали модификатор inline. Аналогия с модификатором inline в данном случае не очень корректна, имхо, хотя мы тут уже целиком уходим в область более ощущений, чем аргументов. ChAВажным это становиться лишь тогда, когда механизм выполнения действительно играет значение. IMHO, в подавляющем большинстве случаев, дела обстоят не так. С позиций максимального абстрагирования можно вернуться и к моему примеру с P. А чтобы конструктивно.... я так понимаю, вопрос сводится к тому, "на что больше похоже - на view или на procedure". Чтобы ответить на этот вопрос, придется для начала договариваться о критериях похожести, что наверное перебор. Скажем так: лично мне кажется, что на view похоже много больше. Однако я согласен с тем, что более-менее формальное обоснование здесь невозможно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.07.2007, 19:22 |
|
||
|
SUID процедуры
|
|||
|---|---|---|---|
|
#18+
iscrafmс чего такие выводы? у ORACLE такой дырявый сервер приложений что-ли? С дырявости концепции "безопасность на сервере приложений". iscrafmтяжело понять такой большой поток сознания.:) Особенно если очень стараться не понять. Но не отмажетесь. Пока побарахтаетесь, потом я как-нибудь напомню Вам все, на что Вы предпочли не ответить, включая вопрос про "не дословно". iscrafm softwarerПоскольку работу через ваш AS Вы показать не в силах, .... да вроде показал. Вы даже скриншот сделали. Нет, не показали. Показали работу некоторой искровской же хрени. Про дискаверер с кристаллом сказали что не умеете, про микростратеджи промолчали, что касается всех прочих вариантов - тоже все понятно. iscrafmкаждый волен выбирать. Безусловно. В том числе из вариантов "попрощаться с безопасностью", "попрощаться с толковыми инструментами" и "попрощаться с кривой концепцией". И кстати - уверен, что Вы уже готовы орать, что "я назвал концепцию аппсервера кривой". Так вот: не советую, это не так. Хотя в плане Вашей стратегии увести обсуждение как можно дальше от сути будет иметь свой смысл. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.07.2007, 19:31 |
|
||
|
SUID процедуры
|
|||
|---|---|---|---|
|
#18+
softwarerНет, не показали. Показали работу некоторой искровской же хрени. Про дискаверер с кристаллом сказали что не умеете, про микростратеджи промолчали, что касается всех прочих вариантов - тоже все понятно. 'смотрю в книгу...' (2 серия). Я хоть словом обмолвился, что OD,CR или MS должны работать через сервер приложений именно Искры (хотя никто не запрещает)? Сами придумали и теперь наслаждаетесь этим? Спасибо, я лучше Otard-ом. softwarer iscrafmкаждый волен выбирать. Безусловно. В том числе из вариантов "попрощаться с безопасностью", "попрощаться с толковыми инструментами" и "попрощаться с кривой концепцией". все таки хотелось бы узнать, почему при использовании App серверов прощаются с безопасностью? Вы уже не раз это повторили. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.07.2007, 19:48 |
|
||
|
SUID процедуры
|
|||
|---|---|---|---|
|
#18+
softwarer ChAВас не смущает, например, что самолеты бывают реактивные, а бывают винтовые ? Нет, не смущает, потому что разница малопринципиальна по сравнению с общностью. Вот "подводный самолет" меня бы смутил.IMHO, между inline и multistatement разница такого же порядка. softwarerБезусловно, засомневаюсь.И какие могут быть версии ? С позиции человека, знакомого с программированием вообще и SQL в частности. softwarer Код: plaintext 1. 2. 3. 4. 5. 6. Поясните, пожалуйста, чем она не соответствует тому или иному определению.Так в том то и дело, что соответствует. Отображение множества аргумента(ов) на множество результатов. А теперь возьмем другой пример Код: plaintext 1. 2. softwarerА чтобы конструктивно.... я так понимаю, вопрос сводится к тому, "на что больше похоже - на view или на procedure". Чтобы ответить на этот вопрос, придется для начала договариваться о критериях похожести, что наверное перебор.На мой взгляд, view ничем принципиально не отличается от procedure. Ведь есть же функции и процедуры без параметров, когда результат зависит только от некоей внутренней логики. И с этой точки зрения не очевидна разница между view и, например, той же функцией, но без параметров, или параметрами по умолчанию. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.07.2007, 20:40 |
|
||
|
SUID процедуры
|
|||
|---|---|---|---|
|
#18+
ChAИ какие могут быть версии ? С позиции человека, знакомого с программированием вообще и SQL в частности. Тот же самый параметризованный view. Внешний источник данных. Даже не надо выходить за пределы MSSQL - там есть OPENROWSET, вызываемый именно таким синтаксисом. И не надо рассказывать, что это функция :) - в таком случае это единственная в мире lvalue-функция, оксюморон. ChAТак в том то и дело, что соответствует. Ну так Вы уж выберите, пожалуйста, что-нибудь одно. Когда в одном письме Вы соглашаетесь с "не соответствует" (говоря "не устраивает в таком же смысле"), а в другом - "соответствует", немного трудно беседовать. Вашу мысль "они одинаковы" я понимаю, но не разделяю. Свою позицию - эта соответствует, та не соответстует - я определил. Хотелось бы четкости и от Вас. ChAПочему вдруг этой функции отказано в математическом смысле, в сравнении с вышеупомянутым примером ? Разве здесь отсутствует отображение аргументов на результат ? И чем она не похожа на подпрограмму, которая возвращает результат ? Тем, что нет явного цикла ? Да, здесь отсутствует отображение параметров на результат. Результатом этой "функции" является не "выборка", а "константный объект (запрос, или селектор, или как угодно еще его можно назвать), который может быть будет выполнен позже". Ну а константа - это не функция. Точнее, иногда для удобства манипуляций ее рассматривают как вырожденную функцию, не более того. Параметры - не передаются в эту функцию, они всего лишь описываются в ее заголовке, а реально передаются в тот самый результат, который из функции возвращается (а вернее даже и не туда, а в запрос, сконструированный в том числе из переделанного "результата"). В общем, "утка, только не плавает, а тонет, и не крякает, а матерится". ChAНа мой взгляд, view ничем принципиально не отличается от procedure. ..... То есть Вы предпочитаете продвигаться в другую обрисованную мной сторону - объявить одним словом все "источники данных". Собственно, это показывает успех кампании СУБД по абстрагированию оных, но все же не всегда практично. Возвращаясь к примеру самолетов - есть общее понятие "летательный аппарат", ЛА. Сюда включают самолеты, вертолеты, ракеты, винтокрылы, более экзотические конструкции, скажем экранопланы. Не знаю, включают ли аэростаты, но скорее всего да. У самолетов есть куча классификаций, как устаревших, так и действующих; скажем, по двигателям они делятся на поршневые (винтовые), реактивные (прямоточные, пульсирующие) и газотурбинные (турбовинтовые, турбореактивные и их вариации). Почему инженеры придумывают такую кучу слов, а не используют одно-единственное "ЛА"? Имхо, ответ вполне очевиден: так удобнее. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.07.2007, 01:05 |
|
||
|
SUID процедуры
|
|||
|---|---|---|---|
|
#18+
softwarerТот же самый параметризованный view.Да хоть горшком обзовите. Вы явно указываете значения параметров в аналогичной вызову функции манере. А с учетом синтаксиса SQL, явно получаете результат и он имеет табличный характер. У меня есть сильное подозрение, что если подобное выражение показать 10 программистам БД, даже MSSQL-щикам, и они не знают, что OPENROWSET можно использовать в модифицирующих операторах, по крайней мере 9 из них уверенно скажут, что это вызов функции, и только 10 просто почувствует подвох в вопросе, хотя по-прежнему не будет знать правильного ответа. Короче, если двигаться в предложенном Вами направлении, то мало, что оно выглядит как утка, ходит как утка и крякает как утка, надо непременно знать, что у нее внутри, чтобы убедиться, что это утка. Позиция понятна, хотя не готов разделить ее в данном случае. Есть много нюансов, обсуждение которых может занять неоправданно много времени с мизерным результатом. softwarerНу так Вы уж выберите, пожалуйста, что-нибудь одно. Когда в одном письме Вы соглашаетесь с "не соответствует" (говоря "не устраивает в таком же смысле"), а в другом - "соответствует", немного трудно беседовать. Вашу мысль "они одинаковы" я понимаю, но не разделяю. Свою позицию - эта соответствует, та не соответстует - я определил. Хотелось бы четкости и от Вас.Ну, это просто, не надо отходить от контекста, в котором фраза была сказана. От противного, если inline-функция не удовлетворяет Вашему пониманию табличной функции, хотя, на мой, и, уверен, не только на мой, взгляд, имеет все те же самые признаки, как multistatement или вариант, предложенный Вами, то наверное имеет смысл выбрать другие критерии, по которым можно судить о том, что такое функция вообще и ее "табличность" в частности. Версия об inline-функции, как о параметризованном view, безусловно имеет право на жизнь, но вряд ли ее можно доказать в буквальном смысле, не имея доступа к исходникам. Мы просто не можем "разобрать эту утку". Не исключено, что эта версия лишь метафора, применимая в определенном контексте, степень удачности который сильно зависит от ситуации. softwarer ChAПочему вдруг этой функции отказано в математическом смысле, в сравнении с вышеупомянутым примером ? Разве здесь отсутствует отображение аргументов на результат ?здесь отсутствует отображение параметров на результат. Результатом этой "функции" является не "выборка", а "константный объект (запрос, или селектор, или как угодно еще его можно назвать), который может быть будет выполнен позже". Параметры - не передаются в эту функцию, они всего лишь описываются в ее заголовке, а реально передаются в тот самый результат, который из функции возвращается (а вернее даже и не туда, а в запрос, сконструированный в том числе из переделанного "результата").Как-то не очень удачно сформулировано, не находите ? Интересно было бы узнать, как много программистов поймут и согласятся с подобной формулировкой ? Мне, к сожалению, даже после многократного перечитывания, понять ход мысли не удалось. Особенно - "реально передаются в тот самый результат". Даже не касаясь смысла "реальности передачи", то это признак чего ? Функции или ее "табличности". Впрочем, по ходу, возникает другой вопрос. Если внутри функции, приведенной Вами в качестве примера, использовать запросы к каким-либо таблицам, хотя бы аналогично моему примеру, она останется табличной функцией или нет ? И если "да", то почему ? softwarerТо есть Вы предпочитаете продвигаться в другую обрисованную мной сторону - объявить одним словом все "источники данных". Собственно, это показывает успех кампании СУБД по абстрагированию оных, но все же не всегда практично.Возможно не всегда, но, IMHO, более чем часто. Особенно учитывая, что программирование, в целом, явно движется в сторону закрытости кода в форме компонент, доступ к которым осуществляется только посредством интерфейса. В таких случаях, мы можем судить о том, что за ним скрывается лишь по некоторым формальным признакам, например, синтаксису вызова. То же свойство может быть просто переменной, но может и представлять собой пару методов Get/Set. Таким образом, в обсуждаемом нами примере, мы передаем параметры определенным образом, обычно принятом при вызове функций, получаем результат, который можно использовать в качестве таблицы, значит это функция табличного вида. В определенных ситуациях можно подняться в абстрагировании на уровень выше, например, в клиентских компонентах часто используется понятие datasource, и его вполне достаточно, чтобы понимать, что мы можем получить некие данные, а в контексте работы с СУБД, наверняка в табличном виде. Хотя в общем случае, это просто некий массив данных, у которого есть количество измерений и границы. Далее, вы используете эту метафору независимо от того, что на самом деле послужило источником данных. softwarerВозвращаясь к примеру самолетов - есть общее понятие "летательный аппарат", ЛА. Сюда включают самолеты, вертолеты, ракеты, винтокрылы, более экзотические конструкции, скажем экранопланы. Не знаю, включают ли аэростаты, но скорее всего да. У самолетов есть куча классификаций, как устаревших, так и действующих; скажем, по двигателям они делятся на поршневые (винтовые), реактивные (прямоточные, пульсирующие) и газотурбинные (турбовинтовые, турбореактивные и их вариации). Почему инженеры придумывают такую кучу слов, а не используют одно-единственное "ЛА"? Имхо, ответ вполне очевиден: так удобнее.Все это конечно правильно, но если я, допустим, скажу, что прилечу на самолете, насколько важно собеседнику, какого именно вида самолет ? А если я просто скажу, что прилечу ? Т.е., уточнение может играть роль лишь в определенном контексте. Даже в обыденной жизни мы постоянно пользуемся абстрагированием, уровень которого сильно зависит от контекста. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.07.2007, 15:50 |
|
||
|
SUID процедуры
|
|||
|---|---|---|---|
|
#18+
ChAУ меня есть сильное подозрение, что если подобное выражение показать 10 программистам БД, даже MSSQL-щикам, и они не знают, что OPENROWSET можно использовать в модифицирующих операторах, по крайней мере 9 из них уверенно скажут, что это вызов функции, и только 10 просто почувствует подвох в вопросе, хотя по-прежнему не будет знать правильного ответа. То есть предлагаете подстраиваться под ламеров? Извините, не нравится мне этот путь. ChAКак-то не очень удачно сформулировано, не находите ? Может быть. Я вообще не очень удачно объясняю, а в тот момент еще и спешил. Еще раз: эта "функция" не возвращает никакого результата. Вообще. И даже не вызывается. Это просто запись в системной таблице - "вот такая константа есть то, что следует подставить в запрос вместо упоминания этой функции". ChAВпрочем, по ходу, возникает другой вопрос. Если внутри функции, приведенной Вами в качестве примера, использовать запросы к каким-либо таблицам, хотя бы аналогично моему примеру, она останется табличной функцией или нет ? И если "да", то почему ? Безусловно, останется. Потому что берет и по-прежнему таки вычисляет результат на основании входных параметров. Текущий контекст - включая снапшот состояния БД - есть неявный параметр любых ХП, точно так же, как например в Oracle - состояние пакетов, установленные переменные контекста, политики доступа. ChAВозможно не всегда, но, IMHO, более чем часто. Особенно учитывая, что программирование, в целом, явно движется в сторону закрытости кода в форме компонент, доступ к которым осуществляется только посредством интерфейса. В случае СУБД развитие программирования пришло к этому еще тридцать лет назад. Однако, специфицированный интерфейс никогда не отменял необходимости знать особенности реализации. Его роль в том, что он позволяет думать о реализации не каждую минуту, а только при необходимости - при планировании эффективности и при оптимизации. ChAТо же свойство может быть просто переменной, но может и представлять собой пару методов Get/Set. Верно. И это влечет за собой некоторые особенности - скажем, если я закачаю в StringList миллион строк, а потом буду активно использовать StringList.Text, это будет несколько небыстро. ChAТаким образом, в обсуждаемом нами примере, мы передаем параметры определенным образом, обычно принятом при вызове функций, Нет. Параметры никуда не передаются. Мы "записываем параметры в том же синтаксисе, что и при вызове функций". Аналогично с "получаем результат". Так же мы одинаковым синтаксисом записываем обращение к таблице и вьюхе. Если хотите использовать для них одно и то же слово - предлагайте соответствующий вариант, проголосуем. Надеюсь, Вы согласны, что если подход с "объединением по синтаксису" правилен, он должен использоваться повсеместно? ChAВсе это конечно правильно, но если я, допустим, скажу, что прилечу на самолете, насколько важно собеседнику, какого именно вида самолет ? Настолько же, насколько вашему пользователю важно, пишете ли Вы программу на Клиппере или на Каше. Однако, Вы - не Ваш пользователь, и если полагаете сходство между ними - в том, что оба начинаются на "К" - более существенным, нежели все остальное..... не хотел бы я лететь на Вашем самолете. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.07.2007, 10:09 |
|
||
|
SUID процедуры
|
|||
|---|---|---|---|
|
#18+
softwarerТо есть предлагаете подстраиваться под ламеров? Извините, не нравится мне этот путь.Можно ли понять так, что если кто-то не знает того, что знаете Вы, то он ламер ? А если бы Вам были неизвестны особенности OPENROWSET, Вы тоже были бы им ? *Вообще, когда начинают поминать ламеров всуе, то лично я начинаю подозревать, что у человека комплекс кулхацкера. Предлагается, в дальнейшем, не использовать уничижительные оценки там, где, IMHO, этому не место. В любом случае, именование кого-либо ламером не может являться аргументом. softwarerЕще раз: эта "функция" не возвращает никакого результата. Вообще. И даже не вызывается. Это просто запись в системной таблице - "вот такая константа есть то, что следует подставить в запрос вместо упоминания этой функции".Inline-функция ? Так все функции и процедуры в MSSQL, насколько мне известно, это записи в системных таблицах. И не просто подставляется в запрос, а учитывая значения параметров, указанные в момент вызова, и результат будет от них зависеть. softwarerБезусловно, останется. Потому что берет и по-прежнему таки вычисляет результат на основании входных параметров. Текущий контекст - включая снапшот состояния БД - есть неявный параметр любых ХП, точно так же, как например в Oracle - состояние пакетов, установленные переменные контекста, политики доступа.По-прежнему, несколько бессвязно, IMHO. Особенно непонятно, при чем здесь снапшоты, состояния пакетов и политики доступа, бишь контекст времени выполнения кода. Inline-функция тоже его вполне учитывает. softwarerОднако, специфицированный интерфейс никогда не отменял необходимости знать особенности реализации. Его роль в том, что он позволяет думать о реализации не каждую минуту, а только при необходимости - при планировании эффективности и при оптимизации.Если имеется закрытый компонент, то каким образом он реализован, как правило, неизвестно. Более того, сами производители таких компонент не очень охотно раскрывают, если раскрывают, детали реализации. А дизассемблирование, на мой взгляд, не оправдано в промышленных разработках, разве что в редчайших случаях, когда цена получения функционального аналога неоправданно высока. Впрочем, эта ветка слишком сильно ушла в сторону от темы обсуждения, так что есть предложение ее закрыть. softwarerНет. Параметры никуда не передаются. Мы "записываем параметры в том же синтаксисе, что и при вызове функций". Аналогично с "получаем результат".В данном случае, у вас нет другого способа доказать это, кроме как предьявить исходники. Остальное, не более чем домыслы, основанные на одной фразе из Google. Причем не разработчика, надо заметить, а пусть и квалифицированного, но пользователя MSSQL. То, что inline-функцию можно воспринимать, как parameterised views, не значит, что она ею и является. Но даже если не цепляться к букве, почему parameterised views не является функцией ? Т.е., где граница, до которой "не вычисляет", а после "вычисляет" ? Короче, хотелось бы какой-нибудь внятной ссылки на явное и четкое определение ? А то может получается, что мы обсуждаем только Ваше личное понимание табличных функций, которое противоставляено трактовке MSSQL. Если дела обстоят таким образом, то не вижу смысла продолжать прения. softwarerНастолько же, насколько вашему пользователю важно, пишете ли Вы программу на Клиппере или на Каше. Однако, Вы - не Ваш пользователь, и если полагаете сходство между ними - в том, что оба начинаются на "К" - более существенным, нежели все остальное..... не хотел бы я лететь на Вашем самолете.Без обид, но это один из Ваших стандартных приемов. Приписать собеседнику нечто, и сделать из этого неутешительный вывод. Если хотите продолжать и далее в таком же духе, то я, опять же, не вижу смысла в продолжении. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.07.2007, 12:48 |
|
||
|
SUID процедуры
|
|||
|---|---|---|---|
|
#18+
softwarer В целом, подход "только ХП" не обеспечивает практически более высокой независимости звеньев по сравнению с подходом "разумно использовать DML с клиента". Давайте я попробую привести Вам пример некоей архитектуры, а Вы скажите, есть ли выигрыш в использовании процедур или нет. Представим себе систему, в которой основной единицей информации являются некие XML документы. Типичная структура документа - master и несколько details. На уровне интерфейса каждый документ является независимым. Необходимость операций над записями details как единого множества предполагает реляционную структуру хранения. Ввод информации в БД осуществляется через процедуры, принимающие XML в качестве параметра. Таким образом: - весь документ, который содержит десятки строк из разных таблиц передаётся в базу за одну интеракцию. - контроль транзакций обеспечивается внутри базы - реальная структура базы полностью изолирована от аппликации - изменение структуры документа не требует изменения модуля доступа к БД. ИМХО, вышеперечисленное является преимуществом подхода. Аналогичным образом, выборка информации из базы осуществляется с помощью вызова процедур, которым передаётся скажем id документа. Возвращается опять же XML за одну интеракцию. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.07.2007, 08:56 |
|
||
|
SUID процедуры
|
|||
|---|---|---|---|
|
#18+
softwarer ChAВас не смущает, например, что самолеты бывают реактивные, а бывают винтовые ? Нет, не смущает, потому что разница малопринципиальна по сравнению с общностью. Вот "подводный самолет" меня бы смутил. Было такое. ЛПЛ (летающая подводная лодка) Ушакова, осталась на бумаге. У американцев в 60-х какой-то энтузиаст построил именно подводный самолет (модель). В серию ессно не пошел В каком-то около MS-ном блоге я читал, что, действительно на этапе разработки InLine функции назывались параметризированными View и только перед выпуском продукта были переименованы в функции. ИМХО зря ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.07.2007, 10:56 |
|
||
|
|

start [/forum/topic.php?fid=32&msg=34644924&tid=1544415]: |
0ms |
get settings: |
8ms |
get forum list: |
17ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
166ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
83ms |
get tp. blocked users: |
1ms |
| others: | 230ms |
| total: | 526ms |

| 0 / 0 |
