powered by simpleCommunicator - 2.0.37     © 2025 Programmizd 02
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / select для производного класса
25 сообщений из 65, страница 2 из 3
select для производного класса
    #39714722
Фотография kolesov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
doublefintkolesovНаследование хранимых - часть хорошей архитектуры... если Каше, конечно ;)
"Favor object composition over class inheritance” the Gang of Four
"Subclasses are dependent on the implementation and entire hierarchy of the parent class: the tightest form of coupling available in OO design "

Шаблонное мышление ведет к шаблонным решениям - это даже чем-то хорошо. У "банды" неплохо получилось организовать жизнь массы средней руки проектировщиков и программистов "без задоринки". Задумываться не обязательно. Ну и средний уровень болота уверенно стабилен ;) Религия ведь тоже массу людей с сомнительными зачастую перспективами эффективно превращает в прекрасную нормированную паству (или стадо - тут как посмотреть) - всем от этого только польза! Там правда, банда двенадцати поработала ;)

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

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

груз -------* строка грузового документа *------- грузовой документ

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

Вся информация о грузе собирается одним запросом, контроль связей очень простой и надежный, не нужно особо задумываться при модификациях или изменениях бизнес-требований. Экономится не то, чтобы много времени, а ПРОРВА ВРЕМЕНИ. Удешевляется разработка и, главное, поддержка. И это только один пример.
...
Рейтинг: 0 / 0
select для производного класса
    #39714806
doublefint
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kolesov ... И это только один пример ... Именно. Т.е. частный случай. Как только показалось, что нашли универсальное решение для всех возможных сценариев ( "наследование наше всё" ) - готовьтесь. А развешивать ярлыки на основании своего частного случая ...
kolesov ... Задумываться не обязательно ... kolesov ... не нужно особо задумываться ... Классический kolesov :)
kolesovОт груза наследовались контейнеры, насыпные-навалочные, автомобили , нефтепродукты и проч. А потом прилетает постановка сделать приложение, работающее только, и только, например, с автомобилями.
...
Рейтинг: 0 / 0
select для производного класса
    #39714910
Фотография kolesov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
doublefint,

Вот скучаю с Вами - сыплете чужими цитатами и своей демагогией. Я показал хорошее решение - многим пригодилось. Вы ЧТО показали?
...
Рейтинг: 0 / 0
select для производного класса
    #39715020
doublefint
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kolesov ... Вы ЧТО показали? ... Надеюсь, что предупредил - решение имеет свои существенные недостатки. Думать надо всегда. Смешали всё в одну кучу ( хорошая архитектура, ага :) - готовьтесь разгребать. Кстати, чем можете помочь автору темы? :)
Интересный прием использования наследования можно посмотреть у самой ISC, когда базовый класс содержит параметры, по которым генерируется код наследников. Примеров хранимого наследования, навскидку, не припомню - если кто знает, подскажите.
kolesov сыплете чужими цитатами Ну, имея опыт общения с вами, вынужден. Для вас ведь никто не является авторитетом, не так ли? :) Если создатели ООП говорят быть осторожнее с наследованием, к кому же прислушаться? :)
kolesov и своей демагогией Ну что вы, в этом вы признанный лидер :) "Концентрация на частности", "ad hominem" - перечитайте свои сообщения в этой теме, можно только учиться :)
...
Рейтинг: 0 / 0
select для производного класса
    #39715282
Фотография kolesov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
doublefint,

Приношу извинения, видимо про визг вы приняли на свой счет - а мне вовсе не хотелось переходить на личности - просто фигура речи такая получилась. Согласен, довольно грубо. Еще раз простите. И предлагаю различать дискуссию от обсуждения и осуждения собеседников, ок?
...
Рейтинг: 0 / 0
select для производного класса
    #39715295
logist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
doublefintримеров хранимого наследования, навскидку, не припомню - если кто знает, подскажите.

Ну надо заметить, что в коде от ISC хранимых классов вообще не очень много.
...
Рейтинг: 0 / 0
select для производного класса
    #39715481
doublefint
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kolesov ... просто фигура речи такая получилась... Ой, я вас умоляю, это же ваш фирменный стиль общения - kolesov™ Не пройдет и двух минут... :)
kolesov ... и предлагаю различать ... Еще раз предлагаю вернуться к теме, автор которой, похоже, воспользовался "хорошим решением". В соседней теме он уже предлагает ISC переделать хранение как раз под этот случай. Так что же ему теперь делать? Расскажите, "многим пригодилось" - рано или поздно, многим тоже понадобится как это из этого выпутываться.
...
Рейтинг: 0 / 0
select для производного класса
    #39715486
Фотография kolesov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как много Вы обо мне знаете? Я вот Вас не дифференцирую из компании, но теперь постараюсь запомнить, где не стоит тратить время ;)
doublefintРасскажите, "многим пригодилось" - рано или поздно, многим тоже понадобится как это из этого выпутываться.
Вот только там, где это работает уже больше десятка лет и разгребать-то уже некому - программистов каше не осталось. А оно всё работает, наверное, назло злопыхателям!?
...
Рейтинг: 0 / 0
select для производного класса
    #39715509
doublefint
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kolesov где не стоит тратить время ;) Вы это уже обещали :) Хм, чуть больше двух минут :)
kolesov работает, наверное, назло злопыхателям!? :)
Еще раз, пожалуйста, помогите автору темы. Итак, смешали контейнеры, нефть, автомобили и пр. Работает десятилетиями - данных много. Как теперь работать только с автомобилями. Конкретный вопрос - ваши советы. Очень вероятно, что мы просто не знаем, что известно вам.
...
Рейтинг: 0 / 0
select для производного класса
    #39715512
doublefint
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
logist в коде от ISC хранимых классов вообще не очень много. Но и не мало - см. таблицу Subclasses. Ensemble - по сути, большой пример, написанный ISC, на ее же технологиях.
...
Рейтинг: 0 / 0
select для производного класса
    #39715522
Фотография kolesov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
doublefint Работает десятилетиями - данных много. Как теперь работать только с автомобилями. Конкретный вопрос - ваши советы. Очень вероятно, что мы просто не знаем, что известно вам.
А так и работать. Так и работали - грузопоток меняется - ушла нефть, больше не создаешь новых грузов этого класса. Хочешь только авто? Не трогай контейнеры - не твоё. Появились банные веники с особым набором характеристик и бизнес-операций(поведения) - грузишь девов разработать новый класс грузов. Причем вся остальная логика и документооборот для веников уже готовы. Проблема в чем?
...
Рейтинг: 0 / 0
select для производного класса
    #39715525
doublefint
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kolesov Хочешь только авто? ... Проблема в чем?alataloНо ведь тогда, без дополнительных индексов по типу, все это имеет сомнительную пременимость поскольку будет серьезно подтормаживать при большом колве записей
...
Рейтинг: 0 / 0
select для производного класса
    #39715536
Фотография kolesov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
doublefint,
Ну Extent же индекс! Писали выше.
...
Рейтинг: 0 / 0
select для производного класса
    #39715541
Фотография kolesov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
doublefint,
Причем каше, даже если забыть про экстент, все равно проседает не на тех запросах, что "ах все данные в одной глобали" - тут проблемы только в топиках этого форума встречал, но не на практике.
На практике есть класс, в который забыли добавить экстент-индекс, вспомнили лет через 5-ть... а выборки ааатлично шли все это время ;)
...
Рейтинг: 0 / 0
select для производного класса
    #39715556
Фотография kolesov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
doublefint,
Переформулирую в виде максимы: Если есть причины подозревать (бояться и трепетать), что некие данные должны лежать в одной глобали - необходимо отдаться судьбе и их туда таки сложить !
...
Рейтинг: 0 / 0
select для производного класса
    #39715588
doublefint
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kolesov Переформулирую в виде максимы Переформулируйте в виде простых списков - есть решение, есть достоинства, есть недостатки
kolesov некие данные должны лежать в одной глобали Это просто не наш уровень - классы наше всё. Сформулируйте предпосылки, признаки, условия, при которых стоит использовать хранимое наследование.
alatalo ... без дополнительных индексов по типу ... kolesovНу Extent же индекс!
...
Рейтинг: 0 / 0
select для производного класса
    #39716520
Фотография kolesov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
doublefint,

"- Мама, а как не забеременеть не предохраняясь?"
...
Рейтинг: 0 / 0
select для производного класса
    #39716541
doublefint
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kolesov, согласен, автор хочет странного.

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

Наследование хранимых классов

Достоинства:
- Единый интерфейс для наследников
- Удобная выборка из всех наследников

Недостатки:
- Потенциальная возможность блокировки всей глобали при работе ( CRUD ) с экземплярами определенного наследника
- Необходимость объявлять Extent индекс для выборки из конкретного наследника ( похоже, для автора это проблема )

Понимаю, что с этими несущественными недостатки, вы на практике не сталкивались. Но у других могут быть другие обстоятельства, не так ли?
...
Рейтинг: 0 / 0
select для производного класса
    #39716702
Фотография kolesov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
doublefintkolesov, согласен, автор хочет странного.
Да нет же - у нас в "стране" секса нет!
...
Рейтинг: 0 / 0
select для производного класса
    #39716718
Фотография kolesov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
doublefintkolesov, согласен, автор хочет странного.

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

Наследование хранимых классов

Достоинства:
- Единый интерфейс для наследников
- Удобная выборка из всех наследников

Недостатки:
- Потенциальная возможность блокировки всей глобали при работе ( CRUD ) с экземплярами определенного наследника
- Необходимость объявлять Extent индекс для выборки из конкретного наследника ( похоже, для автора это проблема )

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

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

Про недостатки - второй смешной, а по КРУД у меня как всегда свой большой бзик: круд - он ТОЛЬКО для разработчиков, а для бизнес-логики только объекты. У меня одна маруся так схлопотала, когда добавила триггер в систему, что мама не горюй. Но блокировки, sql-доступ и объекты это тоже отдельная тема. Не лочились мои каше-базы НИ РАЗУ за 20 лет. А там сотни миллионов записей на глобал было. Давно не заглядывал, но думаю, что под 2 лярда в кое-каких "табличках" есть.

Ладно, жена наслушалась арбениной живьем и тащит в кабак - не могу отказать )))
...
Рейтинг: 0 / 0
select для производного класса
    #39716812
doublefint
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kolesov Я не говорил, что все в одной глобали должно... но иногда - да.kolesov ... данные должны лежать в одной глобали - необходимо отдаться судьбе и их туда таки сложить! Что именно я смешал? Общение через форум имеет свои особенности, возможно я что-то не уловил.
kolesovИз достоинств еще:
- Общее поведение, часто реализованное ОДИН раз Мы же говорим про наследование хранимых классов? Поведение появляется тогда, когда данные считаны в память с диска, так? Т.е. предпологал, что речь пойдет про свойства, индексы, связи kolesov - Единая структура связей ... Виноват, пропустил. Какой именно вид связей вы используете - relationship, foreignkey, ссылочные свойства? kolesov - Индивидуальные наборы данных, вместо "общей" таблицы на 800 столбцов ... У нас первым пунктом достоинств - простая выборка всех наследников. Приведёте пример общих полей для контейнеров, нефти, автомобилей кроме id, name? Не могу согласиться с такой формулировкой - у отдельной таблицы вполне себе индивидуальный интерфейсkolesov Про недостатки - второй смешной Кто знает, может автор забыл, и теперь у него сотни-тысячи наследников базового в супернагруженной системе, может места не хватает на дополнительные индексы, может планы запросов как-то поплывут в жизненно-важной бизнес-логике, может еще что-нибудь :) kolesov а по КРУД у меня ... У меня ... мои ... НИ РАЗУ за 20 лет. Принимается. 20 лет огромный опыт. Охватывает ли он все возможные сценарии? Хотелось бы сосредоточится на более определенных вещах, в недостижимом идеале ( servit стал реже сюда заглядывать :) со ссылками на документацию, тесты, примеры кода.

И вот это:
kolesov не нужно особо задумываться при модификациях или изменениях бизнес-требований Блок А.Н. Нужно будет намного аккуратнее продумывать индексы и запросы ...

Достоинства:
- Единый интерфейс для наследников
- Удобная выборка из всех наследников
- Единая структура и контроль связей

Недостатки:
- Одна глобаль для хранения всех экземпляров-наследников - возможность блокировки всей глобали
- Extent индекс для выборки из конкретного наследника
...
Рейтинг: 0 / 0
select для производного класса
    #39717037
Фотография kolesov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
doublefint, а чего хотите-то? Отвечать лениво и долго. Вам помощь нужна? Если нет, то стоит прервать разговор - поболтать пальцами удалось вроде ) (гы - я щас за мандарин вместо мышЫ ухватился - "вчерашнее стоит столбом")
...
Рейтинг: 0 / 0
select для производного класса
    #39717192
doublefint
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kolesov, если присмотреться к списку достоинств, то действительно стоящим выглядит только единая структура - ( Документ <-> Строка -> Груз ). Общий список и единый интерфейс ( список полей ) можно получить и другими способами.
В недостатки можно добавить overhead на ООП - в структуре единой глобали использются ключи с именем класса ( для индивидуальных наборов данных), для каждого экземпляра сохраняется вся цепочка наследования.

Достоинства:
- Единая структура связей

Недостатки:
- Одна глобаль для хранения всех экземпляров-наследников - возможность блокировки всей глобали
- Extent индекс для выборки из конкретного наследника
- Overhead на ООП

Насколько я понял, в вашем приложении наследование используется для всех трех сущностей предметной области - Документы, Строки, Грузы?
...
Рейтинг: 0 / 0
select для производного класса
    #39717362
Фотография kolesov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
doublefintНедостатки:
- Одна глобаль для хранения всех экземпляров-наследников - возможность блокировки всей глобали
- Extent индекс для выборки из конкретного наследника
- Overhead на ООП

- Блокировок, повторюсь, не встречал. Если у Вас что-то постоянно блокируется, пересмотрите подход. М.б. укоротить транзакции? Блокировки следует ожидать не столько исходя из структуры системы, а скорее из реалий бизнеса - типичная ситуация когда сотня операторов создает и правит одни и те же документы 24х7 - но тут проблема закрывается не столько структурой, сколько логикой - отдельным частным механизмом разруливания конфликтов доступа и блокировок. Остальное - измышления и лишний академизм. Тупее нужно, тупее. Задумываться меньше - тогда будет время на достижение результатов ;)
- Чем экстент-то не угодил? Точно лучше чем заново описывать структуру данных, при появлении новых сущностей типа "документ" или "груз"
- Вы имели в виду накладные расходы, так откажитесь от ООП и делайте все вообще на прямом доступе - я точно придраться не смогу ;)

И приложение не мое - я привел пример из далекого прошлого. На поздних грузовых проектах еще хитрее было разрулено - но с Вами неинтересно говорить - Вы при..в@етесь вместо конструктива. Извините, если это будет последний ответ в теме - правда, не люблю я ононизм.
...
Рейтинг: 0 / 0
select для производного класса
    #39717367
logist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kolesov,

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

Class Car Extends Cargo {}

vs

Class Car Extends %Persistent {

Property Cargo As Cargo [Required];

}

Оба подхода имеют достоинства и недостатки, но на мой взгляд в Каше (Ансамбле/ИРИСе) отличаются незначительно.
...
Рейтинг: 0 / 0
25 сообщений из 65, страница 2 из 3
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / select для производного класса
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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