powered by simpleCommunicator - 2.0.46     © 2025 Programmizd 02
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Как назвать эту структуру и подход, основанные на EAV?
25 сообщений из 454, страница 9 из 19
Как назвать эту структуру и подход, основанные на EAV?
    #39856779
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SiemarglЯ тут пример придумал.

1. Жила была в базе 10лет сущность Сотрудник с полем Зарплата.
2. После некоторых изменений бизнеса база изменилась. Теперь у Сотрудника есть Зарплата и Премия.
3. После очередной итерации Базовый_оклад, Премия_за_выслугу_лет, Штрафы, Прочие_выплаты

Другие связанные таблицы тоже менялись несинхронно с этой.

Приходит Нач.кадров и говорить - а скажите мне среднюю Иванова за последние 10 лет!

Как это на практике будет выглядеть на CQRS, Event Sourcing ?

1. Есть сущность Сотрудник. В БД она может лежать в любой форме, какой захотите -- это проекция. Для удобства мы вели авто-проекции в 4нф, на этом строилось много запросов и логики работы с данными на чтение, плюс BI.

2. Поменялась сущность Сотрудник, добавлено поле, в связи с этим в проекцию 4нф добавлено поле в соответствующей таблице, автоматически.

3. Тоже самое.


Никакие таблицы не могут менять "несинхронно", так как их никто руками не меняет. Руками DDL запрещены, только через механизм проекций.

Поэтому мимо. Это ж ES.
...
Рейтинг: 0 / 0
Как назвать эту структуру и подход, основанные на EAV?
    #39856780
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
drynnyСейчас ещё хвост придет с рассказом, как записывал в одну ячейку экселя номера объектов через запятую, разрывая шаблоны нормальных форм.

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

Ох уж эти орхитекторы.
...
Рейтинг: 0 / 0
Как назвать эту структуру и подход, основанные на EAV?
    #39856782
drynny
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
hVosttdrynnyСлив засчитан.
Данные в таблице по-любому в какой-то нормальной форме.

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

drynnyЕсть такой формат хранения данных – EAV (Entity–attribute–value)
И есть его модификация, в которой формат дополнен полем ID – уникальный идентификатор каждой записи:
ID–Entity–Attribute–Value
То есть, это такой большой список из 4 полей, в котором хранится вся база данных. Вообще вся – все сущности и их описания (метаданные), включая описание примитивных типов данных (string, number, date, ...).

Для навигации в этом списке построены 3 упорядоченных указателя – индексы: ID, Entity+Attribute, Attribute+Value
При такой организации данных мы можем работать с базой данных любого размера, не имея проблем с производительностью, свойственных системам, построенным на обычном EAV.
Вы сказали, что нормальная форма «никакая». Что это значит и почему, обоснуйте, пожалуйста.
...
Рейтинг: 0 / 0
Как назвать эту структуру и подход, основанные на EAV?
    #39856793
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
drynnyВы сказали, что нормальная форма «никакая». Что это значит и почему, обоснуйте, пожалуйста.

Никакая. Так как каждое поле в БД должно иметь тот же смысл для всех строк. Очевидно, что для EAV это не так. Но обычно на это забивают, и считается, что поле Значение это и есть его смысл.

Если так, то очевидно, 3-я.

Опять таки, вот это рвение спуститься до определений, выдаёт отсутствие какой-то интересной базы для дискуссии. Печаль, в общем.

drynnyНу, как-то все таки надо ответить за базар.

Да, особенно вот за это

drynnyДанные в таблице по-любому в какой-то нормальной форме.

не хотите? :)
...
Рейтинг: 0 / 0
Как назвать эту структуру и подход, основанные на EAV?
    #39856817
Siemargl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttSiemarglЯ тут пример придумал.

1. Жила была в базе 10лет сущность Сотрудник с полем Зарплата.
2. После некоторых изменений бизнеса база изменилась. Теперь у Сотрудника есть Зарплата и Премия.
3. После очередной итерации Базовый_оклад, Премия_за_выслугу_лет, Штрафы, Прочие_выплаты

Другие связанные таблицы тоже менялись несинхронно с этой.

Приходит Нач.кадров и говорить - а скажите мне среднюю Иванова за последние 10 лет!

Как это на практике будет выглядеть на CQRS, Event Sourcing ?

1. Есть сущность Сотрудник. В БД она может лежать в любой форме, какой захотите -- это проекция. Для удобства мы вели авто-проекции в 4нф, на этом строилось много запросов и логики работы с данными на чтение, плюс BI.

2. Поменялась сущность Сотрудник, добавлено поле, в связи с этим в проекцию 4нф добавлено поле в соответствующей таблице, автоматически.

3. Тоже самое.


Никакие таблицы не могут менять "несинхронно", так как их никто руками не меняет. Руками DDL запрещены, только через механизм проекций.

Поэтому мимо. Это ж ES.
Не понимаю, что в этом контексте значит "проекция". С одной стороны - БД, а с другой ?

А вопрос был - как сквозь проекции различных версий строится сквозной запрос к исторической базе "скажите мне среднюю зрп Иванова за последние 10 лет!"
1.2.3 это были условия а не вопросы
...
Рейтинг: 0 / 0
Как назвать эту структуру и подход, основанные на EAV?
    #39856818
Siemargl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
несинхронно, это значит что могли меняться еще таблицы, связанные с Сотрудником - персональные данные там, должности итп
когда явно не видно, связано ли это с расчетом зарплаты, но проекция меняет версию
...
Рейтинг: 0 / 0
Как назвать эту структуру и подход, основанные на EAV?
    #39856823
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SiemarglА вопрос был - как сквозь проекции различных версий строится сквозной запрос к исторической базе "скажите мне среднюю зрп Иванова за последние 10 лет!"
1.2.3 это были условия а не вопросы

А, понял. Это просто была пыль в глаза. Уважуха, совершенно правильно суть вопроса прятать как можно глубже, а то и вовсе не сообщать, это по-нашему

Создаём проекцию, в которую записываем изменения ЗП. Если она понадобилась только сегодня, сегодня и создаём, затем прогоняем все события через проекцию, всё осядет в табличке, можно считать средню, максимальную, поперечную, какую хотите.
...
Рейтинг: 0 / 0
Как назвать эту структуру и подход, основанные на EAV?
    #39856824
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Siemarglнесинхронно, это значит что могли меняться еще таблицы, связанные с Сотрудником - персональные данные там, должности итп
когда явно не видно, связано ли это с расчетом зарплаты, но проекция меняет версию

Создаём подходящую под задачу проекцию. С учётом смены должности, увольнения, восстановления и т.д. и тп. Мы и не такие задачи решали, намного сложнее.
...
Рейтинг: 0 / 0
Как назвать эту структуру и подход, основанные на EAV?
    #39856827
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SiemarglА вопрос был - как сквозь проекции различных версий строится сквозной запрос к исторической базе
Мне кажется, у вас идёт недопонимание терминологии. Суть подхода ES в том, что есть один поток событий - например "сотрудник устроился на работу", "сотруднику назначен оклад", "сотруднику выплачена зарплата" и так далее - столько, сколько придумаете, на каждый важный вам чих. Дальше из этого общего потока создаются любые нужные представления - например "сотрудники", "выплаты", "зарплаты" и так далее. Всё это живёт, добавляете новые события, правила их раскидывания по существующим представлениям, новые представления. И "средняя зарплата Иванова" в результате считается примерно как

Код: sql
1.
select avg(величина) from Выплаты_Зарплат where сотрудник = 'Иванов' and дата >= date '2009-09-03'
...
Рейтинг: 0 / 0
Как назвать эту структуру и подход, основанные на EAV?
    #39856828
Siemargl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVostt,

Ок, остался последний вопрос и я его не прятал
>Не понимаю, что в этом контексте значит "проекция". С одной стороны - БД, а с другой ?
...
Рейтинг: 0 / 0
Как назвать эту структуру и подход, основанные на EAV?
    #39856830
Siemargl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarerSiemarglА вопрос был - как сквозь проекции различных версий строится сквозной запрос к исторической базе
Мне кажется, у вас идёт недопонимание терминологии. Суть подхода ES в том, что есть один поток событий - например "сотрудник устроился на работу", "сотруднику назначен оклад", "сотруднику выплачена зарплата" и так далее - столько, сколько придумаете, на каждый важный вам чих. Дальше из этого общего потока создаются любые нужные представления - например "сотрудники", "выплаты", "зарплаты" и так далее. Всё это живёт, добавляете новые события, правила их раскидывания по существующим представлениям, новые представления. И "средняя зарплата Иванова" в результате считается примерно как

Код: sql
1.
select avg(величина) from Выплаты_Зарплат where сотрудник = 'Иванов' and дата >= date '2009-09-03'

Именно так, не понимаю.
Т.е у нас хранится _в базе данных_ "поток событий", а не нормализованные данные проекций, так?
И Выплаты_Зарплат это что то типа мат.вью или процедуры, которая пишется на каждый требуемый запрос.

Собственно, я тогда плохо понимаю, как в РСУБД хранить этот самый "поток событий"
...
Рейтинг: 0 / 0
Как назвать эту структуру и подход, основанные на EAV?
    #39856833
Siemargl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И собственно, как отслеживать актуальное соответствие этой Выплаты_Зарплат, когда по моему примеру добавилось поле "Премия". Запрос не сломается (не будем о сложном типа Оракловых пакетов)
...
Рейтинг: 0 / 0
Как назвать эту структуру и подход, основанные на EAV?
    #39856835
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SiemarglТ.е у нас хранится _в базе данных_ "поток событий"
Ну, собственно, даже не обязательно в базе данных - хотя, конечно, вполне вероятно, что в ней.

SiemarglИ Выплаты_Зарплат это что то типа мат.вью или процедуры
Зависит от. Но скорее всего, это таблица, которая хранится в (возможно, другой) базе данных и заполняется обработчиком потока событий.

SiemarglСобственно, я тогда плохо понимаю, как в РСУБД хранить этот самый "поток событий"
Да, собственно, как угодно. Это уже вопрос архитектурного решения - как эти события вообще будут формироваться, передаваться и обрабатываться. Наверное, в большинстве случаев используют слабо структурированный текст типа xml или json. В то же время никто не мешает создать под каждый тип события реляционную таблицу, разложить атрибуты по полям и формировать из них те же "проекции" итп.
...
Рейтинг: 0 / 0
Как назвать эту структуру и подход, основанные на EAV?
    #39856836
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarer,

Спасибо :)
Я просто думал, что не нужно объяснять что такое Event Sourcing

Siemargl>Не понимаю, что в этом контексте значит "проекция". С одной стороны - БД, а с другой ?

С другой поток событий. В довесок может быть репозиторий агрегатов в NoSQL, но это уже вопрос реализации.


SiemarglТ.е у нас хранится _в базе данных_ "поток событий", а не нормализованные данные проекций, так?

Поток событий это по сути единственный истинный источник данных. Мастер данные так сказать, так как из потока можно получить любые проекции в любых БД, любых формах и видах. И поддерживать их как угодно.


SiemarglСобственно, я тогда плохо понимаю, как в РСУБД хранить этот самый "поток событий"

Лучше всего подходит NoSQL хранилище, например, Монга. Естественно через централизованную шину событий. Но можно и в РСУБД, правда в этом нет большого смысла.


SiemarglИ собственно, как отслеживать актуальное соответствие этой Выплаты_Зарплат, когда по моему примеру добавилось поле "Премия". Запрос не сломается (не будем о сложном типа Оракловых пакетов)

Добавление поля Премия влияет на логику. Однако вы можете предупредить подобные шатания, создав проекту, где в проекцию будет писаться фактические выплаты с учётом всех ЗП, премий, надбавок, за вычетом налогов и прочего прочего прочего. Тогда вы можете никогда не париться с запросом, он у вас не изменится.
...
Рейтинг: 0 / 0
Как назвать эту структуру и подход, основанные на EAV?
    #39856837
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SiemarglИ собственно, как отслеживать актуальное соответствие этой Выплаты_Зарплат, когда по моему примеру добавилось поле "Премия"
Да, собственно, ровно так же, как без ES - аналитик говорит "добавились вот такие новые данные, они должны проявиться вот здесь вот таким образом". Скажем: "зарплата теперь частично оформляется премией, поэтому Выплаты_Зарплаты раньше считались как сумма величин из событий "Начислен аванс" и "Начислена зарплата", а теперь ещё и из события "Начислена премия" за ту же дату, что и зарплата.
...
Рейтинг: 0 / 0
Как назвать эту структуру и подход, основанные на EAV?
    #39856841
Siemargl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVostt.....SiemarglИ собственно, как отслеживать актуальное соответствие этой Выплаты_Зарплат, когда по моему примеру добавилось поле "Премия". Запрос не сломается (не будем о сложном типа Оракловых пакетов)

Добавление поля Премия влияет на логику. Однако вы можете предупредить подобные шатания, создав проекту, где в проекцию будет писаться фактические выплаты с учётом всех ЗП, премий, надбавок, за вычетом налогов и прочего прочего прочего. Тогда вы можете никогда не париться с запросом, он у вас не изменится.
В моем примере изменения происходят со временем, по требованиям бизнеса, так что заранее бы не вышло.
И значит, что проблема отслеживания бизнес логики остается и плохо автоматизируется.

В общем за ликбез с Александром спасибо, только я не понял......А какая выгода по сравнению с EAV?

Ведь при каждом изменении будут меняться проекции (структура проекционной БД), бизнес логика, и это все потребует массовой переливки и трансформации данных, версионирования приложений, блэкаута на это все итп.

А в случае с EAV таких проблем нет.
...
Рейтинг: 0 / 0
Как назвать эту структуру и подход, основанные на EAV?
    #39856844
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SiemarglА какая выгода по сравнению с EAV?
Это немного странный вопрос. Примерно как "а какая выгода от танка по сравнению с дизельным мотором?" Это понятия из разных категорий. EAV - это формат хранения данных, а ES - архитектура построения информационных систем. ES вполне может использовать EAV, скажем, для представления того же самого потока событий - как танк может использовать дизельный мотор - но их странно сравнивать.

SiemarglВедь при каждом изменении будут меняться проекции (структура проекционной БД)
Наоборот. Идея в том, что все, кто пользуется проекции Выплаты_Зарплат, вообще не заметят, что зарплата развалилась на зарплату и премию. То есть, приложение, которое считает "среднюю зарплату Иванова" так и будет выполнять вышеописанный запрос и получать верный результат, как бы ни менялась логика начисления этой самой зарплаты.
...
Рейтинг: 0 / 0
Как назвать эту структуру и подход, основанные на EAV?
    #39856850
Siemargl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarerSiemarglА какая выгода по сравнению с EAV?
Это немного странный вопрос. Примерно как "а какая выгода от танка по сравнению с дизельным мотором?" Это понятия из разных категорий. EAV - это формат хранения данных, а ES - архитектура построения информационных систем. ES вполне может использовать EAV, скажем, для представления того же самого потока событий - как танк может использовать дизельный мотор - но их странно сравнивать. Это наверное к первоисточнику, который противопоставлял.
21944256
softwarerSiemarglВедь при каждом изменении будут меняться проекции (структура проекционной БД)
Наоборот. Идея в том, что все, кто пользуется проекции Выплаты_Зарплат, вообще не заметят, что зарплата развалилась на зарплату и премию. То есть, приложение, которое считает "среднюю зарплату Иванова" так и будет выполнять вышеописанный запрос и получать верный результат, как бы ни менялась логика начисления этой самой зарплаты.Не поменяется, только если у приложения была функция Суммарная_выплата, а так API поменяется - чтобы отражать все новые данные.

Я вообще не вижу каких то принципиально новых идей в ES %-/

Кажется лет 30 изобрели Enterprise Servise Bus и это одна из простейших реализаций
...
Рейтинг: 0 / 0
Как назвать эту структуру и подход, основанные на EAV?
    #39856859
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SiemarglЭто наверное к первоисточнику, который противопоставлял.
Я помню, что hVostt их противопоставил, и не был в восторге от той реплики, хотя и понял, что он имел в виду.

SiemarglНе поменяется, только если у приложения была функция Суммарная_выплата,
Не "функция Суммарная_выплата", а "проекция Зарплата". Вы, когда говорите о расчёте средней зарплаты, имеете в виду некое понятие "Зарплата". Немного виртуальное в том смысле, что не продумываете чётко, как оно рассчитывается. Выше я упомянул про аванс и собственно зарплату - как раз поэтому. Когда Вы говорили про расчёт средней зарплаты, Вы наверняка имели в виду их сумму, но явно об этом не говорили и не думали. И эта архитектура позволяет именно так и действовать - завести проекцию "Зарплата" а дальше уточнять это понятие, формировать его из белой, чёрной и серобуромалиновой, используя при этом независимо от уточнений.

Siemarglа так API поменяется - чтобы отражать все новые данные.
API останется прежним - та же проекция в виде реляционной таблицы. Поменяется скрытая от приложения логика её наполнения. Может быть, API дополнится - появятся новые проекции или новые атрибуты в той же проекции. А поменяться так, чтобы потребовалось менять старые приложения - сравнительно редкая необходимость. Скорее даже не необходимость вообще.

SiemarglЯ вообще не вижу каких то принципиально новых идей в ES
Ну, я и не агитирую про принципиально новые идеи. Я и в ООП принципиально новых идей не вижу, например - в отличие от большинства, свято уверенного, что раньше был ад и кошмар, а потом стало ООП и порядок. Знакомство с историей любого вопроса показывает, как то, что при первом знакомстве кажется "революционными идеями", оказывается серией мелких последовательных шагов, сделанных разными людьми и логично вытекающих друг из друга.
...
Рейтинг: 0 / 0
Как назвать эту структуру и подход, основанные на EAV?
    #39856867
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SiemarglА в случае с EAV таких проблем нет.

Пишу с телефона, поэтому процитирую маленький кусочек.

Нет есть, и они просто огромные, колоссальные

В еав вы не можете добавить обязательный атрибут, просто не можете. Вообще. Без ядреных костылей. Все ваши атрибуты опциональные. Иначе при добавлении атрибута придется сделать огромный посев значений по умолчанию. И база данных ничего вам не гарантирует.

Теперь наше решение на ES.

1. Добавляете новый атрибут в метамодель.
2. Создаётся событие добавление атрибута
3. Подсистема проекций ловит такое событие с создаёт колонку. При чем not null тоже допускается со значением по умолчанию
4. Далее в колонку с новым атрибутом будут писаться значения.

Все. Идеально. И данные строго нормализованы и никаких проблем с ограничениями целостности, в том числе со ссылочной целостностью .

Выгода очевидная, Профит космический, у вас на руках нормальная бд с человеческим лицом, а не кусок какахи, для которого нормальных запросов не напишешь.
...
Рейтинг: 0 / 0
Как назвать эту структуру и подход, основанные на EAV?
    #39856868
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SiemarglЯ вообще не вижу каких то принципиально новых идей в ES %-/

Ну я даж незнаю, это как вообще можно их не видеть?
А мы ведь даже ещё не говорили про микросеовисы, только одну тему затронули про нормализованное хранение данных.
...
Рейтинг: 0 / 0
Как назвать эту структуру и подход, основанные на EAV?
    #39856905
Siemargl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarerSiemarglЭто наверное к первоисточнику, который противопоставлял.
Я помню, что hVostt их противопоставил, и не был в восторге от той реплики, хотя и понял, что он имел в виду. А я не понял. И в свете ваших обоюдных уточнений хотелось бы понять, чем мое непонимание противопоставления, упомянутое здесь 21962820 отличается от высказывания Хвоста, которое внезапно, оказалось понятным.
softwarerSiemarglНе поменяется, только если у приложения была функция Суммарная_выплата,
Не "функция Суммарная_выплата", а "проекция Зарплата". Вы, когда говорите о расчёте средней зарплаты, имеете в виду некое понятие "Зарплата". Немного виртуальное в том смысле, что не продумываете чётко, как оно рассчитывается. Выше я упомянул про аванс и собственно зарплату - как раз поэтому. Когда Вы говорили про расчёт средней зарплаты, Вы наверняка имели в виду их сумму, но явно об этом не говорили и не думали. И эта архитектура позволяет именно так и действовать - завести проекцию "Зарплата" а дальше уточнять это понятие, формировать его из белой, чёрной и серобуромалиновой, используя при этом независимо от уточнений.
Siemarglа так API поменяется - чтобы отражать все новые данные.
API останется прежним - та же проекция в виде реляционной таблицы. Поменяется скрытая от приложения логика её наполнения. Может быть, API дополнится - появятся новые проекции или новые атрибуты в той же проекции. А поменяться так, чтобы потребовалось менять старые приложения - сравнительно редкая необходимость. Скорее даже не необходимость вообще. Нет, я думал не так. Я как раз думал, что Зарплата распадается и далее становится агрегатом от разных опций. Аналогично Биллингу с кучей опций от фазы луны, например. И невозможно поддерживать старыми функциями новые расширения. Но скорее, что поменяется структура проекционной базы со всеми вытекающими
....
...
Рейтинг: 0 / 0
Как назвать эту структуру и подход, основанные на EAV?
    #39856906
Siemargl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttSiemarglА в случае с EAV таких проблем нет.

Пишу с телефона, поэтому процитирую маленький кусочек.

Нет есть, и они просто огромные, колоссальные

В еав вы не можете добавить обязательный атрибут, просто не можете. Вообще. Без ядреных костылей. Все ваши атрибуты опциональные. Иначе при добавлении атрибута придется сделать огромный посев значений по умолчанию. И база данных ничего вам не гарантирует.

Теперь наше решение на ES.

1. Добавляете новый атрибут в метамодель.
2. Создаётся событие добавление атрибута
3. Подсистема проекций ловит такое событие с создаёт колонку. При чем not null тоже допускается со значением по умолчанию
4. Далее в колонку с новым атрибутом будут писаться значения.

Все. Идеально. И данные строго нормализованы и никаких проблем с ограничениями целостности, в том числе со ссылочной целостностью .

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

Пп 1-4 выше это только примитивный случай, а для упомянутой тобой 4НФ, потребуются новые таблицы, реляции, ключи, индексы, права итп
И нормальная БД с космической кармой будет только после прогона 100% тестового покрытия, что БЛогика не поломалась от изменений. А блекаут - хуже всего. Даже перегенерить базу из ES на несколько TB будет просто местами невозможно - бизнес неделю ждать не будет.
hVosttSiemarglЯ вообще не вижу каких то принципиально новых идей в ES %-/

Ну я даж незнаю, это как вообще можно их не видеть?
А мы ведь даже ещё не говорили про микросеовисы, только одну тему затронули про нормализованное хранение данных.
ОК, чем ES лучше чем ESB? Или классической схемы - поменяли, подгрузили....

А микросервисы - отдельная тема. Отрыжка теоретического ФП, которые на практике (а не на бумаге) в затратах стоят дороже выгоды.
Только если придумать идеальный фиксированный интерфейс обмена......Иначе N^2-N
...
Рейтинг: 0 / 0
Как назвать эту структуру и подход, основанные на EAV?
    #39856910
iOracleDev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttТеперь наше решение на ES.

1. Добавляете новый атрибут в метамодель.
2. Создаётся событие добавление атрибута
3. Подсистема проекций ловит такое событие с создаёт колонку. При чем not null тоже допускается со значением по умолчанию
4. Далее в колонку с новым атрибутом будут писаться значения.
А чем плох механизм типа гибких полей в OEBS?

Добавить поле на системе не находящейся в эксплуатации конечно никаких проблем, а вот на продуктовой каждый чих выполнять в технологическое окно как то не комильфо и перекомпилировать возможно придется некоторые объекты и кто будет переписывать логику работы бэк и фронт-энда под использование нового поля и нового алгоритма работы?

И как эта замечательная система переварит таблицу товаров в которой много разных типов товаров у каждого типа по 200-300 свойств?
Вот пример Стиральные машины
У утюгов будет другой набор свойств, у телевизоров третий и т.д., и каждый тип товара еще не просто тип, а иерархическая классификация.
...
Рейтинг: 0 / 0
Как назвать эту структуру и подход, основанные на EAV?
    #39856937
ldfanate
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iOracleDevИ как эта замечательная система переварит таблицу товаров в которой много разных типов товаров у каждого типа по 200-300 свойств?
Вот пример Стиральные машины. У утюгов будет другой набор свойств, у телевизоров третий и т.д., и каждый тип товара еще не просто тип, а иерархическая классификация.

Наверное, при проектировании НСИ не следует увлекаться техникой, не разобравшить в методологии бизнес-процессов, которые данное НСИ будут использовать. НСИ ради красивого структурированно НСИ - не является самоцелью.
Накой 200-300 свойств стиралке? Для целей выбора (покупки) товара цена, вес, габариты, цвет, ну может быть для эстетов "тип привода барабана" и "с дисплейчиком/с кнопочками". Всё остальное можно просто в текстовом описании хранить. Кто будет теми 200-300 свойствами практически пользоваться, и главное зачем?
...
Рейтинг: 0 / 0
25 сообщений из 454, страница 9 из 19
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Как назвать эту структуру и подход, основанные на EAV?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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