|
|
|
EAV - это выворачивание реляционной модели наизнанку.
|
|||
|---|---|---|---|
|
#18+
LSVlockyКак узнать при написании новой процедуры, что существует некая "логическая СЦ" и правильно её учесть?Точно также, как для вставки СЦ в СУБД. Тот, кто пишет ХП должен знать, что пишет. И нужный (справочный) код должен быть рядом. У нас все в скриптах. Более 800 файлов. Пи этом однозначно ясно где и что искать. На каждый модуль своя папка, а там на каждую по смыслу группу ХП отдельный файл. Например ХХХХcheck, XXXXSpec, XXXXfunc, ХХХReports и т.д. А все это в стартиме за 3 последних года. ну надо же! "должен знать!" как насчет "Как узнать в некотором фрагменте кода, что там может сработать некая декларация ?" в виде "как узнать в некотором фрагменте кода, что там должна сработать некая проверка"? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.03.2011, 16:59 |
|
||
|
EAV - это выворачивание реляционной модели наизнанку.
|
|||
|---|---|---|---|
|
#18+
LSVРазница есть. Как узнать в некотором фрагменте кода, что там может сработать некая декларация ? Никак. Нужно руцями полесть в тулзу и зачитать наличие или отсутствие таковой. И так каждый раз. Декларация - противопоставляется коду: она не в фрагменте кода. В частности, она в словаре БД. Т.е. с помощью декларативных же запросов можно посмотреть все ОЦ. И это сделать может тулса по проектированию БД, и нарисовать диаограмму. Например, ERwin. LSVКстати этим же неудобны триггеры. Их нужно смотреть в другом месте. Тригерра это ХП. И место просмотра играет, скорее всего, меньшую роль, чем что смотреть: код или объявление. Но раз Вы к триггерам так относитесь, то у Вас проверяющую ХП вызывает клиент? Но БД в силу природы весчей предназначена для многих программ. Я намекаю, что админ или кто-то может залезть не стого клиента, и проверяющая ХП не запустится. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.03.2011, 18:22 |
|
||
|
EAV - это выворачивание реляционной модели наизнанку.
|
|||
|---|---|---|---|
|
#18+
locky"как узнать в некотором фрагменте кода, что там должна сработать некая проверка"?Обычно места для проверок заранее известны, т.е. известно где искать проверку. А вот в случае триггера или СЦ сначала нужно проверить есть ли они в таблице и что делают. Причем не в одной таблице а возможно в нескольких. у Вас проверяющую ХП вызывает клиент?Нет. Ее вызов вставлен в другую ХП. Вся работа происходит только через ХП. Поэтому, дёргая ХП, невозможно вывести систему из целостности. Замена ХП на лету безболезненна. В отличие от триггеров и установки СЦ. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.03.2011, 10:30 |
|
||
|
EAV - это выворачивание реляционной модели наизнанку.
|
|||
|---|---|---|---|
|
#18+
LSVlocky"как узнать в некотором фрагменте кода, что там должна сработать некая проверка"?Обычно места для проверок заранее известны, т.е. известно где искать проверку. А вот в случае триггера или СЦ сначала нужно проверить есть ли они в таблице и что делают. Причем не в одной таблице а возможно в нескольких. Офигеть, дайте две. Значит, в случае "ручных проверок" знание о "местах, где их нужно делать" мы получаем "сакральным, внечувственным путём" - "они заранее известны". А в случае DRI - "неизвестно где и что должно сработать"? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.03.2011, 11:43 |
|
||
|
EAV - это выворачивание реляционной модели наизнанку.
|
|||
|---|---|---|---|
|
#18+
LSVНет. Ее вызов вставлен в другую ХП. Вся работа происходит только через ХП. Поэтому, дёргая ХП, невозможно вывести систему из целостности. Замена ХП на лету безболезненна. В отличие от триггеров и установки СЦ. Имея DRI невозможно вывести систему даже не дергая процедуры, а напрямую пытаясь модифицировать данные И, учитывая что триггер есть особый вид процедуры - не вижу, с чего бы это процедуру заменить легко, а триггер - сложно ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.03.2011, 11:45 |
|
||
|
EAV - это выворачивание реляционной модели наизнанку.
|
|||
|---|---|---|---|
|
#18+
lockyИмея DRI невозможно вывести систему даже не дергая процедуры, а напрямую пытаясь модифицировать данные И, учитывая что триггер есть особый вид процедуры - не вижу, с чего бы это процедуру заменить легко, а триггер - сложноНевозможно что именно ? Я говорил о логической целостности в приложении, что совершенно не то, что СЦ. Допустим документ проводить нельзя, т.к. нет оплаты или наличия товара. Делать подобные проверки в триггерах неразумно, а временами крайне неудобно, т.к. документ может меняться во многих местах (шапка/спецификация/доп.свойства) и неодновременно. У нас в транзакции делается куча изменений и в последний момент сложная проверка. Если запрет, то роллбек. Вариант на триггерах и СЦ рассматривался, но оказался жутко неудобным в поддержке и наглядности. Замена триггера (в МССКЛ) блокирует схему, что нередко приводит к блокировкам, если система в продакшене. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.03.2011, 12:29 |
|
||
|
EAV - это выворачивание реляционной модели наизнанку.
|
|||
|---|---|---|---|
|
#18+
так, вот тут я снова потерялася только что мы обсуждали о реализации СЦ ручками и деларативно, и вдруг как ультима ратио всплывает запрет бизнес-операций Вы случайно там ничего не путаете? одно с другим и всё такое ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.03.2011, 12:36 |
|
||
|
EAV - это выворачивание реляционной модели наизнанку.
|
|||
|---|---|---|---|
|
#18+
lockyтак, вот тут я снова потерялася только что мы обсуждали о реализации СЦ ручками и деларативно, и вдруг как ультима ратио всплывает запрет бизнес-операций Вы случайно там ничего не путаете? одно с другим и всё такоеЯ не путаю. Именно бизнес-операции я и имел ввиду. Какая разница, что нарушит целостность, удаленный справочник или нехватка товара на складе ?!!! Именно поэтому я пытаюсь довести, что проверки на уровне средств СУБД недостаточны или неудобны для сложных случаев. Делать два эшелона проверок "моя" и "СУБД" ? Это может привести к путанице и избыточности, учитывая, что нет четкой грани между ними. Безусловно это не означает, что подобные средства в СУБД не нужны. Конечно нужны. Для них есть применение. Наличие возможности это лучше ее отсутствия. (с) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.03.2011, 12:58 |
|
||
|
EAV - это выворачивание реляционной модели наизнанку.
|
|||
|---|---|---|---|
|
#18+
EAV в пределах базы, в принципе, понятен другой вопрос - взаимодействие, то есть выборка данных и дальнейшее манипулирование в Java используют Hibernate, в NET - NHibernate.. отсюда вопрос - у нас 200 справочников, как с ними быть ? 200 классов объектов создавать в java ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.03.2011, 13:59 |
|
||
|
EAV - это выворачивание реляционной модели наизнанку.
|
|||
|---|---|---|---|
|
#18+
не почему то кажется, что ограничения бизнес-процессов и ограничения СЦ БД - несколько разные вещи... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.03.2011, 14:24 |
|
||
|
EAV - это выворачивание реляционной модели наизнанку.
|
|||
|---|---|---|---|
|
#18+
Chopне почему то кажется, что ограничения бизнес-процессов и ограничения СЦ БД - несколько разные вещи...Разные. Но мы обсуждаем применение СЦ в автоматизации. В частности для БП. Я именно это имел ввиду, упоминая сложные проверки для реальной жизни. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.03.2011, 14:49 |
|
||
|
EAV - это выворачивание реляционной модели наизнанку.
|
|||
|---|---|---|---|
|
#18+
LSVChopне почему то кажется, что ограничения бизнес-процессов и ограничения СЦ БД - несколько разные вещи...Разные. Но мы обсуждаем применение СЦ в автоматизации. В частности для БП. Я именно это имел ввиду, упоминая сложные проверки для реальной жизни. чет не понимаю, если мы обсуждаем СЦ и ты согласен с мнением "...." то при чем тут примеры из бизнес-процессов? зы. имхо бизнес-процессы можно попытаться отразить и структурой БД, но... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.03.2011, 16:13 |
|
||
|
EAV - это выворачивание реляционной модели наизнанку.
|
|||
|---|---|---|---|
|
#18+
LSVу Вас проверяющую ХП вызывает клиент?Нет. Ее вызов вставлен в другую ХП. Вся работа происходит только через ХП. Поэтому, дёргая ХП, невозможно вывести систему из целостности. Ну а кто вызовет эту "другую ХП"? Я намекаю, что это ничего не меняет та или другая но все равно ХП. Ее кто-то должен вызвать. Раз не триггер ее вызывает, то кто? Кроме того, Вы как-то не прояснили вопрос с декларативными ОЦ. Т.е. которые моно просто объявить? Не в каком ни в коде. Если ОЦ не удается навязать декларативно, тогда триггер. Но целосность отношения (уникальность), СЦ и ограничения на значения можно навязать декларативно. Есть, возможно, ситуации када сложные БП не совсем типа ОЦ. Например, это разные правила для разного персонала. Ну тада тока ХП или вообще на стороне сервера приложений или клиента. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.03.2011, 17:26 |
|
||
|
EAV - это выворачивание реляционной модели наизнанку.
|
|||
|---|---|---|---|
|
#18+
Chop, посмотри на реализацию БД в MS CRM 4. Там применяется ссылочная целостность на уровне СУБД, настройки конкретного инстанса вместо EAV реализованы на уровне DDL (модификация структур таблиц, индексов и т.д. сложными ХП, дергаемыми из сервера приложений). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.03.2011, 21:12 |
|
||
|
EAV - это выворачивание реляционной модели наизнанку.
|
|||
|---|---|---|---|
|
#18+
Ну а кто вызовет эту "другую ХП"? Ту "другую" вызывает приложение. Я намекаю, что это ничего не меняет та или другая но все равно ХПНамёк не понят. Что не меняет ? Проверяющая ХП является единственной точкой всех проверок любой сложности в этом документе/справочнике. Ее можно удобно вызвать не только в модифицирующей процедуре. Ее можно вызвать "просто так", допустим с целью проверить документ, если было сделано к-л действие в другом д-те, кот. может как-то повлиять на целостность этого. Разумеется это в целях диагностики и отладки. Процедура умеет передавать не только ошибки, но и всякие варнинги и инф. сообщения пользователю. Реализовать такое на триггерах и констрайнтах может и возможно, но это месиво из кучи трудноуправляемого кода и настроек в разных местах. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.03.2011, 10:35 |
|
||
|
EAV - это выворачивание реляционной модели наизнанку.
|
|||
|---|---|---|---|
|
#18+
LSVНамёк не понят. Что не меняет ? Как раз наоборот, ничего не меняет: как устроена ХП не имеет значения. Вызывается из клиента: детали ХП ниче не меняют. У Вас ОЦ из приложения контролируются. А доступ к БД возможен, например, с административных клиентов, которые не вызовут этих ХП. Тогда как триггеры и декларативные ОЦ сработают. LSVПроверяющая ХП является единственной точкой всех проверок любой сложности в этом документе/справочнике. Показать все деклараттивные ОЦ моно одним запросами, что луче всяких точек и кода. Да и триггера тока вызывают ХП. Моно опять разрабатывать чтобы удобно смотреть было. LSVРеализовать такое на триггерах и констрайнтах может и возможно, но это месиво из кучи трудноуправляемого кода и настроек в разных местах. Наверное, Вы констрайнтами называете ОЦ, которые моно объявить. Но на самом деле констренты это ОЦ. Декларативные, триггерные и те что Вы пытаетесь реализовыавть из приложения. В любом случае Вы отказываетесь от достижений технологий БД. Там МД - фундамент, а Вы ОЦ выносите на уровеннь приложения, хотя и храните код в БД. Но поскоку без приложениях ОЦ нет, то к МД их не отненсти. Возможно, для встроенных БД это и ниче, но када клиентов много это шанг назад к файловым системам (то что было до БД для таких задач). Буржуа создали СУБД, способные поддерживать важнейшие для РМД ОЦ декларативно, и триггера для остальных, а Вы это не юзаете. Т.е. не используете важных возможностей СУБД. Зато пишите свой код для этого же, т.е. конкурируете в этом с производитенлями СУБД, а не студентами их юзающими. Т.е. даете этим студентам фору, поскоку превзойти производителей СУБД в этом все еще проблематично. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.03.2011, 11:20 |
|
||
|
EAV - это выворачивание реляционной модели наизнанку.
|
|||
|---|---|---|---|
|
#18+
Буржуа создали СУБД, способные поддерживать важнейшие для РМД ОЦ декларативно, и триггера для остальных, а Вы это не юзаете.Каждый юзает, то что ему больше подходит. Подавляющее большинство ERP-систем использует БД как свалку таблиц (за исключенем м.б. ОЕБС). Никаких констрайнтов и триггеров. Сначала мне казалось это глупым....но со временем я понял, что это было сделано не спроста и на это были весомые аргументы. У любого решения есть недостатки. Приходится выбирать... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.03.2011, 11:46 |
|
||
|
EAV - это выворачивание реляционной модели наизнанку.
|
|||
|---|---|---|---|
|
#18+
On 04.03.2011 16:31, Chop wrote: > я - согласен с озвученной мыслью Я - нет. EAV реализует метамодель данных. При этом делает он средствами обычной реляционной модели, никуда за её рамки не выходя. Поэтому ничуть ничего не выворачивается. Это просто другой подход. Ты работаешь не с данными, а с метаданными. Можно скажем в С++ (или Java) точно так же описывать данные в виде классов и их членов, можно составить списки атрибутов и значений. > киньте кто сцилкой на доку по этому поводу, *EAV & реляционная модель* > либо просто на вики-определение-формулировку Поищи волшебное ключевое слово "Тенцер". Преимущество в EAV одно -- можно динамически создавать новые атрибуты сущностей. Это очень мощное преимущество и собственно единственная причина EAV применять. Если это нужно, то без EAV не обойтись. Недостаток -- большая сложность работы с данными. Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.03.2011, 12:47 |
|
||
|
EAV - это выворачивание реляционной модели наизнанку.
|
|||
|---|---|---|---|
|
#18+
MasterZiv, +500 EAV - почти идеальное средство для постоянно развивающихся систем, особенно в продакшене 7/24. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.03.2011, 14:19 |
|
||
|
EAV - это выворачивание реляционной модели наизнанку.
|
|||
|---|---|---|---|
|
#18+
MasterZiv При этом делает он средствами обычной реляционной модели, никуда за её рамки не выходя. Поэтому ничуть ничего не выворачивается. Но это как раз можно увидеть выворачивание: средства от другой (РМД) МД прикручены к EAV. Ожидались свои средства. MasterZiv Преимущество в EAV одно -- можно динамически создавать новые атрибуты сущностей. Возможно, за счет того, что эти самые атрибуты по сути превращены (вывернуты) в данные. Ну а данные в РМД можно менять. Это преимущество слабоструктурированных МД перед сильно структурированными. По взрослому это пытаются решить с помощью соотвтующего типа МД, например, XML. Ну типа там и средства свои. MasterZivНедостаток -- большая сложность работы с данными. Ну правильно, средства РМД (манипулирование, ОЦ ) расчитаны на соответсвтие струтуры МД структуре предметной области. А струкура EAV (таблицы и атрибуты) далеки от этого в общем случае. Имена атрибутов из EAV в SQL не подставишь. Декларативные ОЦ не навяжешь. Конечно, на практике возможны компромисы (недостатки слабо проявляются, а атрибуты не известны заранее для какой-то части БД), но на идеальное EAV вряд ли претендует. Ей бы тада, скорее всего, подошли специальные какие-то свои средства а не от РМД. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.03.2011, 14:54 |
|
||
|
EAV - это выворачивание реляционной модели наизнанку.
|
|||
|---|---|---|---|
|
#18+
на идеальное EAV вряд ли претендует. Не претендует. Идеалов пока не существует. А собственно, кто претендует ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.03.2011, 10:38 |
|
||
|
EAV - это выворачивание реляционной модели наизнанку.
|
|||
|---|---|---|---|
|
#18+
LSVна идеальное EAV вряд ли претендует. Не претендует. Идеалов пока не существует. А собственно, кто претендует ? Ну извините, по сранению не тока с РМД, ООМД, ХМД, но даже там с иерархическими образца 1970 года, она, скорей всего, смотрица в заду. Она, скорей, как вынужденная затычка для РМД в некоторых ситуациях имеет смысл. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.03.2011, 11:23 |
|
||
|
EAV - это выворачивание реляционной модели наизнанку.
|
|||
|---|---|---|---|
|
#18+
vadiminfoНу извините, по сранению не тока с РМД, ООМД, ХМД, но даже там с иерархическими образца 1970 года, она, скорей всего, смотрица в заду. Она, скорей, как вынужденная затычка для РМД в некоторых ситуациях имеет смысл.1. Что такое ХМД ? 2. А сами ООМД разве не в заду (если мы обсуждаем СУБД) ? Только не надо тут про "успехи" CACHE. Ок ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.03.2011, 11:32 |
|
||
|
EAV - это выворачивание реляционной модели наизнанку.
|
|||
|---|---|---|---|
|
#18+
LSV1. Что такое ХМД ? Опечатка. Имелось в виду XML (буквы Д и L на одной клавише, вот и ошибся) LSV2. А сами ООМД разве не в заду (если мы обсуждаем СУБД) ? Ну даже если ООМД в заду, то EAV в значительно большем. Так или иначе ООСУБД есть: Версант, ГемСтоун или типа того. Да и всякие стандарты и проч. А EAV СУБД хде? РСУБД в EAV не переименуется из-за того что там кто-то налабает три таблы и назовет это EAV. Да и сами же видите, что средства от РМД. Вы их и не юзаете: ХП пишете вместо декларативных ОЦ. Ну что это за МД? В толстых книгах про EAV тоже что-то не попадалось, в отличии от перечисленных. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.03.2011, 11:51 |
|
||
|
EAV - это выворачивание реляционной модели наизнанку.
|
|||
|---|---|---|---|
|
#18+
Так или иначе ООСУБД есть: Версант, ГемСтоун или типа того.Чихать на них. Бесперспективная экзотика. Не то, что не сталкивался, я даже не слышал. И нет желания. Отомрут сами за ненадобностью. А EAV СУБД хде?Странный вопрос. А зачем для этого отдельные СУБД ? EAV это методика. Не универсальная, но удобная для ряда задач. Ниодна методика в чистом виде неприменима или неудобна. Всегда используется набор методик и приёмов. ХП пишете вместо декларативных ОЦ.Думаю, не ошибусь, если предположу, что 80-90% прикладных решений не используют декларативную ОЦ. И на это есть много объективных причин. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.03.2011, 10:37 |
|
||
|
|

start [/forum/topic.php?fid=32&msg=37161008&tid=1541471]: |
0ms |
get settings: |
7ms |
get forum list: |
11ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
141ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
66ms |
get tp. blocked users: |
1ms |
| others: | 232ms |
| total: | 477ms |

| 0 / 0 |
