|
Слияние классов в одну глобаль
|
|||
---|---|---|---|
#18+
В свое время реализовали архитектуру следующим образом Код: python 1. 2. 3. 4. 5. 6.
Т.е. все они храняться в разных глобалах, ID везде по-умолчанию икрементальные. Довольно беспонтово получилось..... Нужно сливать все в базовое хранение, т.е. привести к архитектуре Код: python 1. 2. 3. 4. 5. 6.
Проблема в том что в этом случае часть данных начнет храниться под другими ID (во изббежание дублей), а ссылки из других классов останутся на "старый ID". Как можно провернуть такую миграцию? Есть ли какие-то встроенные средства? Идеи? ... |
|||
:
Нравится:
Не нравится:
|
|||
16.07.2013, 03:02 |
|
Слияние классов в одну глобаль
|
|||
---|---|---|---|
#18+
И еще один влопрос в тему: При смене idKey класса, как правильно престраиваются ссылки на этот класс, находящиеся в других классах? ... |
|||
:
Нравится:
Не нравится:
|
|||
16.07.2013, 03:04 |
|
Слияние классов в одну глобаль
|
|||
---|---|---|---|
#18+
А разве можно изменить IdKey? Вам нужно будет искать все ссылки на объект и переделывать их. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.07.2013, 04:20 |
|
Слияние классов в одну глобаль
|
|||
---|---|---|---|
#18+
Блок А.Н. , А разве можно изменить IdKey? Да, если хранение кильнуть - то получится. ))) Вам нужно будет искать все ссылки на объект и переделывать их. Почему то так и думал, но надежда теплилась ... |
|||
:
Нравится:
Не нравится:
|
|||
16.07.2013, 05:55 |
|
Слияние классов в одну глобаль
|
|||
---|---|---|---|
#18+
sigmovНужно сливать все в базовое хранение, т.е. привести к архитектуре Не очень хороший подход на самом деле. Всё отлично только на бумаге и в абстракции ООП. Рекомендую посмотреть как каше реализует хранение таких классов. 1 - Среди этих классов должны будут быть только уникальные индексы, если в классе AA и AB - будет индекс I1 - то компилятор даже не ругнется, а вот когда начнете заполнять данные будет весело. Так же особенно весело когда в потомках нужно завести индексы с разной уникальностью. Уникальность сразу распространяется на потомков. 2 - Может возникнуть путаница в какой последовательности нужно ребилдиить индексы, по идее должен сохраняться порядок от предков к потомкам, а дальше уже насколько сильно вы наследование намутите. 3 - Все данные и индексы потомков первого хранимого класса, будут содержать полное имя класса потомка, то есть каждая запись будет содержать дополнительную текстовую строку на 10-20 символов. 4 - Предположим у вас есть 10E5 записей A, 10E4 записей AА, 10 записей AАА, что бы получить запись ААА, вам, грубо придется промотать 110000 предстояших записей А и АА, если конечно у вас не хватило индекса sigmovКак можно провернуть такую миграцию? Есть ли какие-то встроенные средства? Идеи? Код: sql 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
16.07.2013, 08:49 |
|
Слияние классов в одну глобаль
|
|||
---|---|---|---|
#18+
sigmov, полностью поддержу Ptn. Рекомендация Олега Оленина со Школы 2012 - "для нагруженных систем используйте анемичную модель данных". ... |
|||
:
Нравится:
Не нравится:
|
|||
16.07.2013, 11:40 |
|
Слияние классов в одну глобаль
|
|||
---|---|---|---|
#18+
PtnНе очень хороший подход на самом деле. Всё отлично только на бумаге и в абстракции ООП. Рекомендую посмотреть как каше реализует хранение таких классов. Хранение идет в глобали базового класса(первого %Persistent), данные относящиеся к потомкам хранятся в subscript'ах той же глобали PtnСреди этих классов должны будут быть только уникальные индексы, если в классе AA и AB - будет индекс I1 - то компилятор даже не ругнется, а вот когда начнете заполнять данные будет весело.У меня ругается.... 2013.1 PtnТак же особенно весело когда в потомках нужно завести индексы с разной уникальностью. Уникальность сразу распространяется на потомков.Должо быть Вы имели ввиду "индексы с уникальностью отличной от предков". И это правильно что уникальность распространяется на потомков в неизменном виде. PtnМожет возникнуть путаница в какой последовательности нужно ребилдиить индексы, по идее должен сохраняться порядок от предков к потомкам, а дальше уже насколько сильно вы наследование намутите.Не вижу тут никакой путаницы, по крайней мере сверх той что и так присуща Каше. PtnВсе данные и индексы потомков первого хранимого класса, будут содержать полное имя класса потомка, то есть каждая запись будет содержать дополнительную текстовую строку на 10-20 символов.Верно. Но не вижу тут ничего страшного. PtnПредположим у вас есть 10E5 записей A, 10E4 записей AА, 10 записей AАА, что бы получить запись ААА, вам, грубо придется промотать 110000 предстояших записей А и АА, если конечно у вас не хватило индексаЭто решается с помощью объявления индекса с такими же полями в классе-потомке. Ptn Код: sql 1.
Проблема ссылочной целостности..... ... |
|||
:
Нравится:
Не нравится:
|
|||
16.07.2013, 12:18 |
|
Слияние классов в одну глобаль
|
|||
---|---|---|---|
#18+
doublefintsigmov, полностью поддержу Ptn. Рекомендация Олега Оленина со Школы 2012 - "для нагруженных систем используйте анемичную модель данных". Для высоконагруженных систем использовать нужно Oracle, Postgres. Ну а уж если Cache' вынуждены юзать - то никаких объектов и даже без SQL, только ^G. Каждый выбирает для себя оптимальный вектор характеристик..... ... |
|||
:
Нравится:
Не нравится:
|
|||
16.07.2013, 12:23 |
|
Слияние классов в одну глобаль
|
|||
---|---|---|---|
#18+
sigmovdoublefintsigmov, полностью поддержу Ptn. Рекомендация Олега Оленина со Школы 2012 - "для нагруженных систем используйте анемичную модель данных". Для высоконагруженных систем использовать нужно Oracle, Postgres. Ну а уж если Cache' вынуждены юзать - то никаких объектов и даже без SQL, только ^G. Каждый выбирает для себя оптимальный вектор характеристик.....Что для вас высоконагруженная система, можно в цифрах ... |
|||
:
Нравится:
Не нравится:
|
|||
16.07.2013, 12:44 |
|
Слияние классов в одну глобаль
|
|||
---|---|---|---|
#18+
sigmovДля высоконагруженных систем использовать нужно Oracle, Postgres. Ну а уж если Cache' вынуждены юзать... толсто ... |
|||
:
Нравится:
Не нравится:
|
|||
16.07.2013, 13:05 |
|
Слияние классов в одну глобаль
|
|||
---|---|---|---|
#18+
sigmovКаждый выбирает для себя оптимальный вектор характеристик.....Объекты в нагруженных местах я бы с осторожностью использовал, по крайней мере точно запретить объекты со ссылками, вложенными объектами, массивами. А какие проблемы с SQL? Если у вас проблемы с производительностью SQL, то что-то вы не то делаете. Чистое хранение на глобалах слишком негибко, плохо документируется, плохо модифицируется, программа выглядит страшно. В общем, использовать его стоит в каких-то очень локальных вещах. Если аналог системы изх 200 таблиц вы сделаете чисто на глобалах, то ад при поддержке и развитии почти обеспечен. Разница по скорости между SQL и глобалами обычно не настолько велика, чтобы жертвовать преимуществами SQL. А уж если есть необходимость работать с глобалами (не все SQL делает хорошо), то лучше делать отображение на класс, запихивать методы работы с глобалом в класс. Таким образом можно получить преимущества глобалов не сильно страдая от их недостатков. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.07.2013, 15:55 |
|
Слияние классов в одну глобаль
|
|||
---|---|---|---|
#18+
Блок А.Н.Объекты в нагруженных местах я бы с осторожностью использовал, по крайней мере точно запретить объекты со ссылками, вложенными объектами, массивами. Это, вероятно, про объекты в понимании ООП, а не объектно-ориентированных БД. Блок А.Н.А какие проблемы с SQL? Если у вас проблемы с производительностью SQL, то что-то вы не то делаете. При использовании СУБД SQL, практически, бесполезен. Поэтому никаких проблем с ним не может быть, конечно. Но при использовании СХОД проблемы с "реляционной технологией" известны. Это и необходимость в архитектуре "модель верхнего уровня+маппинг+РМД", и неизбежное перманентное программирование... Блок А.Н.Чистое хранение на глобалах слишком негибко, плохо документируется, плохо модифицируется, программа выглядит страшно. В любой системе на основе MUMPS осуществляется именно " чистое хранение на глобалах". Нужно по-другому сформулировать. Блок А.Н....Таким образом можно получить преимущества глобалов не сильно страдая от их недостатков. Да, обращаться непосредственно к глобалам крайне не желательно (поддержка ОЦ и др. проблемы). --- Что касается исходного вопроса, раньше считалось, что лучше иметь много "маленьких" глобалов, чем один "большой". ... |
|||
:
Нравится:
Не нравится:
|
|||
16.07.2013, 17:07 |
|
Слияние классов в одну глобаль
|
|||
---|---|---|---|
#18+
sigmovЭто решается с помощью объявления индекса с такими же полями в классе-потомке. Это не решается, это выкручивается. Потому что для оптимизатора SQL получиться два относительно равноправных индекса. Для академического интереса еще куда ни шло. На реальных данных более менее приличного объема >2-4Гб - выкручиваться ради "красивого ООП" быстро надоедает. sigmovПроблема ссылочной целостности..... Я отвечал только на вопрос о переносе данных. Ссылочная целостность в вашем случае не решается никак. И если я не ошибаюсь, средств обхода этой проблемы в вашем сценарии, нет ни в одной СУБД ... |
|||
:
Нравится:
Не нравится:
|
|||
17.07.2013, 21:12 |
|
Слияние классов в одну глобаль
|
|||
---|---|---|---|
#18+
sigmov,Хранение идет в глобали базового класса(первого %Persistent), данные относящиеся к потомкам хранятся в subscript'ах той же глобали Как то вы странно ответили. Как на экзамене ... Вы понимаете что данное хранение приведет к тому что блокировка какой либо таблицы потомка - может заблокировать таблицы всего семейства ? В каше, напоминаю, при работе со встроенным SQL, по умолчанию индивидуально блокируются только первые 1000 записей, потом лочиться вся таблица. А блокировка не снимается пока не закрывается до конца последней транзакции. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.07.2013, 21:20 |
|
Слияние классов в одну глобаль
|
|||
---|---|---|---|
#18+
PtnКак то вы странно ответили. Как на экзамене ... Вы понимаете что данное хранение приведет к тому что блокировка какой либо таблицы потомка - может заблокировать таблицы всего семейства ? В каше, напоминаю, при работе со встроенным SQL, по умолчанию индивидуально блокируются только первые 1000 записей, потом лочиться вся таблица. А блокировка не снимается пока не закрывается до конца последней транзакции. Понимаем. Правда насчет 1000 не уверен, по умолчанию 10к вроде. Но вообщем %NOLOCK - это наш вечный спутник SELECT и UPDATE ))) ... |
|||
:
Нравится:
Не нравится:
|
|||
18.07.2013, 03:04 |
|
Слияние классов в одну глобаль
|
|||
---|---|---|---|
#18+
Ptn1 - Среди этих классов должны будут быть только уникальные индексы, если в классе AA и AB - будет индекс I1 - то компилятор даже не ругнется, а вот когда начнете заполнять данные будет весело. Так же особенно весело когда в потомках нужно завести индексы с разной уникальностью. Уникальность сразу распространяется на потомков. 2 - Может возникнуть путаница в какой последовательности нужно ребилдиить индексы, по идее должен сохраняться порядок от предков к потомкам, а дальше уже насколько сильно вы наследование намутите. 3 - Все данные и индексы потомков первого хранимого класса, будут содержать полное имя класса потомка, то есть каждая запись будет содержать дополнительную текстовую строку на 10-20 символов. 4 - Предположим у вас есть 10E5 записей A, 10E4 записей AА, 10 записей AАА, что бы получить запись ААА, вам, грубо придется промотать 110000 предстояших записей А и АА, если конечно у вас не хватило индекса 1 - Вам сложно индексы обзывать уникально? Мне - нет. В иерархии могут быть сотни уникальных индексов - практически это не грузит систему. 2 - Эта проблема существовала кажись до 2012 версии - сейчас не парьтесь - да прибудет Интерсистемз с Вами. 3 - ??? о ужас, кошмар! 4 - наследоваться и не делать на наследниках Extent индекса - воплощенное зло. В общем же скажу аккуратно - пока Вам неудобно (запрещено, неприятно и проч.) делать хранимое наследование, мои приложения будут уделывать ваши и далее. Видел тут широко открытые глаза конкурента: "У Вас что, все документы в одном глобале, это-ж не должно работать???" Мля, это говорил чел, у которого в нескольких классах НИ ОДНОГО ИНДЕКСА НЕТ ваще. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.07.2013, 08:36 |
|
Слияние классов в одну глобаль
|
|||
---|---|---|---|
#18+
ptn3 - Все данные и индексы потомков первого хранимого класса, будут содержать полное имя класса потомка, то есть каждая запись будет содержать дополнительную текстовую строку на 10-20 символов. kolesov 3 - ??? о ужас, кошмар! Типа тест. Создаем две области ( с новыми БД ) и три класса в каждой. Область №1 - в одной используем общее хранение Код: vbnet 1. 2. 3. 4. 5.
Область №2 - раздельное хранение Код: vbnet 1. 2.
В каждой области выполняем Populate(100000) для каждого класса. Сравниваем размеры баз write $p($zu(49, $zu(12,"") ),",",4) Для zv 2013.1 Unicode: общее хранение 31мб, раздельное хранение 11мб ... |
|||
:
Нравится:
Не нравится:
|
|||
18.07.2013, 13:31 |
|
Слияние классов в одну глобаль
|
|||
---|---|---|---|
#18+
Я прошу прощение. Вопрос вроде был такой: Как можно провернуть такую миграцию? Соответственно вроде как дальше должны были пойти примеры, что-то типа скрипта для посроения INSERT ... SELECT ..., решения вопроса по генерации новых сквозных surrogate pk key и апдейта FK полей. Казалось бы, при чем тут наследование? Можно конечно спросить, в чем причина смены архитектуры хранения - но либо я не заметил, либо никто не спросил. PS Немного огня ))) Наследование - зло. Наследование в хранимых классах в Cache - зло в кубе. Со злом надо осторожно - так же, как и с добром. В меру. Это как первый принцип построения распределенных систем - не делай систему распределенной. Однако если человеку надо, то может есть у него объективные причины? Может он делает злую систему? ))) ... |
|||
:
Нравится:
Не нравится:
|
|||
18.07.2013, 13:58 |
|
Слияние классов в одну глобаль
|
|||
---|---|---|---|
#18+
Oleg OleninКазалось бы, при чем тут наследование? Можно конечно спросить, в чем причина смены архитектуры хранения - но либо я не заметил, либо никто не спросил.sigmovТ.е. все они храняться в разных глобалах, ID везде по-умолчанию икрементальные. Довольно беспонтово получилось..... ... |
|||
:
Нравится:
Не нравится:
|
|||
18.07.2013, 14:24 |
|
Слияние классов в одну глобаль
|
|||
---|---|---|---|
#18+
servitOleg OleninКазалось бы, при чем тут наследование? Можно конечно спросить, в чем причина смены архитектуры хранения - но либо я не заметил, либо никто не спросил.sigmovТ.е. все они храняться в разных глобалах, ID везде по-умолчанию икрементальные. Довольно беспонтово получилось..... Причина - понты? ... |
|||
:
Нравится:
Не нравится:
|
|||
18.07.2013, 15:10 |
|
Слияние классов в одну глобаль
|
|||
---|---|---|---|
#18+
Oleg OleninPS Немного огня ))) Наследование - зло Ага ;) ... |
|||
:
Нравится:
Не нравится:
|
|||
18.07.2013, 15:25 |
|
Слияние классов в одну глобаль
|
|||
---|---|---|---|
#18+
Oleg OleninПричина - понты?Я чего-то другого пока не вижу. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.07.2013, 15:32 |
|
Слияние классов в одну глобаль
|
|||
---|---|---|---|
#18+
kolesov,Видел тут широко открытые глаза конкурента: "У Вас что, все документы в одном глобале, это-ж не должно работать???" Спасибо позабавило. Я уточню на всякий случай. Мы уже не храним все документы в одном глобале. Надеюсь вы правильно поймете слово "уже" И да, несмотря на то что это действительно работает, выполнено поверх стандартных классов каше данный подход не несет перед собой каких либо особых преимуществ. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.07.2013, 15:47 |
|
Слияние классов в одну глобаль
|
|||
---|---|---|---|
#18+
doublefint,В каждой области выполняем Populate(100000) для каждого класса. Это у вас еще по сути нет ни одного индекса, кроме экстента :) ... |
|||
:
Нравится:
Не нравится:
|
|||
18.07.2013, 16:09 |
|
Слияние классов в одну глобаль
|
|||
---|---|---|---|
#18+
PtnМы уже не храним все документы в одном глобале. Мы тоже, вначале хранили, потом не хранили, теперь снова храним. Догоняйте! Во всех смыслах ;) Трудно спорить с аргументами типа "А я с мамой в баню хожу!" или "А зато мой брат бросит твоего брата через во-он тот забор!". Считаю наследование на уровне хранения непревзойденным положительным качеством нашей СУБД. Проверяю это последние немного больше 10 лет - системных проблем не наблюдаю. Плюсы описывать пока не готов. Ибо, повторюсь, мне удобно , что конкуренты боятся такого наследования. И не умеют его использовать Собственно сюда написал только в качестве поддержки ТС, которого, как мне показалось, попытались отговорить от вполне разумного и эффективного шага. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.07.2013, 16:16 |
|
Слияние классов в одну глобаль
|
|||
---|---|---|---|
#18+
sigmovПонимаем. Правда насчет 1000 не уверен, по умолчанию 10к вроде. http://docs.intersystems.com/cache20131/csp/docbook/DocBook.UI.Page.cls?KEY=RCPF_LockThreshold ... |
|||
:
Нравится:
Не нравится:
|
|||
18.07.2013, 16:16 |
|
Слияние классов в одну глобаль
|
|||
---|---|---|---|
#18+
kolesov,Собственно сюда написал только в качестве поддержки ТС, которого, как мне показалось, попытались отговорить от вполне разумного и эффективного шага. Что этот шаг стал разумным и эффективным, ТС нужно постараться разобраться как это работает. Что дает, и что отнимает. А не бездумно наследовать, и радоваться сквозным SQL запросам ... |
|||
:
Нравится:
Не нравится:
|
|||
18.07.2013, 16:18 |
|
Слияние классов в одну глобаль
|
|||
---|---|---|---|
#18+
Ptn Что дает, и что отнимает. Нет. Ну я понимаю, почему я не готов пояснить, что и как дает. А вот почему вы не готовы пояснить, что отнимает? За исключением тех 4-х смешных пунктов (которые я безответно оспорил), пока ничего выжать не смогли. Даже с демагогично-максималистской поддержкой Оленина. PtnА не бездумно наследовать, и радоваться сквозным SQL запросам Гыгыгы ;) Я лично работаю от модели предметной области. И в ней все документы, к примеру, раз уж зашло, имеют одного(!) родителя. Так вышло. И глупо это не учитывать. В этом смысле Ваше " уже не храним" выглядит как "да вы его не бойтесь - оскопили его прошлою весною". Только сейчас обратил внимание - ТС из Владивостока. ТС! Наймите, сделаю-расскажу-настрою. Летать будет аки "Протон" ;) ... |
|||
:
Нравится:
Не нравится:
|
|||
18.07.2013, 16:45 |
|
Слияние классов в одну глобаль
|
|||
---|---|---|---|
#18+
kolesovЯ лично работаю от модели предметной области. И в ней все документы, к примеру, раз уж зашло, имеют одного(!) родителя По документам считаете что-нибудь? Есть ли у документов строки (товарные, например)? ... |
|||
:
Нравится:
Не нравится:
|
|||
18.07.2013, 18:49 |
|
Слияние классов в одну глобаль
|
|||
---|---|---|---|
#18+
Oleg OleninНаследование - зло.Забавно слышать такое от консультанта по объектно-ориентированной СУБД... Олег, если захотите аргументировать эту "лемму", думаю, многим будет интересно. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.07.2013, 20:38 |
|
Слияние классов в одну глобаль
|
|||
---|---|---|---|
#18+
Я хоть и не Олег. Наследование - это усложнение, появление новых взаимозависимостей. При одинаковой трудоемкости и функциональности решение без наследования будет чище и проще. Соотвественно, наследование это зло. И для его применения нужны обоснования. В первую очередь это относится к людям, которых хлебом не корми - дай чего-нибудь понаследовать. Объектно-ориентированная среда же, как без наследования то? Это как сказать, что автомобиль - зло. Требует времени, денег, опасен. И для его приобретения нужно веские основания. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.07.2013, 21:02 |
|
Слияние классов в одну глобаль
|
|||
---|---|---|---|
#18+
Тогда так: Disclaimer. Все записи сделанные мной в этом форуме являются моим частным мнением и никак не связаны с моими работодателями (бывшими, текущими и будущими). Ok ))). Начнем с того, что Cache - не объектно-ориентированная СУБД в моем представлении. Это и не важно в общем, как ее назвать. Просто в этой ветке идет сплошная подмена - сначала люди начинают зарубаться не по тому вопросу, по которому спрашивали. Сейчас отчего то считают, что объектная ориентированность = наследование. И дальше идет подмена смысла - если в названии есть объектно-ориентированная, значит наследование это гуд. Ответьте человеку на его вопрос, диалектики материализма! )))) ... |
|||
:
Нравится:
Не нравится:
|
|||
18.07.2013, 22:50 |
|
Слияние классов в одну глобаль
|
|||
---|---|---|---|
#18+
kolesov, По-моему и не демагогическая и не максималистическая - ответьте лучше автору threadа на вопрос )))) ... |
|||
:
Нравится:
Не нравится:
|
|||
18.07.2013, 22:51 |
|
Слияние классов в одну глобаль
|
|||
---|---|---|---|
#18+
В тему наследования: Раз применил (больше пока потребности не возникало) следующую схему Постановка задачи: Хранение в системе бизнес-документов одного типа, но с разными доп полями в зависимости от вида, которых изначально было порядка 7-8. Варианты: 1. Делать отдельные таблицы для каждого - не вариант, т.к. пользователю их надо было показывать разом в виде списка. 2. Отнаследовать их друг от друга - вариант, но тогда таблица будет разрастаться дополнительными полями, что соответственно скажется на скорости + вариант не очень подходил, т.к. вид документа мог поменяться после создания самого документа Решил сделать третий вариант: 1. Выделил поля, которые будут показаны пользователю при выводе списка документов (т.е. поля общие для всех видов), из них сделал хранимый общий класс 2. Сделал хранимый базовый класс для расширений, и ссылку из него на общий класс 3. Сделал иерархию наследования для всех видов документов с их доп полями. В итоге получилось: При запросе списка документов - используется легкая версия глобала данных При запросе отдельного документа - подцепляются все нужные доп поля Через пару недель коллеге потребовалось реализовать очень похожую задачу, в которой бизнес-документы были практически идентичными, но все же отдельными: 1. Добавили один признак в общий класс, разделяющий старые и новые документы 2. Добавили в иерархию наследования соответствующие расширения ЗЫ обычным наследованием хранимых классов тоже пользуемся, но с осторожностью и только там, где оно действительно нужно По теме слияния Ради понтов это делать не стоит, т.к. в дальнейшем могут появиться новые проблемы, например, в наследовании хранимых классов при существующей базе не так тривиально перенести поле в базовый/дочерний класс или поддержка уникальности индексов. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.07.2013, 22:53 |
|
Слияние классов в одну глобаль
|
|||
---|---|---|---|
#18+
D_De1mosРешил сделать третий вариант: 1. Выделил поля, которые будут показаны пользователю при выводе списка документов (т.е. поля общие для всех видов), из них сделал хранимый общий класс 2. Сделал хранимый базовый класс для расширений, и ссылку из него на общий класс 3. Сделал иерархию наследования для всех видов документов с их доп полями. Пока смысла в пп. 1 и 3 не наблюдается. Почему не один тип сущности? D_De1mosВ итоге получилось: При запросе списка документов - используется легкая версия глобала данных При запросе отдельного документа - подцепляются все нужные доп поля То есть, смысл - получить "легкую версию глобала"? Вы эксперименты какие-то проводили? ... |
|||
:
Нравится:
Не нравится:
|
|||
19.07.2013, 08:29 |
|
Слияние классов в одну глобаль
|
|||
---|---|---|---|
#18+
doublefintПо документам считаете что-нибудь? Есть ли у документов строки (товарные, например)? Атож!!! ... |
|||
:
Нравится:
Не нравится:
|
|||
19.07.2013, 12:58 |
|
Слияние классов в одну глобаль
|
|||
---|---|---|---|
#18+
ОленинНаследование - зло. БлокЯ хоть и не Олег. Наследование - это усложнение. Ага, однополые браки и усыновление детей пи..рами. Это-ж нормально. И просто. Зачем тратить калории на наследников) Наследование устарело - чего уж там... ... |
|||
:
Нравится:
Не нравится:
|
|||
19.07.2013, 13:04 |
|
Слияние классов в одну глобаль
|
|||
---|---|---|---|
#18+
Oleg OleninOk ))). Начнем с того, что Cache - не объектно-ориентированная СУБД в моем представлении. Это и не важно в общем, как ее назвать. Просто в этой ветке идет сплошная подмена - сначала люди начинают зарубаться не по тому вопросу, по которому спрашивали. Сейчас отчего то считают, что объектная ориентированность = наследование. И дальше идет подмена смысла - если в названии есть объектно-ориентированная, значит наследование это гуд. Ответьте человеку на его вопрос, диалектики материализма! )))) Папа, это ты с кем сейчас разговаривал??? ... |
|||
:
Нравится:
Не нравится:
|
|||
19.07.2013, 13:07 |
|
Слияние классов в одну глобаль
|
|||
---|---|---|---|
#18+
Блок А.Н.Я хоть и не Олег. ... Это как сказать, что автомобиль - зло. Требует времени, денег, опасен. И для его приобретения нужно веские основания. Приятно ощущать себя истинным драйвером в компании кучеров. Шутка ;) ... |
|||
:
Нравится:
Не нравится:
|
|||
19.07.2013, 13:12 |
|
Слияние классов в одну глобаль
|
|||
---|---|---|---|
#18+
PtnВ каше, напоминаю, при работе со встроенным SQL, по умолчанию индивидуально блокируются только первые 1000 записей, потом лочиться вся таблица. А блокировка не снимается пока не закрывается до конца последней транзакции.kolesovЛетать будет аки "Протон" ;) Продолжим, опять три класса и две базы. Наследование чуть упростил: a <-aa и a <-aa2. Заполняю 100 тысячами только наследники: aa и aa2. Метод %PopulateUtils.Name() сделал хранимой процедурой. Базовый одинаковый для двух баз: Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17.
На базе с раздельным хранением Код: vbnet 1. 2. 3. 4.
На базе с общим хранением Код: vbnet 1. 2. 3. 4. 5. 6. 7.
... |
|||
:
Нравится:
Не нравится:
|
|||
19.07.2013, 18:53 |
|
Слияние классов в одну глобаль
|
|||
---|---|---|---|
#18+
kolesovOleg OleninOk ))). Начнем с того, что Cache - не объектно-ориентированная СУБД в моем представлении. Это и не важно в общем, как ее назвать. Просто в этой ветке идет сплошная подмена - сначала люди начинают зарубаться не по тому вопросу, по которому спрашивали. Сейчас отчего то считают, что объектная ориентированность = наследование. И дальше идет подмена смысла - если в названии есть объектно-ориентированная, значит наследование это гуд. Ответьте человеку на его вопрос, диалектики материализма! )))) Папа, это ты с кем сейчас разговаривал??? С вами в том числе, сын мой ))). Давайте подробней о том, как вы эффективно используете наследование. Это будет более интересно, чем треп на общие темы генетики в пятницу. Эх, когда же меня на одну из исторических родин в командировку направят. Или вас к нам ))) ... |
|||
:
Нравится:
Не нравится:
|
|||
19.07.2013, 20:11 |
|
Слияние классов в одну глобаль
|
|||
---|---|---|---|
#18+
doublefints sql="Update "_table_" Set Name=%Library.PopulateUtils_Name()" А дихлофосом не пробовали??? ... |
|||
:
Нравится:
Не нравится:
|
|||
21.07.2013, 05:39 |
|
Слияние классов в одну глобаль
|
|||
---|---|---|---|
#18+
kolesov, а это как-то повлияет на результат? ... |
|||
:
Нравится:
Не нравится:
|
|||
21.07.2013, 12:25 |
|
Слияние классов в одну глобаль
|
|||
---|---|---|---|
#18+
Oleg OleninДавайте подробней о том, как вы эффективно используете наследование. Видно про это мы так и не услышим... И примеров того не увидим... ... |
|||
:
Нравится:
Не нравится:
|
|||
22.07.2013, 08:27 |
|
Слияние классов в одну глобаль
|
|||
---|---|---|---|
#18+
doublefintkolesov, а это как-то повлияет на результат? У вас каждый пользователь раз в надцать минут апдейтит миллионы записей? Видимо дело в специфике - я производством занимаюсь. И за команду UPDATE вообще изредка готов придушить - по-дефолту она у нас запрещена. Для сохранения, изменения данных - извольте использовать объекты и %Save() - остальное только после консилиума (или на другом месте работы). Бывает, нужен UPDATE, но не в рамках обслуживания домена - это команда для "прислуги" (истории изменений, события и проч.) ... |
|||
:
Нравится:
Не нравится:
|
|||
22.07.2013, 09:05 |
|
Слияние классов в одну глобаль
|
|||
---|---|---|---|
#18+
krvsaOleg OleninДавайте подробней о том, как вы эффективно используете наследование. Видно про это мы так и не услышим... И примеров того не увидим... Биологические идеи, положенные в основу ООП, а, следовательно, и само ООП не имеют никакого отношения к базам данных. Это я объяснял с примерами на конференции по MUMPS в Подмосковье лет 10 назад, если не больше. Программирование завода-автомата (когда роботы обмениваются сообщениями) - вот там, вероятно, эти принципы можно использовать. Так что ООП так же, как и SQL, нет смысла использовать при программировании приложений БД, за исключением задач организации интерфейса (например, окно можно рассматривать, как объект, со всеми этими принципами, включая наследование). ... |
|||
:
Нравится:
Не нравится:
|
|||
22.07.2013, 09:09 |
|
Слияние классов в одну глобаль
|
|||
---|---|---|---|
#18+
krvsaOleg OleninДавайте подробней о том, как вы эффективно используете наследование. Видно про это мы так и не услышим... И примеров того не увидим... Искренне не готов ответить. Дело не в примерах. Мои познания в философии и методологии довольно ограниченны и сводятся к системомыследеятельностному подходу Г.П.Щедровицкого. Эксперт в рамках этого подхода - позиция, не требующая обоснования. Её нужно просто занять . Взгляните на высказывания Олега Оленина - он, как и я, занимает позицию эксперта ("зло, и всё тут!" - безапелляционно, значит эксперт!). Однако, в отличие от него, хранимое наследование для меня не аспект, не тема для обсуждения и не инструмент. Для меня это уже несколько лет измерение проектирования. У тех же методологов (или не у них, могу ошибаться) есть известная байка про плоских рыб в плоском мире, которые никак не могли понять феномена выпуклости. Любая попытка презентовать им еще одно измерение мира обречена. Ситуация должна изменяться изнутри. Например, должны появится студенты, никогда не использовавшие SQL (это очень грубо, но у меня и времени немного - тут пинг в 3 секунды и связь раз в сутки). Надеюсь, ближе к концу лета появится время и я таки выложу свое представление о хранимом наследовании на хабре. Выложу, повторюсь, понимая, что это бесполезно и только карму испортит ;) ... |
|||
:
Нравится:
Не нравится:
|
|||
22.07.2013, 09:21 |
|
Слияние классов в одну глобаль
|
|||
---|---|---|---|
#18+
kolesovВзгляните на высказывания Олега Оленина - он, как и я, занимает позицию эксперта ("зло, и всё тут!" - безапелляционно, значит эксперт!). Мне ненравятся ваши "занимаемые позиции"... Мне импонирует подход от doublefint . Он приводит примеры где явный проигрыш наследования. Причем он просит привести аналогичные примеры где будет выигрыш от наследования. Мне все это так же интересно, но ничего "пощупать" так и не дают... Вместо этого предлагают: - просто занять позицию - просто отказаться от ОПП и SQL в разработке БД ... |
|||
:
Нравится:
Не нравится:
|
|||
22.07.2013, 10:08 |
|
Слияние классов в одну глобаль
|
|||
---|---|---|---|
#18+
krvsa... Вместо этого предлагают: - просто отказаться от ОПП и SQL в разработке БД А Вы просто говорите неправду. Что, конечно, тоже позиция. Непоколебимая)) ... |
|||
:
Нравится:
Не нравится:
|
|||
22.07.2013, 10:12 |
|
Слияние классов в одну глобаль
|
|||
---|---|---|---|
#18+
krvsaОн приводит примеры где явный проигрыш наследования. Причем он просит привести аналогичные примеры где будет выигрыш от наследования. Он занимается демагогией, даже если сам этого не понимает - "Подходит ли вертолет для прыжков с трамплина? Нет, что Вы, здесь гораздо более удобны ЛЫЖИ!!! И за примером ходить далеко не нужно - я вот только что спустил вертолет с трамплина - не впечатлило, мягко говоря. Лыжи и только лыжи - всё остальное зло!" Абалденная логика. И что тут привести в качестве противоположного примера? Вертолет на для трамплина, да. Апдейтить сотни тысяч записей за-раз Вы считаете нормальной ситуацией прикладной задачи? Вот я и молчу. В меру сил ;) ... |
|||
:
Нравится:
Не нравится:
|
|||
22.07.2013, 12:14 |
|
Слияние классов в одну глобаль
|
|||
---|---|---|---|
#18+
kolesovИ что тут привести в качестве противоположного примера? То, что явно лучше разделеной БД. Это вроде очевидное решение... Что именно решать тебе. Ведь это ты пишешь про какое-то превосходство наследования... Мне например это было бы очень полезно в познавательном смысле... Например я мог бы аргументировано, на примерах показать тут де плюс... А вот тут минус... Про минусы я уже знаю, а вт с плюсами пока проблемы... Нет информации по ним... ... |
|||
:
Нравится:
Не нравится:
|
|||
22.07.2013, 13:03 |
|
Слияние классов в одну глобаль
|
|||
---|---|---|---|
#18+
Ну и в тему "слияния в один глобал"... В бытность еще версии Каше 3.* все (!) представители ИС, которые у нас были лично, утверждали, что 1 класс - 1 глобал это гораздо эффективнее нежели "несколько классов в одном глобале"... Я взял это для себя как аксиому... ... |
|||
:
Нравится:
Не нравится:
|
|||
22.07.2013, 13:06 |
|
Слияние классов в одну глобаль
|
|||
---|---|---|---|
#18+
kolesovАпдейтить сотни тысяч записей за-раз Вы считаете нормальной ситуацией прикладной задачи? Почем мне знать у кого какие задачи... От тебя просто жду других примеров, в которых будет выигрыш за счет наследования... ... |
|||
:
Нравится:
Не нравится:
|
|||
22.07.2013, 13:10 |
|
Слияние классов в одну глобаль
|
|||
---|---|---|---|
#18+
kolesov У вас каждый пользователь раз в надцать минут апдейтит миллионы записей? Наследуемое хранение имеет свои особенности. Странно их совсем не учитывать. Из удобств - легкий код, например: set doc=##class(document).%OpenId(id) ;открываем документ любого типа и сквозные запросы (опять особенности) За эти удобства придется гореть в аду заплатить. Итого OLTP приложение c объектным доступом на запись, и SQL на чтение Граф Монтекристо (весь в белом) kolesov, что несчастный кучер я упустил? ... |
|||
:
Нравится:
Не нравится:
|
|||
22.07.2013, 18:55 |
|
Слияние классов в одну глобаль
|
|||
---|---|---|---|
#18+
krvsaНу и в тему "слияния в один глобал"... В бытность еще версии Каше 3.* все (!) представители ИС, которые у нас были лично, утверждали, что 1 класс - 1 глобал это гораздо эффективнее нежели "несколько классов в одном глобале"... Я взял это для себя как аксиому... Под "раньше" здесь 14574357 понимается 30 лет назад. Значит все стабильно)) ... |
|||
:
Нравится:
Не нравится:
|
|||
22.07.2013, 20:30 |
|
Слияние классов в одну глобаль
|
|||
---|---|---|---|
#18+
doublefintИтого OLTP приложение c объектным доступом на запись, и SQL на чтение Граф Монтекристо (весь в белом) kolesov, что несчастный кучер я упустил? Погуглите про OLTP пожалуйста. Может хотя бы это поможет Вам остыть. Я не срал на критиковал Ваше ДАО. Я возмутился лишь безапелляционной критике одной из основ моего ;) Повторюсь - я лишь пытался пояснить ТС (и окружающим), что Ваша критика безответственна и необоснованна. И пора бы это признать - внятных аргументов в пользу абасрацца экспертной аценки аксиомы "Рекомендация Олега Оленина со Школы 2012 - "для нагруженных систем используйте анемичную модель данных" не то что не видно - ими даже не пахнет. А я сегодня в оранжевом, кстати. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.07.2013, 17:51 |
|
Слияние классов в одну глобаль
|
|||
---|---|---|---|
#18+
kolesov, с вас же тестовый случай не вытянуть, надо ж определиться, что тестировать будем. Ситуация проясняется - у вас OLTP приложение с небольшим количеством пользователей, без крупных транзакций, доступ в основном через объекты. kolesovПовторюсь - я лишь пытался пояснить ТС (и окружающим), что Ваша критика безответственна и необоснованна Накладные расходы на наследуемое хранение объективно присутствуют. Учитывать их или нет - зависит от критериев оценки. Какие достоинства наследуемого хранения важны для вашего ДАО? ... |
|||
:
Нравится:
Не нравится:
|
|||
23.07.2013, 22:41 |
|
|
start [/forum/topic.php?all=1&fid=39&tid=1557093]: |
0ms |
get settings: |
8ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
186ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
79ms |
get tp. blocked users: |
1ms |
others: | 238ms |
total: | 546ms |
0 / 0 |