|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
iOracleDevhVosttES уже много лет, а в последние годы активно рассказывают на конфах, статьи, книги -- всё есть. Можем пора вылезти из танка? Реальные коммерческие системы, внедрения? вот кратенько и по существу https://hackernoon.com/1-year-of-event-sourcing-and-cqrs-fb9033ccd1c6 ... |
|||
:
Нравится:
Не нравится:
|
|||
05.09.2019, 16:07 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
iOracleDevhVosttЕстественно. И гос структуры тоже. Я не про конкретно вашу закрытую и известную в очень узких кругах систему, а про то что продается и внедряется не в госструктурах, можете дать названия таких систем и где их внедряли? ходите на конференции и многое узнаете, познакомитесь с людьми, вам все расскажут/покажут и даже больше. мне лично известны пяток крупных проектов, где в основе архитектуры активно используется DDD/CQRS/EventSourcing, микросервисы и монолиты. собирайте свою аналитику, если вам это интересно. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.09.2019, 16:13 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
hVostt, Интересная тема, даже джавовский фреймворк есть axoniq.io , жаль для нас эта тема бесперспективная. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.09.2019, 16:37 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
iOracleDevВ настоящее время для решения такого рода задач в разрезе РСУБД хорошо подходят два механизма, для основных свойств - гибкие поля по аналогии механизма реализованного в OEBS и EAV-подобные структуры для второстепенных характеристик, при этом добавление новой характеристики не требует изменения таблиц и интерфейса пользователя, программист для этого не нужен. С выделенным бы не согласился. Что хорошо подходит для поиска, фильтрации по атрибутам, это NoSQL. Если говорить про интернет-магазины, то скорее всего вам понадобятся фасеты, фасетная фильтрация. Что вообще крайне отвратительно решается на еав. С какими угодно перделками и квинтетами. Но берём какой-нибудь RavenDb и как по маслу :) ... |
|||
:
Нравится:
Не нравится:
|
|||
05.09.2019, 16:52 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
iOracleDevhVostt, Интересная тема, даже джавовский фреймворк есть axoniq.io , жаль для нас эта тема бесперспективная. знакомый фреймворк, мы вдохновлялись в том числе этой разработкой, когда мы начинали, подходящих нам тулов небыло, сейчас уже хватает. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.09.2019, 16:54 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
hVosttС выделенным бы не согласился. Почему? Делается быстро, дешево, сердито и силами половинки землекопа в пределах используемой РСУБД, прикручивать еще одну СУБД, уже понадобится интеграция и полтора землекопа с большим набором скилов и последующая поддержка сложнее. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.09.2019, 17:03 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
iOracleDevДелается быстро, дешево Всё верно, на скрутку и соплях :) ... |
|||
:
Нравится:
Не нравится:
|
|||
05.09.2019, 17:11 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
iOracleDevВ настоящее время для решения такого рода задач в разрезе РСУБД хорошо подходят два механизма, для основных свойств - гибкие поля по аналогии механизма реализованного в OEBS Вы уже второй раз упоминаете это решение. Требуется ли явно упоминать, что конкретно "гибкие поля в OEBS" реализованы совершенно безобразно, настолько, что пожалуй даже EAV предпочтительнее? ... |
|||
:
Нравится:
Не нравится:
|
|||
05.09.2019, 17:17 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
hVostt, EAV скорее вынужденное решение чем желаемое, хотя некоторые видят в нем какое то откровение и панацею от всего на свете, просто плодить таблицы для допаттрибутов одной сущности еще хуже. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.09.2019, 17:18 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
softwarerВы уже второй раз упоминаете это решение. Требуется ли явно упоминать, что конкретно "гибкие поля в OEBS" реализованы совершенно безобразно, настолько, что пожалуй даже EAV предпочтительнее? Дело имел вскользь, мне идея понравилась, в чем безобразность реализации? ... |
|||
:
Нравится:
Не нравится:
|
|||
05.09.2019, 17:20 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
iOracleDevДело имел вскользь, мне идея понравилась, в чем безобразность реализации? Хотя бы в том, что в таблице просто заранее делаются поля, грубо, FIELD1, FIELD2, FIELD3, FIELD4 - и если тебе понадобился пятый custom-атрибут, сунуть его тупо некуда. Если тебе понадобился custom-атрибут типа даты - храни его как varchar, поскольку мест хранения с типом date не предусмотрено. И так далее в том же духе - я тоже затронул мельком и не знаю всех граблей, это то, что запомнилось из матюков тех, кто этим занимался. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.09.2019, 17:26 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
softwarerХотя бы в том, что в таблице просто заранее делаются поля, грубо, FIELD1, FIELD2, FIELD3, FIELD4 - и если тебе понадобился пятый custom-атрибут, сунуть его тупо некуда. Если тебе понадобился custom-атрибут типа даты - храни его как varchar, поскольку мест хранения с типом date не предусмотрено. И так далее в том же духе - я тоже затронул мельком и не знаю всех граблей, это то, что запомнилось из матюков тех, кто этим занимался. Ограничение по количеству, есть такое, поэтому и думаю что целесообразно использовать для небольшого количества основных аттрибутов, остальной зверинец в EAV, тип значения тоже дает неприятные моменты, но решаемо, в EAV также можно сделать всего одно поле для значения и плеваться потом. Большой плюс гибких полей в том что атрибут в той же таблице что и сущность, не нужны дополнительные соединения с вертикально организованным хранением атрибутов, просто для разных типов одно и то же поле имеет разное по смыслу значение, например для велосипеда поле может содержать тип велосипеда (хардтейл, двухподвес, складной), а для стиральной машины в том же поле будет тип стиральной машины (вертикальная/горизонтальная загрузка), метаданные о типах атрибутов нужно организовывать что для гибких полей что для EAV. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.09.2019, 17:37 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
iOracleDevБольшой плюс гибких полей в том что атрибут в той же таблице что и сущность Это спорный плюс. Ведь именно он создаёт основные сложности в добавлении новых полей на лету. iOracleDevпросто для разных типов одно и то же поле имеет разное по смыслу значение И это, согласитесь, тоже отнюдь не best practice, а исключительно приспособление к нищете. iOracleDevне нужны дополнительные соединения с вертикально организованным хранением атрибутов Так ведь их не обязательно хранить вертикально. Кроме этого, есть ещё как минимум два подхода: а) Делать дополнительную таблицу и складывать все необходимые custom-атрибуты в неё б) Делать слабо структурированное поле (например, XMLType) и складывать все custom-атрибуты в него. iOracleDevметаданные о типах атрибутов нужно организовывать что для гибких полей что для EAV. В случае OEBS большинство "метаданных о гибких полях" хранилось в голове разработчика. И в этом случае аргумент L_argo про удовольствие строить отчёт по данным, в которых "одно и то же поле имеет разное по смыслу значение" вполне справедлив. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.09.2019, 17:51 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
softwarerпро удовольствие строить отчёт по данным, в которых "одно и то же поле имеет разное по смыслу значение" вполне справедлив. Как, впрочем, он справедлив и для EAV, по той же самой причине ... |
|||
:
Нравится:
Не нравится:
|
|||
05.09.2019, 17:53 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
softwarerЭто спорный плюс. Ведь именно он создаёт основные сложности в добавлении новых полей на лету. В реальности они не добавляются, просто есть запас на "всякий пожарный" случай. Любое разной степени универсальности решение будет накладывать какие то ограничения и неудобства, серебряной пули нет. softwarerВ случае OEBS большинство "метаданных о гибких полях" хранилось в голове разработчика. Да вроде нет там особых вопросов в отчетах, все достается и на самом деле при создании нового типа по моему создается соответствующая вьюха и индексы можно создавать штатными средствами и ключевые поля, т.е. поля по которым будет построен уникальный индекс. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.09.2019, 18:09 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
iOracleDevВ реальности они не добавляются, просто есть запас на "всякий пожарный" случай. И этот запас регулярно исчёрпывался. И начинались всякие непотребства: сначала хранение в одном поле разных по смыслу данных, потом хитрая упаковка и запихивание в одно поле нескольких значений и так далее. iOracleDevЛюбое разной степени универсальности решение будет накладывать какие то ограничения и неудобства Всё же есть качественная разница в уровне этих ограничений. Например, эта же фраза справедлива для РСУБД - это тоже "универсальное решение", которое накладывает ограничения и подходит не везде и не всегда. Но давайте представим, что РСУБД выдвигает ограничение "не больше 10 колонок в таблице". Думаю, мы тут же её выбросим и навсегда забудем, как она называлась. А ведь с custom-атрибутами примерно так и есть. Ограничение ограничению рознь. В общем, лично моё мнение о OEBS-реализации - ниже плинтуса. iOracleDevДа вроде нет там особых вопросов в отчетах, все достается и на самом деле Возможно, при построении отчёта штатными средствами и достаётся. А представьте себе, что хочется использовать какой-нибудь внешний инструмент, ну хотя бы тот же Discoverer? ... |
|||
:
Нравится:
Не нравится:
|
|||
05.09.2019, 18:21 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
softwarersoftwarerпро удовольствие строить отчёт по данным, в которых "одно и то же поле имеет разное по смыслу значение" вполне справедлив. Как, впрочем, он справедлив и для EAV , по той же самой причине Зависит от реализации EAV. В правильной реализации все параметры - строго по назначению. И их верификация не проблема. Как и хранение в любых СУБД, даже старых. К тому же сам EAV не мешает работе базы, т.е. не меняет ее структуру и может быть надстроен над сторонней системой. И уж тем долее не мешает использовать прочие способы хранения данных. Некоторые проблемы с производительностью в большинстве случаев вообще не критичны. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.09.2019, 20:18 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
L_argoЗависит от реализации EAV. В правильной реализации все параметры - строго по назначению. Это никак не мешает "огромному удовольствию" строить отчёты над EAV-данными. Ну просто для примера, допустим, есть следующие данные (в реляционном виде): Номер партииДата поставкиКоличество кирпичейЦена за штуку101.09.2019100015202.09.2019200012.5302.09.2019100012403.09.2019300014 Задача - вывести общее количество и средневзвешенную цену кирпича для всех закупок между 02 и 03 сентября. Как эти данные лежат в EAV - наверное, все примерно понимают, но если важно для ответа - покажите как правильно. Приведёте запрос, решающий эту задачу? ... |
|||
:
Нравится:
Не нравится:
|
|||
05.09.2019, 20:42 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
L_argoЗависит от реализации EAV. В правильной реализации все параметры - строго по назначению. И их верификация не проблема. Что это за "правильная реализация" такая? Покажите ОЦ на EAV, интересуют хотя бы ограничения по типу, размеру, диапазону значений, ссылочная целостность с каскадом и без. И типизированное хранение. L_argoНекоторые проблемы с производительностью в большинстве случаев вообще не критичны. Это откуда такие фантазии? ... |
|||
:
Нравится:
Не нравится:
|
|||
05.09.2019, 22:15 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
Как раз хотел подытожить. Предложены были 4 варианта. 1. EAV + легкость изменений, в т.ч онлайн,++ - грубо говоря, нетипизированное хранилище пентаграммы от ТС примерно равны добавлению бубна 2. @softwarer добавлять табличку с частными данными +весьма просто -на большом объеме доп.параметров начнет загибаться, уже не онлайн 3. Вариант OEBS field1,...fieldX +проверен практикой -нетипизирован, объем новых аттрибутов лимитирован 4.ES+CQRS+DD +Очень универсальный, при определенных условиях задачи быстрый -самая дорогая реализация и в трудозатратах и в вычислительных, неспособна к частым изменениям ... |
|||
:
Нравится:
Не нравится:
|
|||
05.09.2019, 22:56 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
Siemargl-на большом объеме доп.параметров начнет загибаться, Знаете, мне немного смешно. Siemarglуже не онлайн Вы не правы. SiemarglПредложены были 4 варианта Ещё как минимум один Вы забыли. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.09.2019, 23:04 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
softwarerВ общем, лично моё мнение о OEBS-реализации - ниже плинтуса. Я тоже от него не в восторге, тем не менее продукт есть и он вполне рабочий, просто там где он разрабатывался обычно процессы более менее стандартизованы, а у нас каждый идиот предметный специалист придумывает своего сферического коня в вакууме и искренне негодует, что софт для предприятий не калькулятор и не может из коробки обеспечить его безумные хотелки. softwarerВозможно, при построении отчёта штатными средствами и достаётся. А представьте себе, что хочется использовать какой-нибудь внешний инструмент, ну хотя бы тот же Discoverer? Было давно и неправда к тому же недолго, но штатным инструментом был Oracle Reports, соответственно отчет представлял из себя вполне обычные запросы, которые нужно было писать ручками, далее отчет запускался в фоновом режиме или по расписанию и результат в виде pdf-ника помещался в какую то папку, ссылка на файл по завершении выполнения появлялась в системе. softwarerНомер партии Как бы ты делал сквозные аналитики для приход->сток (внутрискладские операци)->отгрузка, причем для разных клиентов (внедрения продукта) набор аналитик которые они используют может отличаться, т.е. должен быть настраиваемым и сквозным? Понятно что с EAV в такой ситуации лучше сразу застрелиться, но как организовать грамотно? ... |
|||
:
Нравится:
Не нравится:
|
|||
05.09.2019, 23:10 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
iOracleDevКак бы ты делал сквозные аналитики для приход->сток (внутрискладские операци)->отгрузка, причем для разных клиентов (внедрения продукта) набор аналитик которые они используют может отличаться, т.е. должен быть настраиваемым и сквозным? Понятно что с EAV в такой ситуации лучше сразу застрелиться, но как организовать грамотно? Хороший вопрос. Думаю, это предмет для отдельного топика, куда более заслуживающего быть в этом форуме, нежели обсуждение EAV. "Грамотно".. не возьмусь утверждать, это слишком далеко от моего опыта. В первую очередь я бы, наверное, подумал над следующим подходом: сделать таблицу "Комбинации аналитик", куда запихнуть поля всех возможных аналитик. При приходовании (либо другой "стартовой" операции) формировать комбинацию по требованиям клиента (с null-ами в неиспользуемых полях), делать select + insert if not found и пихать id найденной комбинации в запись прихода, а оттуда копировать в создаваемые на основании этой. Среди прочего, это позволит в разных ситуациях формировать разные по составу комбинации, например, выставить один свой сервер как сервис и обслуживать на нём одновременно разных клиентов с разными требованиями. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.09.2019, 23:54 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
softwarerSiemargl-на большом объеме доп.параметров начнет загибаться, Знаете, мне немного смешно. Если все параметры в одну таблицу, как тут 21944555 , то да, если для каждой категории - отдельную, то нет softwarerSiemarglуже не онлайн Вы не правы. Можно на ты, я скромный. Скажем так, тут я прав не всегда - зависит от СУБД, позволяет ли она DDL (add column) на используемой таблице. softwarerSiemarglПредложены были 4 варианта Ещё как минимум один Вы забыли.Ок, какой? Дописываем ... |
|||
:
Нравится:
Не нравится:
|
|||
06.09.2019, 00:16 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
SiemarglЕсли все параметры в одну таблицу, как тут 21944555 , то да, если для каждой категории - отдельную, то нет Не уверен, что Вы в данном случае называете категорией. "Как тут" делается следующее: на каждую "основную" таблицу - дополнительная кастомная (расширяемая), привязанная один к одному. SiemarglСкажем так, тут я прав не всегда - зависит от СУБД, позволяет ли она DDL (add column) на используемой таблице. Не только. Таблица ведь малоиспользуемая и не критичная для бизнес-логики, поэтому можно поискать варианты для конкретных СУБД. В принципе вплоть до такого изврата как создание под каждое поле отдельной таблицы - это уж точно пройдёт онлайн. SiemarglОк, какой? Дописываем Неформатированное поле в таблице. XML итп. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.09.2019, 01:00 |
|
|
start [/forum/topic.php?fid=32&msg=39858081&tid=1539762]: |
0ms |
get settings: |
11ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
40ms |
get topic data: |
12ms |
get forum data: |
2ms |
get page messages: |
71ms |
get tp. blocked users: |
1ms |
others: | 234ms |
total: | 393ms |
0 / 0 |