:: Visual Foxpro, Foxpro for DOS
Re: Современные методы работы с данными - OBDC, ADO(OLE DB) и библиотеки классов - Обсуждение
PaulWist

Сообщений: 14601
Дата регистрации: 01.04.2004
Igor Korolyov
PaulWist
Она правильно падает, поскольку "во второй раз" - нет разрешений для юзера
Это как? Каждую чётную секунду есть, а каждую нечётную нет Права должны быть

Ну по любому, права есть, только для разных юзеров РАЗНЫЕ

Пример был, показать контекст выполнения и олицетворение, залогиненный юзер может выполнять только свои ХП, чужие он может выполнять либо "внутри" своих ХП (на самом деле там немного сложнее, права проверяются по цепочкам владения, но для примера сойдёт), либо от имени другого юзера, получив НАПРЯМУЮ (не через посредника) чужие права, что как правильно было замечено является моветоном.

Поэтому, прицепить CAD для каждой таблицы, в "общем" случае, нельзя!

Igor Korolyov
Клиент вообще не должен ничего ни про какие серверные прибабахи знать. Он залогинился и работает - так как ему удобно.

Золотые слова, Юрий Венедиктович (c) Наша Russia

Igor Korolyov
Удобно по одной записи сохранять - при том что каждая из них по своей сути НЕ нарушает никаких ограничений в СУБД, т.е. не является заведомо ошибочной - пусть так сохраняет.
А диктовать ему что "ты только через 1 ХП и 1 вызов делай - будь там 1 запись, или 100500" - это бред.

Тут вопрос "религиозный", я о своей прилюдно сказал, теперь твоя очередь сказать, что исповедуншь неправильную другую "религию"

Igor Korolyov
Права должны быть инвариантны, и никак не зависеть ни от порядка DML операций, ни от объёма передаваемых данных (ну разве что именно объём это самое "право" и ограничивает - но это уже не совсем разграничение доступа, это управление ресурсами).

Спишем на то, что с примером кода ты не разбирался, поэтому сделал такие выводы.


------------------
Есть многое на свете, друг Горацио...
Что и не снилось нашим мудрецам.
(В.Шекспир Гамлет)
Ratings: 0 negative/0 positive
Re: Современные методы работы с данными - OBDC, ADO(OLE DB) и библиотеки классов - Обсуждение
Igor Korolyov
Автор

Сообщений: 34580
Дата регистрации: 28.05.2002
PaulWist
Ну по любому, права есть, только для разных юзеров РАЗНЫЕ
И что? У тебя в приложении на одной форме показываются две таблицы (при том полученные через одно соединение), но под РАЗНЫМИ правами?
Я не хочу разбираться с кодом для СУБД с которой не работаю и ближайшее время не собираюсь. Но сам принцип я не улавливаю. Никогда не сталкивался с ситуациями что "права то есть, но их как бы и нет". Это какой-то кривой дизайн системы.
PaulWist
залогиненный юзер может выполнять только свои ХП
И это логично. И выполнять их он может сколько угодно раз и в какой угодно последовательности - при том результат НЕ изменится.
На "чужие" - да, ему нужны права. В оракле тоже есть свои нюансы - скажем не всё то что разрешено "через роль" может быть доступно при выполнении ХП без дополнительных телодвижений. НО строить систему так что это безобразие должен разруливать клиент, при том какими-то малоочевидными способами, и без возможности тупо вызывать ХП в произвольном порядке и получать всегда предсказуемый результат - такое мне бы в голову точно не пришло.
Ну и да, на основании этого надо зарезать напрочь половину технологий доступа к данным - т.к. я уверен что ни дотнетовские датасетные "адаптеры", ни какой распространённый ОРМ (что в дотнете, что в яве) такой фигни тоже не поддерживает
Ваяем систему настолько "в себе", что пользовать её можно лишь одним очень жёстко регламентированным способом - это путь в никуда.
PaulWist
Поэтому, прицепить CAD для каждой таблицы, в "общем" случае, нельзя!
Поэтому нафиг такую систему! И в фоксе, и в других языках. Изобретать велосипеды с квадратными колёсами вместо штатных, уже написанных и нормально работающих механизмов - лишь потому что авторы придумали на бэкэнде какую-то невнятную хрень
PaulWist
Тут вопрос "религиозный", я о своей прилюдно сказал, теперь твоя очередь сказать, что исповедуншь неправильную другую "религию"
Почему ж неправильную? Она просто не является экстремистской - пишите как удобнее, и как посчитаете полезным для каждого конкретного случая. Надо погрузить 100500 записей одной пачкой (быстро, атомарно, с серверной пре/пост-обработкой) - напишите ХП (и сам так делал - когда это на самом деле ПОЛЕЗНО), надо сохранить мастер-детали построчно - сохраняйте построчно - и то и другое вполне хорошо. А запрещать что-либо по совершенно надуманным соображениям (попутно выкидывая единственную более-менее адекватную фоксовую технологию работы с данными - ну или навешивая на неё какие-то мега-монструозные коды - лишь бы ублажить Ктулху) - это плохо.
Вот скажи честно, твоя хитрая БД может быть использована из явы при помощи hibernate, или из дотнета при помощи EntityFramework? Без влезания внутрь и использования низкоуровневых ридеров/коммандов...
Я так понимаю что нет (иначе и с фоксом не возникало бы "вопросов") - а раз так - то ещё раз. фтопку


------------------
WBR, Igor
Ratings: 0 negative/0 positive
Re: Современные методы работы с данными - OBDC, ADO(OLE DB) и библиотеки классов - Обсуждение
прошелмимо

Сообщений: 784
Дата регистрации: 21.02.2012
PaulWist
Тут вопрос "религиозный"

че уже никак по-простому?
Ratings: 0 negative/0 positive
Re: Современные методы работы с данными - OBDC, ADO(OLE DB) и библиотеки классов - Обсуждение
прошелмимо

Сообщений: 784
Дата регистрации: 21.02.2012
является моветоном

+ я не понимаю.
намудрил сам и с группой хрень с полномочиями,
ну ладно,
ну зачем тогда обсерать делать замечания
про то, что определенный механизм и логика работы с данными
неверны, нелогичны и т.д. ..?
Ratings: 0 negative/0 positive
Re: Современные методы работы с данными - OBDC, ADO(OLE DB) и библиотеки классов - Обсуждение
pasha_usue

Сообщений: 3647
Откуда: Е-бург
Дата регистрации: 06.10.2006
прошелмимо
PaulWist
Тут вопрос "религиозный"

че уже никак по-простому?
Просто движок Павла обсуждается уже не в первый раз. И на самом деле, движок реализует вырожденную трёхзвенку, если я правильно понимаю. Это когда MsSQL выступает в качестве сервера приложения.

Но примера я действительно не понял, хотя и полностью разобрал.
Ratings: 0 negative/0 positive
Re: Современные методы работы с данными - OBDC, ADO(OLE DB) и библиотеки классов - Обсуждение
Igor Korolyov
Автор

Сообщений: 34580
Дата регистрации: 28.05.2002
pasha_usue
движок реализует вырожденную трёхзвенку, если я правильно понимаю. Это когда MsSQL выступает в качестве сервера приложения.
Т.е. он всё это время хочет сказать что разработал определённый АПИ (не штатный для реляционной СУБД), и этот АПИ не позволяет "по очереди" получить или изменить, скажем, 2 источника данных - только "за один вызов".

Но тогда с какого надо было бы использовать ЛЮБУЮ систему ориентированную на работу с СУБД (и основанную прежде всего на SQL запросах, и лишь затем на вызове ХП для некоторых целей) для работы с НЕ-СУБД, которым и стал его MSSQL+система ХП?

Т.е. его претензия из разряда "CAD не может работать с facebook API, т.к. там нет таблиц/курсоров" - ну это и понятно, и вообще не вызывает вопросов... Кроме одного - при чём тут работа с СУБД, запрашиваемая автором темы


------------------
WBR, Igor
Ratings: 0 negative/0 positive
Re: Современные методы работы с данными - OBDC, ADO(OLE DB) и библиотеки классов - Обсуждение
прошелмимо

Сообщений: 784
Дата регистрации: 21.02.2012
pasha_usue
качестве сервера приложения.

та ну нах

немцы нервно курят в сторонке

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

потом это никто не мог сопровождать,
да и сервер раком стоял динамич-ки исполняя все это г.
Ratings: 0 negative/0 positive
Re: Современные методы работы с данными - OBDC, ADO(OLE DB) и библиотеки классов - Обсуждение
pasha_usue

Сообщений: 3647
Откуда: Е-бург
Дата регистрации: 06.10.2006
Igor Korolyov
pasha_usue
движок реализует вырожденную трёхзвенку, если я правильно понимаю. Это когда MsSQL выступает в качестве сервера приложения.
Т.е. он всё это время хочет сказать что разработал определённый АПИ (не штатный для реляционной СУБД),
Игорь. Это всё-таки исключительно моё понимание, как оно сложилось. Я бы не торопился сразу обсуждать.
Igor Korolyov
и этот АПИ не позволяет "по очереди" получить или изменить, скажем, 2 источника данных - только "за один вызов".
Похоже, с точностью до наоборот. Какие-то сложности с обновлением 2-х источников данных могли стать одной из предпосылок к тому чтоб увести полностью логику на хранимки.
Ratings: 0 negative/0 positive
Re: Современные методы работы с данными - OBDC, ADO(OLE DB) и библиотеки классов - Обсуждение
прошелмимо

Сообщений: 784
Дата регистрации: 21.02.2012
pasha_usue
увести полностью логику на хранимки

теперь бы мне хотелось узнать количество прод.копий этой разработки.

скорость процесса разработки/масштабирования.

трудоемкость/трудозатраты на поддержку.
Ratings: 0 negative/0 positive
Re: Современные методы работы с данными - OBDC, ADO(OLE DB) и библиотеки классов - Обсуждение
Igor Korolyov
Автор

Сообщений: 34580
Дата регистрации: 28.05.2002
pasha_usue
Игорь. Это всё-таки исключительно моё понимание, как оно сложилось. Я бы не торопился сразу обсуждать.
Однако оно сразу многое проясняет. Если это так, то всё становится совершенно понятно - все претензии к CAD, и прочее.
Естественно ODBC/OLEDB и прочие подобные узкоспециализированные механизмы никак не приспособлены для работы с произвольными АПИ, "сервисами" и т.п.
Конечно же в парадигме "работы с сервисом" я бы тоже не стал разделять "сохранение объекта" на 10-20 вызовов отдельных методов, так же и запрос данных сложного объекта...


------------------
WBR, Igor
Ratings: 0 negative/0 positive
Re: Современные методы работы с данными - OBDC, ADO(OLE DB) и библиотеки классов - Обсуждение
PaulWist

Сообщений: 14601
Дата регистрации: 01.04.2004
Igor Korolyov
PaulWist
Ну по любому, права есть, только для разных юзеров РАЗНЫЕ
И что? У тебя в приложении на одной форме показываются две таблицы (при том полученные через одно соединение), но под РАЗНЫМИ правами?
Я не хочу разбираться с кодом для СУБД с которой не работаю и ближайшее время не собираюсь. Но сам принцип я не улавливаю. Никогда не сталкивался с ситуациями что "права то есть, но их как бы и нет". Это какой-то кривой дизайн системы.
...

Да.

1. Пример первый - справочник, есть юзер заполняющий/модифицирующий справочник, есть юзер только выбирающий из справочника, эти два юзера находятся в разных ролях/группах, у первого есть право на выполнение ХП с select/insert/update/delete у второго только на ХП с select.

Аналогично с документами (+ "тараканы" документов, типа кто может видеть суммы, цены кто нет итд).

2. Пример два, склад, кладовщик на планшете с Анроидом, на PHP имеет форму со списком договоров/контрактов итд, при приёме товаров отмечает, что для договора №1 приехало 5шт товара1, товара2; для контракта №2 пришел такой-то товар, или из производства "нарисовалось" 3 шт товар3 и 4 шт товара4 по счету №3 и №4.

При сохранении, ХП формирует письма манагерам (не клиент, а сервер формирует и отсылает mail) о том, что товар на складе, обрати внимание, что эту же процедуру можно выхвать и с компа.
Так же, формируется всего ОДНО письмо для каждого манагера, а не 100500 писем по всем записям, которые отметил кладовщик.

В MSSQL для такой операции существует системная БД msdb, в этой БД "мои" логины/юзеры никто и звать их никак и не один вменяемый dba не даст доступа к сист. базам данных, но право выполнения системных ХП в системной БД дают сертификаты.

Это пример, когда не имея "прямого" соединения с БД, не имея в ней вАще никаких прав, а используя олицетворение посредством сертификата выполняется ХП "чужой" БД.

3. Ну из той же оперы, что и п.2, это доступ к "соседней" БД.

Igor Korolyov
PaulWist
залогиненный юзер может выполнять только свои ХП
И это логично. И выполнять их он может сколько угодно раз и в какой угодно последовательности - при том результат НЕ изменится.
На "чужие" - да, ему нужны права. В оракле тоже есть свои нюансы - скажем не всё то что разрешено "через роль" может быть доступно при выполнении ХП без дополнительных телодвижений. НО строить систему так что это безобразие должен разруливать клиент, при том какими-то малоочевидными способами, и без возможности тупо вызывать ХП в произвольном порядке и получать всегда предсказуемый результат - такое мне бы в голову точно не пришло.

Хорошо, будем считать, что я плохо объяснил

Igor Korolyov
...
Ну и да, на основании этого надо зарезать напрочь половину технологий доступа к данным - т.к. я уверен что ни дотнетовские датасетные "адаптеры", ни какой распространённый ОРМ (что в дотнете, что в яве) такой фигни тоже не поддерживает
Ваяем систему настолько "в себе", что пользовать её можно лишь одним очень жёстко регламентированным способом - это путь в никуда.

Что-то, я сомневаюсь, что перечисленные ЯП не умеют работать с ХП серверов. ;)

Igor Korolyov
PaulWist
Поэтому, прицепить CAD для каждой таблицы, в "общем" случае, нельзя!
Поэтому нафиг такую систему! И в фоксе, и в других языках. Изобретать велосипеды с квадратными колёсами вместо штатных, уже написанных и нормально работающих механизмов - лишь потому что авторы придумали на бэкэнде какую-то невнятную хрень

То есть использование ХП сервера - это "квадратные колёса", а вот прямой доступ к таблицам - это штатный механизм. (только спрашивается: нафига сервер-team заморачивались реализуя парадигму ХП)


Igor Korolyov
PaulWist
Тут вопрос "религиозный", я о своей прилюдно сказал, теперь твоя очередь сказать, что исповедуншь неправильную другую "религию"
Почему ж неправильную? Она просто не является экстремистской - пишите как удобнее, и как посчитаете полезным для каждого конкретного случая. Надо погрузить 100500 записей одной пачкой (быстро, атомарно, с серверной пре/пост-обработкой) - напишите ХП (и сам так делал - когда это на самом деле ПОЛЕЗНО), надо сохранить мастер-детали построчно - сохраняйте построчно - и то и другое вполне хорошо. А запрещать что-либо по совершенно надуманным соображениям (попутно выкидывая единственную более-менее адекватную фоксовую технологию работы с данными - ну или навешивая на неё какие-то мега-монструозные коды - лишь бы ублажить Ктулху) - это плохо.

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

Igor Korolyov
Вот скажи честно, твоя хитрая БД может быть использована из явы при помощи hibernate, или из дотнета при помощи EntityFramework? Без влезания внутрь и использования низкоуровневых ридеров/коммандов...
Я так понимаю что нет (иначе и с фоксом не возникало бы "вопросов") - а раз так - то ещё раз. фтопку

Неправильно понимаешь, от клиента работа БД не зависит, поскольку использует штатный механизм доступа данных через ХП, за исключением тех ЯП, которые не умеют работать с ХП.


------------------
Есть многое на свете, друг Горацио...
Что и не снилось нашим мудрецам.
(В.Шекспир Гамлет)




Исправлено 1 раз(а). Последнее : PaulWist, 23.03.18 20:37
Ratings: 0 negative/0 positive
Re: Современные методы работы с данными - OBDC, ADO(OLE DB) и библиотеки классов - Обсуждение
PaulWist

Сообщений: 14601
Дата регистрации: 01.04.2004
pasha_usue

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

Но примера я действительно не понял, хотя и полностью разобрал.

Тёзка, привет.

1. Скорее - это толстый клиент, поскольку сервер "среднего слоя" и СУБД это одно и то же.

К такой архитектуре привели разнородные "клиенты", более того "клиенты" вообще из других систем.

2. Тут forum.foxclub.ru Игорю рассказал пример, откуда "растут" ноги такой архитектуры.


------------------
Есть многое на свете, друг Горацио...
Что и не снилось нашим мудрецам.
(В.Шекспир Гамлет)




Исправлено 2 раз(а). Последнее : PaulWist, 23.03.18 20:34
Ratings: 0 negative/0 positive
Re: Современные методы работы с данными - OBDC, ADO(OLE DB) и библиотеки классов - Обсуждение
Igor Korolyov
Автор

Сообщений: 34580
Дата регистрации: 28.05.2002
PaulWist
Что-то, я сомневаюсь, что перечисленные ЯП не умеют работать с ХП серверов.
Система где вся работа заключается в "вызове ХП" IMHO не должна называться СУБД
Есть технологии для работы с СУБД - они основаны на SQL, и лишь изредка, в "особых случаях" на вызове ХП.
Есть технологии для работы с сервисами (в широком смысле - не обязательно web или rest) - они основаны на "контрактах" aka интерфейсах aka АПИ.
Смешивать их не следует.

Твоя система, вероятно, в чистом виде второй вариант (полагаю что штатный DML там запрещён в принципе - никаких SELECT/INSERT/UPDATE/DELETE клиентам отсылать не позволено). То что она реализована на платформе MSSQL - ну что ж, всякое бывает, не вижу смысла особо критиковать не совсем подходящий выбор среды реализации (естественно что на языке широкого профиля гораздо удобнее, проще и лучше реализуются "сервисы" нежели на T-SQL). Единственное что НАДО делать - так это чётко проговаривать - фоксовый CAD не подходит для работы с сервисами (да, там есть в качестве источника XML - но я полагаю что толку от этого будет около 0). Равно и ODBC/ADODB - в общем случае НЕподходящий механизм для работы с сервисами - слишком много ограничений и неудобств, проистекающих из совершенно другой "направленности" этих инструментов.

При этом автор темы не собирается делать такого рода систему - это абсолютно точно
Хотя я и намекал ему что нынче SOA в тренде - но если он и пойдёт по этому пути, я всячески советую ему НЕ делать сервисы силами СУБД - даже если там можно "встраивать" C#/java код. Гораздо лучше писать сервисы на обычных языках и платформах, а с СУБД работать именно как с СУБД (уже из слоя сервисов) - т.е. обычным SQL-ем, скорее всего автогенерируемым тем или иным ORM-ом. Заодно (это тоже тренд - CodeFirst подход) и сама структура БД будет генерироваться на основании "классов предметной области" - программных сущностей описанных в среднем слое.

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

Трёхзвенная архитектура предполагает работу среднего слоя с СУБД именно посредством SQL-я, и весьма малое количество "логики" в СУБД.

Двухзвенная архитектура (чаще всего применяемая в фоксе, если он не с dbf-ами работает) предполагает объединение среднего слоя "бизнес-логики" именно с клиентским слоем, а никак не с СУБД.

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


------------------
WBR, Igor
Ratings: 0 negative/0 positive
Re: Современные методы работы с данными - OBDC, ADO(OLE DB) и библиотеки классов - Обсуждение
прошелмимо

Сообщений: 784
Дата регистрации: 21.02.2012
2 PaulWist

Сколько прод.копий?
Какие трудозатраты на поддержку и масштабирование?
Сколько разработчиков?
Разработчики меняются?
Ratings: 0 negative/0 positive


Извините, только зарегистрированные пользователи могут оставлять сообщения в этом форуме.

On-line: 10 NSF Guest (Гостей: 8)

© 2000-2024 Fox Club 
Яндекс.Метрика