|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
SiemarglЯ тут пример придумал. 1. Жила была в базе 10лет сущность Сотрудник с полем Зарплата. 2. После некоторых изменений бизнеса база изменилась. Теперь у Сотрудника есть Зарплата и Премия. 3. После очередной итерации Базовый_оклад, Премия_за_выслугу_лет, Штрафы, Прочие_выплаты Другие связанные таблицы тоже менялись несинхронно с этой. Приходит Нач.кадров и говорить - а скажите мне среднюю Иванова за последние 10 лет! Как это на практике будет выглядеть на CQRS, Event Sourcing ? 1. Есть сущность Сотрудник. В БД она может лежать в любой форме, какой захотите -- это проекция. Для удобства мы вели авто-проекции в 4нф, на этом строилось много запросов и логики работы с данными на чтение, плюс BI. 2. Поменялась сущность Сотрудник, добавлено поле, в связи с этим в проекцию 4нф добавлено поле в соответствующей таблице, автоматически. 3. Тоже самое. Никакие таблицы не могут менять "несинхронно", так как их никто руками не меняет. Руками DDL запрещены, только через механизм проекций. Поэтому мимо. Это ж ES. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.09.2019, 17:25 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
drynnyСейчас ещё хвост придет с рассказом, как записывал в одну ячейку экселя номера объектов через запятую, разрывая шаблоны нормальных форм. А смешно получается, человек, который недавно с серьёзным лицом убедительно напрашивался на аргументированную беседу, внезапно оказывается прыщавым пацаном, способным лишь демонстрировать попытки нелепых подколок. Ох уж эти орхитекторы. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.09.2019, 17:27 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
hVosttdrynnyСлив засчитан. Данные в таблице по-любому в какой-то нормальной форме. Нет, не по-любому, вы ошибаетесь. Поэтому выглядите вы жалко со своим "сливом", чесслово. Ну, как-то все таки надо ответить за базар. Вот описание таблицы: drynnyЕсть такой формат хранения данных – EAV (Entity–attribute–value) И есть его модификация, в которой формат дополнен полем ID – уникальный идентификатор каждой записи: ID–Entity–Attribute–Value То есть, это такой большой список из 4 полей, в котором хранится вся база данных. Вообще вся – все сущности и их описания (метаданные), включая описание примитивных типов данных (string, number, date, ...). Для навигации в этом списке построены 3 упорядоченных указателя – индексы: ID, Entity+Attribute, Attribute+Value При такой организации данных мы можем работать с базой данных любого размера, не имея проблем с производительностью, свойственных системам, построенным на обычном EAV. Вы сказали, что нормальная форма «никакая». Что это значит и почему, обоснуйте, пожалуйста. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.09.2019, 17:30 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
drynnyВы сказали, что нормальная форма «никакая». Что это значит и почему, обоснуйте, пожалуйста. Никакая. Так как каждое поле в БД должно иметь тот же смысл для всех строк. Очевидно, что для EAV это не так. Но обычно на это забивают, и считается, что поле Значение это и есть его смысл. Если так, то очевидно, 3-я. Опять таки, вот это рвение спуститься до определений, выдаёт отсутствие какой-то интересной базы для дискуссии. Печаль, в общем. drynnyНу, как-то все таки надо ответить за базар. Да, особенно вот за это drynnyДанные в таблице по-любому в какой-то нормальной форме. не хотите? :) ... |
|||
:
Нравится:
Не нравится:
|
|||
03.09.2019, 17:46 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
hVosttSiemarglЯ тут пример придумал. 1. Жила была в базе 10лет сущность Сотрудник с полем Зарплата. 2. После некоторых изменений бизнеса база изменилась. Теперь у Сотрудника есть Зарплата и Премия. 3. После очередной итерации Базовый_оклад, Премия_за_выслугу_лет, Штрафы, Прочие_выплаты Другие связанные таблицы тоже менялись несинхронно с этой. Приходит Нач.кадров и говорить - а скажите мне среднюю Иванова за последние 10 лет! Как это на практике будет выглядеть на CQRS, Event Sourcing ? 1. Есть сущность Сотрудник. В БД она может лежать в любой форме, какой захотите -- это проекция. Для удобства мы вели авто-проекции в 4нф, на этом строилось много запросов и логики работы с данными на чтение, плюс BI. 2. Поменялась сущность Сотрудник, добавлено поле, в связи с этим в проекцию 4нф добавлено поле в соответствующей таблице, автоматически. 3. Тоже самое. Никакие таблицы не могут менять "несинхронно", так как их никто руками не меняет. Руками DDL запрещены, только через механизм проекций. Поэтому мимо. Это ж ES. Не понимаю, что в этом контексте значит "проекция". С одной стороны - БД, а с другой ? А вопрос был - как сквозь проекции различных версий строится сквозной запрос к исторической базе "скажите мне среднюю зрп Иванова за последние 10 лет!" 1.2.3 это были условия а не вопросы ... |
|||
:
Нравится:
Не нравится:
|
|||
03.09.2019, 18:13 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
несинхронно, это значит что могли меняться еще таблицы, связанные с Сотрудником - персональные данные там, должности итп когда явно не видно, связано ли это с расчетом зарплаты, но проекция меняет версию ... |
|||
:
Нравится:
Не нравится:
|
|||
03.09.2019, 18:16 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
SiemarglА вопрос был - как сквозь проекции различных версий строится сквозной запрос к исторической базе "скажите мне среднюю зрп Иванова за последние 10 лет!" 1.2.3 это были условия а не вопросы А, понял. Это просто была пыль в глаза. Уважуха, совершенно правильно суть вопроса прятать как можно глубже, а то и вовсе не сообщать, это по-нашему Создаём проекцию, в которую записываем изменения ЗП. Если она понадобилась только сегодня, сегодня и создаём, затем прогоняем все события через проекцию, всё осядет в табличке, можно считать средню, максимальную, поперечную, какую хотите. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.09.2019, 18:24 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
Siemarglнесинхронно, это значит что могли меняться еще таблицы, связанные с Сотрудником - персональные данные там, должности итп когда явно не видно, связано ли это с расчетом зарплаты, но проекция меняет версию Создаём подходящую под задачу проекцию. С учётом смены должности, увольнения, восстановления и т.д. и тп. Мы и не такие задачи решали, намного сложнее. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.09.2019, 18:25 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
SiemarglА вопрос был - как сквозь проекции различных версий строится сквозной запрос к исторической базе Мне кажется, у вас идёт недопонимание терминологии. Суть подхода ES в том, что есть один поток событий - например "сотрудник устроился на работу", "сотруднику назначен оклад", "сотруднику выплачена зарплата" и так далее - столько, сколько придумаете, на каждый важный вам чих. Дальше из этого общего потока создаются любые нужные представления - например "сотрудники", "выплаты", "зарплаты" и так далее. Всё это живёт, добавляете новые события, правила их раскидывания по существующим представлениям, новые представления. И "средняя зарплата Иванова" в результате считается примерно как Код: sql 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
03.09.2019, 18:38 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
hVostt, Ок, остался последний вопрос и я его не прятал >Не понимаю, что в этом контексте значит "проекция". С одной стороны - БД, а с другой ? ... |
|||
:
Нравится:
Не нравится:
|
|||
03.09.2019, 18:39 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
softwarerSiemarglА вопрос был - как сквозь проекции различных версий строится сквозной запрос к исторической базе Мне кажется, у вас идёт недопонимание терминологии. Суть подхода ES в том, что есть один поток событий - например "сотрудник устроился на работу", "сотруднику назначен оклад", "сотруднику выплачена зарплата" и так далее - столько, сколько придумаете, на каждый важный вам чих. Дальше из этого общего потока создаются любые нужные представления - например "сотрудники", "выплаты", "зарплаты" и так далее. Всё это живёт, добавляете новые события, правила их раскидывания по существующим представлениям, новые представления. И "средняя зарплата Иванова" в результате считается примерно как Код: sql 1.
Именно так, не понимаю. Т.е у нас хранится _в базе данных_ "поток событий", а не нормализованные данные проекций, так? И Выплаты_Зарплат это что то типа мат.вью или процедуры, которая пишется на каждый требуемый запрос. Собственно, я тогда плохо понимаю, как в РСУБД хранить этот самый "поток событий" ... |
|||
:
Нравится:
Не нравится:
|
|||
03.09.2019, 18:43 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
И собственно, как отслеживать актуальное соответствие этой Выплаты_Зарплат, когда по моему примеру добавилось поле "Премия". Запрос не сломается (не будем о сложном типа Оракловых пакетов) ... |
|||
:
Нравится:
Не нравится:
|
|||
03.09.2019, 18:47 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
SiemarglТ.е у нас хранится _в базе данных_ "поток событий" Ну, собственно, даже не обязательно в базе данных - хотя, конечно, вполне вероятно, что в ней. SiemarglИ Выплаты_Зарплат это что то типа мат.вью или процедуры Зависит от. Но скорее всего, это таблица, которая хранится в (возможно, другой) базе данных и заполняется обработчиком потока событий. SiemarglСобственно, я тогда плохо понимаю, как в РСУБД хранить этот самый "поток событий" Да, собственно, как угодно. Это уже вопрос архитектурного решения - как эти события вообще будут формироваться, передаваться и обрабатываться. Наверное, в большинстве случаев используют слабо структурированный текст типа xml или json. В то же время никто не мешает создать под каждый тип события реляционную таблицу, разложить атрибуты по полям и формировать из них те же "проекции" итп. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.09.2019, 18:58 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
softwarer, Спасибо :) Я просто думал, что не нужно объяснять что такое Event Sourcing Siemargl>Не понимаю, что в этом контексте значит "проекция". С одной стороны - БД, а с другой ? С другой поток событий. В довесок может быть репозиторий агрегатов в NoSQL, но это уже вопрос реализации. SiemarglТ.е у нас хранится _в базе данных_ "поток событий", а не нормализованные данные проекций, так? Поток событий это по сути единственный истинный источник данных. Мастер данные так сказать, так как из потока можно получить любые проекции в любых БД, любых формах и видах. И поддерживать их как угодно. SiemarglСобственно, я тогда плохо понимаю, как в РСУБД хранить этот самый "поток событий" Лучше всего подходит NoSQL хранилище, например, Монга. Естественно через централизованную шину событий. Но можно и в РСУБД, правда в этом нет большого смысла. SiemarglИ собственно, как отслеживать актуальное соответствие этой Выплаты_Зарплат, когда по моему примеру добавилось поле "Премия". Запрос не сломается (не будем о сложном типа Оракловых пакетов) Добавление поля Премия влияет на логику. Однако вы можете предупредить подобные шатания, создав проекту, где в проекцию будет писаться фактические выплаты с учётом всех ЗП, премий, надбавок, за вычетом налогов и прочего прочего прочего. Тогда вы можете никогда не париться с запросом, он у вас не изменится. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.09.2019, 19:01 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
SiemarglИ собственно, как отслеживать актуальное соответствие этой Выплаты_Зарплат, когда по моему примеру добавилось поле "Премия" Да, собственно, ровно так же, как без ES - аналитик говорит "добавились вот такие новые данные, они должны проявиться вот здесь вот таким образом". Скажем: "зарплата теперь частично оформляется премией, поэтому Выплаты_Зарплаты раньше считались как сумма величин из событий "Начислен аванс" и "Начислена зарплата", а теперь ещё и из события "Начислена премия" за ту же дату, что и зарплата. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.09.2019, 19:06 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
hVostt.....SiemarglИ собственно, как отслеживать актуальное соответствие этой Выплаты_Зарплат, когда по моему примеру добавилось поле "Премия". Запрос не сломается (не будем о сложном типа Оракловых пакетов) Добавление поля Премия влияет на логику. Однако вы можете предупредить подобные шатания, создав проекту, где в проекцию будет писаться фактические выплаты с учётом всех ЗП, премий, надбавок, за вычетом налогов и прочего прочего прочего. Тогда вы можете никогда не париться с запросом, он у вас не изменится. В моем примере изменения происходят со временем, по требованиям бизнеса, так что заранее бы не вышло. И значит, что проблема отслеживания бизнес логики остается и плохо автоматизируется. В общем за ликбез с Александром спасибо, только я не понял......А какая выгода по сравнению с EAV? Ведь при каждом изменении будут меняться проекции (структура проекционной БД), бизнес логика, и это все потребует массовой переливки и трансформации данных, версионирования приложений, блэкаута на это все итп. А в случае с EAV таких проблем нет. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.09.2019, 19:33 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
SiemarglА какая выгода по сравнению с EAV? Это немного странный вопрос. Примерно как "а какая выгода от танка по сравнению с дизельным мотором?" Это понятия из разных категорий. EAV - это формат хранения данных, а ES - архитектура построения информационных систем. ES вполне может использовать EAV, скажем, для представления того же самого потока событий - как танк может использовать дизельный мотор - но их странно сравнивать. SiemarglВедь при каждом изменении будут меняться проекции (структура проекционной БД) Наоборот. Идея в том, что все, кто пользуется проекции Выплаты_Зарплат, вообще не заметят, что зарплата развалилась на зарплату и премию. То есть, приложение, которое считает "среднюю зарплату Иванова" так и будет выполнять вышеописанный запрос и получать верный результат, как бы ни менялась логика начисления этой самой зарплаты. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.09.2019, 19:39 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
softwarerSiemarglА какая выгода по сравнению с EAV? Это немного странный вопрос. Примерно как "а какая выгода от танка по сравнению с дизельным мотором?" Это понятия из разных категорий. EAV - это формат хранения данных, а ES - архитектура построения информационных систем. ES вполне может использовать EAV, скажем, для представления того же самого потока событий - как танк может использовать дизельный мотор - но их странно сравнивать. Это наверное к первоисточнику, который противопоставлял. 21944256 softwarerSiemarglВедь при каждом изменении будут меняться проекции (структура проекционной БД) Наоборот. Идея в том, что все, кто пользуется проекции Выплаты_Зарплат, вообще не заметят, что зарплата развалилась на зарплату и премию. То есть, приложение, которое считает "среднюю зарплату Иванова" так и будет выполнять вышеописанный запрос и получать верный результат, как бы ни менялась логика начисления этой самой зарплаты.Не поменяется, только если у приложения была функция Суммарная_выплата, а так API поменяется - чтобы отражать все новые данные. Я вообще не вижу каких то принципиально новых идей в ES %-/ Кажется лет 30 изобрели Enterprise Servise Bus и это одна из простейших реализаций ... |
|||
:
Нравится:
Не нравится:
|
|||
03.09.2019, 19:50 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
SiemarglЭто наверное к первоисточнику, который противопоставлял. Я помню, что hVostt их противопоставил, и не был в восторге от той реплики, хотя и понял, что он имел в виду. SiemarglНе поменяется, только если у приложения была функция Суммарная_выплата, Не "функция Суммарная_выплата", а "проекция Зарплата". Вы, когда говорите о расчёте средней зарплаты, имеете в виду некое понятие "Зарплата". Немного виртуальное в том смысле, что не продумываете чётко, как оно рассчитывается. Выше я упомянул про аванс и собственно зарплату - как раз поэтому. Когда Вы говорили про расчёт средней зарплаты, Вы наверняка имели в виду их сумму, но явно об этом не говорили и не думали. И эта архитектура позволяет именно так и действовать - завести проекцию "Зарплата" а дальше уточнять это понятие, формировать его из белой, чёрной и серобуромалиновой, используя при этом независимо от уточнений. Siemarglа так API поменяется - чтобы отражать все новые данные. API останется прежним - та же проекция в виде реляционной таблицы. Поменяется скрытая от приложения логика её наполнения. Может быть, API дополнится - появятся новые проекции или новые атрибуты в той же проекции. А поменяться так, чтобы потребовалось менять старые приложения - сравнительно редкая необходимость. Скорее даже не необходимость вообще. SiemarglЯ вообще не вижу каких то принципиально новых идей в ES Ну, я и не агитирую про принципиально новые идеи. Я и в ООП принципиально новых идей не вижу, например - в отличие от большинства, свято уверенного, что раньше был ад и кошмар, а потом стало ООП и порядок. Знакомство с историей любого вопроса показывает, как то, что при первом знакомстве кажется "революционными идеями", оказывается серией мелких последовательных шагов, сделанных разными людьми и логично вытекающих друг из друга. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.09.2019, 20:18 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
SiemarglА в случае с EAV таких проблем нет. Пишу с телефона, поэтому процитирую маленький кусочек. Нет есть, и они просто огромные, колоссальные В еав вы не можете добавить обязательный атрибут, просто не можете. Вообще. Без ядреных костылей. Все ваши атрибуты опциональные. Иначе при добавлении атрибута придется сделать огромный посев значений по умолчанию. И база данных ничего вам не гарантирует. Теперь наше решение на ES. 1. Добавляете новый атрибут в метамодель. 2. Создаётся событие добавление атрибута 3. Подсистема проекций ловит такое событие с создаёт колонку. При чем not null тоже допускается со значением по умолчанию 4. Далее в колонку с новым атрибутом будут писаться значения. Все. Идеально. И данные строго нормализованы и никаких проблем с ограничениями целостности, в том числе со ссылочной целостностью . Выгода очевидная, Профит космический, у вас на руках нормальная бд с человеческим лицом, а не кусок какахи, для которого нормальных запросов не напишешь. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.09.2019, 20:49 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
SiemarglЯ вообще не вижу каких то принципиально новых идей в ES %-/ Ну я даж незнаю, это как вообще можно их не видеть? А мы ведь даже ещё не говорили про микросеовисы, только одну тему затронули про нормализованное хранение данных. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.09.2019, 20:52 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
softwarerSiemarglЭто наверное к первоисточнику, который противопоставлял. Я помню, что hVostt их противопоставил, и не был в восторге от той реплики, хотя и понял, что он имел в виду. А я не понял. И в свете ваших обоюдных уточнений хотелось бы понять, чем мое непонимание противопоставления, упомянутое здесь 21962820 отличается от высказывания Хвоста, которое внезапно, оказалось понятным. softwarerSiemarglНе поменяется, только если у приложения была функция Суммарная_выплата, Не "функция Суммарная_выплата", а "проекция Зарплата". Вы, когда говорите о расчёте средней зарплаты, имеете в виду некое понятие "Зарплата". Немного виртуальное в том смысле, что не продумываете чётко, как оно рассчитывается. Выше я упомянул про аванс и собственно зарплату - как раз поэтому. Когда Вы говорили про расчёт средней зарплаты, Вы наверняка имели в виду их сумму, но явно об этом не говорили и не думали. И эта архитектура позволяет именно так и действовать - завести проекцию "Зарплата" а дальше уточнять это понятие, формировать его из белой, чёрной и серобуромалиновой, используя при этом независимо от уточнений. Siemarglа так API поменяется - чтобы отражать все новые данные. API останется прежним - та же проекция в виде реляционной таблицы. Поменяется скрытая от приложения логика её наполнения. Может быть, API дополнится - появятся новые проекции или новые атрибуты в той же проекции. А поменяться так, чтобы потребовалось менять старые приложения - сравнительно редкая необходимость. Скорее даже не необходимость вообще. Нет, я думал не так. Я как раз думал, что Зарплата распадается и далее становится агрегатом от разных опций. Аналогично Биллингу с кучей опций от фазы луны, например. И невозможно поддерживать старыми функциями новые расширения. Но скорее, что поменяется структура проекционной базы со всеми вытекающими .... ... |
|||
:
Нравится:
Не нравится:
|
|||
03.09.2019, 23:43 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
hVosttSiemarglА в случае с EAV таких проблем нет. Пишу с телефона, поэтому процитирую маленький кусочек. Нет есть, и они просто огромные, колоссальные В еав вы не можете добавить обязательный атрибут, просто не можете. Вообще. Без ядреных костылей. Все ваши атрибуты опциональные. Иначе при добавлении атрибута придется сделать огромный посев значений по умолчанию. И база данных ничего вам не гарантирует. Теперь наше решение на ES. 1. Добавляете новый атрибут в метамодель. 2. Создаётся событие добавление атрибута 3. Подсистема проекций ловит такое событие с создаёт колонку. При чем not null тоже допускается со значением по умолчанию 4. Далее в колонку с новым атрибутом будут писаться значения. Все. Идеально. И данные строго нормализованы и никаких проблем с ограничениями целостности, в том числе со ссылочной целостностью . Выгода очевидная, Профит космический, у вас на руках нормальная бд с человеческим лицом, а не кусок какахи, для которого нормальных запросов не напишешь.Я не говорил, что в EAV совсем нет проблем, я говорил, что нет таких проблем как, повторюсь > потребует массовой переливки и трансформации данных, версионирования приложений, блэкаута на это все итп. Пп 1-4 выше это только примитивный случай, а для упомянутой тобой 4НФ, потребуются новые таблицы, реляции, ключи, индексы, права итп И нормальная БД с космической кармой будет только после прогона 100% тестового покрытия, что БЛогика не поломалась от изменений. А блекаут - хуже всего. Даже перегенерить базу из ES на несколько TB будет просто местами невозможно - бизнес неделю ждать не будет. hVosttSiemarglЯ вообще не вижу каких то принципиально новых идей в ES %-/ Ну я даж незнаю, это как вообще можно их не видеть? А мы ведь даже ещё не говорили про микросеовисы, только одну тему затронули про нормализованное хранение данных. ОК, чем ES лучше чем ESB? Или классической схемы - поменяли, подгрузили.... А микросервисы - отдельная тема. Отрыжка теоретического ФП, которые на практике (а не на бумаге) в затратах стоят дороже выгоды. Только если придумать идеальный фиксированный интерфейс обмена......Иначе N^2-N ... |
|||
:
Нравится:
Не нравится:
|
|||
04.09.2019, 00:02 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
hVosttТеперь наше решение на ES. 1. Добавляете новый атрибут в метамодель. 2. Создаётся событие добавление атрибута 3. Подсистема проекций ловит такое событие с создаёт колонку. При чем not null тоже допускается со значением по умолчанию 4. Далее в колонку с новым атрибутом будут писаться значения. А чем плох механизм типа гибких полей в OEBS? Добавить поле на системе не находящейся в эксплуатации конечно никаких проблем, а вот на продуктовой каждый чих выполнять в технологическое окно как то не комильфо и перекомпилировать возможно придется некоторые объекты и кто будет переписывать логику работы бэк и фронт-энда под использование нового поля и нового алгоритма работы? И как эта замечательная система переварит таблицу товаров в которой много разных типов товаров у каждого типа по 200-300 свойств? Вот пример Стиральные машины У утюгов будет другой набор свойств, у телевизоров третий и т.д., и каждый тип товара еще не просто тип, а иерархическая классификация. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.09.2019, 01:39 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
iOracleDevИ как эта замечательная система переварит таблицу товаров в которой много разных типов товаров у каждого типа по 200-300 свойств? Вот пример Стиральные машины. У утюгов будет другой набор свойств, у телевизоров третий и т.д., и каждый тип товара еще не просто тип, а иерархическая классификация. Наверное, при проектировании НСИ не следует увлекаться техникой, не разобравшить в методологии бизнес-процессов, которые данное НСИ будут использовать. НСИ ради красивого структурированно НСИ - не является самоцелью. Накой 200-300 свойств стиралке? Для целей выбора (покупки) товара цена, вес, габариты, цвет, ну может быть для эстетов "тип привода барабана" и "с дисплейчиком/с кнопочками". Всё остальное можно просто в текстовом описании хранить. Кто будет теми 200-300 свойствами практически пользоваться, и главное зачем? ... |
|||
:
Нравится:
Не нравится:
|
|||
04.09.2019, 08:55 |
|
|
start [/forum/topic.php?fid=32&msg=39856867&tid=1539762]: |
0ms |
get settings: |
11ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
36ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
60ms |
get tp. blocked users: |
2ms |
others: | 253ms |
total: | 396ms |
0 / 0 |