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

вот кратенько и по существу

https://hackernoon.com/1-year-of-event-sourcing-and-cqrs-fb9033ccd1c6
...
Рейтинг: 0 / 0
Как назвать эту структуру и подход, основанные на EAV?
    #39858019
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iOracleDevhVosttЕстественно. И гос структуры тоже.
Я не про конкретно вашу закрытую и известную в очень узких кругах систему, а про то что продается и внедряется не в госструктурах, можете дать названия таких систем и где их внедряли?

ходите на конференции и многое узнаете, познакомитесь с людьми, вам все расскажут/покажут и даже больше.

мне лично известны пяток крупных проектов, где в основе архитектуры активно используется DDD/CQRS/EventSourcing, микросервисы и монолиты. собирайте свою аналитику, если вам это интересно.
...
Рейтинг: 0 / 0
Как назвать эту структуру и подход, основанные на EAV?
    #39858036
iOracleDev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVostt,

Интересная тема, даже джавовский фреймворк есть axoniq.io , жаль для нас эта тема бесперспективная.
...
Рейтинг: 0 / 0
Как назвать эту структуру и подход, основанные на EAV?
    #39858050
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iOracleDevВ настоящее время для решения такого рода задач в разрезе РСУБД хорошо подходят два механизма, для основных свойств - гибкие поля по аналогии механизма реализованного в OEBS и EAV-подобные структуры для второстепенных характеристик, при этом добавление новой характеристики не требует изменения таблиц и интерфейса пользователя, программист для этого не нужен.

С выделенным бы не согласился. Что хорошо подходит для поиска, фильтрации по атрибутам, это NoSQL.
Если говорить про интернет-магазины, то скорее всего вам понадобятся фасеты, фасетная фильтрация.
Что вообще крайне отвратительно решается на еав. С какими угодно перделками и квинтетами.

Но берём какой-нибудь RavenDb и как по маслу :)
...
Рейтинг: 0 / 0
Как назвать эту структуру и подход, основанные на EAV?
    #39858052
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iOracleDevhVostt,

Интересная тема, даже джавовский фреймворк есть axoniq.io , жаль для нас эта тема бесперспективная.

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

Всё верно, на скрутку и соплях :)
...
Рейтинг: 0 / 0
Как назвать эту структуру и подход, основанные на EAV?
    #39858069
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iOracleDevВ настоящее время для решения такого рода задач в разрезе РСУБД хорошо подходят два механизма, для основных свойств - гибкие поля по аналогии механизма реализованного в OEBS
Вы уже второй раз упоминаете это решение. Требуется ли явно упоминать, что конкретно "гибкие поля в OEBS" реализованы совершенно безобразно, настолько, что пожалуй даже EAV предпочтительнее?
...
Рейтинг: 0 / 0
Как назвать эту структуру и подход, основанные на EAV?
    #39858071
iOracleDev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVostt,

EAV скорее вынужденное решение чем желаемое, хотя некоторые видят в нем какое то откровение и панацею от всего на свете, просто плодить таблицы для допаттрибутов одной сущности еще хуже.
...
Рейтинг: 0 / 0
Как назвать эту структуру и подход, основанные на EAV?
    #39858074
iOracleDev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarerВы уже второй раз упоминаете это решение. Требуется ли явно упоминать, что конкретно "гибкие поля в OEBS" реализованы совершенно безобразно, настолько, что пожалуй даже EAV предпочтительнее?
Дело имел вскользь, мне идея понравилась, в чем безобразность реализации?
...
Рейтинг: 0 / 0
Как назвать эту структуру и подход, основанные на EAV?
    #39858081
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iOracleDevДело имел вскользь, мне идея понравилась, в чем безобразность реализации?
Хотя бы в том, что в таблице просто заранее делаются поля, грубо, FIELD1, FIELD2, FIELD3, FIELD4 - и если тебе понадобился пятый custom-атрибут, сунуть его тупо некуда. Если тебе понадобился custom-атрибут типа даты - храни его как varchar, поскольку мест хранения с типом date не предусмотрено. И так далее в том же духе - я тоже затронул мельком и не знаю всех граблей, это то, что запомнилось из матюков тех, кто этим занимался.
...
Рейтинг: 0 / 0
Как назвать эту структуру и подход, основанные на EAV?
    #39858086
iOracleDev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarerХотя бы в том, что в таблице просто заранее делаются поля, грубо, FIELD1, FIELD2, FIELD3, FIELD4 - и если тебе понадобился пятый custom-атрибут, сунуть его тупо некуда. Если тебе понадобился custom-атрибут типа даты - храни его как varchar, поскольку мест хранения с типом date не предусмотрено. И так далее в том же духе - я тоже затронул мельком и не знаю всех граблей, это то, что запомнилось из матюков тех, кто этим занимался.
Ограничение по количеству, есть такое, поэтому и думаю что целесообразно использовать для небольшого количества основных аттрибутов, остальной зверинец в EAV, тип значения тоже дает неприятные моменты, но решаемо, в EAV также можно сделать всего одно поле для значения и плеваться потом. Большой плюс гибких полей в том что атрибут в той же таблице что и сущность, не нужны дополнительные соединения с вертикально организованным хранением атрибутов, просто для разных типов одно и то же поле имеет разное по смыслу значение, например для велосипеда поле может содержать тип велосипеда (хардтейл, двухподвес, складной), а для стиральной машины в том же поле будет тип стиральной машины (вертикальная/горизонтальная загрузка), метаданные о типах атрибутов нужно организовывать что для гибких полей что для EAV.
...
Рейтинг: 0 / 0
Как назвать эту структуру и подход, основанные на EAV?
    #39858095
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iOracleDevБольшой плюс гибких полей в том что атрибут в той же таблице что и сущность
Это спорный плюс. Ведь именно он создаёт основные сложности в добавлении новых полей на лету.

iOracleDevпросто для разных типов одно и то же поле имеет разное по смыслу значение
И это, согласитесь, тоже отнюдь не best practice, а исключительно приспособление к нищете.

iOracleDevне нужны дополнительные соединения с вертикально организованным хранением атрибутов
Так ведь их не обязательно хранить вертикально. Кроме этого, есть ещё как минимум два подхода:

а) Делать дополнительную таблицу и складывать все необходимые custom-атрибуты в неё
б) Делать слабо структурированное поле (например, XMLType) и складывать все custom-атрибуты в него.

iOracleDevметаданные о типах атрибутов нужно организовывать что для гибких полей что для EAV.
В случае OEBS большинство "метаданных о гибких полях" хранилось в голове разработчика. И в этом случае аргумент L_argo про удовольствие строить отчёт по данным, в которых "одно и то же поле имеет разное по смыслу значение" вполне справедлив.
...
Рейтинг: 0 / 0
Как назвать эту структуру и подход, основанные на EAV?
    #39858097
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarerпро удовольствие строить отчёт по данным, в которых "одно и то же поле имеет разное по смыслу значение" вполне справедлив.
Как, впрочем, он справедлив и для EAV, по той же самой причине
...
Рейтинг: 0 / 0
Как назвать эту структуру и подход, основанные на EAV?
    #39858107
iOracleDev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarerЭто спорный плюс. Ведь именно он создаёт основные сложности в добавлении новых полей на лету.
В реальности они не добавляются, просто есть запас на "всякий пожарный" случай.

Любое разной степени универсальности решение будет накладывать какие то ограничения и неудобства, серебряной пули нет.

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

iOracleDevЛюбое разной степени универсальности решение будет накладывать какие то ограничения и неудобства
Всё же есть качественная разница в уровне этих ограничений. Например, эта же фраза справедлива для РСУБД - это тоже "универсальное решение", которое накладывает ограничения и подходит не везде и не всегда. Но давайте представим, что РСУБД выдвигает ограничение "не больше 10 колонок в таблице". Думаю, мы тут же её выбросим и навсегда забудем, как она называлась. А ведь с custom-атрибутами примерно так и есть. Ограничение ограничению рознь. В общем, лично моё мнение о OEBS-реализации - ниже плинтуса.

iOracleDevДа вроде нет там особых вопросов в отчетах, все достается и на самом деле
Возможно, при построении отчёта штатными средствами и достаётся. А представьте себе, что хочется использовать какой-нибудь внешний инструмент, ну хотя бы тот же Discoverer?
...
Рейтинг: 0 / 0
Как назвать эту структуру и подход, основанные на EAV?
    #39858136
L_argo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarersoftwarerпро удовольствие строить отчёт по данным, в которых "одно и то же поле имеет разное по смыслу значение" вполне справедлив.
Как, впрочем, он справедлив и для EAV , по той же самой причине Зависит от реализации EAV. В правильной реализации все параметры - строго по назначению. И их верификация не проблема. Как и хранение в любых СУБД, даже старых.
К тому же сам EAV не мешает работе базы, т.е. не меняет ее структуру и может быть надстроен над сторонней системой.
И уж тем долее не мешает использовать прочие способы хранения данных.
Некоторые проблемы с производительностью в большинстве случаев вообще не критичны.
...
Рейтинг: 0 / 0
Как назвать эту структуру и подход, основанные на EAV?
    #39858141
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
L_argoЗависит от реализации EAV. В правильной реализации все параметры - строго по назначению.
Это никак не мешает "огромному удовольствию" строить отчёты над EAV-данными. Ну просто для примера, допустим, есть следующие данные (в реляционном виде):

Номер партииДата поставкиКоличество кирпичейЦена за штуку101.09.2019100015202.09.2019200012.5302.09.2019100012403.09.2019300014
Задача - вывести общее количество и средневзвешенную цену кирпича для всех закупок между 02 и 03 сентября. Как эти данные лежат в EAV - наверное, все примерно понимают, но если важно для ответа - покажите как правильно. Приведёте запрос, решающий эту задачу?
...
Рейтинг: 0 / 0
Как назвать эту структуру и подход, основанные на EAV?
    #39858162
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
L_argoЗависит от реализации EAV. В правильной реализации все параметры - строго по назначению. И их верификация не проблема.

Что это за "правильная реализация" такая? Покажите ОЦ на EAV, интересуют хотя бы ограничения по типу, размеру, диапазону значений, ссылочная целостность с каскадом и без. И типизированное хранение.

L_argoНекоторые проблемы с производительностью в большинстве случаев вообще не критичны.

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

Предложены были 4 варианта.
1. EAV
+ легкость изменений, в т.ч онлайн,++
- грубо говоря, нетипизированное хранилище
пентаграммы от ТС примерно равны добавлению бубна

2. @softwarer добавлять табличку с частными данными
+весьма просто
-на большом объеме доп.параметров начнет загибаться, уже не онлайн

3. Вариант OEBS field1,...fieldX
+проверен практикой
-нетипизирован, объем новых аттрибутов лимитирован

4.ES+CQRS+DD
+Очень универсальный, при определенных условиях задачи быстрый
-самая дорогая реализация и в трудозатратах и в вычислительных, неспособна к частым изменениям
...
Рейтинг: 0 / 0
Как назвать эту структуру и подход, основанные на EAV?
    #39858183
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Siemargl-на большом объеме доп.параметров начнет загибаться,
Знаете, мне немного смешно.

Siemarglуже не онлайн
Вы не правы.

SiemarglПредложены были 4 варианта
Ещё как минимум один Вы забыли.
...
Рейтинг: 0 / 0
Как назвать эту структуру и подход, основанные на EAV?
    #39858186
iOracleDev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarerВ общем, лично моё мнение о OEBS-реализации - ниже плинтуса.
Я тоже от него не в восторге, тем не менее продукт есть и он вполне рабочий, просто там где он разрабатывался обычно процессы более менее стандартизованы, а у нас каждый идиот предметный специалист придумывает своего сферического коня в вакууме и искренне негодует, что софт для предприятий не калькулятор и не может из коробки обеспечить его безумные хотелки.

softwarerВозможно, при построении отчёта штатными средствами и достаётся. А представьте себе, что хочется использовать какой-нибудь внешний инструмент, ну хотя бы тот же Discoverer?
Было давно и неправда к тому же недолго, но штатным инструментом был Oracle Reports, соответственно отчет представлял из себя вполне обычные запросы, которые нужно было писать ручками, далее отчет запускался в фоновом режиме или по расписанию и результат в виде pdf-ника помещался в какую то папку, ссылка на файл по завершении выполнения появлялась в системе.

softwarerНомер партии
Как бы ты делал сквозные аналитики для приход->сток (внутрискладские операци)->отгрузка, причем для разных клиентов (внедрения продукта) набор аналитик которые они используют может отличаться, т.е. должен быть настраиваемым и сквозным? Понятно что с EAV в такой ситуации лучше сразу застрелиться, но как организовать грамотно?
...
Рейтинг: 0 / 0
Как назвать эту структуру и подход, основанные на EAV?
    #39858205
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iOracleDevКак бы ты делал сквозные аналитики для приход->сток (внутрискладские операци)->отгрузка, причем для разных клиентов (внедрения продукта) набор аналитик которые они используют может отличаться, т.е. должен быть настраиваемым и сквозным? Понятно что с EAV в такой ситуации лучше сразу застрелиться, но как организовать грамотно?
Хороший вопрос. Думаю, это предмет для отдельного топика, куда более заслуживающего быть в этом форуме, нежели обсуждение EAV.

"Грамотно".. не возьмусь утверждать, это слишком далеко от моего опыта. В первую очередь я бы, наверное, подумал над следующим подходом: сделать таблицу "Комбинации аналитик", куда запихнуть поля всех возможных аналитик. При приходовании (либо другой "стартовой" операции) формировать комбинацию по требованиям клиента (с null-ами в неиспользуемых полях), делать select + insert if not found и пихать id найденной комбинации в запись прихода, а оттуда копировать в создаваемые на основании этой. Среди прочего, это позволит в разных ситуациях формировать разные по составу комбинации, например, выставить один свой сервер как сервис и обслуживать на нём одновременно разных клиентов с разными требованиями.
...
Рейтинг: 0 / 0
Как назвать эту структуру и подход, основанные на EAV?
    #39858211
Siemargl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarerSiemargl-на большом объеме доп.параметров начнет загибаться,
Знаете, мне немного смешно. Если все параметры в одну таблицу, как тут 21944555 , то да, если для каждой категории - отдельную, то нет
softwarerSiemarglуже не онлайн
Вы не правы.
Можно на ты, я скромный.
Скажем так, тут я прав не всегда - зависит от СУБД, позволяет ли она DDL (add column) на используемой таблице.
softwarerSiemarglПредложены были 4 варианта
Ещё как минимум один Вы забыли.Ок, какой? Дописываем
...
Рейтинг: 0 / 0
Как назвать эту структуру и подход, основанные на EAV?
    #39858223
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SiemarglЕсли все параметры в одну таблицу, как тут 21944555 , то да, если для каждой категории - отдельную, то нет
Не уверен, что Вы в данном случае называете категорией. "Как тут" делается следующее: на каждую "основную" таблицу - дополнительная кастомная (расширяемая), привязанная один к одному.

SiemarglСкажем так, тут я прав не всегда - зависит от СУБД, позволяет ли она DDL (add column) на используемой таблице.
Не только. Таблица ведь малоиспользуемая и не критичная для бизнес-логики, поэтому можно поискать варианты для конкретных СУБД. В принципе вплоть до такого изврата как создание под каждое поле отдельной таблицы - это уж точно пройдёт онлайн.

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


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