|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
softwarerНу и даю клиенту возможность описывать и создавать дополнительные поля в ext$somedata. Внимание, вопрос: опишите, что и сколько Вам потребуется сделать в eav, чтобы достичь того же результата. Не забудьте, например, про необходимость отфильтровать эту выборку по значению двух-трёх полей из "расширенного" набора.В Вашем случае создается новый объект в БД. Ввести новые данные - полдела. Нужно их научиться еще и вычитывать. Н-р в отчетах. Научиться реплицировать на другие БД. Это все может потребовать вмешательства разработчиков и админов. В "моем" EAV: 1. Создается новая запись-карточка нового параметра (Имя,Тип,Форматировка,Связи,Безопасность и пр.). 2. Привязывается к сущностям, н-р к "товары" и "заказчики". Простая таблица Ключ+Ключ. 3. Теперь можно вносить данные: заходим в карточку товара -> "Добавить свойство" -> Выбираю из списка нужное свойство из доступных для "товар" -> Система предлагает ввести значение (варианты ввода и ограничения были настроены в п.1). 4. (профит) Для массовой заливки данных в EAV нужен список карточек и значения. Есть унифицированный импорт в любое EAV-свойство. Н-р из экселя. Его можно клонировать с доработками. Никаких новых таблиц. Дописка кода нужна нечасто (н-р нестандартная проверка введенных данных) и она не нарушает работу другого кода. Не нужны админские полномочия. Это все (кроме дописки кода) может делать аналитик средней руки. В любой момент этот новый параметр можно перенастроить или даже удалить вместе с данными. Есть набор готовых процедур для вычитки данных, н-р для отчетов. МССКЛ. зы: ппц. Уже раза три про все это писал. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.08.2019, 13:28 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
Что касается выборок с фильтрами.... Да, временами не очень удобно и не очень быстро. Зато все просто и одинаково. И для юзера и для разработчика. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.08.2019, 13:34 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
авторМодель не идеальная, но гибкая. Выше писал уже, что при ближайшем рассмотрении "гибкость и универсальность" оказывается практически знак равенства с "кривая, методологически непроработанная реализация бизнес-процесса в ИУСе". Информационно-справочные системы, чтото типа "Центральный справочник материалов", - да наверное тут EAV чемто поможет, т.к. у разных групп номенклатуры МТР кардинально отличаются наборы характеристик. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.08.2019, 15:26 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
L_argoВвести новые данные - полдела. Нужно их научиться еще и вычитывать. Н-р в отчетах. Я не уверен, что именно Вы подразумеваете под термином "вычитывать", но подозреваю, что как раз ту операцию, которая приведена в моём сообщении, и своей реализации которой Вы по понятным причинам не привели. L_argo3. Теперь можно вносить данные: заходим в карточку товара -> "Добавить свойство" -> Выбираю из списка нужное свойство из доступных для "товар" Вот так и подозревал. Вся эта громоздкая хрень, помимо прочего, провоцирует неудобный интерфейс. Делать пользователю больше нечего, как только вносить значения двадцати свойств каждое отдельным нажатием кнопки "добавить". И так по нескольким сотням тысячам записей товаров.... L_argo4. (профит) Если это профит, не хотел бы я увидеть фейл. L_argoЕсть унифицированный импорт ... Никаких новых таблиц. ... Не нужны админские полномочия ... Вместо ответа на заданный вопрос Вы изображаете магнитофон, повторяющий заученные фразы. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.08.2019, 15:44 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
ldfanateИнформационно-справочные системы, чтото типа "Центральный справочник материалов", - да наверное тут EAV чемто поможет, т.к. у разных групп номенклатуры МТР кардинально отличаются наборы характеристик. Хотя бы простое в лоб поле "характеристики" типа XMLType поможет гораздо лучше. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.08.2019, 15:46 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
L_argoНе нужны админские полномочия. Это тоже вы в плюс записали? ... |
|||
:
Нравится:
Не нравится:
|
|||
08.08.2019, 16:44 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
Добавлю в "плюсы" - никаких ограничений: можно записать все что угодно и сколько угодно раз. И читать тоже, даже если программист накосячит и будет запрашивать свойство несуществующего поля то ошибки не будет. Да здавствуют программы без ошибок! ... |
|||
:
Нравится:
Не нравится:
|
|||
08.08.2019, 17:08 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
SergueidrynnyНу а что тут? Мне очень важно ваше мнение. было бы интересно увидеть реализацию какого то кейса с демонстрацией возможностей, а до того не интересно время тратить... У меня в системе используется аналогичное решение, но не для хранения всего и вся, а частично. Простые структуры да удобно, а чуть посложнее - все приплыли... Ок, сегодня-завтра я запилю ролик про рекрутерскую систему, которая работает на этом решении. Если вы, как и я, ненавидите ролики, то могу накидать скриншотов с пояснениями. В общем, пропарюсь лишь бы получить ваш вариант названия. Я помог знакомому рекрутеру делать стартап для массового подбора персонала. Там есть приличный бизнес-процесс, включающий переходы откликов кандидатов по статусам, планирование интервью, рассылку email и смс, работу с вакансиями (набор этапов, трёхуровневые специализации, скрипты, тайм-слоты встреч, права, и т.д. и т.п.) и сайтом Хэдхантер (HH). Фрейм HH написан отдельно, используется как сторонний сервис, внедренный в интерфейс, остальное — в QDM (Quintet data model). Так вот, есть формы вакансии, отклика и прочие, состоящие из блоков, которые включаются/выключаются и совершают действия (вызывают запросы, запрашивают и сохраняют данные) в зависимости от статуса отклика или иного контекста. Приложение «ведет» пользователя, ограничивает, не дает спотыкаться. Могу показать как это работает по скайпу, со всеми запросами, исходниками и формами. В целом, всё как в обычном приложении, но без python, php, nodejs. Я мониторил загрузку, вот здесь опубликованы результаты за день: habr.com/ru/post/358934/#comment_18715197 ... |
|||
:
Нравится:
Не нравится:
|
|||
08.08.2019, 17:57 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
hVosttНафига этот ущербный EAV и все его кривые производные, отлитые из костылей? Если есть Event Sourcing и проекции? Цель – сделать конструктор приложений. От костылей удалось избавиться, как это ни странно, и я желаю рассказать о внутренностях решения, если зритель готов смотреть, а не только с пеной у рта доказывать тут, что EAV – зло. Зло, кто ж спорит. Только я здесь не про EAV. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.08.2019, 18:20 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
drynny Ну назовите Универсальный Формат Типизированных Данных - УФТД (UFTD) . Звучать будет внушительно . Или не Формат а Хранилище УХТД. А если не секрет, какой движок БД подкладывали под модель, когда ворочали (поверю на слово) большим количеством данных? чисто из любопытства вопрошаю, ибо со скепсисом ранее написавших согласен. Потому что получается - на табличную модель положили хранилище вашего формата, на базе которого работают снова таблицы. Наличие лишнего звена, создающего доп нагрузки очевидно ((((((((((( если оно работает поверх некоего SQL движка, оно никак не может работать быстрее и эффективнее. Только медленнее (((((( ... |
|||
:
Нравится:
Не нравится:
|
|||
08.08.2019, 18:26 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
и теперь, чтобы универсально работать с данными уложенными по новому, надо будет заново придумать нечто на замену SQL и реализовать сей механизм. План величественный и грандиозный. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.08.2019, 18:30 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
softwarerВот так и подозревал. Вся эта громоздкая хрень, помимо прочего, провоцирует неудобный интерфейс. Делать пользователю больше нечего, как только вносить значения двадцати свойств каждое отдельным нажатием кнопки "добавить". И так по нескольким сотням тысячам записей товаров....Реакция ожидаемая, но это реакция троля, а не инженера. Увы. А как иначе пользователь должен поступить ? В вашем кейсе вообще ничего не описано. Мною был описан кейс вставки редко используемых значений. Про массовую вставку я тоже писал. Также можно сделать обработки для автоматического внесения данных. Разовых или регулярных. И вызывать их по регламенту или одним кликом. У меня еще есть возможность сразу показывать свойство. Без "добавить" и "выбрать". Это удобно, если свойство есть у большинства карточек. Сначала свойство горит пустым. Юзер просто одним кликом сразу вносит значение. Значение может быть проверено на допустимость. Свойство может быть единичным или списочным, т.е. допускать неск. разных значений. Даже не представляю как подобный процесс можно сократить хотя бы на один клик. Единственный недостаток: для сложных вставок и проверок нужно написать код. Иначе никак. Так это везде так. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.08.2019, 08:59 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
Забыл добавить, что свойство может хранить историю значений на дату, если нужно. Также историю можно внести наперед, н-р скидка 10% с 01-09-2019. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.08.2019, 09:04 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
softwarerХотя бы простое в лоб поле "характеристики" типа XMLType поможет гораздо лучше. А оно поможет? Ведь там не только сложная структура характеристик получится, но и потребность строить потом, при распухании справочника, специализированные индексы для ускорения поиска, - типа "дай мне всю номенклатуру товарного департамента N кроме гаек вида M". ... |
|||
:
Нравится:
Не нравится:
|
|||
09.08.2019, 12:23 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
ldfanateА оно поможет? Ну.. мне достаточно сложно назвать задачу, в которой оно поможет меньше, чем EAV. ldfanateВедь там не только сложная структура характеристик получится, Сложная структура - это, скорее, фича. По крайней мере, в неё естественным образом укладываются составные характеристики, массивы и т. п. Да и верифицировать можно по xml schema, что по сравнению с eav - огромная прибавка к надёжности. ldfanateно и потребность строить потом, при распухании справочника, специализированные индексы для ускорения поиска, - типа "дай мне всю номенклатуру товарного департамента N кроме гаек вида M". Может быть. Но к таким объёмам EAV уже просто давно загнётся без вариантов, поэтому я не считал бы это сравнительным недостатком. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.08.2019, 12:47 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
L_argoРеакция ожидаемая, но это реакция троля, а не инженера. Увы. Ну конечно. Ваше "не трогай святое и любимое детище" - это реакция инженера, а моё "вот код", после которого Вам стыдно показывать свой - реакция тролля. L_argoУ меня еще есть возможность Смотрите. Ваше решение условно состоит из следующих частей. Во-первых, это API - то есть то, что "прикладной код" вызывает для реализации функционала. Во-вторых, некий движок метаинформации. И в-третьих, код реализации - то есть то, что получает команду в терминах метаинформации (например, "вернуть значение такой-то выборки" или "записать значение такого-то атрибута") и выполняет физический select, insert или update. Представьте себе, что кто-то взял, добавил в метаинформацию данные типа "этот атрибут лежит в таком-то поле такой-то таблицы", а код реализации изменил таким образом, что вместо EAV тот начал работать с обычными плоскими таблицами. Если Ваше решение хорошо написано, сделать так вполне возможно и даже не особо сложно, верно? API при этом не изменилось, то есть приложение сможет работать с новой реализацией и даже не заметит подмену. Так вот... мы говорим про EAV. Поэтому всё, что сохранится при такой подмене - к EAV уже не относится. Это функционал (хороший или плохой, удачно или неудачно реализованный) который Вы сделали, но который от EAV не зависит. В сравнении нас интересует то, что при такой подмене изменится - в лучшую или в худшую сторону. Я утверждаю, что при такой замене довольно много изменится к лучшему и крайне мало - к худшему. И пока я не услышал ни одного конкретного примера, что же ухудшится - только общие слова типа "меняются таблицы", показывающие, что собеседник сам не понимает, что же станет хуже, просто религиозно верит, что станет. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.08.2019, 12:59 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
Да и верифицировать можно по xml schema, что по сравнению с eav - огромная прибавка к надёжности. Какая нафиг схема и надежность ? Схема примитивно проверяет в пределах xml. Как верифицировать параметр "подтвержден=True", если по договору или доп.соглашению имеется просроченная задолженность или в связанном документе присутствует неподтвержденная позиция ? Придется делать неск. типов проверок. С данными в ХМЛ работать неудобно и вообще это противоречит 1 норм.форме. :) Надеюсь мы обсуждаем абстрактное БД-решение, а не на какой-то специфической платформе ? Задача - реализация на любой СУБД. Например Фаерберд. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.08.2019, 13:06 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
L_argoЦенность EAV в том, что можно на лету добавить к сущности новое свойство или его новое значение и не затронуть никаких старых данных или структур. Легко систематизировать и трансформировать. На каком ещё "на лету"? Вы в БД не можете добавить колонку "на лету"? Я вот могу. Показать инструкцию? Нет, вы похоже не понимаете для чего пришлось изобретать костыли типа EAV. L_argohVosttНафига этот ущербный EAV и все его кривые производные, отлитые из костылей? Если есть Event Sourcing и проекции?Это куета и балабольство. Много слов, но по сути проблемы нет ничего. Понятно, для вас это пустой звук, просто не хватает компетенций. Ничего страшного :) ... |
|||
:
Нравится:
Не нравится:
|
|||
09.08.2019, 14:04 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
L_argoНикаких новых таблиц. Так СУБД как раз и придумана для управления этими таблицами. Вы чего их экономите? П.С. Теперь наш суп можно есть руками, больше никаких ложек! ... |
|||
:
Нравится:
Не нравится:
|
|||
09.08.2019, 14:06 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
drynnyЦель – сделать конструктор приложений. Это не может быть целью. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.08.2019, 14:07 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
hVosttdrynnyЦель – сделать конструктор приложений. Это не может быть целью.Надо было написать "Цель - заработать денег" ? ... |
|||
:
Нравится:
Не нравится:
|
|||
09.08.2019, 14:33 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
drynnySergueiпропущено... было бы интересно увидеть реализацию какого то кейса с демонстрацией возможностей, а до того не интересно время тратить... У меня в системе используется аналогичное решение, но не для хранения всего и вся, а частично. Простые структуры да удобно, а чуть посложнее - все приплыли... Ок, сегодня-завтра я запилю ролик про рекрутерскую систему, которая работает на этом решении. Если вы, как и я, ненавидите ролики, то могу накидать скриншотов с пояснениями. В общем, пропарюсь лишь бы получить ваш вариант названия. Я помог знакомому рекрутеру делать стартап для массового подбора персонала. Там есть приличный бизнес-процесс, включающий переходы откликов кандидатов по статусам, планирование интервью, рассылку email и смс, работу с вакансиями (набор этапов, трёхуровневые специализации, скрипты, тайм-слоты встреч, права, и т.д. и т.п.) и сайтом Хэдхантер (HH). Фрейм HH написан отдельно, используется как сторонний сервис, внедренный в интерфейс, остальное — в QDM (Quintet data model). Так вот, есть формы вакансии, отклика и прочие, состоящие из блоков, которые включаются/выключаются и совершают действия (вызывают запросы, запрашивают и сохраняют данные) в зависимости от статуса отклика или иного контекста. Обзорный ролик ... |
|||
:
Нравится:
Не нравится:
|
|||
09.08.2019, 14:40 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
Пришел исчо один умник.... менторски поумничать. Никаких решений не предлагает. Просто умничает. Блещет остроумием. Поле добавить на лету... Дело же не в добавленном на лету поле, а в работе с ним. На каждый новый параметр поле добавлять ? Возьми какой-нить Волмарт. Там миллионы товаров с десятками разнородных параметров каждый. Ты всерьез думаешь, что это отдельные таблички и поля ? ... |
|||
:
Нравится:
Не нравится:
|
|||
09.08.2019, 14:41 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
Vladimir Baskakovdrynny Ну назовите Универсальный Формат Типизированных Данных - УФТД (UFTD) . Звучать будет внушительно . Или не Формат а Хранилище УХТД. «Ну ...» Слишком абстрактное название, не отражает суть. Внушительность звучания вообще не важна. Vladimir BaskakovА если не секрет, какой движок БД подкладывали под модель, когда ворочали (поверю на слово) большим количеством данных? чисто из любопытства вопрошаю, ибо со скепсисом ранее написавших согласен. Потому что получается - на табличную модель положили хранилище вашего формата, на базе которого работают снова таблицы. Наличие лишнего звена, создающего доп нагрузки очевидно ((((((((((( если оно работает поверх некоего SQL движка, оно никак не может работать быстрее и эффективнее. Только медленнее (((((( Данные хранятся в MySQL, также можно использовать Postgre, в котором запросы MySQL прозрачно отрабатывают, кроме ключа LIMIT, который нужно передавать отдельно. Скепсис – это же отлично! Но нужна конкретика. Вот там выше товарищ вещает про объемы. Какие конкретно объемы убьют это решение? Не EAV, а именно это. Сам EAV неубиваем, и вы можете писать туда столько, сколько вместится на диск. А вот собрать работающее решение – другое дело. Ранее мне говорили, что 100-200 тысяч записей – предел возможностей законченного решения на основе EAV. 2 млн называли недостижимой планкой. Я сделал прототипы и сервисы и на 4 млн, и на 80, и на 180. Судя по динамике, предела вообще нет. Знаете что отвечали оппоненты? А ничего, затыкались и уходили. Ваше заявление про «таблицы поверх формата поверх таблиц» – это попытка на лету спроектировать мою систему, с последующим вердиктом, что это (то, что вы сочинили на ходу) работать не может. Давайте таки придумаем название. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.08.2019, 15:09 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
L_argohVosttпропущено... Это не может быть целью.Надо было написать "Цель - заработать денег" ? Заработать денег это тоже не цель. Если я дам 1 рубль за решение, цель достигнута? )) ... |
|||
:
Нравится:
Не нравится:
|
|||
09.08.2019, 16:04 |
|
|
start [/forum/topic.php?fid=32&msg=39846959&tid=1539762]: |
0ms |
get settings: |
11ms |
get forum list: |
13ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
32ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
78ms |
get tp. blocked users: |
2ms |
others: | 224ms |
total: | 377ms |
0 / 0 |