|
select для производного класса
|
|||
---|---|---|---|
#18+
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 " Шаблонное мышление ведет к шаблонным решениям - это даже чем-то хорошо. У "банды" неплохо получилось организовать жизнь массы средней руки проектировщиков и программистов "без задоринки". Задумываться не обязательно. Ну и средний уровень болота уверенно стабилен ;) Религия ведь тоже массу людей с сомнительными зачастую перспективами эффективно превращает в прекрасную нормированную паству (или стадо - тут как посмотреть) - всем от этого только польза! Там правда, банда двенадцати поработала ;) Однако же реалии нашей с вами платформы давно показали, что про шаблоны нужно помнить, но нельзя ими бездумно мыслить (простите каламбур) - и вот тогда можно сделать что-то выше среднего уровня. Про грузооборот было, на мой (скромный) взгляд, некогда очень хорошо придумано: груз -------* строка грузового документа *------- грузовой документ От груза наследовались контейнеры, насыпные-навалочные, автомобили, нефтепродукты и проч. От документа - входящие-исходящие-складские, а дальше коносаменты, ордера, поручения, планы и проч. и проч. Вся информация о грузе собирается одним запросом, контроль связей очень простой и надежный, не нужно особо задумываться при модификациях или изменениях бизнес-требований. Экономится не то, чтобы много времени, а ПРОРВА ВРЕМЕНИ. Удешевляется разработка и, главное, поддержка. И это только один пример. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.10.2018, 02:49 |
|
select для производного класса
|
|||
---|---|---|---|
#18+
kolesov ... И это только один пример ... Именно. Т.е. частный случай. Как только показалось, что нашли универсальное решение для всех возможных сценариев ( "наследование наше всё" ) - готовьтесь. А развешивать ярлыки на основании своего частного случая ... kolesov ... Задумываться не обязательно ... kolesov ... не нужно особо задумываться ... Классический kolesov :) kolesovОт груза наследовались контейнеры, насыпные-навалочные, автомобили , нефтепродукты и проч. А потом прилетает постановка сделать приложение, работающее только, и только, например, с автомобилями. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.10.2018, 11:11 |
|
select для производного класса
|
|||
---|---|---|---|
#18+
doublefint, Вот скучаю с Вами - сыплете чужими цитатами и своей демагогией. Я показал хорошее решение - многим пригодилось. Вы ЧТО показали? ... |
|||
:
Нравится:
Не нравится:
|
|||
09.10.2018, 13:55 |
|
select для производного класса
|
|||
---|---|---|---|
#18+
kolesov ... Вы ЧТО показали? ... Надеюсь, что предупредил - решение имеет свои существенные недостатки. Думать надо всегда. Смешали всё в одну кучу ( хорошая архитектура, ага :) - готовьтесь разгребать. Кстати, чем можете помочь автору темы? :) Интересный прием использования наследования можно посмотреть у самой ISC, когда базовый класс содержит параметры, по которым генерируется код наследников. Примеров хранимого наследования, навскидку, не припомню - если кто знает, подскажите. kolesov сыплете чужими цитатами Ну, имея опыт общения с вами, вынужден. Для вас ведь никто не является авторитетом, не так ли? :) Если создатели ООП говорят быть осторожнее с наследованием, к кому же прислушаться? :) kolesov и своей демагогией Ну что вы, в этом вы признанный лидер :) "Концентрация на частности", "ad hominem" - перечитайте свои сообщения в этой теме, можно только учиться :) ... |
|||
:
Нравится:
Не нравится:
|
|||
09.10.2018, 16:42 |
|
select для производного класса
|
|||
---|---|---|---|
#18+
doublefint, Приношу извинения, видимо про визг вы приняли на свой счет - а мне вовсе не хотелось переходить на личности - просто фигура речи такая получилась. Согласен, довольно грубо. Еще раз простите. И предлагаю различать дискуссию от обсуждения и осуждения собеседников, ок? ... |
|||
:
Нравится:
Не нравится:
|
|||
10.10.2018, 01:49 |
|
select для производного класса
|
|||
---|---|---|---|
#18+
doublefintримеров хранимого наследования, навскидку, не припомню - если кто знает, подскажите. Ну надо заметить, что в коде от ISC хранимых классов вообще не очень много. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.10.2018, 03:35 |
|
select для производного класса
|
|||
---|---|---|---|
#18+
kolesov ... просто фигура речи такая получилась... Ой, я вас умоляю, это же ваш фирменный стиль общения - kolesov™ Не пройдет и двух минут... :) kolesov ... и предлагаю различать ... Еще раз предлагаю вернуться к теме, автор которой, похоже, воспользовался "хорошим решением". В соседней теме он уже предлагает ISC переделать хранение как раз под этот случай. Так что же ему теперь делать? Расскажите, "многим пригодилось" - рано или поздно, многим тоже понадобится как это из этого выпутываться. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.10.2018, 11:56 |
|
select для производного класса
|
|||
---|---|---|---|
#18+
Как много Вы обо мне знаете? Я вот Вас не дифференцирую из компании, но теперь постараюсь запомнить, где не стоит тратить время ;) doublefintРасскажите, "многим пригодилось" - рано или поздно, многим тоже понадобится как это из этого выпутываться. Вот только там, где это работает уже больше десятка лет и разгребать-то уже некому - программистов каше не осталось. А оно всё работает, наверное, назло злопыхателям!? ... |
|||
:
Нравится:
Не нравится:
|
|||
10.10.2018, 12:04 |
|
select для производного класса
|
|||
---|---|---|---|
#18+
kolesov где не стоит тратить время ;) Вы это уже обещали :) Хм, чуть больше двух минут :) kolesov работает, наверное, назло злопыхателям!? :) Еще раз, пожалуйста, помогите автору темы. Итак, смешали контейнеры, нефть, автомобили и пр. Работает десятилетиями - данных много. Как теперь работать только с автомобилями. Конкретный вопрос - ваши советы. Очень вероятно, что мы просто не знаем, что известно вам. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.10.2018, 12:43 |
|
select для производного класса
|
|||
---|---|---|---|
#18+
logist в коде от ISC хранимых классов вообще не очень много. Но и не мало - см. таблицу Subclasses. Ensemble - по сути, большой пример, написанный ISC, на ее же технологиях. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.10.2018, 12:49 |
|
select для производного класса
|
|||
---|---|---|---|
#18+
doublefint Работает десятилетиями - данных много. Как теперь работать только с автомобилями. Конкретный вопрос - ваши советы. Очень вероятно, что мы просто не знаем, что известно вам. А так и работать. Так и работали - грузопоток меняется - ушла нефть, больше не создаешь новых грузов этого класса. Хочешь только авто? Не трогай контейнеры - не твоё. Появились банные веники с особым набором характеристик и бизнес-операций(поведения) - грузишь девов разработать новый класс грузов. Причем вся остальная логика и документооборот для веников уже готовы. Проблема в чем? ... |
|||
:
Нравится:
Не нравится:
|
|||
10.10.2018, 13:04 |
|
select для производного класса
|
|||
---|---|---|---|
#18+
kolesov Хочешь только авто? ... Проблема в чем?alataloНо ведь тогда, без дополнительных индексов по типу, все это имеет сомнительную пременимость поскольку будет серьезно подтормаживать при большом колве записей ... |
|||
:
Нравится:
Не нравится:
|
|||
10.10.2018, 13:12 |
|
select для производного класса
|
|||
---|---|---|---|
#18+
doublefint, Ну Extent же индекс! Писали выше. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.10.2018, 13:25 |
|
select для производного класса
|
|||
---|---|---|---|
#18+
doublefint, Причем каше, даже если забыть про экстент, все равно проседает не на тех запросах, что "ах все данные в одной глобали" - тут проблемы только в топиках этого форума встречал, но не на практике. На практике есть класс, в который забыли добавить экстент-индекс, вспомнили лет через 5-ть... а выборки ааатлично шли все это время ;) ... |
|||
:
Нравится:
Не нравится:
|
|||
10.10.2018, 13:29 |
|
select для производного класса
|
|||
---|---|---|---|
#18+
doublefint, Переформулирую в виде максимы: Если есть причины подозревать (бояться и трепетать), что некие данные должны лежать в одной глобали - необходимо отдаться судьбе и их туда таки сложить ! ... |
|||
:
Нравится:
Не нравится:
|
|||
10.10.2018, 13:49 |
|
select для производного класса
|
|||
---|---|---|---|
#18+
kolesov Переформулирую в виде максимы Переформулируйте в виде простых списков - есть решение, есть достоинства, есть недостатки kolesov некие данные должны лежать в одной глобали Это просто не наш уровень - классы наше всё. Сформулируйте предпосылки, признаки, условия, при которых стоит использовать хранимое наследование. alatalo ... без дополнительных индексов по типу ... kolesovНу Extent же индекс! ... |
|||
:
Нравится:
Не нравится:
|
|||
10.10.2018, 14:42 |
|
select для производного класса
|
|||
---|---|---|---|
#18+
doublefint, "- Мама, а как не забеременеть не предохраняясь?" ... |
|||
:
Нравится:
Не нравится:
|
|||
12.10.2018, 10:23 |
|
select для производного класса
|
|||
---|---|---|---|
#18+
kolesov, согласен, автор хочет странного. Но и планировать архитектуру из, даже не требования, а просто из идеи "все должно лежать в одной глобали" ( откуда такой посыл? почему? какого? ) - не менее странно. Начнём формулировать? Наследование хранимых классов Достоинства: - Единый интерфейс для наследников - Удобная выборка из всех наследников Недостатки: - Потенциальная возможность блокировки всей глобали при работе ( CRUD ) с экземплярами определенного наследника - Необходимость объявлять Extent индекс для выборки из конкретного наследника ( похоже, для автора это проблема ) Понимаю, что с этими несущественными недостатки, вы на практике не сталкивались. Но у других могут быть другие обстоятельства, не так ли? ... |
|||
:
Нравится:
Не нравится:
|
|||
12.10.2018, 10:55 |
|
select для производного класса
|
|||
---|---|---|---|
#18+
doublefintkolesov, согласен, автор хочет странного. Да нет же - у нас в "стране" секса нет! ... |
|||
:
Нравится:
Не нравится:
|
|||
12.10.2018, 14:36 |
|
select для производного класса
|
|||
---|---|---|---|
#18+
doublefintkolesov, согласен, автор хочет странного. Но и планировать архитектуру из, даже не требования, а просто из идеи "все должно лежать в одной глобали" ( откуда такой посыл? почему? какого? ) - не менее странно. Начнём формулировать? Наследование хранимых классов Достоинства: - Единый интерфейс для наследников - Удобная выборка из всех наследников Недостатки: - Потенциальная возможность блокировки всей глобали при работе ( CRUD ) с экземплярами определенного наследника - Необходимость объявлять Extent индекс для выборки из конкретного наследника ( похоже, для автора это проблема ) Понимаю, что с этими несущественными недостатки, вы на практике не сталкивались. Но у других могут быть другие обстоятельства, не так ли? Вы все смешали, не знаю, почему. Я не говорил, что все в одной глобали должно... но иногда - да. Из достоинств еще: - Общее поведение, часто реализованное ОДИН раз - Единая структура связей, когда новый член "семьи" уже знает, кто тетка, и за что ему влетит от бати. - Индивидуальные наборы данных, вместо "общей" таблицы на 800 столбцов (сам видел!) - опять же защита от некорректных транзакций, когда мужику вписывают, какой у него триместр (нечаянно, конечно, но тоже видел и ржал - это кстати плюс говнопроектирования - доставляет улыбнуться) ... это точно не все, повспоминаю еще - стоит отдельной темы Про недостатки - второй смешной, а по КРУД у меня как всегда свой большой бзик: круд - он ТОЛЬКО для разработчиков, а для бизнес-логики только объекты. У меня одна маруся так схлопотала, когда добавила триггер в систему, что мама не горюй. Но блокировки, sql-доступ и объекты это тоже отдельная тема. Не лочились мои каше-базы НИ РАЗУ за 20 лет. А там сотни миллионов записей на глобал было. Давно не заглядывал, но думаю, что под 2 лярда в кое-каких "табличках" есть. Ладно, жена наслушалась арбениной живьем и тащит в кабак - не могу отказать ))) ... |
|||
:
Нравится:
Не нравится:
|
|||
12.10.2018, 14:56 |
|
select для производного класса
|
|||
---|---|---|---|
#18+
kolesov Я не говорил, что все в одной глобали должно... но иногда - да.kolesov ... данные должны лежать в одной глобали - необходимо отдаться судьбе и их туда таки сложить! Что именно я смешал? Общение через форум имеет свои особенности, возможно я что-то не уловил. kolesovИз достоинств еще: - Общее поведение, часто реализованное ОДИН раз Мы же говорим про наследование хранимых классов? Поведение появляется тогда, когда данные считаны в память с диска, так? Т.е. предпологал, что речь пойдет про свойства, индексы, связи kolesov - Единая структура связей ... Виноват, пропустил. Какой именно вид связей вы используете - relationship, foreignkey, ссылочные свойства? kolesov - Индивидуальные наборы данных, вместо "общей" таблицы на 800 столбцов ... У нас первым пунктом достоинств - простая выборка всех наследников. Приведёте пример общих полей для контейнеров, нефти, автомобилей кроме id, name? Не могу согласиться с такой формулировкой - у отдельной таблицы вполне себе индивидуальный интерфейсkolesov Про недостатки - второй смешной Кто знает, может автор забыл, и теперь у него сотни-тысячи наследников базового в супернагруженной системе, может места не хватает на дополнительные индексы, может планы запросов как-то поплывут в жизненно-важной бизнес-логике, может еще что-нибудь :) kolesov а по КРУД у меня ... У меня ... мои ... НИ РАЗУ за 20 лет. Принимается. 20 лет огромный опыт. Охватывает ли он все возможные сценарии? Хотелось бы сосредоточится на более определенных вещах, в недостижимом идеале ( servit стал реже сюда заглядывать :) со ссылками на документацию, тесты, примеры кода. И вот это: kolesov не нужно особо задумываться при модификациях или изменениях бизнес-требований Блок А.Н. Нужно будет намного аккуратнее продумывать индексы и запросы ... Достоинства: - Единый интерфейс для наследников - Удобная выборка из всех наследников - Единая структура и контроль связей Недостатки: - Одна глобаль для хранения всех экземпляров-наследников - возможность блокировки всей глобали - Extent индекс для выборки из конкретного наследника ... |
|||
:
Нравится:
Не нравится:
|
|||
12.10.2018, 16:46 |
|
select для производного класса
|
|||
---|---|---|---|
#18+
doublefint, а чего хотите-то? Отвечать лениво и долго. Вам помощь нужна? Если нет, то стоит прервать разговор - поболтать пальцами удалось вроде ) (гы - я щас за мандарин вместо мышЫ ухватился - "вчерашнее стоит столбом") ... |
|||
:
Нравится:
Не нравится:
|
|||
13.10.2018, 12:12 |
|
select для производного класса
|
|||
---|---|---|---|
#18+
kolesov, если присмотреться к списку достоинств, то действительно стоящим выглядит только единая структура - ( Документ <-> Строка -> Груз ). Общий список и единый интерфейс ( список полей ) можно получить и другими способами. В недостатки можно добавить overhead на ООП - в структуре единой глобали использются ключи с именем класса ( для индивидуальных наборов данных), для каждого экземпляра сохраняется вся цепочка наследования. Достоинства: - Единая структура связей Недостатки: - Одна глобаль для хранения всех экземпляров-наследников - возможность блокировки всей глобали - Extent индекс для выборки из конкретного наследника - Overhead на ООП Насколько я понял, в вашем приложении наследование используется для всех трех сущностей предметной области - Документы, Строки, Грузы? ... |
|||
:
Нравится:
Не нравится:
|
|||
14.10.2018, 07:40 |
|
select для производного класса
|
|||
---|---|---|---|
#18+
doublefintНедостатки: - Одна глобаль для хранения всех экземпляров-наследников - возможность блокировки всей глобали - Extent индекс для выборки из конкретного наследника - Overhead на ООП - Блокировок, повторюсь, не встречал. Если у Вас что-то постоянно блокируется, пересмотрите подход. М.б. укоротить транзакции? Блокировки следует ожидать не столько исходя из структуры системы, а скорее из реалий бизнеса - типичная ситуация когда сотня операторов создает и правит одни и те же документы 24х7 - но тут проблема закрывается не столько структурой, сколько логикой - отдельным частным механизмом разруливания конфликтов доступа и блокировок. Остальное - измышления и лишний академизм. Тупее нужно, тупее. Задумываться меньше - тогда будет время на достижение результатов ;) - Чем экстент-то не угодил? Точно лучше чем заново описывать структуру данных, при появлении новых сущностей типа "документ" или "груз" - Вы имели в виду накладные расходы, так откажитесь от ООП и делайте все вообще на прямом доступе - я точно придраться не смогу ;) И приложение не мое - я привел пример из далекого прошлого. На поздних грузовых проектах еще хитрее было разрулено - но с Вами неинтересно говорить - Вы при..в@етесь вместо конструктива. Извините, если это будет последний ответ в теме - правда, не люблю я ононизм. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.10.2018, 05:09 |
|
select для производного класса
|
|||
---|---|---|---|
#18+
kolesov, Насколько я понял обсуждаем выбор между наследованием и композицией, т.е. практически Class Car Extends Cargo {} vs Class Car Extends %Persistent { Property Cargo As Cargo [Required]; } Оба подхода имеют достоинства и недостатки, но на мой взгляд в Каше (Ансамбле/ИРИСе) отличаются незначительно. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.10.2018, 06:17 |
|
|
start [/forum/topic.php?fid=39&msg=39715481&tid=1556230]: |
0ms |
get settings: |
9ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
43ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
66ms |
get tp. blocked users: |
1ms |
others: | 266ms |
total: | 421ms |
0 / 0 |