powered by simpleCommunicator - 2.0.34     © 2025 Programmizd 02
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Как назвать эту структуру и подход, основанные на EAV?
454 сообщений из 454, показаны все 19 страниц
Как назвать эту структуру и подход, основанные на EAV?
    #39842622
drynny
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есть такой формат хранения данных – EAV (Entity–attribute–value)
И есть его модификация, в которой формат дополнен полем ID – уникальный идентификатор каждой записи:
ID–Entity–Attribute–Value
То есть, это такой большой список из 4 полей, в котором хранится вся база данных. Вообще вся – все сущности и их описания (метаданные), включая описание примитивных типов данных (string, number, date, ...).

Для навигации в этом списке построены 3 упорядоченных указателя – индексы: ID, Entity+Attribute, Attribute+Value
При такой организации данных мы можем работать с базой данных любого размера, не имея проблем с производительностью, свойственных системам, построенным на обычном EAV.

Прошу помочь мне с названием для этой структуры и/или подхода вообще.

Например, мне приходят в головы такие варианты:
IEAV – Indexed EAV или ID–Entity–Attribute–Value (второе не отражает суть подхода, а только структуру)
CREAV – Cross-referenced EAV

Более подробное описание структуры есть здесь: habr.com/ru/company/neoflex/blog/433058/
Как это в итоге работает можно посмотреть тут: habr.com/ru/post/414255/
...
Рейтинг: 0 / 0
Как назвать эту структуру и подход, основанные на EAV?
    #39842629
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
От того, что ты в структуру EAV добавил дополнительное поле, оно не перестаёт быть EAV.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Как назвать эту структуру и подход, основанные на EAV?
    #39842663
ldfanate
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AEAV наверное (А = Advanced :)
...
Рейтинг: 0 / 0
Как назвать эту структуру и подход, основанные на EAV?
    #39842664
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Блин, неужели кто-то наивно полагает, что в "настоящем EAV" у таблицы сущностей нет
суррогатного первичного ключа?..
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Как назвать эту структуру и подход, основанные на EAV?
    #39842671
drynny
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry SibiryakovОт того, что ты в структуру EAV добавил дополнительное поле, оно не перестаёт быть EAV.


Структура как была, так и осталась EAV, но мне нужно как-то обозвать получившийся комплекс: структура + подход.
Обычно EAV – только компонент системы, а в моем случае описана вся система: я собираю метаданные и данные из таблицы EAV и из них строю всё, что нужно приложению в плане ORM.
...
Рейтинг: 0 / 0
Как назвать эту структуру и подход, основанные на EAV?
    #39842674
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну так и называй: "ORM с использованием EAV в качестве хранилища". Или, сокращённо, 1C.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Как назвать эту структуру и подход, основанные на EAV?
    #39842676
ldfanate
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
так раз принципиально остался EAV - то и основной минус остался (отвратительная производительность на сколь нибудь больших объёмах).

Вот если например вы хитрые функциональные индексы к этому EAVу начнёте формировать, чтобы только по наиболее часто используемым Attribute (или даже Attr-Value, например, дай мне все материалы с рыночной ценой больше нуля) быстрее формировало, то это ещё можно будет както притянуть "+ подход".
...
Рейтинг: 0 / 0
Как назвать эту структуру и подход, основанные на EAV?
    #39842677
drynny
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ldfanateAEAV наверное (А = Advanced :)

Как-то бы хотелось отразить, в чем именно он Advanced.

В идеале вообще отказаться от акронима EAV, например:
SDDM Self-Descriptive data model
или подобное, но было бы наивно думать, что читатель форума будет настолько заморачиваться, чтобы придумывать за меня название.

Поэтому этим я сам заморочусь, а у вас прошу некий emotional kick, стимулирующей критики, издевок и прочего креатива.
...
Рейтинг: 0 / 0
Как назвать эту структуру и подход, основанные на EAV?
    #39842679
ldfanate
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторВ идеале вообще отказаться от акронима EAV, например:
SDDM Self-Descriptive data model
или подобное

И когда другие говорят "плагиат", я говорю "традиция" (с) :)
...
Рейтинг: 0 / 0
Как назвать эту структуру и подход, основанные на EAV?
    #39842681
drynny
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ldfanateтак раз принципиально остался EAV - то и основной минус остался (отвратительная производительность на сколь нибудь больших объёмах).


Вот как раз здесь есть некий прогресс: производительность вполне приемлемая при работе с сотнями гигабайт данных или десятками миллионов объектов. Есть куча работающих проектов уже.

Но сейчас дело не в этом, а в придумывании названия.

Спасибо!
...
Рейтинг: 0 / 0
Как назвать эту структуру и подход, основанные на EAV?
    #39842682
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ldfanateосновной минус остался (отвратительная производительность на сколь нибудь больших объёмах).

Это миф, созданный теми, кто попытался прогнуть EAV под привычный квадратно-гнездовой
эксель, формируемый одним запросом и, естественно, облажался. Ибо не натягивается эта сова.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Как назвать эту структуру и подход, основанные на EAV?
    #39842685
ldfanate
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
наблюдал это сову неоднократно в т.ч. на "взрослых" платформах типа SAP ERP. В итоге там кончается созданием дублирующих плоских таблиц "вторичных индексов", и сложными коммитами в оба места.

Даже если там какаято аппаратная ускорялка на уровне СУБД (типа флэщь + много памяти), всёравно как ни крути, суммарные ресурсы БД на считывание 1 записи из N полей существенно меньше, чем N записей x 1 поле. Плюс усложнение построения специальных индексов (что называется под конкретный отчёт - как правило сводный, квартальный, годовой или подобное, где надо прожевать много всего и по возможности сразу).
...
Рейтинг: 0 / 0
Как назвать эту структуру и подход, основанные на EAV?
    #39842686
ldfanate
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
т.е. как правило EAV любят лепить разработчики, которые вместо надлежащей методологической проработки бизнес-процесса и его реализации уповают на "универсальность и гибкость". Получается в итоге "всемирная теория всего", которая столь же универсальна, сколь и толком непригодна, и обрастает постепенно различными прикладными "костылями".
...
Рейтинг: 0 / 0
Как назвать эту структуру и подход, основанные на EAV?
    #39842688
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ldfanateв т.ч. на "взрослых" платформах типа SAP ERP.

"Не боги горшки обжигают."
Эти "серьёзные" платформы тоже делаются людьми с "экселем головного мозга". Ну и Оракул с
его скудным выбором TIL провоцирует.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Как назвать эту структуру и подход, основанные на EAV?
    #39842689
experience
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
drynny,

По одной из ваших ссылок мельком зацепил текст:
Тестирование проводилось на самом простом сервере: 1 ядро @2.4GHz, 1GB RAM, диск SSD.
Базы с индексами занимают 207 МБ в классической базе данных и 289 МБ в таблице конструктора.


Если хотите что то тестировать, данные должны в десятки раз превышать размер ОЗУ.
Поверьте моему нику(experience), на моей памяти несколько выброшенных проектов на свалку и уволенных разработчиков именно по причине иллюзий песочницы и песочных же городов.

В первой половине 90х прошлого века мне крутили у виска за стремление к SQL-серверам, ибо дорого. Но тогда ОЗУ моих серверов начиналось с 4-х МЕГАБАЙТ, а данных уже под гигабайт и больше набиралось.
А чуть ранее этого до QUEL Ingres, если бы вы знали как пропатчить adabas что бы ассоциатор разложить по нескольким пакетам в 300-мегабайт, вам бы цены не было.

Сейчас каждый свисток в hdmi телевизора воткнутый может без проблем и малейших усилий мозговых переваривать указанные вами объёмы данных и точно без sql, а путём раскладывания в памяти данных в соответствие с прикладной задачей.

p.s. есть такой недуг современный: SQL - головного мозга.
p.p.s. и да я помню студентов и их преподавателей даже не подозревавших существование этих трёх волшебных букв.
...
Рейтинг: 0 / 0
Как назвать эту структуру и подход, основанные на EAV?
    #39842697
Фотография vadiminfo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
drynny…. а у вас прошу некий emotional kick, стимулирующей критики...
Фундаментально у вас остается EAV, поскольку главное это логическое. Для БД это тип модели данных.

А индексы, производительность это как бы физические детали.

И вот фундаментальным недостатком EAV является то, что это плохая РМД. Она РМД из-за того, что для структурирования и манипулирования там используются средства РМД: таблицы, реляционные ОЦ, система запросов SQL. Эти средства приспособлены именно для моделирования данных таким способом,что таблицы - про отдельные сущности, а колонки про атрибуты. В этом случае и ОЦ и система достаточно эффективны.
Недостатком РМД является сильная типизированность. Надо затолкать реальный мир в плоские таблицы. Но именно за счет такой типизированности эффективны и ОЦ и язык запросов РМД.

EAV пытается уйти от этих недостатков, сохранив реляционные средства. Но так как средства не для EAV придумывались, они теряют свою эффективность.

Естественный путь уйти от недостатков используя МД с другими средствами структурирования. Например, МД - XML, документные.

А EAV как бы не совсем естественный путь: исковерканная РМД.
...
Рейтинг: 0 / 0
Как назвать эту структуру и подход, основанные на EAV?
    #39842732
drynny
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
experiencedrynny,

По одной из ваших ссылок мельком зацепил текст:
Тестирование проводилось на самом простом сервере: 1 ядро @2.4GHz, 1GB RAM, диск SSD.
Базы с индексами занимают 207 МБ в классической базе данных и 289 МБ в таблице конструктора.


Если хотите что то тестировать, данные должны в десятки раз превышать размер ОЗУ.


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

С высоты вашего опыта, вы наверняка бы могли классифицировать такую штуковину: база данных, хранимая единым списком из 4 полей, проиндексированных в трёх разрезах (ID записи, родитель, тип), из которого собираются метаданные и данные, включая сущности предметной области, запросы, ролевую модель, журналы, настройки и т.д.
...
Рейтинг: 0 / 0
Как назвать эту структуру и подход, основанные на EAV?
    #39842750
drynny
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
vadiminfodrynny…. а у вас прошу некий emotional kick, стимулирующей критики...
И вот фундаментальным недостатком EAV является то, что это плохая РМД. Она РМД из-за того, что для структурирования и манипулирования там используются средства РМД: таблицы, реляционные ОЦ, система запросов SQL. Эти средства приспособлены именно для моделирования данных таким способом,что таблицы - про отдельные сущности, а колонки про атрибуты. В этом случае и ОЦ и система достаточно эффективны.


Смешной прикол в том, что на носителе это всё хранится не как таблицы и колонки, а как набор цепочек байтов, порой очень зло фрагментированных (представьте, например, что менеджер дописывает в поле примечания по паре слов ежедневно, и ведь они уже не влезут в отведенное ранее место).
Я не спорю, что собирать такую мозаику из EAV тоже непросто – на порядок сложнее, я бы сказал, но не невыполнимо и даже оправданно для большой доли проектов.
...
Рейтинг: 0 / 0
Как назвать эту структуру и подход, основанные на EAV?
    #39842769
alecko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
drynny, я бы добавил ещё одно поле IDP (ID Parents) - ключ родителя (у главного родителя его значение =0)-отвечает за связи...а название... поскольку добавляем Keys: Key-EAV, следовательно KEAV
...
Рейтинг: 0 / 0
Как назвать эту структуру и подход, основанные на EAV?
    #39842779
Фотография vadiminfo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
drynnyСмешной прикол в том, что на носителе это всё хранится не как таблицы и колонки, а как набор цепочек байтов, порой очень зло фрагментированных (представьте, например, что менеджер дописывает в поле примечания по паре слов ежедневно, и ведь они уже не влезут в отведенное ранее место).
.
Вы просили критику. Я написал про логику.

Вот C# для написания клиентских прог лучше подходит, чем ассемблер, несмотря на то, что все хранится в байтах, а там все в битах, и вообще команды компьютеру передаются в 0 и 1.

И БД пришли на смену файловым системам несмотря на байты. И РМД на смену иерархическим и сетевым. Причем в физике она уступала (в производительности). Взяла логикой.

Для БД имеет большое значение логика. Цель БД в идеале, чтобы как можно было проще извлечь требуемую информацию. Чтобы проще было понять модель и проще написать запрос. Требовалось меньше квалификации. А физику на себя пусть в основном СУБД берет.


Может где-то EAV хорош оказался. Обычная РБД там не подошла. Надо было выбирать другой тип МД или остаться в РСУБД, но использовать EAV. И последнее подошло.
...
Рейтинг: 0 / 0
Как назвать эту структуру и подход, основанные на EAV?
    #39842855
drynny
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
aleckodrynny, я бы добавил ещё одно поле IDP (ID Parents) - ключ родителя (у главного родителя его значение =0)-отвечает за связи...а название... поскольку добавляем Keys: Key-EAV, следовательно KEAV

Entity – это и есть Parent ID

Пока в голову приходит только REAV – Relational EAV
Это структурная основа RDBMS, но с фиксированным форматом таблиц
...
Рейтинг: 0 / 0
Как назвать эту структуру и подход, основанные на EAV?
    #39843291
ldfanate
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
так всёравно как ни крути, получается "анти-реляционная модель".
В виде схемы данных даже связи по отдельным "Attribute-Справочник значений" или "Attribute-дочерняя таблица" нормально не отобразишь.
...
Рейтинг: 0 / 0
Как назвать эту структуру и подход, основанные на EAV?
    #39843305
drynny
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ldfanateтак всёравно как ни крути, получается "анти-реляционная модель".
В виде схемы данных даже связи по отдельным "Attribute-Справочник значений" или "Attribute-дочерняя таблица" нормально не отобразишь.

Почему не отобразишь?
Вот пример фрагмента схемы данных, сделанной с применением этого решения.

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

И вот фундаментальным недостатком EAV является то, что это плохая РМД. Она РМД из-за того, что для структурирования и манипулирования там используются средства РМД: таблицы, реляционные ОЦ, система запросов SQL. Эти средства приспособлены именно для моделирования данных таким способом,что таблицы - про отдельные сущности, а колонки про атрибуты. В этом случае и ОЦ и система достаточно эффективны.


Смешной прикол в том, что на носителе это всё хранится не как таблицы и колонки, а как набор цепочек байтов, порой очень зло фрагментированных (представьте, например, что менеджер дописывает в поле примечания по паре слов ежедневно, и ведь они уже не влезут в отведенное ранее место).
Я не спорю, что собирать такую мозаику из EAV тоже непросто – на порядок сложнее, я бы сказал, но не невыполнимо и даже оправданно для большой доли проектов.
А тип поля для Value у вас какой выбран?
...
Рейтинг: 0 / 0
Как назвать эту структуру и подход, основанные на EAV?
    #39844286
drynny
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Megabytedrynnyпропущено...


Смешной прикол в том, что на носителе это всё хранится не как таблицы и колонки, а как набор цепочек байтов, порой очень зло фрагментированных (представьте, например, что менеджер дописывает в поле примечания по паре слов ежедневно, и ведь они уже не влезут в отведенное ранее место).
Я не спорю, что собирать такую мозаику из EAV тоже непросто – на порядок сложнее, я бы сказал, но не невыполнимо и даже оправданно для большой доли проектов.
А тип поля для Value у вас какой выбран?

Концептуально – это байты данных, трактуемые в зависимости от их типа.
В существующих приложениях и сервисах – это текстовое поле, в котором также текстом хранятся числовые значения, в т.ч. datetime.

Данные можно преобразовать к тому виду, в котором они хранятся, чтобы использовать индекс.
Затруднение вызывает только применение индекса к диапазону чисел, потому что у них различается порядок — нельзя ранжировать по первым цифрам, нужно считать всё число.

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

А тип поля для Value у вас какой выбран?

Концептуально – это байты данных, трактуемые в зависимости от их типа.
В существующих приложениях и сервисах – это текстовое поле, в котором также текстом хранятся числовые значения, в т.ч. datetime.

Т.е. вместо 1млн. чисел вы храните 1 миллион строк(небось еще и максимальной длины)..?
В угоду "универсальности" нормальный такой перерасход пространства.
...
Рейтинг: 0 / 0
Как назвать эту структуру и подход, основанные на EAV?
    #39844327
L_argo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MegabyteВ угоду "универсальности" нормальный такой перерасход пространства.Пространство - полбеды.
Основная беда - преобразование строки в число на лету при массовых вычислениях. Дичайше тормозит.
...
Рейтинг: 0 / 0
Как назвать эту структуру и подход, основанные на EAV?
    #39844343
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MegabyteВ угоду "универсальности" нормальный такой перерасход пространства.
СУБД - это универсальное решение. Хорошо отработанное универсальное решение. И вот, очередной квазиархитектор решает использовать это универсальное решение на 0.1% возможностей для того, чтобы создать четыре таблицы и громоздить над ними собственный велосипед. Нетрудно догадаться, что результат получается похожим на самолёт-истребитель, к которому туземец приспособил велосипедную цепь с седлом и пытается на этом плавать.
...
Рейтинг: 0 / 0
Как назвать эту структуру и подход, основанные на EAV?
    #39844347
drynny
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Megabytedrynnyпропущено...


Концептуально – это байты данных, трактуемые в зависимости от их типа.
В существующих приложениях и сервисах – это текстовое поле, в котором также текстом хранятся числовые значения, в т.ч. datetime.

Т.е. вместо 1млн. чисел вы храните 1 миллион строк(небось еще и максимальной длины)..?
В угоду "универсальности" нормальный такой перерасход пространства.

Я сравнивал, и благодаря нормализации получается почти столько же места база занимает ( здесь можно видеть ), как такая же в оракле, но здесь зато сразу всё проиндексировано.

А у вас есть какой-нибудь вариант названия для этого неоднозначного подхода?
...
Рейтинг: 0 / 0
Как назвать эту структуру и подход, основанные на EAV?
    #39844348
Serguei
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarerMegabyteВ угоду "универсальности" нормальный такой перерасход пространства.
СУБД - это универсальное решение. Хорошо отработанное универсальное решение. И вот, очередной квазиархитектор решает использовать это универсальное решение на 0.1% возможностей для того, чтобы создать четыре таблицы и громоздить над ними собственный велосипед. Нетрудно догадаться, что результат получается похожим на самолёт-истребитель, к которому туземец приспособил велосипедную цепь с седлом и пытается на этом плавать.
Смешновато ) в точку
...
Рейтинг: 0 / 0
Как назвать эту структуру и подход, основанные на EAV?
    #39844349
drynny
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
softwarerMegabyteВ угоду "универсальности" нормальный такой перерасход пространства.
СУБД - это универсальное решение. Хорошо отработанное универсальное решение. И вот, очередной квазиархитектор решает использовать это универсальное решение на 0.1% возможностей для того, чтобы создать четыре таблицы и громоздить над ними собственный велосипед. Нетрудно догадаться, что результат получается похожим на самолёт-истребитель, к которому туземец приспособил велосипедную цепь с седлом и пытается на этом плавать.
Живописно как сочинили.

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

Какие ваши доказательства? ) Что значит любого размера?
На каком конкретно объеме данных тестировали? Какие запросы делали? какого типа атрибуты использовали?
Какие результаты получены?
То же самое,но без EAV что показывает?
Название наверное пока еще рановато придумывать...
...
Рейтинг: 0 / 0
Как назвать эту структуру и подход, основанные на EAV?
    #39844402
drynny
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
SergueidrynnyДля навигации в этом списке построены 3 упорядоченных указателя – индексы: ID, Entity+Attribute, Attribute+Value
При такой организации данных мы можем работать с базой данных любого размера, не имея проблем с производительностью, свойственных системам, построенным на обычном EAV.

Какие ваши доказательства? ) Что значит любого размера?
Это значит, что размер напрямую не влияет на производительность. Конкретнее, в при таком подходе не будет full scan и прочих вещей, присущих EAV, потому что из-за использования индексов система работает с ограниченным набором данных – они находятся быстро.
При каждом удвоении объема данных в индекс добавляется максимум 1 уровень.

SergueiНа каком конкретно объеме данных тестировали?
До 200GB.
Обычно при использовании RAM 1GB в ней занято не больше 100MB.
Вот здесь можно посмотреть графики при работе до 25 пользователей одновременно: habr.com/ru/company/neoflex/blog/451218/#tests

SergueiКакие запросы делали? какого типа атрибуты использовали?
Какие результаты получены?
Атрибуты используются разных типов, включая числовые значения.
Сейчас используется несколько сервисов, построенных на этом решении, результаты в плане быстродействия вполне приличные, а обычное время построения страниц веб-интерфейса находится в пределах 33-150 мс.

SergueiТо же самое,но без EAV что показывает?
Сравнение с обычной базой приведено здесь: habr.com/ru/post/414255/

SergueiНазвание наверное пока еще рановато придумывать...
Если что, задавайте ещё вопросы, а я жду вашего ответа.
...
Рейтинг: 0 / 0
Как назвать эту структуру и подход, основанные на EAV?
    #39844655
Фотография vadiminfo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
drynny[
Пока в голову приходит только REAV – Relational EAV
Это структурная основа RDBMS, но с фиксированным форматом таблиц

Все EAV так как все они RDBMS и потому на структурное основе RDBMS.
Т.е. тогда любую EAV можно было бы назвать REAV.

Кроме того, традиционно термин Relational выглядит много обещающим для МД. Поскольку происходит от понятия Отношения в теории множеств - одной из важнейших теоретико-множественных конструкций. Используется в многих разделах математики.
В частности, в теории реляционных БД. Поэтому как бы от REAV ожидается что-то типа аксиом Амстронга или что-то подобное. Какая-то теория. Ведь это МД.

Поэтому REAV с одной стороны не позволяет отличить от других EAVов, с другой, слишком громкое.
...
Рейтинг: 0 / 0
Как назвать эту структуру и подход, основанные на EAV?
    #39844804
drynny
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
vadiminfodrynny[
Пока в голову приходит только REAV – Relational EAV
Это структурная основа RDBMS, но с фиксированным форматом таблиц

Все EAV так как все они RDBMS и потому на структурное основе RDBMS.
Т.е. тогда любую EAV можно было бы назвать REAV.

Кроме того, традиционно термин Relational выглядит много обещающим для МД. Поскольку происходит от понятия Отношения в теории множеств - одной из важнейших теоретико-множественных конструкций. Используется в многих разделах математики.
В частности, в теории реляционных БД. Поэтому как бы от REAV ожидается что-то типа аксиом Амстронга или что-то подобное. Какая-то теория. Ведь это МД.

Поэтому REAV с одной стороны не позволяет отличить от других EAVов, с другой, слишком громкое.

Ок, спасибо. В целом согласен.

Как вариант, можно вообще не использовать аббревиатуру EAV, назвав это типа Quintet data model.
Общался с одним экспертом по БД, и он сразу начал применять термин «пятерки». Пять штук чего-либо называется квинтетом, а у меня все записи содержат 5 полей. Статью одноименную я запилил на хабре об этом.

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

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

Что скажете?
14 декабря 2018 года... удивительно

Ну а что тут?

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

Мне очень важно ваше мнение.

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

Да, в некоторых случаях может быть удобно и даже прочно
YouTube Video
...
Рейтинг: 0 / 0
Как назвать эту структуру и подход, основанные на EAV?
    #39845445
oragraf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
drynny но здесь зато сразу всё проиндексировано. Это в большинстве случаев не хорошо.
ЗЫ. Хочешь, подскажу более универсальную структуру? Это XML, хранящийся в clob в одном поле и всего одна строка в одной таблице! Можешь запатентовать!
...
Рейтинг: 0 / 0
Как назвать эту структуру и подход, основанные на EAV?
    #39845511
Serguei
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
oragraf Это в большинстве случаев не хорошо.
ЗЫ. Хочешь, подскажу более универсальную структуру? Это XML, хранящийся в clob в одном поле и всего одна строка в одной таблице! Можешь запатентовать!

Для этого даже термин есть - кладбище XMLей )
Теоретически во многих базах можно прямо из SQL делать запросы к XML который в блоб (clob в oracle), но на практике это получится очень медленно и на больших объемах загнется на селектах. Кроме того, не будет никакого контроля целостности данных. В этом случае вообще зачем писать в базу- можно сразу в xml на диск складировать.
...
Рейтинг: 0 / 0
Как назвать эту структуру и подход, основанные на EAV?
    #39846175
Ivan Durak
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
L_argoMegabyteВ угоду "универсальности" нормальный такой перерасход пространства.Пространство - полбеды.
Основная беда - преобразование строки в число на лету при массовых вычислениях. Дичайше тормозит.
еще вместе с датой надо хранить её формат. Т.е. чтобы 03/01/2019 распознать где месяц, где день.

Ради таких костылей начинаются EAV вида Attribute- Value text, Value int, Value datetime, Value decimal ....

Потом ради ускорения можно таблцу партицировать по Ентитям. Норм решение, рабочее.
Но это уже шаг к тому, что ентити надо разделить, чтобы не мешали друг-другу.
...
Рейтинг: 0 / 0
Как назвать эту структуру и подход, основанные на EAV?
    #39846709
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
drynnyНапример, мне приходят в головы такие варианты:
IEAV – Indexed EAV или ID–Entity–Attribute–Value (второе не отражает суть подхода, а только структуру)
CREAV – Cross-referenced EAV

Не удержался...

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

Если есть Event Sourcing и проекции?
...
Рейтинг: 0 / 0
Как назвать эту структуру и подход, основанные на EAV?
    #39846735
ldfanate
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttАУЕАВ

Класс !!!
...
Рейтинг: 0 / 0
Как назвать эту структуру и подход, основанные на EAV?
    #39846807
L_argo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttНафига этот ущербный EAV и все его кривые производные, отлитые из костылей?
Если есть Event Sourcing и проекции?Это куета и балабольство. Много слов, но по сути проблемы нет ничего.

Ценность EAV в том, что можно на лету добавить к сущности новое свойство или его новое значение и не затронуть никаких старых данных или структур. Легко систематизировать и трансформировать.

Модель не идеальная, но гибкая.
Новые данные создаются новыми строками в постоянных таблицах, а не новыми полями и таблицами.
...
Рейтинг: 0 / 0
Как назвать эту структуру и подход, основанные на EAV?
    #39846891
Фотография vadiminfo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
L_argo
Ценность EAV в том, что можно на лету добавить к сущности новое свойство или его новое значение и не затронуть никаких старых данных или структур. Легко систематизировать и трансформировать.
.
В текстовый документ тоже можно на лету что хочешь добавлять. Да и в тот же Йксель. Т.е. если целью является занять персонал набором данных, есть что-то и получше ЕАВа.
...
Рейтинг: 0 / 0
Как назвать эту структуру и подход, основанные на EAV?
    #39846896
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
L_argoЦенность EAV в том, что можно на лету добавить к сущности новое свойство или его новое значение и не затронуть никаких старых данных или структур.
И в чём ценность этого?
...
Рейтинг: 0 / 0
Как назвать эту структуру и подход, основанные на EAV?
    #39846903
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarerL_argoЦенность EAV в том, что можно на лету добавить к сущности новое свойство или его новое значение и не затронуть никаких старых данных или структур.
И в чём ценность этого?
Ладно, чтобы не выслушивать тонны бреда, поясню вопрос. Допустим, есть таблица obj$somedata, в которой лежат те или иные важные бизнес-объекты. Поставлена задача добавлять к ним произвольные новые свойства и значения.

В тот момент, когда у Вас дёргается рука организовать eav, я делаю так. Завожу таблицу ext$somedata с единственным полем id. Там, где данные выводятся в интерфейс, я пишу запрос:

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
select 
  o.<required-fields>, 
  e.*
from 
  obj$somedata o, 
  ext$somedata e
where
  o.id = e.id (+)
  and <filter-conditions-for-this-data>


Ну и даю клиенту возможность описывать и создавать дополнительные поля в ext$somedata. Внимание, вопрос: опишите, что и сколько Вам потребуется сделать в eav, чтобы достичь того же результата. Не забудьте, например, про необходимость отфильтровать эту выборку по значению двух-трёх полей из "расширенного" набора.
...
Рейтинг: 0 / 0
Как назвать эту структуру и подход, основанные на EAV?
    #39846909
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarerИ в чём ценность этого?

Позволяет призвать дух товарища Тенцера.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Как назвать эту структуру и подход, основанные на EAV?
    #39846959
L_argo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarerНу и даю клиенту возможность описывать и создавать дополнительные поля в ext$somedata. Внимание, вопрос: опишите, что и сколько Вам потребуется сделать в eav, чтобы достичь того же результата. Не забудьте, например, про необходимость отфильтровать эту выборку по значению двух-трёх полей из "расширенного" набора.В Вашем случае создается новый объект в БД.
Ввести новые данные - полдела. Нужно их научиться еще и вычитывать. Н-р в отчетах.
Научиться реплицировать на другие БД. Это все может потребовать вмешательства разработчиков и админов.

В "моем" EAV:

1. Создается новая запись-карточка нового параметра (Имя,Тип,Форматировка,Связи,Безопасность и пр.).
2. Привязывается к сущностям, н-р к "товары" и "заказчики". Простая таблица Ключ+Ключ.
3. Теперь можно вносить данные: заходим в карточку товара -> "Добавить свойство" -> Выбираю из списка нужное свойство из доступных для "товар" -> Система предлагает ввести значение (варианты ввода и ограничения были настроены в п.1).
4. (профит)

Для массовой заливки данных в EAV нужен список карточек и значения.
Есть унифицированный импорт в любое EAV-свойство. Н-р из экселя. Его можно клонировать с доработками.

Никаких новых таблиц. Дописка кода нужна нечасто (н-р нестандартная проверка введенных данных) и она не нарушает работу другого кода.
Не нужны админские полномочия.
Это все (кроме дописки кода) может делать аналитик средней руки.

В любой момент этот новый параметр можно перенастроить или даже удалить вместе с данными.
Есть набор готовых процедур для вычитки данных, н-р для отчетов.

МССКЛ.

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

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

L_argo3. Теперь можно вносить данные: заходим в карточку товара -> "Добавить свойство" -> Выбираю из списка нужное свойство из доступных для "товар"
Вот так и подозревал. Вся эта громоздкая хрень, помимо прочего, провоцирует неудобный интерфейс. Делать пользователю больше нечего, как только вносить значения двадцати свойств каждое отдельным нажатием кнопки "добавить". И так по нескольким сотням тысячам записей товаров....

L_argo4. (профит)
Если это профит, не хотел бы я увидеть фейл.

L_argoЕсть унифицированный импорт ... Никаких новых таблиц. ... Не нужны админские полномочия ...
Вместо ответа на заданный вопрос Вы изображаете магнитофон, повторяющий заученные фразы.
...
Рейтинг: 0 / 0
Как назвать эту структуру и подход, основанные на EAV?
    #39847091
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ldfanateИнформационно-справочные системы, чтото типа "Центральный справочник материалов", - да наверное тут EAV чемто поможет, т.к. у разных групп номенклатуры МТР кардинально отличаются наборы характеристик.
Хотя бы простое в лоб поле "характеристики" типа XMLType поможет гораздо лучше.
...
Рейтинг: 0 / 0
Как назвать эту структуру и подход, основанные на EAV?
    #39847123
Фотография Megabyte
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
L_argoНе нужны админские полномочия.
Это тоже вы в плюс записали?
...
Рейтинг: 0 / 0
Как назвать эту структуру и подход, основанные на EAV?
    #39847133
SERG1257
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добавлю в "плюсы" - никаких ограничений: можно записать все что угодно и сколько угодно раз.
И читать тоже, даже если программист накосячит и будет запрашивать свойство несуществующего поля то ошибки не будет.
Да здавствуют программы без ошибок!
...
Рейтинг: 0 / 0
Как назвать эту структуру и подход, основанные на EAV?
    #39847161
drynny
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
SergueidrynnyНу а что тут?

Мне очень важно ваше мнение.

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

Я помог знакомому рекрутеру делать стартап для массового подбора персонала.
Там есть приличный бизнес-процесс, включающий переходы откликов кандидатов по статусам, планирование интервью, рассылку email и смс, работу с вакансиями (набор этапов, трёхуровневые специализации, скрипты, тайм-слоты встреч, права, и т.д. и т.п.) и сайтом Хэдхантер (HH). Фрейм HH написан отдельно, используется как сторонний сервис, внедренный в интерфейс, остальное — в QDM (Quintet data model). Так вот, есть формы вакансии, отклика и прочие, состоящие из блоков, которые включаются/выключаются и совершают действия (вызывают запросы, запрашивают и сохраняют данные) в зависимости от статуса отклика или иного контекста. Приложение «ведет» пользователя, ограничивает, не дает спотыкаться.
Могу показать как это работает по скайпу, со всеми запросами, исходниками и формами. В целом, всё как в обычном приложении, но без python, php, nodejs.

Я мониторил загрузку, вот здесь опубликованы результаты за день: habr.com/ru/post/358934/#comment_18715197
...
Рейтинг: 0 / 0
Как назвать эту структуру и подход, основанные на EAV?
    #39847179
drynny
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
hVosttНафига этот ущербный EAV и все его кривые производные, отлитые из костылей?

Если есть Event Sourcing и проекции?
Цель – сделать конструктор приложений. От костылей удалось избавиться, как это ни странно, и я желаю рассказать о внутренностях решения, если зритель готов смотреть, а не только с пеной у рта доказывать тут, что EAV – зло. Зло, кто ж спорит. Только я здесь не про EAV.
...
Рейтинг: 0 / 0
Как назвать эту структуру и подход, основанные на EAV?
    #39847186
Vladimir Baskakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
drynny

Ну назовите Универсальный Формат Типизированных Данных - УФТД (UFTD) .
Звучать будет внушительно . Или не Формат а Хранилище УХТД.

А если не секрет, какой движок БД подкладывали под модель, когда ворочали (поверю на слово) большим количеством данных?

чисто из любопытства вопрошаю, ибо со скепсисом ранее написавших согласен.

Потому что получается - на табличную модель положили хранилище вашего формата, на базе которого работают снова таблицы. Наличие лишнего звена, создающего доп нагрузки очевидно ((((((((((( если оно работает поверх некоего SQL движка, оно никак не может работать быстрее и эффективнее. Только медленнее ((((((
...
Рейтинг: 0 / 0
Как назвать эту структуру и подход, основанные на EAV?
    #39847189
Vladimir Baskakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
и теперь, чтобы универсально работать с данными уложенными по новому, надо будет заново придумать нечто на замену SQL и реализовать сей механизм.

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

А как иначе пользователь должен поступить ? В вашем кейсе вообще ничего не описано.
Мною был описан кейс вставки редко используемых значений. Про массовую вставку я тоже писал.
Также можно сделать обработки для автоматического внесения данных. Разовых или регулярных.
И вызывать их по регламенту или одним кликом.

У меня еще есть возможность сразу показывать свойство. Без "добавить" и "выбрать". Это удобно, если свойство есть у большинства карточек. Сначала свойство горит пустым. Юзер просто одним кликом сразу вносит значение.
Значение может быть проверено на допустимость.
Свойство может быть единичным или списочным, т.е. допускать неск. разных значений.

Даже не представляю как подобный процесс можно сократить хотя бы на один клик.

Единственный недостаток: для сложных вставок и проверок нужно написать код. Иначе никак. Так это везде так.
...
Рейтинг: 0 / 0
Как назвать эту структуру и подход, основанные на EAV?
    #39847300
L_argo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Забыл добавить, что свойство может хранить историю значений на дату, если нужно.
Также историю можно внести наперед, н-р скидка 10% с 01-09-2019.
...
Рейтинг: 0 / 0
Как назвать эту структуру и подход, основанные на EAV?
    #39847411
ldfanate
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarerХотя бы простое в лоб поле "характеристики" типа XMLType поможет гораздо лучше.

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

ldfanateВедь там не только сложная структура характеристик получится,
Сложная структура - это, скорее, фича. По крайней мере, в неё естественным образом укладываются составные характеристики, массивы и т. п. Да и верифицировать можно по xml schema, что по сравнению с eav - огромная прибавка к надёжности.

ldfanateно и потребность строить потом, при распухании справочника, специализированные индексы для ускорения поиска, - типа "дай мне всю номенклатуру товарного департамента N кроме гаек вида M".
Может быть. Но к таким объёмам EAV уже просто давно загнётся без вариантов, поэтому я не считал бы это сравнительным недостатком.
...
Рейтинг: 0 / 0
Как назвать эту структуру и подход, основанные на EAV?
    #39847432
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
L_argoРеакция ожидаемая, но это реакция троля, а не инженера. Увы.
Ну конечно. Ваше "не трогай святое и любимое детище" - это реакция инженера, а моё "вот код", после которого Вам стыдно показывать свой - реакция тролля.

L_argoУ меня еще есть возможность
Смотрите. Ваше решение условно состоит из следующих частей. Во-первых, это API - то есть то, что "прикладной код" вызывает для реализации функционала. Во-вторых, некий движок метаинформации. И в-третьих, код реализации - то есть то, что получает команду в терминах метаинформации (например, "вернуть значение такой-то выборки" или "записать значение такого-то атрибута") и выполняет физический select, insert или update.

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

Так вот... мы говорим про EAV. Поэтому всё, что сохранится при такой подмене - к EAV уже не относится. Это функционал (хороший или плохой, удачно или неудачно реализованный) который Вы сделали, но который от EAV не зависит. В сравнении нас интересует то, что при такой подмене изменится - в лучшую или в худшую сторону.

Я утверждаю, что при такой замене довольно много изменится к лучшему и крайне мало - к худшему. И пока я не услышал ни одного конкретного примера, что же ухудшится - только общие слова типа "меняются таблицы", показывающие, что собеседник сам не понимает, что же станет хуже, просто религиозно верит, что станет.
...
Рейтинг: 0 / 0
Как назвать эту структуру и подход, основанные на EAV?
    #39847436
L_argo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да и верифицировать можно по xml schema, что по сравнению с eav - огромная прибавка к надёжности.
Какая нафиг схема и надежность ? Схема примитивно проверяет в пределах xml.

Как верифицировать параметр "подтвержден=True", если по договору или доп.соглашению имеется просроченная задолженность или в связанном документе присутствует неподтвержденная позиция ?
Придется делать неск. типов проверок.

С данными в ХМЛ работать неудобно и вообще это противоречит 1 норм.форме. :)

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

На каком ещё "на лету"? Вы в БД не можете добавить колонку "на лету"? Я вот могу. Показать инструкцию?

Нет, вы похоже не понимаете для чего пришлось изобретать костыли типа EAV.


L_argohVosttНафига этот ущербный EAV и все его кривые производные, отлитые из костылей?
Если есть Event Sourcing и проекции?Это куета и балабольство. Много слов, но по сути проблемы нет ничего.

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

Так СУБД как раз и придумана для управления этими таблицами. Вы чего их экономите?

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

Это не может быть целью.
...
Рейтинг: 0 / 0
Как назвать эту структуру и подход, основанные на EAV?
    #39847497
L_argo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttdrynnyЦель – сделать конструктор приложений.
Это не может быть целью.Надо было написать "Цель - заработать денег" ?
...
Рейтинг: 0 / 0
Как назвать эту структуру и подход, основанные на EAV?
    #39847500
drynny
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
drynnySergueiпропущено...


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

Я помог знакомому рекрутеру делать стартап для массового подбора персонала.
Там есть приличный бизнес-процесс, включающий переходы откликов кандидатов по статусам, планирование интервью, рассылку email и смс, работу с вакансиями (набор этапов, трёхуровневые специализации, скрипты, тайм-слоты встреч, права, и т.д. и т.п.) и сайтом Хэдхантер (HH). Фрейм HH написан отдельно, используется как сторонний сервис, внедренный в интерфейс, остальное — в QDM (Quintet data model). Так вот, есть формы вакансии, отклика и прочие, состоящие из блоков, которые включаются/выключаются и совершают действия (вызывают запросы, запрашивают и сохраняют данные) в зависимости от статуса отклика или иного контекста.

Обзорный ролик
YouTube Video
...
Рейтинг: 0 / 0
Как назвать эту структуру и подход, основанные на EAV?
    #39847504
L_argo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пришел исчо один умник.... менторски поумничать.
Никаких решений не предлагает. Просто умничает. Блещет остроумием.

Поле добавить на лету... Дело же не в добавленном на лету поле, а в работе с ним.
На каждый новый параметр поле добавлять ?

Возьми какой-нить Волмарт. Там миллионы товаров с десятками разнородных параметров каждый.
Ты всерьез думаешь, что это отдельные таблички и поля ?
...
Рейтинг: 0 / 0
Как назвать эту структуру и подход, основанные на EAV?
    #39847528
drynny
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Vladimir Baskakovdrynny

Ну назовите Универсальный Формат Типизированных Данных - УФТД (UFTD) .
Звучать будет внушительно . Или не Формат а Хранилище УХТД.
«Ну ...» Слишком абстрактное название, не отражает суть.
Внушительность звучания вообще не важна.

Vladimir BaskakovА если не секрет, какой движок БД подкладывали под модель, когда ворочали (поверю на слово) большим количеством данных?

чисто из любопытства вопрошаю, ибо со скепсисом ранее написавших согласен.

Потому что получается - на табличную модель положили хранилище вашего формата, на базе которого работают снова таблицы. Наличие лишнего звена, создающего доп нагрузки очевидно ((((((((((( если оно работает поверх некоего SQL движка, оно никак не может работать быстрее и эффективнее. Только медленнее ((((((
Данные хранятся в MySQL, также можно использовать Postgre, в котором запросы MySQL прозрачно отрабатывают, кроме ключа LIMIT, который нужно передавать отдельно.

Скепсис – это же отлично! Но нужна конкретика.

Вот там выше товарищ вещает про объемы. Какие конкретно объемы убьют это решение? Не EAV, а именно это. Сам EAV неубиваем, и вы можете писать туда столько, сколько вместится на диск. А вот собрать работающее решение – другое дело.

Ранее мне говорили, что 100-200 тысяч записей – предел возможностей законченного решения на основе EAV. 2 млн называли недостижимой планкой. Я сделал прототипы и сервисы и на 4 млн, и на 80, и на 180. Судя по динамике, предела вообще нет. Знаете что отвечали оппоненты? А ничего, затыкались и уходили.

Ваше заявление про «таблицы поверх формата поверх таблиц» – это попытка на лету спроектировать мою систему, с последующим вердиктом, что это (то, что вы сочинили на ходу) работать не может.

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

Это не может быть целью.Надо было написать "Цель - заработать денег" ?


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

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

На нормальных инженерных форумах принято:
Критикуешь ? ОК. Предложи более правильную альтернативу. Опиши плюсы/минусы.
Не знаешь альтернативы ? Сиди молча.

Кому надо, тот прочтет топик и выберет решение по вкусу.

Я описал свое решение в подробностях.

зы: Слежу за скуль.ру с 2002г. Уровень неимоверно упал.
И вообще форум стремительно теряет аудиторию.
...
Рейтинг: 0 / 0
Как назвать эту структуру и подход, основанные на EAV?
    #39847737
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
L_argoУгу.
Можно просто придти поумничать в стиле "вы фсе тут п*сы".

Ну или можно поклянчить готовые решения, да? :)


L_argoКритикуешь ? ОК. Предложи более правильную альтернативу. Опиши плюсы/минусы.
Не знаешь альтернативы ? Сиди молча.

Я от вас ничего подобного чёт не увидел.
Сплошные набросы какие-то и неуместная демагогия.


L_argoзы: Слежу за скуль.ру с 2002г. Уровень неимоверно упал.
И вообще форум стремительно теряет аудиторию.

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

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

Это вам так кажется. А до решения и тем более каких-то подробностей в вашем опусе там как до ближайшей звезды пешком.
...
Рейтинг: 0 / 0
Как назвать эту структуру и подход, основанные на EAV?
    #39847760
drynny
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
hVosttL_argoУгу.
Можно просто придти поумничать в стиле "вы фсе тут п*сы".

Ну или можно поклянчить готовые решения, да? :)


L_argoКритикуешь ? ОК. Предложи более правильную альтернативу. Опиши плюсы/минусы.
Не знаешь альтернативы ? Сиди молча.

Я от вас ничего подобного чёт не увидел.
Сплошные набросы какие-то и неуместная демагогия.


L_argoзы: Слежу за скуль.ру с 2002г. Уровень неимоверно упал.
И вообще форум стремительно теряет аудиторию.

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

Что вы пристали к человеку? Он тут ни при чем.

По этой же теме я предоставил описание мат.части и решения , ссылки на доку , демо и песочницу (можно самому пощупать), примеры использования: раз два три , тесты всякие, бенчмарки , интеграции тут с смс, email, hh.ru .

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

На самом деле, что-то достаточно серьезное все равно приходится делать нам, ибо мозг юзера - юзерский, и, как ни странно, юзерских руководств они не читают, а если и читают, то понимают далеко не все.
Добавить поле - это не все, нужно его использовать, например, в системе отчетов. Да, мы в итоге реализовали интерфейс, позволяющий общаться (например, из системы подготовки отчетов) с EAV как с "обычной" СУБД. Т.е., мы через задницу, но пришли к тому, от чего начинали.

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

ёёёёёТ.е., мы через задницу, но пришли к тому, от чего начинали.
Хорошо. К сожалению, большинство любителей застревает на стадии любования своим гениальным велосипедом и к этому не приходит.
...
Рейтинг: 0 / 0
Как назвать эту структуру и подход, основанные на EAV?
    #39847808
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
drynnyПо этой же теме я предоставил описание мат.части и решения , ссылки на доку , демо и песочницу (можно самому пощупать), примеры использования: раз два три , тесты всякие, бенчмарки , интеграции тут с смс, email, hh.ru .

Поможете разобраться с вопросом в начале темы?

Как назвать структуру? Я не уверен, что это название нужно, так как принципиально качественного и нового решения я не увидел. EAV он и в Африке EAV. Как конкретно вы его реализуете с каким набором артефактов и обвесов сути вообще не меняет.

Кроме того, я выразил своё мнение по этому поводу. Считаю EAV откровенным кривым костылём, ущербной методой, обладающей большим количеством недостатков и неудобств на всех уровнях использования. С одним единственным сомнительным преимуществом в виде динамической схемы данных, что уже давно решено специализированными СУБД. Нафига козе баян, тут вообще непонятно. Не нужен и задаром.

Также я указал, что выглядит гораздо интереснее: Event Sourcing. Как оно коррелирует и связано с EAV? Довольно очевидно. Из ES вы можете генерить бесчисленное количество проекций данных под разные задачи, классические таблицы в РСУБД, с которыми приятно, удобно работать решая задачи BI. Это проверено на практике, это работает в огромных энтерпрайз решениях с постоянно изменяющимся бизнесом.

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

Можно предположить, что человека когда-то напугал процесс изменения метаданных "фактически на лету".
Нарвались когда-то на проблемы, и "не справились". Например, в Firebird/Interbase количество изменений структуры ("закоммиченных" изменений) архитектурно для одной таблички ограничено числом 255, а если больше - нужно делать дополнительные телодвижения (backup-restore). Или попали на ограничение записи по размеру. Или вообще не смогли изменить метаданные (прав не хватило, или что-либо еще).
А с EAV - не нужно (почти) знать об особенностях конкретной СУБД. Т.е., вместо того, чтобы разобраться, люди строят велосипед.
...
Рейтинг: 0 / 0
Как назвать эту структуру и подход, основанные на EAV?
    #39847851
L_argo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Считаю EAV откровенным кривым костылём, ущербной методой, обладающей большим количеством недостатков и неудобств на всех уровнях использования. С одним единственным сомнительным преимуществом в виде динамической схемы данных, что уже давно решено специализированными СУБД. Что по вашему не костыль ? Я так и не увидел.

ES ? Это пустые слова. Модный маркетинговый слоган. Как это выглядит технически ? Просмотрел много роликов на эту тему. Одна пустая болтовня ниочем. Одни и те же фразы вдоль и поперек во всех роликах. Даже элементарного примера (для наглядности) никто не приводит.

Специализированные СУБД ? Бгг. Просто ради этой фичи никто не возьмет специализированную СУБД.
В ряде случаев взять "другую СУБД" вообще нереально. Это может быть просто требование бай-дизайн.

ЕАВ одинаково работает на любой СУБД. И запросы практически одинаковые на любой SQL-СУБД. И данные легко достать и проверить простым классическим запросом. И 1в1 передать в другую СУБД.

А вот массово доставать или вставлять данные из/в XML (а почему собственно не JSON ?) то еще удовольствие. И синтаксис наверное разный у разных СУБД. Если вообще таковой есть. Есть в MySQL, FB/IB, SQLite ?

ps: То же МССКЛ выдает ошибку на совершенно нормальный XML.
Просто ему не нравятся некот. теги или форматы данных.
...
Рейтинг: 0 / 0
Как назвать эту структуру и подход, основанные на EAV?
    #39847855
Фотография vadiminfo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ёёёёёsoftwarer...добавление атрибутов, она не зависит от реализации. Я же спрашиваю о ценности именно EAV как одной из возможных реализаций этой фичи...

Можно предположить, что человека когда-то напугал процесс изменения метаданных "фактически на лету".
Нарвались когда-то на проблемы, и "не справились". Например, в Firebird/Interbase количество изменений структуры ("закоммиченных" изменений) архитектурно для одной таблички ограничено числом 255, а если больше - нужно делать дополнительные телодвижения (backup-restore). Или попали на ограничение записи по размеру. Или вообще не смогли изменить метаданные (прав не хватило, или что-либо еще).
А с EAV - не нужно (почти) знать об особенностях конкретной СУБД. Т.е., вместо того, чтобы разобраться, люди строят велосипед.
А можно предположить, что многих пугает кое-что пострашнее. Логика, а не физика.

Например, в РМД в любой РСУБД (а EAV именно в РСУБД) если есть таблица СТУДЕНТ, то чтобы найти что-то про ПЕТРОВА, можно достаточно просто на SQL спросить: выбрать все про студентов с фамилией петров: SELECT * FROM СТУДЕНТ WHERE ФАМИЛИЯ = "ПЕТРОВ". Кроме того, легко декларативно (в свойствах атрибута) ограничить, например, допустимый возраст.
Ведь БД и нужны, чтобы как можно проще извлекать информацию.

И вот стремно, что вместо всего этого, надо будет писать какие-то более сложные запросы или вообще циклы. Т.е. дополнительные ощутимые телодвижения.

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

А вот те, кто давно пришел могут видеть в этом плохо спроектированную БД: чем хуже спроектирована, тем больше требуется программных ухищрений.

А в EAV типа лету может проектировать вообще юзер. Это может еще больше ухудшить БД.
...
Рейтинг: 0 / 0
Как назвать эту структуру и подход, основанные на EAV?
    #39847861
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vadiminfoА вот те, кто давно пришел могут видеть в этом плохо спроектированную БД: чем хуже спроектирована, тем больше требуется программных ухищрений.
Я бы немного развил эту мысль. Многих новичков прёт от собственной крутизны, мерилом которой они полагают величину и сложность программного решения - мол, а я вот эдак могу и ещё вот эдак и ещё кандибобриком. И далеко не до всех доходит, что правильный подход - "Я ещё и не так могу, но для этой задачи этого не нужно, действительная крутизна в том, чтобы решить её легко и просто".
...
Рейтинг: 0 / 0
Как назвать эту структуру и подход, основанные на EAV?
    #39847869
ёёёёё
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vadiminfo...
А можно предположить, что многих пугает кое-что пострашнее. Логика, а не физика.
...
Несколько раз видел, что в качестве преимущества "велосипеда"(очередного варианта ORM, например) указывается "не требуется знание SQL".

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


Тогда бы уместно и не ориентироваться на РСУБД. Ведь система запросов главное, поскольку отвечает за извлечение информации из БД. Т.е. ради чего и создавалась БД.

И есть попытки создать типы СУБД, которые бы вытеснили РСУБД. Вплоть NOSQL СУБД.

А вот EAV как бы - попытка остаться в РСУБД. А значит и с SQL.
...
Рейтинг: 0 / 0
Как назвать эту структуру и подход, основанные на EAV?
    #39847874
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
L_argoES ? Это пустые слова. Модный маркетинговый слоган.

Фигню какую-то говорите, какой ещё маркетинговый слоган? ES это не какой-то продукт, который можно купить или продать.

L_argoПросмотрел много роликов на эту тему. Одна пустая болтовня ниочем. Одни и те же фразы вдоль и поперек во всех роликах. Даже элементарного примера (для наглядности) никто не приводит.

Не знаю про какие ролики вы говорите, я вам их не рекомендовал.

https://martinfowler.com/eaaDev/EventSourcing.html

Хотите реальных примеров, гоу на гитхаб, их там есть.

L_argoСпециализированные СУБД ? Бгг. Просто ради этой фичи никто не возьмет специализированную СУБД.
В ряде случаев взять "другую СУБД" вообще нереально. Это может быть просто требование бай-дизайн.

Вы с какой планеты?

L_argoЕАВ одинаково работает на любой СУБД. И запросы практически одинаковые на любой SQL-СУБД. И данные легко достать и проверить простым классическим запросом. И 1в1 передать в другую СУБД.

Вы эти запросы вообще видели? Планы выполнения смотрели?

L_argoА вот массово доставать или вставлять данные из/в XML (а почему собственно не JSON ?) то еще удовольствие. И синтаксис наверное разный у разных СУБД. Если вообще таковой есть. Есть в MySQL, FB/IB, SQLite ?

Да есть вообще-то. И народ ими не брезгует. Однако для BI лучше нормальные таблицы и/или денормализованные данные, разложенные по табличкам и колонкам. И не только для BI.
...
Рейтинг: 0 / 0
Как назвать эту структуру и подход, основанные на EAV?
    #39847892
Vladimir Baskakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
drynnyВот там выше товарищ вещает про объемы. Какие конкретно объемы убьют это решение? Не EAV, а именно это. Сам EAV неубиваем, и вы можете писать туда столько, сколько вместится на диск. А вот собрать работающее решение – другое дело.

Ранее мне говорили, что 100-200 тысяч записей – предел возможностей законченного решения на основе EAV. 2 млн называли недостижимой планкой. Я сделал прототипы и сервисы и на 4 млн, и на 80, и на 180. Судя по динамике, предела вообще нет. Знаете что отвечали оппоненты? А ничего, затыкались и уходили.

Ваше заявление про «таблицы поверх формата поверх таблиц» – это попытка на лету спроектировать мою систему, с последующим вердиктом, что это (то, что вы сочинили на ходу) работать не может.

Давайте таки придумаем название.

Да не то что совсем убъет. Но если поверх вашего движка лежащего на БД организовать структуру на табличках с джойнами, то очевидно что будут затраты, и заметные, по сравнению с тем же решением на чистом движке БД. То есть, за железо в виде лишних процессоров и памяти, в случае масштабного с большим объемом данных проекта, заплатит покупатель системы. А с учетом того, что разрабатывать вряд ли проще чем на общеизвестном SQL - то и за человекочасы.

Чем сложнее связи между сущностями, тем сильнее вспотеет железка соединяя внешние данные.... ну вроде так....
...
Рейтинг: 0 / 0
Как назвать эту структуру и подход, основанные на EAV?
    #39847900
drynny
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Vladimir BaskakovДа не то что совсем убъет. Но если поверх вашего движка лежащего на БД организовать структуру на табличках с джойнами, то очевидно что будут затраты, и заметные, по сравнению с тем же решением на чистом движке БД. То есть, за железо в виде лишних процессоров и памяти, в случае масштабного с большим объемом данных проекта, заплатит покупатель системы. А с учетом того, что разрабатывать вряд ли проще чем на общеизвестном SQL - то и за человекочасы.

Чем сложнее связи между сущностями, тем сильнее вспотеет железка соединяя внешние данные.... ну вроде так....

А вот практика показывает обратное. Я дал выше ссылки, и там видно нагрузочную способность сервиса на этом решении – 20-30 человек работают одновременно на одноядерном процессоре с 1ГБ оперативной памяти. При этом есть приличный запас по нагрузке: в самый нагруженный час это единственное ядро загружено меньше чем на треть.

На картинке ниже показано количество запросов в минуту, их суммарное и среднее время отработки (в мс)


Про человеко-часы: этот сервис, показанный в ролике , был сделан за 2-3 недели одним человеком.

Насколько сложно это программировать, вы можете посмотреть здесь: habr.com/ru/post/346816/

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

И кстати, если бы я вам не сказал, что под этим всем крутится EAV, вы бы ни за что об этом не догадались :-)
...
Рейтинг: 0 / 0
Как назвать эту структуру и подход, основанные на EAV?
    #39847912
drynny
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Телезрители подсказывают такое название: IdeaV
Мне понравилось название, но оно больше подходит как торговый знак продукта, а не название решения.

hVosttL_argoЕАВ одинаково работает на любой СУБД. И запросы практически одинаковые на любой SQL-СУБД. И данные легко достать и проверить простым классическим запросом. И 1в1 передать в другую СУБД.
Вы эти запросы вообще видели? Планы выполнения смотрели?

А давайте вместе посмотрим (копипаста отсюда ).

Запрос к классической базе:

Код: sql
1.
2.
3.
4.
SELECT author.author, books.name, books.pages, books.year 
FROM books, author 
WHERE author.author LIKE '%aro%' AND books.author=author.id 
LIMIT 1000



Вот его план выполнения:


Этот же запрос в конструкторе IdeaV выглядит так:
Из выпадающего списка мы накликали нужные атрибуты объектов, указали фильтр по автору и задали подсчитать количество записей. Как видите, ни о каких JOIN мы не паримся, потому что ядро IdeaV всё сделает за нас.


Движок IdeaV сгенерирует такой запрос к БД:
Код: sql
1.
2.
3.
4.
5.
6.
7.
SELECT a225.val v1_225,a217.val v2_217,a223.val v3_217,a219.val v4_217
FROM test a225
 LEFT JOIN (test r217 JOIN test a217 USE INDEX (PRIMARY)) ON r217.up=a217.id AND a225.id=r217.t AND a217.t=217
 LEFT JOIN test a223 ON a223.up=a217.id AND a223.t=223
 LEFT JOIN test a219 ON a219.up=a217.id AND a219.t=219
WHERE a225.up!=0 AND a225.t=225 AND a225.val LIKE '%aro%'
LIMIT 1000



Таков будет его план выполнения:


Каждый из запросов вернет по 465 записей, классический запрос выполнится за 193 мс, в IdeaV то же самое выполнилось за 266 мс.
...
Рейтинг: 0 / 0
Как назвать эту структуру и подход, основанные на EAV?
    #39847916
Vladimir Baskakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну работают. И собственно что?
Давайте рассмотрим схему данных, примерную, с примерным количеством записей.
И типовые запросы, которые работают поверх этой схемы данных.

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

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

Кстати, в просто базах запросы можно и иногда нужно хинтовать, выстраивая план выполнения.

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

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

если ваш IdeaV работает быстрее, чем СУБД, над которой она надстроена.

Не планируете ли вы сделать IdeaV надстройку над самой IdeaV?
...
Рейтинг: 0 / 0
Как назвать эту структуру и подход, основанные на EAV?
    #39847969
drynny
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ёёёёёdrynny,

если без "конструктора" жизнь не мила - что мешало его заточить на "классическую" структуру, без eav?
Я знаю много конструкторов на классической структуре: от ЦФТ Банка (я узнал его в 2004 году) до относительно недавно появившегося Бипиума. Если сравнивать с ними и всеми остальными, то моё решение имеет минимальное количество действий для создания и поддержки структуры данных (таблицы, связи, индексы, запросы, ограничения и т.д.).

ёёёёёdrynny,

если ваш IdeaV работает быстрее, чем СУБД, над которой она надстроена.

Не планируете ли вы сделать IdeaV надстройку над самой IdeaV?
Ну, допустим, вы действительно не догоняете о чем речь, и я вам объясню.

Во-первых, я не говорил, что это быстрее в принципе. Грамотно и долго настроенная обычная база в СУБД будет работать быстрее, но это нужно настраивать, следить, думать и сопровождать. Это дорого.

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

ну да, конечно. Если выяснится, что (скажем, неделю назад) физическую табличку грохнул админ - это катастрофа.
А если EAV - сущность грохнул юзер без прав админа - это нормально, можно не обращать внимания.
Так, что ли?
...
Рейтинг: 0 / 0
Как назвать эту структуру и подход, основанные на EAV?
    #39847979
ёёёёё
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
drynny...Грамотно и долго настроенная обычная база в СУБД будет работать быстрее, но это нужно настраивать, следить, думать и сопровождать. Это дорого.

IdeaV устраняет черновую работу админа. Работа эта достаточно простая, но в ней часто делают ошибки от незнания (новички), лени (матёрые разработчики) или невнимательности (все кому не лень). Единожды устранив этот неблагодарный труд, нет необходимости делать это ещё раз.
Может быть, вы просто не знаете, как "классические СУБД" устроены? Кроме select/insert/update/delete, там еще разные объекты есть.

Например: если вы хотите дать "обычному" юзеру возможность создавать таблички, достаточно дать ему (вашему приложению, которым он пользуется) право запускать процедуру, которая обладает такими правами.
Процедуру создаёте, отлаживаете. А потом (!!!) ею можно пользоваться многократно, такие дела. И никаких EAV.
...
Рейтинг: 0 / 0
Как назвать эту структуру и подход, основанные на EAV?
    #39847983
ёёёёё
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
drynny...
Для навигации в этом списке построены 3 упорядоченных указателя – индексы: ID, Entity+Attribute, Attribute+Value
При такой организации данных мы можем работать с базой данных любого размера, не имея проблем с производительностью...

А как вы заливаете "много" данных?

Давайте создадим новую псевдотабличку и зальём в нее данные, много (они же "любого размера").
В "обычной" СУБД такая операция может выполняться с временной дезактивацией индексов.

Вы - частично дезактивируете индекс " Attribute+Value "?
...
Рейтинг: 0 / 0
Как назвать эту структуру и подход, основанные на EAV?
    #39847985
drynny
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Vladimir BaskakovНу работают. И собственно что?
Нужна помощь с названием для подхода, о чём эта ветка и есть.

Vladimir BaskakovДавайте рассмотрим схему данных, примерную, с примерным количеством записей.
И типовые запросы, которые работают поверх этой схемы данных.

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

Вы видели схему для рекрутеров? Вот эту (это только фрагмент схемы данных рекрутерского приложения, о котором ролик в сообщении выше ):


На самом деле схема может быть сколько угодно сложная, тут предела нет. И запросы поддерживают почти всё, что есть в SQL (кроме рекурсии и прочих специфических вещей).
Зарплату тоже приходилось считать, вот так выглядит, например:


Vladimir Baskakovи чуть более сложное чем простое решение может встать колом гораздо раньше, чем на миллионах записей.

Кстати, в просто базах запросы можно и иногда нужно хинтовать, выстраивая план выполнения.
А в этой базе данных нужно соблюдать всего 3 основных правила , и хинтовать не понадобится.

Vladimir Baskakovна каком языке у вас программист общается с наборами данных? ...
Есть построитель запросов, который дает выбрать объекты и их атрибуты (см. картинка в моём ответе выше или подробнее тут ). Конструктор автоматически связывает все таблицы запроса, а также можно их связать вручную принудительно, в более сложных случая.
...
Рейтинг: 0 / 0
Как назвать эту структуру и подход, основанные на EAV?
    #39847988
ёёёёё
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
drynny...
Vladimir Baskakovна каком языке у вас программист общается с наборами данных? ...
Есть построитель запросов, который дает выбрать объекты и их атрибуты (см. картинка в моём ответе выше или подробнее тут ). Конструктор автоматически связывает все таблицы запроса, а также можно их связать вручную принудительно, в более сложных случая.

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

Есть построитель запросов, который дает выбрать объекты и их атрибуты (см. картинка в моём ответе выше или подробнее тут ). Конструктор автоматически связывает все таблицы запроса, а также можно их связать вручную принудительно, в более сложных случая.

Конструктор сам себе задания формирует? Нельзя ли более конкретно.

Например - как работает с вашей структурой подсистема построения отчетов?
...
Рейтинг: 0 / 0
Как назвать эту структуру и подход, основанные на EAV?
    #39847993
drynny
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ёёёёёdrynny...
пропущено...

Есть построитель запросов, который дает выбрать объекты и их атрибуты (см. картинка в моём ответе выше или подробнее тут ). Конструктор автоматически связывает все таблицы запроса, а также можно их связать вручную принудительно, в более сложных случая.

Конструктор сам себе задания формирует? Нельзя ли более конкретно.

Да вот же ссылки прямо в моём сообщении.

И мультики можете посмотреть про систему, которая использует api к конструктору отчетов:

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


Конструктор сам себе задания формирует? Нельзя ли более конкретно.

Да вот же...
То есть, API отсутствует.
...
Рейтинг: 0 / 0
Как назвать эту структуру и подход, основанные на EAV?
    #39847997
ёёёёё
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
https://habr.com/ru/post/346816/#queries

В конструкторе можно "кусочки sql" вставлять, так мило...

...
Рейтинг: 0 / 0
Как назвать эту структуру и подход, основанные на EAV?
    #39848098
Vladimir Baskakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
drynnyVladimir BaskakovНу работают. И собственно что?
Нужна помощь с названием для подхода, о чём эта ветка и есть.

Vladimir BaskakovДавайте рассмотрим схему данных, примерную, с примерным количеством записей.
И типовые запросы, которые работают поверх этой схемы данных.

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

Вы видели схему для рекрутеров? Вот эту (это только фрагмент схемы данных рекрутерского приложения, о котором ролик в сообщении выше ):


На самом деле схема может быть сколько угодно сложная, тут предела нет. И запросы поддерживают почти всё, что есть в SQL (кроме рекурсии и прочих специфических вещей).
Зарплату тоже приходилось считать, вот так выглядит, например:


Vladimir Baskakovи чуть более сложное чем простое решение может встать колом гораздо раньше, чем на миллионах записей.

Кстати, в просто базах запросы можно и иногда нужно хинтовать, выстраивая план выполнения.
А в этой базе данных нужно соблюдать всего 3 основных правила , и хинтовать не понадобится.

Vladimir Baskakovна каком языке у вас программист общается с наборами данных? ...
Есть построитель запросов, который дает выбрать объекты и их атрибуты (см. картинка в моём ответе выше или подробнее тут ). Конструктор автоматически связывает все таблицы запроса, а также можно их связать вручную принудительно, в более сложных случая.

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

А, работу в режиме ввода данных, пообъектно на связанных объектах потянет вполне, тут вопросов нет. Вводи себе и вводи. Опять же проход от корневого, базового объекта ко всем его детализирующим, в режиме интерактивной работы не затормозит

В современный SQL же не зря напихано и аналитических функций, и почти экселя с оракловой клозой model

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

Нет никаких тон нелепых клише.
Есть объективная реальность.
В объективной реальности, разработка ПО востребована как никогда ранее, а все конструкторы с разработкой "без программиста" пошли лесом 20 лет назад, потом сходили лесом 15-10-5 лет назад, и до сих пор идут лесом в том же самом объёме.

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

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

Если вы придумали офигенный конструктор, на котором задачи решаются в 10 раз быстрее и проще, чем при разработке с нуля, то...

Какого фига вы на нём не зарабатываете? НЕ делаете конечных решений? Вы (или другие овер-гениальные разработчики конструкторов) почему-то предлагают людям свой конструктор.

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

Конструктор бесполезен. Ровно настолько, насколько бесполезны книжки, методики и практики "как заработать миллион".
...
Рейтинг: 0 / 0
Как назвать эту структуру и подход, основанные на EAV?
    #39848228
L_argo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttКонструктор бесполезен. Ровно настолько, насколько бесполезны книжки, методики и практики "как заработать миллион". Неужели ? А что же тогда 1С, AX, NAV, SAP, OEBS, JDE, Галактика и сотни других продуктов ?
Разве они не конструкторы ? Их наверно создали идиоты, не читавшие товарища hVosttа ?

Какой толстый троллинг. А еще гением-ментором прикидывается

Для тётки бухгалтерши или манагера конструктор не нужен.
Но он нужен разработчику для супербыстрого решения задач.
Хотя встречаются и манагеры и бухгалтеры, кот. что-то понимают в перечисленных платформах. Чаще всего 1С.

И все эти "бесполезные конструкторы" продаются. Да, у них есть начальное наполнение готовыми наконструированными решениями.
Но покупают их не только потому, что есть готовые наработки, а потому что их можно изучить и доработать под свой вкус.

А вот хардкодные решения (особенно бух) почти вымерли, т.к. даже с хорошей поддержкой не успевают за кастомизациями.
...
Рейтинг: 0 / 0
Как назвать эту структуру и подход, основанные на EAV?
    #39848259
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
L_argoНеужели ? А что же тогда 1С, AX, NAV, SAP, OEBS, JDE, Галактика и сотни других продуктов ?

Это целые платформы, на которых реализованы конечные решения, которые и продаются бизнесу.
Бизнесу никогда не продаётся конструктор. Ни в одном из перечисленных случаев. Ни в одном, подчёркиваю.
Продаются конечные готовые к употреблению решения.

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

L_argoКакой толстый троллинг. А еще гением-ментором прикидывается


Никакого троллинга. Я задаю конкретный вопрос, и никогда не получаю на него ответа.

L_argoНо он нужен разработчику для супербыстрого решения задач.

А то я не знаю, сколько те же 1С "программисты" делаю свои "супербыстрые" решения.
Элементарные задачи для рядового программиста нативных решений, в 1С делают месяцами.
Поэтому не надо тут ля ля )

L_argoИ все эти "бесполезные конструкторы" продаются. Да, у них есть начальное наполнение готовыми наконструированными решениями.
Но покупают их не только потому, что есть готовые наработки, а потому что их можно изучить и доработать под свой вкус.

Сейча уже никто не купит решение, которое не поддаётся кастомизации. Это верно.
Но сама по себе кастомизация не стоит и рваного рубля без основного целевого решения, которое собственно и покупается.

L_argoА вот хардкодные решения (особенно бух) почти вымерли, т.к. даже с хорошей поддержкой не успевают за кастомизациями.

Вы просто не видели средний ценник консалтинга. Особенно того же SAP.
...
Рейтинг: 0 / 0
Как назвать эту структуру и подход, основанные на EAV?
    #39848276
L_argo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Но сама по себе кастомизация не стоит и рваного рубля без основного целевого решения, которое собственно и покупается.Утверждение перевернуто с ног на голову.
Ниодно современное решение не стоит рваного рубля, если в нем невозможна кастомизация, т.е. конструктор.
Готовое решение все равно сделано на базе конструктора... Как ни крути, но сначала нужен конструктор, а потом уже появляется все остальное.

Готовое хардкодное решение либо нишевое (клиент-банк, POS, плат.терминал или что-то заказное), либо малоценное.


Что касается САП-ценника, то я его знаю. Но это уже другая история. САП это золотой бентли. Очень дорого, но комфорт очень специфичен.

И в топике ниразу не шла речь про "конструктор для бухгалтера". Это притянутые за уши выдумки Хвоста. :)
Конструктор жизненно необходим разработчикам готовых решений.
...
Рейтинг: 0 / 0
Как назвать эту структуру и подход, основанные на EAV?
    #39848288
mad_nazgul
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
L_argoНо сама по себе кастомизация не стоит и рваного рубля без основного целевого решения, которое собственно и покупается.Утверждение перевернуто с ног на голову.
Ниодно современное решение не стоит рваного рубля, если в нем невозможна кастомизация, т.е. конструктор.


Не совсем.
Бизнес посовещался и решил, что "микросервисы наше ВСИО"

Сейчас мода на микросеврисы еще не прошла.
Одна из основных фишек "микросервиса", то что его легко "взять и переписать", за разумное время.

Правда потом выяснилось, что среднестатистический программист не умеет в "микросеврисную архитектуру".
Т.е. взять и с нуля правильно разбить приложение на "микросервисы".

Но работа в этом направлении идет.
В частности для систем хранения предлагается "лямбда-архитектура".
Для REST-API - domen driven development.
И прочие страшные слова.


L_argoГотовое решение все равно сделано на базе конструктора... Как ни крути, но сначала нужен конструктор, а потом уже появляется все остальное.


Готовые решение, доводятся до состояния облачных сервисов.
Т.е. вы покупаете жестко определенный функционал, но за очень дешево.
Нужно что-то странное... Платите программистам.

L_argoИ в топике ниразу не шла речь про "конструктор для бухгалтера". Это притянутые за уши выдумки Хвоста. :)
Конструктор жизненно необходим разработчикам готовых решений.

Гугл уже сделал универсальный конструктор готовых решений - go lang ;-)
...
Рейтинг: 0 / 0
Как назвать эту структуру и подход, основанные на EAV?
    #39848293
ёёёёё
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Напомню, что SQL был создан именно для бухгалтеров. Чтобы общаться с базой на нормальном английском языке.
А вы над ними издеваетесь, конструкторы какие-то.
...
Рейтинг: 0 / 0
Как назвать эту структуру и подход, основанные на EAV?
    #39848294
L_argo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не совсем.
Бизнес посовещался и решил, что "микросервисы наше ВСИО"

Сейчас мода на микросеврисы еще не прошла.
Одна из основных фишек "микросервиса", то что его легко "взять и переписать", за разумное время.Для стильных, модных, молодежных с вейпом и гироскутером...

Микросервисы - такой же хайп, как и многое другое.

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

Микросервисы - такой же хайп, как и многое другое.


Хайп это RUSТ/haskel/etc, а "микросервисы" это серьезно.
Т.е. в это вкладывают сейчас много денег.

L_argoБизнесу вообще пофигу. Ему главное, чтобы выполняло задачу.

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

Любое решение так или иначе кастомизируется. ИС это не калькулятор, бизнес меняется, развивается. Конструктором точно также можно считать любую среду разработки.

L_argoИ в топике ниразу не шла речь про "конструктор для бухгалтера". Это притянутые за уши выдумки Хвоста. :)
Конструктор жизненно необходим разработчикам готовых решений.

Чепуха какая-то. Как раз обычно и идёт речь про "конструктор для бухгалтера". В ином случае, почему разработчики этих конструторов сами же его и не используют и не продают конечные решения? Зачем предлагают взять вот эти (обычно) детские лопатку и ведёрко и самому себе всё реализовать?

И вывод напрашивается сам собой.
...
Рейтинг: 0 / 0
Как назвать эту структуру и подход, основанные на EAV?
    #39848403
L_argo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В ином случае, почему разработчики этих конструторов сами же его и не используют и не продают конечные решения? ЯННП. Что значит не продают и не используют ? А что они по вашему делают ? Весь список упомянутых систем это делает.
И мелкие вендоры делают. И даже индивидуальные.
...
Рейтинг: 0 / 0
Как назвать эту структуру и подход, основанные на EAV?
    #39848410
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
L_argoВ ином случае, почему разработчики этих конструторов сами же его и не используют и не продают конечные решения? ЯННП. Что значит не продают и не используют ? А что они по вашему делают ? Весь список упомянутых систем это делает.
И мелкие вендоры делают. И даже индивидуальные.

Я вижу другое.
...
Рейтинг: 0 / 0
Как назвать эту структуру и подход, основанные на EAV?
    #39848467
L_argo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttL_argoпропущено...
ЯННП. Что значит не продают и не используют ? А что они по вашему делают ? Весь список упомянутых систем это делает.
И мелкие вендоры делают. И даже индивидуальные.

Я вижу другое.Что вендоры не продают готовых решений ? 1С не продает ? САП не продает ? :)
Понятно, что их часто нужно допиливать. Но базовая часть есть.

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

Для навигации в этом списке построены 3 упорядоченных указателя – индексы: ID, Entity+Attribute, Attribute+Value
При такой организации данных мы можем работать с базой данных любого размера, не имея проблем с производительностью, свойственных системам, построенным на обычном EAV.

Прошу помочь мне с названием для этой структуры и/или подхода вообще.

habr.com/ru/company/neoflex/blog/433058/
Как это в итоге работает можно посмотреть тут: habr.com/ru/post/414255/
Итак, пока в финале 2 названия:
QDM – Quintet Data Model – уникально идентифицирует подход
IdeaV – содержит ID, EAV, V (пять – квинтет) и в целом выглядит модно

Попутно мы выяснили, что конструктор на QDM работоспособен, а также то, что он интересен не как конструктор, а как построенные на нем решения, на которые в этой теме дано с полдюжины ссылок.
...
Рейтинг: 0 / 0
Как назвать эту структуру и подход, основанные на EAV?
    #39848559
Фотография vadiminfo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
drynnyИтак, пока в финале 2 названия:
QDM – Quintet Data Model – уникально идентифицирует подход

Не слишком ли большое сходство с OMD? И хотя последнюю продвигал ЧАЛ лет N-цать назад, а потом как бы перестал вообще упоминать. Да и сам пока находится в забаненном состоянии на этом ресурсе, но все же.

И хоть и я с трудом вспоминаю ту МД, но в отличии от ООМД, у ЧАЛа нельзя было создавать пользовательские типы объектов. Только объекты предопределенные авторами МД. Обоснование: пользователи ничего хорошего создать не могут, только все испортят.

А у Вас наоброт: EAV, собственно, и нужен, чтобы кажный на лету туда что хотел, то там и создавал.

Т.е. отличие снаружи Q и O, получается не большое. А внутри большая разница: у него все пользователи - тупые, а у Вас все проектировщики от Бога.

Поэтому, возможно, лучше чтобы первая буквы не была похожа O. Вообще лучше чтобы ни на какие известные МД не была похожа..
Например, что-то типа ЩМД (Щит МД), АМД (атомная МД), ЮМД (Юпитер МД).
...
Рейтинг: 0 / 0
Как назвать эту структуру и подход, основанные на EAV?
    #39848619
Mr.Fontaine
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
drynnyИтак, пока в финале 2 названия:
QDM – Quintet Data Model – уникально идентифицирует подход
IdeaV – содержит ID, EAV, V (пять – квинтет) и в целом выглядит модно

Ну в таком случае, естественно должна победить лёгкая и красивая "идея ви", а не аморфный "кьюди эм"
...
Рейтинг: 0 / 0
Как назвать эту структуру и подход, основанные на EAV?
    #39848782
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
L_argoЧто вендоры не продают готовых решений ? 1С не продает ? САП не продает ? :)
Понятно, что их часто нужно допиливать. Но базовая часть есть.

Ну ОК, бро. Нет, так нет.

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

Например, тот же Интеграл
...
Рейтинг: 0 / 0
Как назвать эту структуру и подход, основанные на EAV?
    #39848787
L_argo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttЯ говорю про поделки-конструкторы, которые тут на sql.ru обсуждаютсяПоделки тоже продаются.
И готовые решения на них.
Среди них не все финансово успешные, но тем не менее эта тема не гаснет.
...
Рейтинг: 0 / 0
Как назвать эту структуру и подход, основанные на EAV?
    #39848807
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
L_argo,

Да кто ж против-то?

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

Хоть что-то такое, чего не делали 20 лет назад, потому что унылое велосипедостроение не представляет никакого интереса, ни для бизнеса, ни технически и вообще уже надоело и набило оскомину.

Ну невозможно без слёз смотреть на очередную наивную реализацию MS Access-а, например. Или попытку повторить 1С, на сомнительных, скучных и наивных решениях.
...
Рейтинг: 0 / 0
Как назвать эту структуру и подход, основанные на EAV?
    #39848808
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ключевое тут, устарелое, застарелое. Хочется так и сказать, человек открыл для себя какой-нибудь дельфи, всё -- держись 1С!
...
Рейтинг: 0 / 0
Как назвать эту структуру и подход, основанные на EAV?
    #39848829
Vladimir Baskakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
drynnyMegabyteпропущено...

А тип поля для Value у вас какой выбран?

Концептуально – это байты данных, трактуемые в зависимости от их типа.
В существующих приложениях и сервисах – это текстовое поле, в котором также текстом хранятся числовые значения, в т.ч. datetime.

Данные можно преобразовать к тому виду, в котором они хранятся, чтобы использовать индекс.
Затруднение вызывает только применение индекса к диапазону чисел, потому что у них различается порядок — нельзя ранжировать по первым цифрам, нужно считать всё число.



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

Просто из любопытства - объемы сравнивали? Сколько на мускуле займут объекты, когда таблички уложены по простому, и сколько - когда через квинтеты?

В старые, не помню уж насколько добрые времена занимался я OEBS.
B и там, конечно все было сделано на нормальных таблицах. А для пользовательской гибкости, таблицы объектов дополнялись десятком - другим текстовых полей и полем - тэгом, говорившим о том, как это надо трактовать. это называлось описательным гибким полем - descriptive flex field.

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

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

Самое смешное, что в СУБД сто лет назад придумали колонки с типом, ограничениями, ссылочной целостностью, с оптимизацией хранения, с дескрипшенами и прочим.

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

Самое смешное, что в СУБД сто лет назад придумали колонки с типом, ограничениями, ссылочной целостностью, с оптимизацией хранения, с дескрипшенами и прочим.

Как раз для того, чтобы потом поверх лепили костыли в виде EAV и кривых "квинтетов", чтобы решать проблему с типами полей Пустое замечание. Ниачомъ.

Реши нам простой кейс: товарам (их миллион и они разнородные) нужно добавлять параметры.
Как в интернет-магазине. И фильтровать по этим параметрам.

В двух словах, но по сути. По строчке на вариант.

Вариант 1: все свалить в XML/JSON.
Вариант 2: классический EAV

Итак, мы внимательно слушаем про другие варианты.
...
Рейтинг: 0 / 0
Как назвать эту структуру и подход, основанные на EAV?
    #39848942
petalvik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
L_argoВариант 1: все свалить в XML/JSON.
Вариант 2: классический EAV

Вариант 3: широкая таблица с отдельным столбцом на каждый параметр.
Многие СУБД поддерживают так называемые разреженные столбцы (sparse column), так что место не будет тратиться впустую.
...
Рейтинг: 0 / 0
Как назвать эту структуру и подход, основанные на EAV?
    #39848993
drynny
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
softwarerhVosttСамое смешное, что в СУБД сто лет назад придумали колонки с типом, ограничениями, ссылочной целостностью, с оптимизацией хранения, с дескрипшенами и прочим.
У СУБД есть фатальный недостаток .

СУБД придумали во времена дефицита ресурсов, а далее они больше полувека развивались экстенсивным путем. Таким же путем с брутальной упорностью человечество пыталась сделать однотабличные и прочие конструкторы, сохранив для потомков ярчайшие примеры былинных неудач, как вот этот: https://www.simple-talk.com/opinion/opinion-pieces/bad-carma/ .

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

Просто из любопытства - объемы сравнивали? Сколько на мускуле займут объекты, когда таблички уложены по простому, и сколько - когда через квинтеты?

В старые, не помню уж насколько добрые времена занимался я OEBS.
B и там, конечно все было сделано на нормальных таблицах. А для пользовательской гибкости, таблицы объектов дополнялись десятком - другим текстовых полей и полем - тэгом, говорившим о том, как это надо трактовать. это называлось описательным гибким полем - descriptive flex field.

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

Если юзеры которым внедрено довольны - все хорошо...

Сравнивал объемы. Не поленюсь ещё раз дать ссылку: habr.com/ru/company/neoflex/blog/451218/#volumes

Да тут все читатели и писатели в ветке вспоминают свой опыт с улыбкой скрывающего боль Гарольда, у всех что-то было и кончилось, скажем так, неидеально.

Про карму почитайте, обязательно, я выше дал ссылку. Есть бесконечное количество способов сделать что-то, и не всегда удается прийти к успеху.
...
Рейтинг: 0 / 0
Как назвать эту структуру и подход, основанные на EAV?
    #39849072
L_argo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вариант 3: широкая таблица с отдельным столбцом на каждый параметр.Очень плохой вариант. Типов параметров может быть многие тысячи. Даже не все СУБД умеют создавать такие таблицы. Тем более такой вариант не позволит хранить более одного значения параметра или зависимость параметра от времени. Создание параметров на лету тоже может вызвать большие проблемы.
Не говоря уже о репликации данных.
...
Рейтинг: 0 / 0
Как назвать эту структуру и подход, основанные на EAV?
    #39853244
drynny
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Mr.FontainedrynnyИтак, пока в финале 2 названия:
QDM – Quintet Data Model – уникально идентифицирует подход
IdeaV – содержит ID, EAV, V (пять – квинтет) и в целом выглядит модно

Ну в таком случае, естественно должна победить лёгкая и красивая "идея ви", а не аморфный "кьюди эм"

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

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

Сурьёзно?


L_argoРеши нам простой кейс: товарам (их миллион и они разнородные) нужно добавлять параметры.
Как в интернет-магазине. И фильтровать по этим параметрам.

В двух словах, но по сути. По строчке на вариант.

Вариант 1: все свалить в XML/JSON.
Вариант 2: классический EAV

Итак, мы внимательно слушаем про другие варианты.

Я уже говорил.

CQRS + Event Sourcing + нормальные проекции в SQL с нормальными колонками, типами, ограничениями и полным набором всей целостности, полный фарш в ваши руки. Как нормализованные, так и не нормализованные. Для конкретных больных извращенцев можно даже делать EAV проекции

Никакого убогого УГ в виде EAV и всех его не менее убогих вариаций, который является ни чем иным, как результат ограниченного, импотентного мышления.
...
Рейтинг: 0 / 0
Как назвать эту структуру и подход, основанные на EAV?
    #39854414
ёёёёё
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttCQRS + Event Sourcing + нормальные проекции в SQL с нормальными колонками, типами, ограничениями и полным набором всей целостности, полный фарш в ваши руки.


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

мы на C# писали, знакомые коллеги на Java, другие знакомые коллеги на Go

stenfordвидимо CQRS + Event Sourcing
Когда хочется ввернуть умное слово прочитанное вчера в интернете, то контекст значения не имеет. На своих фрилансерских проектах он видимо так и развлекается - когда в руках молоток, то вокруг одни гвозди

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

мы на C# писали, знакомые коллеги на Java, другие знакомые коллеги на Go

...
С вами все ясно.
...
Рейтинг: 0 / 0
Как назвать эту структуру и подход, основанные на EAV?
    #39854756
Vladimir Baskakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ldfanateВсе эти миллионы товаров наверное могут быть классифицированы по какому либо Общероссийскому классификатору? Т.е. количество категорий товаров - величина конечная. А значит можно спроектировать какоето ограниченное количество реляционных таблиц, .

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

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

Это в каком то смысле будет чтото переходное между идеологией EAV и противоположной ей "пихаем все атрибуты поколоночно в одну гигантскую разреженную таблицу". И скорее всего порождать достаточно дикие планы поисковых запросов. Но всёравно почемуто думается что задача вполне решается классическим реляционным подходом, а не наслоением EAV на глобус.
...
Рейтинг: 0 / 0
Как назвать эту структуру и подход, основанные на EAV?
    #39855440
L_argo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Но всёравно почемуто думается что задача вполне решается классическим реляционным подходом, а не наслоением EAV на глобусА вы не думайте, а реализуйте. Потом нам расскажете об успехах, если таковые будут. Вместе и посмеёмся.
Это будет весело. И не сомневайтесь.
Особенно интересно будет с различными интеграциями и синхронизациями.
...
Рейтинг: 0 / 0
Как назвать эту структуру и подход, основанные на EAV?
    #39855499
drynny
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ldfanate... наслоением EAV на глобус.

Вот вам не дает покоя этот глобус... Хотя мне тоже нравится тот анекдот.

Квинтетная модель сама по себе весьма проста, её можно постичь за 20 минут. Но вам ничего натягивать не нужно, потому что есть конструктор , он всё сделает за вас. Ваша задача: продумать и описать структуру в визуальном конструкторе, а далее соблюдать 3 простых правила при проектировании запросов.

Всё, о чем вы тут так страшно рассуждаете, будучи далеко не в материале, уже давно сделано, протестировано и работает.

Вот, кстати, свежак: habr.com/ru/post/465161
...
Рейтинг: 0 / 0
Как назвать эту структуру и подход, основанные на EAV?
    #39855506
drynny
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
L_argo Но всёравно почемуто думается что задача вполне решается классическим реляционным подходом, а не наслоением EAV на глобусА вы не думайте, а реализуйте. Потом нам расскажете об успехах, если таковые будут. Вместе и посмеёмся.
Это будет весело. И не сомневайтесь.
Особенно интересно будет с различными интеграциями и синхронизациями.

Абсолютно все оппоненты уже пробовали, причем неоднократно. Многие при этом облажались самым жалким образом, поэтому неприемлют возможность преуспеть на поприще EAV: «у меня не получилось» = «это невозможно».
...
Рейтинг: 0 / 0
Как назвать эту структуру и подход, основанные на EAV?
    #39855578
ldfanate
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
L_argo Но всёравно почемуто думается что задача вполне решается классическим реляционным подходом, а не наслоением EAV на глобусА вы не думайте, а реализуйте. Потом нам расскажете об успехах, если таковые будут. Вместе и посмеёмся. Это будет весело. И не сомневайтесь.
Особенно интересно будет с различными интеграциями и синхронизациями.

Ну наблюдал много лет данное решение в ПАО "Газпром" - там номенклатура единого корпоративного справочника МТР куда как ширше, чем у вебмагазинов. И интеграций в части его ведения и использования там немало наворочено, всё прекрасно работает на реляционках.
Ещё лучше (слышал но не видел лично) удался справочник у МТРщиков Росатома, у них тоже номенклатура очень - там даже классификации и атрибуты МТР соотносятся с некой "обобщённой номенклатурой", которую на порталах госзакупок необходимо заявлять, в целях соблюдения требований последних тендерных ФЗ.
...
Рейтинг: 0 / 0
Как назвать эту структуру и подход, основанные на EAV?
    #39855689
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
drynnyВот, кстати, свежак: habr.com/ru/post/465161

Собственно комменты зарешали :)

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



drynnyВсё, о чем вы тут так страшно рассуждаете, будучи далеко не в материале, уже давно сделано, протестировано и работает.

Было очень бы странно, если бы не работало.

На хабре были как-то статьи, как сделать огромную БД с кучей сущностей и атрибутов всего на двух-трёх таблицах. Такой себе экстремальный EAV в вакууме.

И оно тоже работает. И работает вполне себе быстро, на индексах.

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

drynnyо вам ничего натягивать не нужно, потому что есть конструктор , он всё сделает за вас.

Проблема тут в том, что конструктор непонятно зачем в итоге нужен, и ничего он там не сделает за нас, всё равно нужно конструировать. А раз всё равно нужно конструировать, то почему бы не взять широко известные, понятные многим инструменты? При чём инструменты можно взять любые, они все совместимы с SQL, выбранной парадигмой реляционных и/или нереляционных БД. В вашем же случае предлагается прибить себя за яйца ржавыми гвоздями к какой-то поделке, без хоть каких-то видимых преимуществ.

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

"В Интеграле проиндексированы все данные всех таблиц."

а ещё к системе прилагается сотня китайце-индусов на поддержку.

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

Воздушный замок вдоль и поперёк индексированный с на-EAV-который-не-совсем-EAV :)
...
Рейтинг: 0 / 0
Как назвать эту структуру и подход, основанные на EAV?
    #39856131
L_argo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Проблема тут в том, что конструктор непонятно зачем в итоге нужен , и ничего он там не сделает за нас, всё равно нужно конструировать. А раз всё равно нужно конструировать, то почему бы не взять широко известные, понятные многим инструменты?Пустословие. Ну чем компилятор ассемблера или Watcom-С не инструмент ?
Лопата тоже инструмент, который еще бульдозера переживет...

Инструмент инструменту рознь. Можно манипулятором водить в удобной кабине, а можно лопатой махать на жаре.
В обоих случаях используется вполне эффективный инструмент.

Расскажи ка коллега, зачем строчат сотнями ПХП-фреймворки, если есть просто старый-добрый ПХП ?
Можно "ПХП" поменять на "JS". Суть вопроса не поменяется.

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

Т.е. то, что не вписалось в идеальную модель реального мира в майнкрафт
...
Рейтинг: 0 / 0
Как назвать эту структуру и подход, основанные на EAV?
    #39856173
L_argo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SiemarglEAV это отрыжка квадратно-гнездового SQLОчень аргументировано.
Что тогда не отрыжка ?
...
Рейтинг: 0 / 0
Как назвать эту структуру и подход, основанные на EAV?
    #39856174
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SiemarglEAV это отрыжка квадратно-гнездового SQL
EAV - представитель типового семейства "я не понял и не хочу понимать инструмент, поэтому напишу свой наколеночный такой же". Есть такие забавные люди, которые, например, берут Delphi и начинают писать на нём интепретатор кода, конструктор форм, object inspector, иногда даже отладчик, и потом хвастаются - вот, смотрите, как круто, я написал всё как в дельфях.
...
Рейтинг: 0 / 0
Как назвать эту структуру и подход, основанные на EAV?
    #39856178
L_argo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть такие забавные люди, которые, например, берут Delphi и начинают писать на нём интепретатор кода, конструктор форм, object inspector, иногда даже отладчик, и потом хвастаются - вот, смотрите, как круто, я написал всё как в дельфях. А разве не так устроены все ERP системы (и претендующие на них) ?
...
Рейтинг: 0 / 0
Как назвать эту структуру и подход, основанные на EAV?
    #39856181
Vladimir Baskakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ну в конце концов, автор внедрил и оно работает, так что почему бы и да. Но, особо острого желания использовать не возникло пока.
Другое дело, если в будущем автор запилит свой, квинтет ориентированный движок данных, то возможно, это будет круто и модно. а если еще и на своем языке, то вообще няшно. Если там вообще все будет внутри квинтет-ориентированно, как в лиспе - на атомах и диадах, вообще все. А так ну.... есть и есть.
...
Рейтинг: 0 / 0
Как назвать эту структуру и подход, основанные на EAV?
    #39856185
Vladimir Baskakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И, автор сам честно указал на хабре, ожидаемое и предсказуемое

авторКак мы ожидали, работа с небольшими наборами данных, например, по отдельному счету или клиенту, в конструкторе выглядит достаточно комфортно (время отклика в пределах секунды), в отличие от таблицы без индексов, где отклика приходится ждать минутами. В то же время основная задача приложения — массовая выборка и агрегация данных в различных разрезах — может занимать в конструкторе в разы больше времени.
..................................
Для сравнения, те же данные, загруженные в обычную таблицу реляционной базы данных, занимают 2.3 ГБ (в 8 раз меньше) вместе с индексом по дате, а их загрузка длится менее получаса (в 28 раз быстрее). В обоих случаях данные вставлялись напрямую из файла порциями по 100 тысяч записей, без отключения индексов.


== в отличие от таблицы без индексов == стоит проиндексировать таблицу в ==обычной БД== как она о чудо, нормально заработает в контуре системы.
...
Рейтинг: 0 / 0
Как назвать эту структуру и подход, основанные на EAV?
    #39856213
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
L_argoА разве не так устроены все ERP системы (и претендующие на них) ?

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

Кроме того, стоит помнить, что бездумное копирование того, как что-то устроено, называется карго-культ и приводит примерно к тем же результатам.
...
Рейтинг: 0 / 0
Как назвать эту структуру и подход, основанные на EAV?
    #39856225
L_argo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttL_argoА разве не так устроены все ERP системы (и претендующие на них) ?

Проблема в категорическом и упёртом непонимании конечной бизнес-ценности.+1. Коллега Хвостт её так и не понял.

Нет. Не так.Во многих ERP-системах (к термину не придираемся. Это просто класс задач, а не богатство прикладного решения) есть что-то наподобие инспектора свойств. У той же 1С, Nav, AX и пр.

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

L_argoМощные они или не очень - не суть.
Для класса задач ERP названные Вами "внутренний язык разработки", "отладчик" и т. п. как таковые не требуются. Если Вы удосужитесь нагуглить список функций - а что, собственно, должна уметь система, чтобы называться ERP - там не будет ни одной задачи, для решения которой необходимы такие модули. Эти модули - одно из возможных решений совсем другой задачи, которая к ERP как таковым отношения не имеет. Кроме того, стоит иметь в виду, что это решение было практически необходимым эдак в 95-м году, но бездумно повторять его сегодня - примерно то же, что в 95-м году стартовать ERP на решениях уровня 1970-го.

Я не раз и не два видел нетленки, которые в том или ином тихом болоте пилят один-два-три неграмотных разработчика. И именно от них часто звучит "а вот ERP" - они уверены, что в самом деле делают ERP, "а вот SAP" - они уверены, что делают не хуже - и т. п. Карго-культ в чистом виде.
...
Рейтинг: 0 / 0
Как назвать эту структуру и подход, основанные на EAV?
    #39856249
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarerбыло практически необходимым эдак в 95-м году
Поясню: "практически необходимым" для систем уровня того же SAP. В его необходимости для нетленки Васи Пупкина из холдинга "Три ларька" есть, деликатно говоря, обоснованные сомнения.
...
Рейтинг: 0 / 0
Как назвать эту структуру и подход, основанные на EAV?
    #39856287
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
L_argohVosttПроблема в категорическом и упёртом непонимании конечной бизнес-ценности.+1. Коллега Хвостт её так и не понял.

А её нету. Пользы от квинтетов и еав бизнесу как от гомна на лопате :)
Какой-то наколеночный конструктор, никому неизвестный, с абсолютно пустым рынком спецов и отсутствием перспектив его наработать -- не надо и забесплатно.
Перспектива "пользователь лабает модели данных в конструкторе", где этим пользователем представляется сам бизнес -- это как свалить перед офисом кучу кирпичей и мешков с цементов -- на мужик, сам строй, всё очень удобно, обещаем!
...
Рейтинг: 0 / 0
Как назвать эту структуру и подход, основанные на EAV?
    #39856293
L_argo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarerДля класса задач ERP названные Вами "внутренний язык разработки", "отладчик" и т. п. как таковые не требуются. Если Вы удосужитесь нагуглить список функций - а что, собственно, должна уметь система, чтобы называться ERP - там не будет ни одной задачи, для решения которой необходимы такие модули. Эти модули - одно из возможных решений совсем другой задачи, которая к ERP как таковым отношения не имеет. Кроме того, стоит иметь в виду, что это решение было практически необходимым эдак в 95-м году, но бездумно повторять его сегодня - примерно то же, что в 95-м году стартовать ERP на решениях уровня 1970-го. Тогда вообще непонятно, что требуется. Пилить кастомный хардкод одновременно на 3-4 Студиях ??? Вот это и есть 70-е.

Любая более-менее приличная ERP должна иметь внутри себя самодостаточную среду разработки.
И все они имеют. Те, кто не имел - давно на кладбище.

Какая из ERP- систем, как решение для бизнес приложений, соответствует Вашему виденью настоящей ERP ? Аж интересно.
...
Рейтинг: 0 / 0
Как назвать эту структуру и подход, основанные на EAV?
    #39856301
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
L_argoЛюбая более-менее приличная ERP должна иметь внутри себя самодостаточную среду разработки.
И все они имеют. Те, кто не имел - давно на кладбище.

Самодостаточная среда разработки в ERP не представляет никакого интереса.
Она представляет интерес для вендора, чтобы быстрее создавать и поставлять решения.

Если вендор говорит, вот вам крутая лопата -- копайте дальше сами, то вендор со своей лопатой идёт лесом безоговорочно и копает себе сколько угодно самую глубокую и удобную могилу.
...
Рейтинг: 0 / 0
Как назвать эту структуру и подход, основанные на EAV?
    #39856347
L_argo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Самодостаточная среда разработки в ERP не представляет никакого интереса.
Она представляет интерес для вендора, чтобы быстрее создавать и поставлять решения.Ппц.. Опять по кругу одно и то же....
Без СР ниодна ERP не стоит ломаного гроша. Исключение - специализированные решения, н-р для HORECA встречаются хардкодными.

Без готовых наработок ценность СР невелика, но при этом далеко не нулевая.

Мне известны многочисленные случаи написанных решений с нуля (1С). Транспорт, Финансы и пр.
У САП есть отдельная голая СР: miniSAP.
...
Рейтинг: 0 / 0
Как назвать эту структуру и подход, основанные на EAV?
    #39856348
Vladimir Baskakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
L_argoЛюбая более-менее приличная ERP должна
Поддерживаться сообществом из вендора и кастомизаторов, на разный вкус и кошелек. А как эти консалтеры будут мучиться или быть счастливы, адаптируя решение, то волнует заказчика, как сытость крестьян прогуливающегося по Фонтебло короля Луи.

А вот, какое железо нужно под решение - поставщика решения волнует, чем дешевле жестянка тем больше денег себе. и потому вопрос, сколько квинтеты проигрывают чистой базе на агрегировании, это вопрос чувствительный (дилетантская имха)
...
Рейтинг: 0 / 0
Как назвать эту структуру и подход, основанные на EAV?
    #39856351
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
L_argoБез СР ниодна ERP не стоит ломаного гроша.
Это не значит, что СР нужно разрабатывать с нуля, на детсадовском уровне и заведомо безнадёжно уступающей конкурентам. Тем более это не значит, что невнятная поделка с детсадовской СР будет стоить хотя бы ломаный грош.
...
Рейтинг: 0 / 0
Как назвать эту структуру и подход, основанные на EAV?
    #39856360
L_argo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Это не значит, что СР нужно разрабатывать с нуля, на детсадовском уровне и заведомо безнадёжно уступающей конкурентам. Тем более это не значит, что невнятная поделка с детсадовской СР будет стоить хотя бы ломаный грош. Смотря какие критерии уступания.
Если лопата или мотоблок уступают экскаватору это не значит, что продажи лопат и мотоблоков = 0.

Есть примеры успешных систем с СР, написанных поначалу именно на коленке. Это нифига не рокетсайнс.
И решения на их основе вполне себе успешно продаются.

Могу перечислить, но не буду. Не хочу рекламы.
...
Рейтинг: 0 / 0
Как назвать эту структуру и подход, основанные на EAV?
    #39856365
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
L_argoЕсть примеры успешных систем с СР, написанных поначалу именно на коленке.
И так и оставшихся именно на коленке. Лет двадцать назад меня звали писать компилятор для 1С - до сих пор рад, что отказался. А дальше всё просто. Если Вы пишете "убийцу SAP" - озвучьте, пожалуйста, бюджет проекта в миллиардах рублей. Если же нет - не надо рассказывать, что проект велосипеда построен на отбрасываемых ступенях с реактивными двигателями, поскольку в космос летают именно на них.
...
Рейтинг: 0 / 0
Как назвать эту структуру и подход, основанные на EAV?
    #39856392
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
L_argoЕсть примеры успешных систем с СР, написанных поначалу именно на коленке. Это нифига не рокетсайнс.
И решения на их основе вполне себе успешно продаются.



Это итак-то смешно, так как уровень прыщавого бреда.
А когда в теме, ещё в десять раз смешнее :)
...
Рейтинг: 0 / 0
Как назвать эту структуру и подход, основанные на EAV?
    #39856403
L_argo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttЭто итак-то смешно, так как уровень прыщавого бреда.
А когда в теме, ещё в десять раз смешнее :)Уверенная позиция в Gartner тоже прыщавый бред ?

Вы тупее, чем я думал.
...
Рейтинг: 0 / 0
Как назвать эту структуру и подход, основанные на EAV?
    #39856498
Vladimir Baskakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
L_argohVosttЭто итак-то смешно, так как уровень прыщавого бреда.
А когда в теме, ещё в десять раз смешнее :)Уверенная позиция в Gartner тоже прыщавый бред ?

Вы тупее, чем я думал.
А можно пример, сего?
...
Рейтинг: 0 / 0
Как назвать эту структуру и подход, основанные на EAV?
    #39856520
drynny
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
hVosttНо надо головой сильно удариться, чтобы подобное использовать на проде.
hVosttПроблема тут в том, что конструктор непонятно зачем в итоге нужен, и ничего он там не сделает за нас, всё равно нужно конструировать. А раз всё равно нужно конструировать, то почему бы не взять широко известные, понятные многим инструменты? При чём инструменты можно взять любые, они все совместимы с SQL, выбранной парадигмой реляционных и/или нереляционных БД. В вашем же случае предлагается прибить себя за яйца ржавыми гвоздями к какой-то поделке, без хоть каких-то видимых преимуществ.

:)
hVosttПользы от квинтетов и еав бизнесу как от гомна на лопате :)
Какой-то наколеночный конструктор, никому неизвестный, с абсолютно пустым рынком спецов и отсутствием перспектив его наработать -- не надо и забесплатно.
Перспектива "пользователь лабает модели данных в конструкторе", где этим пользователем представляется сам бизнес -- это как свалить перед офисом кучу кирпичей и мешков с цементов -- на мужик, сам строй, всё очень удобно, обещаем!
Вам привели аргументы, ссылки на конкретные описания, тесты, замеры, работающие сервисы.
Где ваши аргументы? Не в виде летящих абстрактных какашек с нелепыми аллегориями, а нормальные доводы?

Например, покажите, что вы хоть сколько-нибудь понимаете о чем тут речь, ответьте: какая нормальная форма используется в этом решении?
...
Рейтинг: 0 / 0
Как назвать эту структуру и подход, основанные на EAV?
    #39856523
drynny
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Vladimir Baskakovну в конце концов, автор внедрил и оно работает, так что почему бы и да. Но, особо острого желания использовать не возникло пока.
Другое дело, если в будущем автор запилит свой, квинтет ориентированный движок данных , то возможно, это будет круто и модно. а если еще и на своем языке, то вообще няшно. Если там вообще все будет внутри квинтет-ориентированно, как в лиспе - на атомах и диадах, вообще все. А так ну.... есть и есть.
Я иду к этому, и реализация движка достаточно проста.
...
Рейтинг: 0 / 0
Как назвать эту структуру и подход, основанные на EAV?
    #39856607
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
L_argoУверенная позиция в Gartner тоже прыщавый бред ?

в огороде бузина, а в киеве дядька


L_argoВы тупее, чем я думал.

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

Подкину дровишек в топку.
EAV (и подобное) поверх реляционной СУБД реализовывать, как тут и сказали, действительно идея плохая. Как минимум потому, что накладные расходы на реализацию EAV идут поверх расходов на реляционность (а они большие, в угоду универсальности).

А вот поверх иерархической БД - милое дело, почти идеально. Смотрим mumps, gtm и им подобные вот в этой ветке форума

Только про язык MUMPS забыть как страшный сон, а прикрутить что то современное.
...
Рейтинг: 0 / 0
Как назвать эту структуру и подход, основанные на EAV?
    #39856620
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
drynnyВам привели аргументы, ссылки на конкретные описания, тесты, замеры, работающие сервисы.
Где ваши аргументы? Не в виде летящих абстрактных какашек с нелепыми аллегориями, а нормальные доводы?

Доводы простые, я их уже приводил. Так как вы их не нашли, судя по всему вам не очень-то интересно.

1. С нормальной нормализованной БД работать может любой разработчик, аналитик, BI-щик и другие заинтересованные лица.
2. Нормальные таблицы хранят данные по колонкам с соответствующими типами, ограничениями, поддержкой целостности со стороны БД, это всё работает максимально быстро, оптимально, компактно, так как это заложено в самой природе СУБД.
3. В вашем случае более менее приемлемая производительность вытягивается индексами, в то время как те же индексы в нормальных таблицах, особенно если правильно расставлены, работать будут намного быстрее ваших костылей.
4. Как следствие, покрытие всё 100% индексами, ожидаемый результат архитектуры на костылях

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


drynnyНапример, покажите, что вы хоть сколько-нибудь понимаете о чем тут речь, ответьте: какая нормальная форма используется в этом решении?

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

и должен добавить. в тему, у меня есть в активе разработка и внедрение систем, основанных на конструкторе.
да, всё верно. с мета-моделью (макро-типы, инфо-типы, домены, ссылки...), динамическая, можно даже мышкой "сверстать" бизнес модель данных. всё это мы делали. и всё это интегрировано и работает.

при этом все данные хранятся в нормализованных таблицах, идеально нормализованных, идеально разложенных по колонкам, FK связями, ограничениями, правильными индексами где они нужны, с аннотациями и прочим-прочим. и всё это поддерживается системой.

рай для BI-щика. плюс к этому полноценные DSL для программирования бизнес-логики на самом высоком уровне (не требуются квалифицированные программисты) в терминах бизнеса. чистый DDD.

и всё это на CQRS, Event Sourcing.

никакого уродливого кривого EAV нам для этого не понадобилось. нет его даже в зачатках.

про конструктор. его особо не афишировали, и в планах продавать его нет и не было. почему? потому что это инструмент для зарабатывания денег. он хорош и он работает, зачем его отдавать кому-то налево? бизнесу нужны конечные решения, и он их получает дешёво, быстро, оперативно.

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

читайте выше. ничего сложного в этом нет. мета-данные можно хранить и управлять ими отдельно, у меня никаких претензий к этому нет, это нормальная и правильная практика.

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

никакого уродливого кривого EAV нам для этого не понадобилось. нет его даже в зачатках.
....
На первый взгляд выглядит еще страшнее.

Как решена задача - в программе получить объект (отчет, сущность) в версии структуры, которая была скажем 10 итераций изменений структуры ранее ?

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

подсказываю...

1. Event Sourcing -- вы можете вообще получить систему в идеальном состоянии на любой момент времени её существования без лишних артефактов.

2. Event Sourcing -- вы делаете сколько угодно проекций под разные задачи. идеально строго нормализованная структура БД -- это лишь одна из авто-проекций.

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

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

подсказываю...

1. Event Sourcing -- вы можете вообще получить систему в идеальном состоянии на любой момент времени её существования без лишних артефактов.

2. Event Sourcing -- вы делаете сколько угодно проекций под разные задачи. идеально строго нормализованная структура БД -- это лишь одна из авто-проекций.

бизнесу часто требуются денормализованные данные. отдельные микросервисы могут создавать и вести свои проекции без зависимости от общих изменений модели данных.
Т.е в любом запросе должна быть указан номер/версия [автосгенерированной] проекции. Или сгенерирован мискросервис нужной версии.

Честно говоря, выглядит хрен редьки не слаще
...
Рейтинг: 0 / 0
Как назвать эту структуру и подход, основанные на EAV?
    #39856689
drynny
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
SiemarglhVosttпропущено...


подсказываю...

1. Event Sourcing -- вы можете вообще получить систему в идеальном состоянии на любой момент времени её существования без лишних артефактов.

2. Event Sourcing -- вы делаете сколько угодно проекций под разные задачи. идеально строго нормализованная структура БД -- это лишь одна из авто-проекций.

бизнесу часто требуются денормализованные данные. отдельные микросервисы могут создавать и вести свои проекции без зависимости от общих изменений модели данных.
Т.е в любом запросе должна быть указан номер/версия [автосгенерированной] проекции. Или сгенерирован мискросервис нужной версии.

Честно говоря, выглядит хрен редьки не слаще

Выглядит таким же лютым кабздецом как вот тут в соседней ветке коллега выкладывал: sql.ru/forum/1234375-3/programmirovanie-bd-otchetov-i-zaprosov-bez-programmirovaniya#19943752

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

Никакая. Но вы конечно можете думать иначе.

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

это сложнее. поэтому многие и не лезут дальше, чем могут осилить -- еавЯ тут пример придумал.

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

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

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

Как это на практике будет выглядеть на CQRS, Event Sourcing ?
...
Рейтинг: 0 / 0
Как назвать эту структуру и подход, основанные на EAV?
    #39856706
Siemargl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarerdrynnyДанные в таблице по-любому в какой-то нормальной форме.
Да ну правда что ли? Да. Хотя бы в 1НФ
...
Рейтинг: 0 / 0
Как назвать эту структуру и подход, основанные на EAV?
    #39856709
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SiemarglДа. Хотя бы в 1НФ
(открыл блокнотик и приготовился записывать всех, кто не умеет создать таблицу, нарушающую 1НФ)
...
Рейтинг: 0 / 0
Как назвать эту структуру и подход, основанные на EAV?
    #39856712
drynny
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
softwarerdrynnyДанные в таблице по-любому в какой-то нормальной форме.
Да ну правда что ли?
Так, один пионер немедленно спалился.

Сейчас ещё хвост придет с рассказом, как записывал в одну ячейку экселя номера объектов через запятую, разрывая шаблоны нормальных форм.
...
Рейтинг: 0 / 0
Как назвать эту структуру и подход, основанные на EAV?
    #39856715
L_argo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Приходит Нач.кадров и говорить - а скажите мне среднюю Иванова за последние 10 лет!

Как это на практике будет выглядеть на CQRS, Event Sourcing ? Сейчас Хвостт "ответит уклончиво" (с)
...
Рейтинг: 0 / 0
Как назвать эту структуру и подход, основанные на EAV?
    #39856718
ёёёёё
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SiemarglhVosttпропущено...


это сложнее. поэтому многие и не лезут дальше, чем могут осилить -- еавЯ тут пример придумал.

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

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

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

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

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

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

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

Как это на практике будет выглядеть на CQRS, Event Sourcing ?
Кусочечно. :)
Вычисляется средняя для каждого подпериода стабильности структуры. Потом вычисляется за весь период.А если в базе овер 1000 версий структуры? Однозначно же сказать, что затронуто каждым изменением и влияет ли это на результат - слишком сложно.

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

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

Да ну правда что ли?
Да. Хотя бы в 1НФ

Ну ппц..
...
Рейтинг: 0 / 0
Как назвать эту структуру и подход, основанные на EAV?
    #39856778
ёёёёё
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Siemargl...Подожду ответа практика.
Сомневаюсь, что дождешься. Пока ничего конкретного от него не было.
...
Рейтинг: 0 / 0
Как назвать эту структуру и подход, основанные на 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
Как назвать эту структуру и подход, основанные на EAV?
    #39856948
L_argo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Накой 200-300 свойств стиралке?Это был пример.
Возьмите мобильный в любом инт.магазе. Список опций и оборудования будет ок. сотни строк. У стиралки - полсотни.

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

Естественно. Связи, индексы, ограничения, аннотации, всё создаётся. Права это совершенно другая история. И проекции они всегда только на чтение, без исключений.

SiemarglИ нормальная БД с космической кармой будет только после прогона 100% тестового покрытия, что БЛогика не поломалась от изменений. А блекаут - хуже всего. Даже перегенерить базу из ES на несколько TB будет просто местами невозможно - бизнес неделю ждать не будет.

Бизнес-логики в БД нет. Проекции только для чтения. При использовании DDD/CQRS логика в командах, и она работает с агрегатами, обращаясь к проекциям только для чтения всяких сводных данных.

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

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

И т.д. Разделяй и властвуй.

SiemarglОК, чем ES лучше чем ESB? Или классической схемы - поменяли, подгрузили....

ES это данные, история изменения всех данных вообще. А ESB это архитектура коммуникации. Поэтому их нельзя сравнивать. Вы можете и то и другое использовать.


SiemarglА микросервисы - отдельная тема. Отрыжка теоретического ФП, которые на практике (а не на бумаге) в затратах стоят дороже выгоды.
Только если придумать идеальный фиксированный интерфейс обмена......Иначе N^2-N

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

Это совершенно другой подход к разработке ПО.

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

Вы не добавляете "поле" строго говоря. Вы изменяете мета-модель, добавляете в бизнес-сущность характеристику, связь, поведение и т.д. Появление поля в БД это детали реализации, не суть и не самоцель. Но решает многое.

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

Да не вопрос. Если вдруг для какой-то конкретной приложения стал удобен именно EAV-подход, например, атрибуты товаров не несут никакой бизнес-логической нагрузки кроме поиска/фильтрации, можно вообще вести проекцию для таких сущностей в ElasticSearch, а не в РСУБД -- нафига они там? Собственно, вы даже можете сделать EAV-проекцию.

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

Здесь вам удобно 4нф, а здесь сотни атрибутов для поиска, положу их в поисковое NoSQL хранилище, здесь требуется денормализация, а здесь историчность...

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

Пояснил выше.
...
Рейтинг: 0 / 0
Как назвать эту структуру и подход, основанные на EAV?
    #39857075
L_argo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttL_argoНе суть. В крупном универсальном магазе список свойств товаров будет десятки тыщ. Если не сотни.
Интересно было бы посмотреть на этот кошмар из проекций и новых полей и таблиц.Пояснил выше.Пояснение было уклончивым. Проекции, события, "пояснил выше" - это не ответ.

Как это будет выглядеть в реале ? Тысячи таблиц и полей ? Возможную связь между свойствами считаем некритичной.

ПЫСЫ: Все равно разумное решение будет одной из разновидностей ЕАВ. Просто ему дадут более заумное название. :)
...
Рейтинг: 0 / 0
Как назвать эту структуру и подход, основанные на EAV?
    #39857091
iOracleDev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ldfanateКто будет теми 200-300 свойствами практически пользоваться, и главное зачем?
Гы гы, у меня знакомый думает автомобиль менять, ни за что не догадаешься по какому критерию он его выбирает, многие менеджеры вообще не знают есть ли это на тех моделях которые они продают))
...
Рейтинг: 0 / 0
Как назвать эту структуру и подход, основанные на EAV?
    #39857095
iOracleDev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttЭто совершенно другой подход к разработке ПО.

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

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

Или в вашей реальности десяток таблиц и десяток полей -- предел, который вы вообще видели? :)

L_argoПЫСЫ: Все равно разумное решение будет одной из разновидностей ЕАВ. Просто ему дадут более заумное название. :)

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

Если вы выбрали принцип динамического моделирования, то высшую бизнес-логику вам придётся тоже выносить в динамику. Всё становится сложнее в разработке на порядки, чудес не бывает, говорил уже.
Сложность на порядки выше, значит и поддержка на порядки сложнее и что то мне подсказывает с производительностью будут ооочень большие проблемы, так куда это можно прикладывать?

Сложность разработки подобной системы. Разработав её, вы получаете профит в чистом виде.
Но вот это сложность на старте и пугает многих.

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

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

Как раз об этом я и писал, в этом суть и соль.
С производительностью проблем нет, так как данные хранятся максимально эффективно.
Плюс, есть возможность вести любые проекции под задачи, в том числе денормализованные, что является просто вышкой с точки зрения производительности, быстрее уже некуда для РСУБД, когда данные у вас разложены в табличках и по типизированным колонкам с правильными индексами.
...
Рейтинг: 0 / 0
Как назвать эту структуру и подход, основанные на EAV?
    #39857130
L_argo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Слушай, в реальном проекте тысячи таблиц и у некоторых сотни полей. СУБД собственно и создано, чтобы эту задачу решать и решать её эффективно. Если уж на то пошло, не знаю чего вас тут смущает или пугает.В данном случае речь только про Товар и его свойства. Это большой проект ? Нет.

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

Продолжаете отвечать уклончиво.

Вообще не понимаю про что вы говорите, чё вы хотите, вопрос можете конкретный задать?
...
Рейтинг: 0 / 0
Как назвать эту структуру и подход, основанные на EAV?
    #39857170
L_argo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttВообще не понимаю про что вы говорите, чё вы хотите, вопрос можете конкретный задать?Вопрос все тот же: как это выглядит физически ? Товаров сотни тыщ. Видов характеристик товара десятки тыщ. Интересует хранение характеристик. Новые должны добавляться сразу, т.е. в бизнес-время. Никаких технологических окон.
...
Рейтинг: 0 / 0
Как назвать эту структуру и подход, основанные на EAV?
    #39857180
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
L_argohVosttВообще не понимаю про что вы говорите, чё вы хотите, вопрос можете конкретный задать?Вопрос все тот же: как это выглядит физически ? Товаров сотни тыщ. Видов характеристик товара десятки тыщ. Интересует хранение характеристик. Новые должны добавляться сразу, т.е. в бизнес-время. Никаких технологических окон.

Вы заставляете меня повторяться, что означает одно из двух: вам либо пофигу на ответ, либо у вас проблемы усвоением информации.

Всё зависит от задач.

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

Бизнес-логика реализована на DSL, на некотором количестве концепций (workflow, бизнес-задачи, бизнес-обработчики...).

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

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

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

Слишком красиво в теории, нужно видеть на практике, судя по тому что такой подход не распространен, там есть большие проблемы.

Проблемы безусловно есть, но они не связаны непосредственно с самим подходом.
Методология DDD + CQRS + Event Sourcing довольно широко применяется.
Но в связке с динамикой не часто, так как это отдельный класс решений, и далеко не под все задачи подходит. Основной кейс применения это enterprise, с большим количеством справочников, реестров, процессов, постоянно изменчивые бизнес-процессы.
...
Рейтинг: 0 / 0
Как назвать эту структуру и подход, основанные на EAV?
    #39857312
L_argo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttЕсли у вас характеристик у одной сущности "десятки тысяч", что означает, что вы тупо натягиваете слона на уши в своих утвержденияхЗачем так грубо передергивать ? Речь о списке всех возможных характеристик всех товаров.
Не обязательно все они одновременно присутствуют у конкретного товара.

Набор х-к может быть произвольный для каждой карточки товара. Что тут не ясно ?

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

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

Хера се, "передёргивать". Покажите хотя бы один пример, где есть тысяча атрибутов у сущности, не говоря уж о десятках тысяч.

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


L_argoНабор х-к может быть произвольный для каждой карточки товара. Что тут не ясно ?

Я уже сказал, по количеству атрибутов мы упираемся только в ограничения РСУБД на количество колонок, если говорить о авто-генерации 4НФ проекции. В MS SQL там предельное ограничение до 30 тыс. колонок.

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

И микроскопом можно себе ногу сломать, зачем вот эти тупые набросы, оторванные от реальности?


L_argoГде нибудь может храниться список допустимых комбинаций (чтобы не было мегапикселов у чайника и литров у мобилки). Но это несущественно.

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

Примеры коммерческих продуктов для энтрерпрайза есть?

Есть реальные внедрения на федеральном уровне, в разработке которых я принимал основное участие. А как коммерческий продукт не продаётся и не выпускается, в этом нет смысла.

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

Федеральный уровень не внушает доверия, на федеральном уровне пилятся бюджеты, коммерческий успех уже показатель. Пока больше похоже на секту, у нас есть сверхсекретная божественная штука, но покажем мы ее только самым преданным адептам.
...
Рейтинг: 0 / 0
Как назвать эту структуру и подход, основанные на EAV?
    #39857594
L_argo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttЯ уже сказал, по количеству атрибутов мы упираемся только в ограничения РСУБД на количество колонок, если говорить о авто-генерации 4НФ проекции. В MS SQL там предельное ограничение до 30 тыс. колонок.Для Firebird это неск. тыс. колонок, для MySQL аж 4096. Всего то. Учитывая, что это будет ну очень сильно разреженная таблица с минимумом индексов, производительность и прожорливость места будет унылой.
А вопрос репликации такой БД вообще, обойдён стороной.

И вообще. Если в таблице более 200 колонок, это повод сильно сомневаться во вменяемости разработчиков.

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

Кажется за флеймом выплеснули и суть.

Предложено 3 варианта, со своими +-.

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

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

Федеральный уровень не внушает доверия, на федеральном уровне пилятся бюджеты, коммерческий успех уже показатель. Пока больше похоже на секту, у нас есть сверхсекретная божественная штука, но покажем мы ее только самым преданным адептам.

Ок, я вам ничего и не продаю.
Ничего божественного тут нет, если для вас ES это что-то божественное, то у меня для вас плохие новости.
...
Рейтинг: 0 / 0
Как назвать эту структуру и подход, основанные на EAV?
    #39857638
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
L_argoДля Firebird это неск. тыс. колонок, для MySQL аж 4096. Всего то. Учитывая, что это будет ну очень сильно разреженная таблица с минимумом индексов, производительность и прожорливость места будет унылой.
А вопрос репликации такой БД вообще, обойдён стороной.

Давайте сначала отыщем задачу, где хотя бы 500 характеристик у одной сущности будет?
О волшебных конях в вакууме из чье-то больной фантазии разговаривать неинтересно.

L_argoИ вообще. Если в таблице более 200 колонок, это повод сильно сомневаться во вменяемости разработчиков.

Это вопрос вообще не в таблице.

L_argoИногда это внешнее требование, через которое нельзя переступить.

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

Могут, но получается не так хорошо, как хотелось бы.
В частности имел печальный опыт с MS SQL.
Он может хранить json и даже запросы по ним делать.
Но план запроса "ужас, ужас".
ИМХО лучше, все таки положить данные в плоскую таблицу, чем огрести проблемы с JSON.
...
Рейтинг: 0 / 0
Как назвать эту структуру и подход, основанные на EAV?
    #39857715
L_argo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Давайте сначала отыщем задачу, где хотя бы 500 характеристик у одной сущности будет?Это тролинг такой ?
Товары любого интернет-магазина. Н-р бытовая электроника. Даже в одной их категории может быть совокупно 100-200 характеристик. А категорий может быть неск. сотен.
По ключевым характеристикам на сайте есть фильтры.
Возьмите инфу по недвижимости. Там многие сотни х-к.
А еще есть запчасти, техн. оборудование, одежда и т.д.

Практически нет баз, где таких х-к мало. Их или много или очень много.

Почему нужно разжевывать такие простые вещи ?
...
Рейтинг: 0 / 0
Как назвать эту структуру и подход, основанные на EAV?
    #39857719
Vladimir Baskakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
L_argohVosttВообще не понимаю про что вы говорите, чё вы хотите, вопрос можете конкретный задать?Вопрос все тот же: как это выглядит физически ? Товаров сотни тыщ. Видов характеристик товара десятки тыщ. Интересует хранение характеристик. Новые должны добавляться сразу, т.е. в бизнес-время. Никаких технологических окон.

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

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

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

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

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

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

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

Вот как это делается в IdeaV:



Not null – это атрибут описания термина (в данном случае Телефон), и его поведение знает ядро, которое всё это собирает и обрабатывает.

А теперь зададим значение по умолчанию:




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

Особенно доставляет наличие вот этого: «Подсистема проекций ловит такое событие с создаёт колонку»
«Без ядреных костылей», ага
...
Рейтинг: 0 / 0
Как назвать эту структуру и подход, основанные на EAV?
    #39857740
Фотография ScareCrow
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakovldfanateосновной минус остался (отвратительная производительность на сколь нибудь больших объёмах).

Это миф, созданный теми, кто попытался прогнуть EAV под привычный квадратно-гнездовой
эксель, формируемый одним запросом и, естественно, облажался. Ибо не натягивается эта сова.


а раскажите как надо с этим работать плз.
...
Рейтинг: 0 / 0
Как назвать эту структуру и подход, основанные на EAV?
    #39857831
L_argo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторУ каждого рода товаров есть набор характеристик. Для каждого вида товаров, входящих в род, можно создать табличку с набором характеристик этого вида. Каждый конкретно товар, имеет какие то свои, присущие именно ему, а не роду и виду атрибуты тоже получает свою табличку... примерно так можно проектировать.... Так тоже иногда делают. Но в итоге этим сложно управлять. Справочник товара будет состоять из многих десятков, а то и сотен таблиц.
Строить отчетность по ним - одно удовольствие. :)
...
Рейтинг: 0 / 0
Как назвать эту структуру и подход, основанные на EAV?
    #39857835
Mr.Fontaine
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
L_argo, строить отчётность по куче товаров можно только по общим параметрам.
Как засунуть (главное, зачем засовывать) в отчёт по обуви с разбивкой на мужскую/женскую/детскую с учётом сезонности и размерам, например посуду?
...
Рейтинг: 0 / 0
Как назвать эту структуру и подход, основанные на EAV?
    #39857856
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
L_argoТак тоже иногда делают. Но в итоге этим сложно управлять.
Забавно. Вы понимаете, какие выводы следуют из этого высказывания, если предположить, что оно верно?

L_argoСтроить отчетность по ним - одно удовольствие
Даже любопытно, какие проблемы Вы видите. Скорее всего, такие же, как с историчностью и репликацией.
...
Рейтинг: 0 / 0
Как назвать эту структуру и подход, основанные на EAV?
    #39857879
drynny
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Mr.FontaineL_argo, строить отчётность по куче товаров можно только по общим параметрам.
Как засунуть (главное, зачем засовывать) в отчёт по обуви с разбивкой на мужскую/женскую/детскую с учётом сезонности и размерам, например посуду?
Какая только галиматья не придет в голову диванным экспертам. Что самое интересное, авторство этого бреда они сразу же приписывают оппонентам.

Вот вам нормальная задача: выгрузить полный реестр товаров с характеристиками для сети дилеров, которые имеют разные системы, но понимают единый формат этого реестра.
...
Рейтинг: 0 / 0
Как назвать эту структуру и подход, основанные на EAV?
    #39857884
L_argo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Mr.FontaineКак засунуть (главное, зачем засовывать) в отчёт по обуви с разбивкой на мужскую/женскую/детскую с учётом сезонности и размерам, например посуду?Ну почему посуду ? Например спортивную обувь. В ней много специфических параметров и вероятно для этих групп будут созданы отдельные таблицы параметров. Часть параметров неизбежно будет дублироваться для разных групп.
...
Рейтинг: 0 / 0
Как назвать эту структуру и подход, основанные на EAV?
    #39857903
Mr.Fontaine
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
drynny, напишем процедуру, заполняющую этот формат.
...
Рейтинг: 0 / 0
Как назвать эту структуру и подход, основанные на EAV?
    #39857904
Mr.Fontaine
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
drynnyВот вам нормальная задача: выгрузить полный реестр товаров с характеристиками для сети дилеров, которые имеют разные системы, но понимают единый формат этого реестра.
Вообще-то разговор идёт не о передаче данных из одной системы в другую, а об отчёте
...
Рейтинг: 0 / 0
Как назвать эту структуру и подход, основанные на EAV?
    #39857908
Mr.Fontaine
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
L_argo Часть параметров неизбежно будет дублироваться для разных групп.
Однозначно будут. Одинаковые параметры пишутся в один столбец отчёта. Так?
...
Рейтинг: 0 / 0
Как назвать эту структуру и подход, основанные на EAV?
    #39857911
ёёёёё
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Mr.Fontainedrynny, напишем процедуру, заполняющую этот формат.
На вопросы об API пока не было ответов.
...
Рейтинг: 0 / 0
Как назвать эту структуру и подход, основанные на EAV?
    #39857917
Mr.Fontaine
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ёёёёё, тут мне кажется мы обсуждаем не поделку автора темы. Я подтянулся к разговору L_agro со всем миром. А уж за мной подтянулся автор темы в разговор не по теме.

P.S. Да и зачем нам API, когда есть прямой доступ к таблицам.... Отсутствие API нам не препятствие.
...
Рейтинг: 0 / 0
Как назвать эту структуру и подход, основанные на EAV?
    #39857951
drynny
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Mr.FontaineЯ подтянулся к разговору L_agro со всем миром. А уж за мной подтянулся автор темы в разговор не по теме.
Я тоже топлю за систему, выросшую из EAV, если что. И против антинаучных подходов с разреженными таблицами или кучей таблиц со сгруппированными характеристиками.

Mr.FontainedrynnyВот вам нормальная задача: выгрузить полный реестр товаров с характеристиками для сети дилеров, которые имеют разные системы, но понимают единый формат этого реестра.
Вообще-то разговор идёт не о передаче данных из одной системы в другую, а об отчёте
Ок, а если я вас попрошу сформировать ценники на все товары по цене 49 рублей (с их характеристиками, разумеется)?
Есть у меня отдел где всё по 49 или иной отдел, но тоже с неким признаком, хоть распродажа или VIP.
...
Рейтинг: 0 / 0
Как назвать эту структуру и подход, основанные на EAV?
    #39857977
iOracleDev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Vladimir Baskakovда, как человек будет в этом ориентироваться? в рамках каких задач? каждая задача или тип задач сильно ограничивают это разнообразие, и под каждую задачу вполне создается ограниченное количество таблиц, с ограниченным множеством полей. Задачи, в которой бы все это перечисленное, переливалось бы вместе подобно постмодернистской ризоме, я пока не видел .... все равно есть ограниченные сабсеты, между которыми есть интеграционные прослойки.

У каждого рода товаров есть набор характеристик. Для каждого вида товаров, входящих в род, можно создать табличку с набором характеристик этого вида. Каждый конкретно товар, имеет какие то свои, присущие именно ему, а не роду и виду атрибуты тоже получает свою табличку... примерно так можно проектировать....
Я уже выше давал ссылку на яндекс маркет, там сотни второстепенных характеристик для товаров, по которым пользователи хотели бы иметь поиск, например я хочу найти стиральные машины с вертикальной загрузкой и инверторным двигателем, причем категория вертикальная/горизонтальная значимая характеристика (основная) для стиральных машин и она есть во всех интернет-магазинах, а тип двигателя уже характеристика дополнительная и во многих магазинах этого атрибута нет, буду ли я искать в магазинах которые не предоставляют мне возможности найти интересующий меня товар? В категории мониторы я например по мимо диагонали, разрешения и типа матрицы захочу отсутствие мерцания и т.п. У меня знакомый автомобиль ищет исходя из критерия наличия расширенной функции круиз контроля - ограничителя скорости, очень мало бюджетных автомобилей имеют эту функцию, причем для него это обязательный критерий, тут не то что информационные системы, многие менеджеры не понимают о чем идет речь, что это не какая то пищалка о превышении, а физическое ограничение при штатном режиме, т.е. если ты плавно нажимаешь на педаль газа скорость автомобиль не превысит заданного значения, при резком нажатии на газ функция будет временно отключена.

Предлагаете создавать по таблице на каждый артикул? Думаю это совершенно нецелесообразно, сложность разработки и поддержки такой системы будет колоссальная. Использовать некий отличный от РСУБД инструмент, который бы инкапсулировал объект целиком, да возможно и в дальнейшем с появлением нейросетей в железе и с отказом от центрального процессора так и будет, но это уже совсем в другой жизни.

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

Я не понимаю на что смотреть.
На унылый и примитивный дизайнер сущностей?
Такое 100 раз видел, и даже делали мы в 2007 году прям вот такое, и да -- на еав, дружище.
Но это был 2007 год, не думал что больше чем через 10 лет меня будут пытаться удивить такой вот детской фигнёй.

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


drynnyОсобенно доставляет наличие вот этого: «Подсистема проекций ловит такое событие с создаёт колонку»
«Без ядреных костылей», ага


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

Когда вас биайщики изобьют палками за уг вместо нормальной человеческой бд, тож будете топить? :)
Потом придут суровые чуваки, отвечающие за оптимальное расходование серверных ресурсов, и ещё добавят от себя за 100% индексы :)

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

Естественно. И гос структуры тоже.
...
Рейтинг: 0 / 0
Как назвать эту структуру и подход, основанные на EAV?
    #39858008
iOracleDev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttЕстественно. И гос структуры тоже.
Я не про конкретно вашу закрытую и известную в очень узких кругах систему, а про то что продается и внедряется не в госструктурах, можете дать названия таких систем и где их внедряли?
...
Рейтинг: 0 / 0
Как назвать эту структуру и подход, основанные на 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
Как назвать эту структуру и подход, основанные на EAV?
    #39858224
Siemargl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarerSiemarglЕсли все параметры в одну таблицу, как тут 21944555 , то да, если для каждой категории - отдельную, то нет
Не уверен, что Вы в данном случае называете категорией. "Как тут" делается следующее: на каждую "основную" таблицу - дополнительная кастомная (расширяемая), привязанная один к одному.1. Основная таблица - товар, дополнительная - атрибуты товара
не ОК
2.Основная таблица - товар (поле категория товара), дополнительные - разные таблицы атрибутов по категориям: стиральных машинок, атрибуты холодильников
ОК
3.Основные таблицы - отдельно стир.машинки, холодильники, утюги. Дополнительная 1 на каждую категорию.
ОК
softwarer
SiemarglСкажем так, тут я прав не всегда - зависит от СУБД, позволяет ли она DDL (add column) на используемой таблице.
Не только. Таблица ведь малоиспользуемая и не критичная для бизнес-логики, поэтому можно поискать варианты для конкретных СУБД. В принципе вплоть до такого изврата как создание под каждое поле отдельной таблицы - это уж точно пройдёт онлайн. Не очень понял. Пример, что в магазин завезли вибраторы, и нужны новая категория и набор атрибутовsoftwarer
SiemarglОк, какой? Дописываем
Неформатированное поле в таблице. XML итп.Ну это для практики поиска по атрибутам нерабочий вариант. Да и НФ0, для блокнотика
...
Рейтинг: 0 / 0
Как назвать эту структуру и подход, основанные на EAV?
    #39858228
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SiemarglОсновная таблица - товар, дополнительная - атрибуты товара
не ОК
Скажем так, утверждение о том, что при прочих равных некий набор информации "начнёт загибаться" в таком формате и "не начнёт загибаться" в EAV для меня выглядит... сомнительным.

SiemarglНе очень понял. Пример, что в магазин завезли вибраторы, и нужны новая категория и набор атрибутов
Попробую сформулировать. Я не то чтобы серьёзно отношусь к требованию непрерывного онлайна, по моему опыту, для тех задач, для которых требуются кастомные атрибуты, оно нехарактерно. Тем не менее, я уверен, что если мне выставят подобные требования - я как минимум для Oracle смогу предложить тот или иной приемлемый вариант на основе этого подхода. Думаю, это справедливо не только для Oracle.

SiemarglНу это для практики поиска по атрибутам нерабочий вариант.
Отнюдь. Зависит от возможностей индексации конкретной СУБД. Наверное, какие-то этого не умеют - но я не стал бы из-за этого называть вариант нерабочим. Тем более что он обладает ценимой Вами максимальной онлайновостью.

SiemarglДа и НФ0, для блокнотика
Не совсем так. Понятие нормальных форм опирается на понятие атомарности хранимого значения. Само понятие атомарности, если над ним задуматься, специфицировано весьма размыто. Ну например поле даты - оно ведь состоит из дня, месяца, года. Или строковое поле, которое состоит из кучи символов. Какие же это атомарные значения и что такое вообще атомарность?

Если подумать над этим, становится очевидным следующее: значение является атомарным тогда и только тогда, когда оно "целым" участвует в операциях бизнес-логики (как минимум в явном большинстве таких операций). Вот у нас есть строковое поле. Если мы делаем с ним такие операции как "прочитать" (целиком), "записать" (целиком), "сконкатенировать с другими" (целиком) - это атомарные значения. Если же мы только и делаем, что "берём первый символ", "берём со второго по пятый символы" и т. п. - значение неатомарно и, соответственно, дизайн нарушает требования 1НФ.

Почему я говорю про большинство операций - потому что даже с "вроде бы атомарными" значениями иногда надо выделять части. Скажем, иногда мне нужно взять из лога записи, о том, что случалось с третьего по пятое сентября с девяти до десяти утра - но это не повод объявлять, что datetime поле нарушает 1НФ. Или - ИНН вроде бы вполне себе атомарное значение, мало кто будет хранить его по частям, но его первые цифры дают номер налоговой инспекции, да и контрольный разряд надо вычислять.

И это приводит к разумному и практичному выводу: на самом деле "атомарный" - неудачный термин для этого случая (как он в итоге оказался неудачным и для атома, который, как выяснилось, очень даже делим). Понятие атомарности используется по историческим причинам, но то, что в самом деле следовало бы поставить на его место, имеет смысл наподобие "удобно в использовании". Если нам приходится всё время строковыми операциями выщемлять значения из списка через запятую - это неудобно, нарушение 1НФ. Если для выделения, например, месяца из даты есть удобный синтаксис extract - нет проблем, поле даты не нарушает 1НФ даже если кое-где такое выделение происходит. И здесь стоит вспомнить, что понятие атомарности вводилось в те времена, когда в БД не было не то что хранимых процедур, а вообще каких-либо функций.

Ну так вот, смысл всей этой портянки в том, что подобное поле "коллекция дополнительных атрибутов" - значение, с которым вполне удобно работать. Главные операции с ним - выдать в интерфейс, получить из интерфейса, отфильтровать по значению какого-либо атрибута - выполняются вполне легко и эффективно. Так что не проблема.
...
Рейтинг: 0 / 0
Как назвать эту структуру и подход, основанные на EAV?
    #39858639
drynny
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
softwarerL_argoЗависит от реализации EAV. В правильной реализации все параметры - строго по назначению.
Это никак не мешает "огромному удовольствию" строить отчёты над EAV-данными. Ну просто для примера, допустим, есть следующие данные (в реляционном виде):

Номер партииДата поставкиКоличество кирпичейЦена за штуку101.09.2019100015202.09.2019200012.5302.09.2019100012403.09.2019300014
Задача - вывести общее количество и средневзвешенную цену кирпича для всех закупок между 02 и 03 сентября. Как эти данные лежат в EAV - наверное, все примерно понимают, но если важно для ответа - покажите как правильно. Приведёте запрос, решающий эту задачу?

Квинтетная модель была задумана не для написания запросов непосредственно к ней. Этим занимается обвязка, и в моем случае это ядро, которое отображает базовый интерфейс пользователя: редактор структуры данных, навигатор по данным, конструктор запросов и шаблонизатор.

В редакторе типов я набросал структуру (метаданные):



Вот так эти метаданные лежат в EAV:

iduptypordval1110ROOT3300SHORT9900DATE111100BOOLEAN131300NUMBER141400SIGNED161600REPORT_COLUMN2711301Номер партии272900Дата поставки2731300Количество кирпичей2741400Цена за штуку275272271127627327122772742713
...
Рейтинг: 0 / 0
Как назвать эту структуру и подход, основанные на EAV?
    #39858641
drynny
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я вбил данные в навигаторе, где отображается таблица согласно только что созданной структуре:



А вот так эти данные лежат в EAV:

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

Эта штука называется построитель запросов . Так она выглядит в базовом интерфейсе, но также у неё есть более дружественные пользователю воплощения.

Запрос total считает общую сумму за диапазон дат, а запрос Кирпичи взвешивает суммы и считает среднюю.
Запрос total я использую как вложенный в запросе Кирпичи.

...
Рейтинг: 0 / 0
Как назвать эту структуру и подход, основанные на EAV?
    #39858645
drynny
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Теперь я запускаю отчет Кирпичи и вижу результат. Я задал диапазон дат (FR_date=2&TO_date=3), который используется обоими запросами.




Обратите внимание, что я не лезу в EAV, не задумываюсь как строить запрос: я просто перечислил нужные колонки и добавил функции, фильтры и формулы.

Девиз IdeaV: «Не сложнее Excel!»
...
Рейтинг: 0 / 0
Как назвать эту структуру и подход, основанные на EAV?
    #39858646
drynny
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А вот теперь таки влезем в журнал базы и посмотрим, какой запрос сгенерировало ядро.
Вот он:

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
SELECT SUM(a276.val) 'К-во',AVG(a277.val*a276.val
                   /(SELECT SUM(a314_276.val) v314_2_271 
                             FROM alex a314_271 
                             LEFT JOIN alex a314_275 ON a314_275.up=a314_271.id AND a314_275.t=275 
                             LEFT JOIN alex a314_276 ON a314_276.up=a314_271.id AND a314_276.t=276 
                             WHERE a314_271.up!=0 AND length(a314_271.val)!=0 AND a314_271.t=271 AND a314_275.val>='20190902' AND a314_275.val<='20190903' )) 'Ср.вз.цена' 
FROM alex a271 
LEFT JOIN alex a275 ON a275.up=a271.id AND a275.t=275 
LEFT JOIN alex a276 ON a276.up=a271.id AND a276.t=276 
LEFT JOIN alex a277 ON a277.up=a271.id AND a277.t=277 
WHERE a271.up!=0 AND length(a271.val)!=0 AND a271.t=271 AND a275.val>='20190902' AND a275.val<='20190903'
...
Рейтинг: 0 / 0
Как назвать эту структуру и подход, основанные на EAV?
    #39858648
drynny
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Что-то с формулой я накосячил второпях, но не в этом суть
...
Рейтинг: 0 / 0
Как назвать эту структуру и подход, основанные на EAV?
    #39858652
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
drynnyЭта штука называется построитель запросов . Так она выглядит в базовом интерфейсе, но также у неё есть более дружественные пользователю воплощения.
Я ожидал такого ответа. В общем, неважно, как она выглядит - важно то, что её необходимо использовать и у неё нет альтернативы. Напомню, речь в этом фрагменте шла про "удовольствие построения отчётов". Так вот, получается, что при этом подходе практически недоступно подавляющее большинство инструментов построения отчётов, существующих в мире. Годится только один - тот, который написали Вы. И либо Вы заявите, что он самый лучший, умеет абсолютно всё и для любой задачи годится лучше, чем другие существующие построители - либо мой тезис про то, что такой подход делает построение отчётов хуже и неудобнее, доказан.

drynnyОбратите внимание, что я не лезу в EAV, не задумываюсь как строить запрос: я просто перечислил нужные колонки и добавил функции, фильтры и формулы.
Это важно для чайников. Более-менее приличный профессионал пишет запрос руками куда быстрее, чем он нащёлкивается в подобном построителе, ну и кроме того я на 99.9% уверен, что если взять, допустим, отчёты из того проекта, над которым я сейчас работаю, окажется, что Ваш построитель не в состоянии реализовать ни один из них - просто интерфейс не позволит сформулировать соответствующий запрос.

drynnyЧто-то с формулой я накосячил второпях, но не в этом суть
Суть, конечно, не в этом, но деталь показательная. Думаю, если Вы попытаетесь написать этот запрос руками на SQL над обычной реляционной таблицей - не ошибётесь даже с первого раза. Довольно наглядное сравнение сложности.
...
Рейтинг: 0 / 0
Как назвать эту структуру и подход, основанные на EAV?
    #39858658
drynny
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
softwarerЯ ожидал такого ответа. В общем, неважно, как она выглядит - важно то, что её необходимо использовать и у неё нет альтернативы. Напомню, речь в этом фрагменте шла про "удовольствие построения отчётов". Так вот, получается, что при этом подходе практически недоступно подавляющее большинство инструментов построения отчётов, существующих в мире. Годится только один - тот, который написали Вы. И либо Вы заявите, что он самый лучший, умеет абсолютно всё и для любой задачи годится лучше, чем другие существующие построители - либо мой тезис про то, что такой подход делает построение отчётов хуже и неудобнее, доказан.

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

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

В большинстве случаев вообще достаточно обертки к существующему, которая делается за полдня, как здесь или здесь .
Печально. Похоже, Вы искренне не понимаете, о чём вообще речь.
...
Рейтинг: 0 / 0
Как назвать эту структуру и подход, основанные на EAV?
    #39858661
drynny
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
softwarerdrynnyОбратите внимание, что я не лезу в EAV, не задумываюсь как строить запрос: я просто перечислил нужные колонки и добавил функции, фильтры и формулы.
Это важно для чайников. Более-менее приличный профессионал пишет запрос руками куда быстрее, чем он нащёлкивается в подобном построителе, ну и кроме того я на 99.9% уверен, что если взять, допустим, отчёты из того проекта, над которым я сейчас работаю, окажется, что Ваш построитель не в состоянии реализовать ни один из них - просто интерфейс не позволит сформулировать соответствующий запрос.
На текущем этапе это, в основном, инструмент именно для чайников и тех, кто пользуется MS Excel.
...
Рейтинг: 0 / 0
Как назвать эту структуру и подход, основанные на EAV?
    #39858748
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarerЭто важно для чайников. Более-менее приличный профессионал пишет запрос руками куда быстрее, чем он нащёлкивается в подобном построителе, ну и кроме того я на 99.9% уверен, что если взять, допустим, отчёты из того проекта, над которым я сейчас работаю, окажется, что Ваш построитель не в состоянии реализовать ни один из них - просто интерфейс не позволит сформулировать соответствующий запрос.

Дело вообще не в том для чайников или не для чайников. Нормальных, из реального мира, запросов на _этом_ написать вообще не представляется возможным. Для любого среднего анализа это ад, для серьёзного это совершенно нельзя использовать.

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

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

А невозможно понять без реального опыта в реальном мире. Очень похоже, что автор не сталкивался с задачами реального мира, придумал себе примитивные задачи, их и решает.

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

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

Там где не справляется эксель в ход идут отчётные системы, SQL запросы, представления.

И здесь _идеал_ даже не в районе плинтуса, а где-то в миллиметровом зазоре между полом и плинтусом.

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

И вот это абсолютная неправда, ложь, которую вы себе придумали.
Нет не будет легче ни в чём и ничем. Не тешьте себя идиотскими иллюзиями.
...
Рейтинг: 0 / 0
Как назвать эту структуру и подход, основанные на EAV?
    #39858780
drynny
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
hVosttsoftwarerЭто важно для чайников. Более-менее приличный профессионал пишет запрос руками куда быстрее, чем он нащёлкивается в подобном построителе, ну и кроме того я на 99.9% уверен, что если взять, допустим, отчёты из того проекта, над которым я сейчас работаю, окажется, что Ваш построитель не в состоянии реализовать ни один из них - просто интерфейс не позволит сформулировать соответствующий запрос.

Дело вообще не в том для чайников или не для чайников. Нормальных, из реального мира, запросов на _этом_ написать вообще не представляется возможным. Для любого среднего анализа это ад, для серьёзного это совершенно нельзя использовать.

Даже в MS Access можно решать сложные задачи, а в таком решении ничего дальше примитивнейшего одноклеточного хранения данных придумать невозможно. Ну там, каталог книг какой-нибудь, или что-то такое. Не более того.
Выше я показывал ролик про рекрутинговую систему 21945654 . Она одноклеточна?

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

Ну и? Никаких преимуществ мета-моделирования в этом нет, весь интерфейс и логика построены по конкретной модели данных.

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

Ну и опять-таки. На старте всё хорошо обычно, смотрите кнопки нажимаются, данные сохраняются, какой-то воркфлоу, -- ну просто вау! Серьёзно? Мы такие пилоты писали за неделю, на чём попало, и это работало. При чём вплоть до того, что заказчик смотрел и говорил, ну а чё, всё же работает, может того? Запустим? Конечно нет, не запустим, это всё хорошо только на демо.

А когда дойдёт до дела, там тысячи ньюансов, когда дойдёт до сложных отчётов, аналитики, за эти костыли хвинтеты можно получить много нелестных эпитетов.

drynnyПочти всем стартапам и малому бизнесу в принципе этого достаточно. А вот в экселе так не сделаешь, потому что сложно с правами, запросами, формами и прочим.

Ну т.е. вы позиционируете своё детище, как средство для временных пилотов? ХЗ какое в этом преимущество, и на классике решается всё не менее быстро.

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

Отнеситесь к критике конструктивно. Нет ни у меня, ни у других задачи -- кого-то или что-то об___ть, зачем?

Про очень серьёзные минусы, жирные, важные, критические вам уже сказали.
Каких-то серьёзных плюсов я не увидел, ну прям вообще. EAV он и в Африке EAV, как был довольно убогим костылём, так им и останется, что вы с ним не делайте.

Учитывая, что я сам много занимался подобным ранее, сам делал и в команде, и даже запускали в продакшен, "смотрите! работает!" -- это вообще не показатель. Из говна и палок можно сделать что-то что работает и даже выглядит сложно. Но это пыль в глаза.

На минусы вы просто не реагируете, а аргументы ваши не показательны.

Хотя то, что вы хоть что-то показываете и кто-то это даже какт-то использует, оно заслуживает уважения бесспорно.

Но не стоит тешить себя иллюзиями, это на старте путь с очень плохими и мутными перспективами, пока вы не порешаете проблемы, которые были озвучены в этом топике. Если вы на них забьёте, то грош цена вашим достижениям.
...
Рейтинг: 0 / 0
Как назвать эту структуру и подход, основанные на EAV?
    #39858862
drynny
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
hVosttEAV он и в Африке EAV, как был довольно убогим костылём, так им и останется, что вы с ним не делайте.
EAV — это просто список. Сам по себе он не может быть убогим костылём, и если вы сталкивались именно с костылём, то это лично ваша заслуга, а не EAV. Как говорится, нечего на него пенять.

hVosttПро очень серьёзные минусы, жирные, важные, критические вам уже сказали.
Из внятно озвученных минусов есть два:
1) типы данных в поле Value — разные, поэтому СУБД не может обойтись без преобразования
2) сложно написать запрос к EAV, потому что нужно много join и вообще сначала придется собрать метаданные

Первый минус касается только прототипа системы, сделанного в РСУБД и показанного тут вам. Сама же квинтетная модель свободна от подобного недостатка, потому что данные, как и в обычной СУБД, хранятся байтами для любых типов. Следовательно, движок QDM будет считывать эти байты и трактовать их нужным образом, имея возможность делать операции, применять индексы и всё прочее. То есть, это не минус QDM, а минус прототипа.

По второму пункту, как я уже показал выше, проблема решается ядром системы: оно может преобразовать любой запрос, будь то DDL или DML в запрос к квинтетной модели. Если вы присмотритесь к запросу 21965738 и напишете обычный SQL, то вы убедитесь, что их можно легко транслировать один в другой.
Вот тут 21965765 человек печалится, что я не понимаю засады, что людям невозможно использовать Discoverer для обращения к QDM. В то же время я могу выставить QDM во внешний мир так, как будто это, например, Postgre или MySQL какой-нибудь.
...
Рейтинг: 0 / 0
Как назвать эту структуру и подход, основанные на EAV?
    #39858917
Siemargl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
drynny... модель свободна от подобного недостатка, потому что данные, как и в обычной СУБД, хранятся байтами для любых типов...Повешу на стену, как образец тупоумия.

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

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

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

drynnyИз внятно озвученных минусов есть два:

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

Видимо вы считаете тут всех за идиотов, либо сами реально не понимаете проблем, которые создаёте, а не решаете.

drynnyСама же квинтетная модель свободна от подобного недостатка, потому что данные, как и в обычной СУБД, хранятся байтами для любых типов. Следовательно, движок QDM будет считывать эти байты и трактовать их нужным образом, имея возможность делать операции, применять индексы и всё прочее.

Нет никакой "квинтетной модели", не существует. Трактование байтов клиентом БД, а не самой БД -- это вообще зачем? Для чего? Десятки лет люди бились над совершенствованием СУБД, оптимизацией типизированного хранения для гарантий целостности, молниеносного доступа, быстрого и удобного оперирования данных с помощью простого единого языка запросов, который понимают все разработчики.

Но вы решили просто нивелировать всё это в угоду противному, неудобному оперированию с данными, никому неизвестным образом. И любой, кто в этом решит разобраться, у него волосы на голове зашевелятся, от глубины глупости решения.


drynnyПо второму пункту, как я уже показал выше, проблема решается ядром системы: оно может преобразовать любой запрос, будь то DDL или DML в запрос к квинтетной модели. Если вы присмотритесь к запросу 21965738 и напишете обычный SQL, то вы убедитесь, что их можно легко транслировать один в другой.

Запрос, который для нормальной схемы пишется в одну строку у вас это превращается в кромешный п....ц из джойнов. А будь что по-сложней, чем посчитать сумму по отфильтрованному набору, там вообще будет жопа. Планы запросов там будут с десятиэтажными матами.

И не надо чесать нам про "любой DML запрос".


drynnyВот тут 21965765 человек печалится, что я не понимаю засады, что людям невозможно использовать Discoverer для обращения к QDM. В то же время я могу выставить QDM во внешний мир так, как будто это, например, Postgre или MySQL какой-нибудь.

Это и называется костыли. Нафига они упали вообще не ясно.

Хотите сделать динамическое моделирование? Хранить мета-модель? Та ради бога. Но если вы не можете обеспечить в результате нормальную схему в БД, оно не нужно никому и за даром.

EAV это решение для очень узкоспециализированного спектра задач. Вы же его расширили до всех задач. А такое не может быть не наказуемо.

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

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
SELECT SUM(a276.val) 'К-во',AVG(a277.val*a276.val
                   /(SELECT SUM(a314_276.val) v314_2_271 
                             FROM alex a314_271 
                             LEFT JOIN alex a314_275 ON a314_275.up=a314_271.id AND a314_275.t=275 
                             LEFT JOIN alex a314_276 ON a314_276.up=a314_271.id AND a314_276.t=276 
                             WHERE a314_271.up!=0 AND length(a314_271.val)!=0 AND a314_271.t=271 AND a314_275.val>='20190902' AND a314_275.val<='20190903' )) 'Ср.вз.цена' 
FROM alex a271 
LEFT JOIN alex a275 ON a275.up=a271.id AND a275.t=275 
LEFT JOIN alex a276 ON a276.up=a271.id AND a276.t=276 
LEFT JOIN alex a277 ON a277.up=a271.id AND a277.t=277 
WHERE a271.up!=0 AND length(a271.val)!=0 AND a271.t=271 AND a275.val>='20190902' AND a275.val<='20190903'



Если посмотреть на запрос, то станет понятно, что это даже хуже чем классический EAV, тут просто кромешный п....ц.

Из области, как плюнуть на головы всем разработчикам СУБД, утритесь придурки.

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

Прочекал с чего всё началось и... заплакал.

Любого размера...
Не имея проблем с производительностью...

Плевок всторону даже "обычного EAV".

Лучше бы вы в сатану верили и приносили ему в жертву девственниц, было бы не так стыдно.
...
Рейтинг: 0 / 0
Как назвать эту структуру и подход, основанные на EAV?
    #39858971
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hi all.

Все статьи еще нечитал. Много материала. Выписал список.

Квинтет как базовая сущность для описания предметной области
https://habr.com/en/company/neoflex/blog/433058/

Запатентованная мечта программистов 80-90-х
https://habr.com/en/post/358934/

Альтернативная архитектура СУБД и подход к разработке приложений
https://habr.com/en/post/346816/

Запатентованная мечта программиста — часть II
https://habr.com/en/post/414255/

Business Intelligence по-русски — на квинтетах
https://habr.com/en/company/neoflex/blog/451218/

Что мне пока не нравится.

1) Не приводится сравнительный бенчмарк системы ДО
декомпозиции на квинтеты и после. Не нашел нигде технических деталей по индексной организации.

2) Я нарисовал для себя базовую DML но как все понимают без индекса она - неэффективна
а беря во внимание универсализм подхода... все петабайты нужно толкать в одну табличку
его (индекс) обсуждать НУЖНО. Он является частью АРХИТЕКТУРЫ.

Код: plsql
1.
2.
3.
4.
5.
6.
7.
CREATE TABLE quintet(
    id NUMBER PRIMARY KEY,
    order NUMBER NOT NULL,
    parent NUMBER,
    datatype NUMBER,
    value VARCHAR2(4000)
);



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

Как реализуются несколько предков для одной сущности и соотношения многие ко многим?
...
Рейтинг: 0 / 0
Как назвать эту структуру и подход, основанные на EAV?
    #39858974
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В квинтетной модели? Понятия не имею.
...
Рейтинг: 0 / 0
Как назвать эту структуру и подход, основанные на EAV?
    #39858979
drynny
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
iOracleDevmayton,

Как реализуются несколько предков для одной сущности и соотношения многие ко многим?
По первой ссылке в сообщении mayton 21966285 рассматривается структура для вот этих данных:



Давайте её разберем.
Здесь есть ссылка на справочник состояний (1 заявка — 1 состояние) и связанная таблица комментариев (1 заявка — много комментариев)

Вот это структура квинтета:



В метаданных есть базовые типы (строка, число, файл, текст, дата и так далее):



и пользовательские типы (стрелками показано как они связаны):



А вот как хранятся сами данные:



Но пользователю мы их показываем в более привычном виде. Структура:



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


iOracleDev,

видимо до раздела учебника "многие ко многим" ТС не дошёл, надо же было скорее разобраться с патентованием и придумывать название гениального решения для патента

drynnyiOracleDevКак реализуются несколько предков для одной сущности и соотношения многие ко многим?
По первой ссылке в сообщении mayton 21966285 рассматривается структура для вот этих данных:

это шедевр! М:М в примере-то где? :)
...
Рейтинг: 0 / 0
Как назвать эту структуру и подход, основанные на EAV?
    #39858982
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
drynny, вы пишете все что угодно но только не DDL.

Зачем вы приводите пример конкретной задачи с заявками и комментариями? Я-же это не спрашиваю. Я - спрашивую другое.
...
Рейтинг: 0 / 0
Как назвать эту структуру и подход, основанные на EAV?
    #39858984
drynny
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
mayton1) Не приводится сравнительный бенчмарк системы ДО
декомпозиции на квинтеты и после. Не нашел нигде технических деталей по индексной организации.
Сравнение систем, быстродействия и планов запросов приведено в четвертой ссылке вашего сообщения:
Запатентованная мечта программиста — часть II
habr.com/ru/post/414255

Про индексы написано в стартовом сообщении этой темы:
Для навигации в этом списке построены 3 упорядоченных указателя – индексы: ID, Entity+Attribute, Attribute+Value

mayton2) Я нарисовал для себя базовую DML но как все понимают без индекса она - неэффективна
а беря во внимание универсализм подхода... все петабайты нужно толкать в одну табличку
его (индекс) обсуждать НУЖНО. Он является частью АРХИТЕКТУРЫ.

Код: plsql
1.
2.
3.
4.
5.
6.
7.
CREATE TABLE quintet(
    id NUMBER PRIMARY KEY,
    order NUMBER NOT NULL,
    parent NUMBER,
    datatype NUMBER,
    value VARCHAR2(4000)
);



Если я где-то ошибся в базовой DML - прошу поправить меня.
В целом правильно.
Для Value мы используем 127 байт, а всё, что превышает, записываем в подчиненные записи с типом 0 и заданной очередностью.
...
Рейтинг: 0 / 0
Как назвать эту структуру и подход, основанные на EAV?
    #39858985
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
drynnymayton1) Не приводится сравнительный бенчмарк системы ДО
декомпозиции на квинтеты и после. Не нашел нигде технических деталей по индексной организации.
Сравнение систем, быстродействия и планов запросов приведено в четвертой ссылке вашего сообщения:
Запатентованная мечта программиста — часть II
habr.com/ru/post/414255

Дружище! Да ты совсем не умеешь презентовать результаты своих достижений!
Я расчитывал увидеть вывод. Дескыть квинтетная системы позволяет сэкономить 30%
датасемгента и бла-бла... упростить дизайн и в то-же время дает просадку
на 15% по сравнению с классической реляционной моделью на конкретных
запросах конкретной продуктовой задачи.

Этого нигде нет! Это разбросано по всей статье равномерным слоем! Это - не акцентировано.
А ведь это - главное.

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

а в статьях там все графики, взятые с потолка, и ничего, что можно было бы взять и проверить самому на практике.

об этом уже и в комментариях писали, но ТС тупо наплевал. вот вам нарисовал в пейнте красные и зелёные линии, не хотите -- не верьте дело ваше
...
Рейтинг: 0 / 0
Как назвать эту структуру и подход, основанные на EAV?
    #39858990
drynny
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
hVosttmayton,

а в статьях там все графики, взятые с потолка, и ничего, что можно было бы взять и проверить самому на практике.

об этом уже и в комментариях писали, но ТС тупо наплевал. вот вам нарисовал в пейнте красные и зелёные линии, не хотите -- не верьте дело ваше
Не гоните, да не гонимы будете.
Там везде есть ссылки самому пощупать, часто с админскими правами.
...
Рейтинг: 0 / 0
Как назвать эту структуру и подход, основанные на EAV?
    #39858991
drynny
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
iOracleDevmayton,

Как реализуются несколько предков для одной сущности и соотношения многие ко многим?

Собственно Многие-ко-многим будут выглядеть так:
iduptypordval348300Гость349300Номер3501300Бронирование351348003523490035335135013553523502

Для вот такой структуры, когда много гостей бронируют много номеров:

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

Пока ни в статьях, ни по ссылкам нет ничего, что можно было бы прогнать локально на своём железе.
Что толку щупать ваш интерфейс с админскими правами? Речь про бенчмарки и возможность написать, например, рекурсивные табличные запросы, оконные функции, сложные выборки со сложными подвыборками и т.д. и т.п.

Поэтому выглядит это как шоу с фокусами на средневековом рынке.
...
Рейтинг: 0 / 0
Как назвать эту структуру и подход, основанные на EAV?
    #39858993
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Это больше похоже на иерархическую DBMS реализованную поверх реляционной. Наподобие Lotus и всяких там М-систем.

А эти магические константы такие как 3 и 13 - зарезервированы?

(Вы не обижайтесь если я спрашиваю что-то что уже упомианлось в ваших статьях. Они плохо
структурированы и без глоссариев. Трудно искать ответы на простые вопросы а я- нетерпеливый.)
...
Рейтинг: 0 / 0
Как назвать эту структуру и подход, основанные на EAV?
    #39858994
Фотография vmag
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
drynny Прошу помочь мне с названием для этой структуры и/или подхода вообще.

heap small
bunch little
(куча мала)
...
Рейтинг: 0 / 0
Как назвать эту структуру и подход, основанные на EAV?
    #39858996
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Патчик на свой DDL.

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
CREATE TABLE quintet(
    id NUMBER PRIMARY KEY, 
    up NUMBER NOT NULL, -- верхний уровнь подчинения. Parent.
    typ NUMBER, -- тип данных ( 0 - аналог NULL?)
    ord NUMBER, -- порядок записей внутри.... эээ... чего-то там внутри
    val VARCHAR2(4000) -- архитекторы рекомендуют 127 символов (!)
);

-- Quote:>> Для навигации в этом списке построены 3 упорядоченных указателя – индексы: ID, Entity+Attribute, Attribute+Value

CREATE INDEX .... ? -- первичный авто-генерируется синтаксисом PRIMARY. По EA, AV - непонятно.  

CREATE INDEX .... --   я могу идентифицировать только  Value.   Что такое  "attribute" ? Где в таблице этот чортов attribute?
-- это композит? из нескольких полей?
...
Рейтинг: 0 / 0
Как назвать эту структуру и подход, основанные на EAV?
    #39858998
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonЧто такое "attribute" ? Где в таблице этот чортов attribute?
Это parent. Автор замыслил хранить примерно такое дерево:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
  Таблица
    |
    +-- Описание атрибута 1
    |
    +-- Описание атрибут2 2
    |
    +-- Запись 1 значение атрибута 0 который нигде не описан
          |
          +-- Значение атрибута 1 (и вот отсюда parent = id атрибута 1)
          |
          +-- Значение атрибута 2
...
Рейтинг: 0 / 0
Как назвать эту структуру и подход, основанные на EAV?
    #39859002
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarerЭто parent.
Прошу прощения, сверился, у него это называется не parent, а typ.
...
Рейтинг: 0 / 0
Как назвать эту структуру и подход, основанные на EAV?
    #39859003
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
Код: sql
1.
typ NUMBER, -- тип данных ( 0 - аналог NULL?)



Это ссылка на запись, которая является типом, видимо..

mayton
Код: sql
1.
ord NUMBER, -- порядок записей внутри.... эээ... чего-то там внутри



1. для атрибутов в мета-типе, у них есть порядок
2. для связи М:М как в примере выше, тож есть порядок
3. для большого значения >127 байт
4. чет ещё?

Кстати, если значение будет разбито посередине 127 байт, то как искать по подстроке без конкатенации? видимо никак.
...
Рейтинг: 0 / 0
Как назвать эту структуру и подход, основанные на EAV?
    #39859005
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVostt1. для атрибутов в мета-типе, у них есть порядок
2. для связи М:М как в примере выше, тож есть порядок
3. для большого значения >127 байт
4. чет ещё?
Напоминает то, как писали софт в шестидесятые годы. Правда, тогда последнему идиоту не пришло бы в голову строить одну модель данных над другой, совершенно перпендикулярной. Тогда бы эти "квинтеты" реализовали бы поверх байтиков на диске, и не исключено, получили бы вполне приличное для тех лет решение, какой-нибудь предок ADABAS-а.
...
Рейтинг: 0 / 0
Как назвать эту структуру и подход, основанные на EAV?
    #39859020
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarermaytonЧто такое "attribute" ? Где в таблице этот чортов attribute?
Это parent. Автор замыслил хранить примерно такое дерево:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
  Таблица
    |
    +-- Описание атрибута 1
    |
    +-- Описание атрибут2 2
    |
    +-- Запись 1 значение атрибута 0 который нигде не описан
          |
          +-- Значение атрибута 1 (и вот отсюда parent = id атрибута 1)
          |
          +-- Значение атрибута 2

Аха...

Он через иерархию хочет описать реляцию? А всегда-ли это возможно?
А если у меня будет one-to-many-to-one-to-many?
...
Рейтинг: 0 / 0
Как назвать эту структуру и подход, основанные на EAV?
    #39859024
Siemargl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton...Он через иерархию хочет описать реляцию? А всегда-ли это возможно?
А если у меня будет one-to-many-to-one-to-many?Это вроде и есть родная структура иерархии.
Или же ты не так выразился
...
Рейтинг: 0 / 0
Как назвать эту структуру и подход, основанные на EAV?
    #39859029
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonАха...

Он через иерархию хочет описать реляцию? А всегда-ли это возможно?
А если у меня будет one-to-many-to-one-to-many?

Можно. И гвозди тоже можно микроскопом забивать.

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

Ещё вопрос вызывает патентование схемы данных. Сам по себе патент не страшен, ценности подобная схема не представляет, она даже не нулевая, она отрицательная. Но вот сам прецедент вызывает опасения.

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

Это называется клиника. Когда ищешь не эффективное решение, а наиболее хитровывернутым способом с переподвыподвертом решить абсолютно тривиальную задачу.

Но до меня начало таки доходить в чём смысл. Дело в патенте.

Да, я уже встречался с таким. Когда человек патентует наколеночное решение, элементарный алгоритм на экселе, который любое школо-ло напишет за пару дней, но оно уже в продакшене и в крупной компании. А потом тупо ходит и снимает сливки. Это не шутка, в моей практике я с этим сталкивался.

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

Да мне тоже непонятно зачем данные и метаданные нужно хранить в общей таблице.
...
Рейтинг: 0 / 0
Как назвать эту структуру и подход, основанные на EAV?
    #39859038
iOracleDev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttДа, я уже встречался с таким. Когда человек патентует наколеночное решение, элементарный алгоритм на экселе, который любое школо-ло напишет за пару дней, но оно уже в продакшене и в крупной компании. А потом тупо ходит и снимает сливки. Это не шутка, в моей практике я с этим сталкивался.
А что он запатентовал и где? Иерархические СУБД известны давно, закостылить разрешение отношений сущностей и множественное наследование, скрестить с EAV и попытаться запихнуть в реляционную субд, все это уже давно в том или ином виде делалось, он не пионер, если покопаться в дореляционной эпохе и в ее начале, таких опубликованных в виде статей материалов найдется вагон и маленькая тележка, по идее его патент не должен был быть принят, нельзя патентовать общеизвестные вещи и вещи которые публиковались ранее.
...
Рейтинг: 0 / 0
Как назвать эту структуру и подход, основанные на EAV?
    #39859044
Siemargl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttsoftwarerНапоминает то, как писали софт в шестидесятые годы. Правда, тогда последнему идиоту не пришло бы в голову строить одну модель данных над другой, совершенно перпендикулярной. Тогда бы эти "квинтеты" реализовали бы поверх байтиков на диске, и не исключено, получили бы вполне приличное для тех лет решение, какой-нибудь предок ADABAS-а.

Это называется клиника. Когда ищешь не эффективное решение, а наиболее хитровывернутым способом с переподвыподвертом решить абсолютно тривиальную задачу.

Но до меня начало таки доходить в чём смысл. Дело в патенте.

Да, я уже встречался с таким. Когда человек патентует наколеночное решение, элементарный алгоритм на экселе, который любое школо-ло напишет за пару дней, но оно уже в продакшене и в крупной компании. А потом тупо ходит и снимает сливки. Это не шутка, в моей практике я с этим сталкивался.

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

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

В статьях на хабре они об этом писали.

Собственно я реально больше не могу найти ни одного вменяемого объяснения этой вакханалии.
...
Рейтинг: 0 / 0
Как назвать эту структуру и подход, основанные на EAV?
    #39859056
drynny
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
maytonhVostt,

Да мне тоже непонятно зачем данные и метаданные нужно хранить в общей таблице.
Кто сказал про таблицу? В постановке задачи про таблицу ничего нет: Как назвать эту структуру и подход, основанные на EAV? .

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

Обсуждаемый подход хранит квинтеты на носителе (диске, флэшке, RAM), сплошным ковром. Их можно хранить в порядке возрастания ID, чтобы сэкономить на одноименном индексе. Также на диске хранится подобие индекса по двум значениям квинтета: Entity+Attribute, Attribute+Value, чтобы можно было быстро найти физический адрес квинтета на том ковре, не зная ID, но имея ID его родителя или ID типа и значение.

Всё это обслуживается ядром, функционал которого примерно на 98% уже сделан в любой РСУБД, поэтому эмуляция этого подхода была сделана в РСУБД. Это временно — прототип, сделанный для подтверждения концепции.
Далее мы перепишем ядро какой-то свободной СУБД: выкинем лишнее и допишем совсем немного (даже скорее соберем из других мест СУБД).

А вам, уважаемый Хвост, предлагаю встретиться здесь лет через пять и обсудить тему. Если вас не прихлопнут, конечно, в глухой подворотне за ваш язык и манеру общения.
...
Рейтинг: 0 / 0
Как назвать эту структуру и подход, основанные на EAV?
    #39859058
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
drynnyА вам, уважаемый Хвост, предлагаю встретиться здесь лет через пять и обсудить тему.
Отличное предложение. Форум видел многих энтузиастов-изобретателей, и подобное предложение звучало не раз - но Вы имеете шанс стать первым, кто таки действительно придёт и покажет свои успехи.
...
Рейтинг: 0 / 0
Как назвать эту структуру и подход, основанные на EAV?
    #39859060
drynny
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
maytonПатчик на свой DDL.

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
CREATE TABLE quintet(
    id NUMBER PRIMARY KEY, 
    up NUMBER NOT NULL, -- верхний уровнь подчинения. Parent.
    typ NUMBER, -- тип данных ( 0 - аналог NULL?)
    ord NUMBER, -- порядок записей внутри.... эээ... чего-то там внутри
    val VARCHAR2(4000) -- архитекторы рекомендуют 127 символов (!)
);

-- Quote:>> Для навигации в этом списке построены 3 упорядоченных указателя – индексы: ID, Entity+Attribute, Attribute+Value

CREATE INDEX .... ? -- первичный авто-генерируется синтаксисом PRIMARY. По EA, AV - непонятно.  

CREATE INDEX .... --   я могу идентифицировать только  Value.   Что такое  "attribute" ? Где в таблице этот чортов attribute?
-- это композит? из нескольких полей?


У меня вот так:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
CREATE TABLE init (
  id int(4) UNSIGNED NOT NULL,
  t int(4) UNSIGNED NOT NULL,
  up int(4) UNSIGNED NOT NULL,
  ord int(4) UNSIGNED NOT NULL,
  val varchar(127) NOT NULL DEFAULT ''
) ENGINE=MyISAM DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC;

ALTER TABLE init
  ADD PRIMARY KEY (id),
  ADD KEY t_val (t,val),
  ADD KEY up_t (up,t);

ALTER TABLE init
  MODIFY id int(4) UNSIGNED NOT NULL AUTO_INCREMENT;
...
Рейтинг: 0 / 0
Как назвать эту структуру и подход, основанные на EAV?
    #39859061
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
drynny, ok я поменяю порядок колонок.

А имена почему такие сокращенные? Я с вашего позволения сохраню свои. Мне они... более информативны.

И что MySQL является вашей основной платформой разработки? КМК это не наилучший выбор.

ADD KEY t_val (t,val) - это я так понимаю модный аналог CREATE INDEX...
...
Рейтинг: 0 / 0
Как назвать эту структуру и подход, основанные на EAV?
    #39859062
Siemargl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttSiemargl,

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

Да мне тоже непонятно зачем данные и метаданные нужно хранить в общей таблице.
Кто сказал про таблицу? В постановке задачи про таблицу ничего нет: Как назвать эту структуру и подход, основанные на EAV? .

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

Обсуждаемый подход хранит квинтеты на носителе (диске, флэшке, RAM), сплошным ковром. Их можно хранить в порядке возрастания ID, чтобы сэкономить на одноименном индексе. Также на диске хранится подобие индекса по двум значениям квинтета: Entity+Attribute, Attribute+Value, чтобы можно было быстро найти физический адрес квинтета на том ковре, не зная ID, но имея ID его родителя или ID типа и значение.

Друг. Это не будет работать! Я имею в виду сплошным ковром. Эволюция DBMS показывает что типизированные и dbf
подобные файловые штуки не летают! Они могут работать только в том случае когда твоя система - рид-онли.
Но как только по ней пойдут транзакции на обновление - твой ковер посыпется. В нем появится плавающее
свободное пространство и только ондному богу известно какие надо ставить параметры ватер-линии для
блоков страниц и сегментов. Да к чему это! Это уже 20 лет решено в реляционных базах. Это вынесено
в механику движков.

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

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

Но когда афтор говорит об альтернативных RAM, флешках ... тут мне стало плохо и почему-то
вспомнились создатели FVMAS, Стебелек и прочие Кроносы.

Вобщем обозначте приоритеты вашей системы. Главный приоритет - универсализм мы все поняли
и вроде-бы даже никто и не поспорил. Конструкторы там...

Вобщем вот в таком вот аспекте.
...
Рейтинг: 0 / 0
Как назвать эту структуру и подход, основанные на EAV?
    #39859070
d7i
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Знатный холивар получился...
Пора завязывать.
...
Рейтинг: 0 / 0
Как назвать эту структуру и подход, основанные на EAV?
    #39859071
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
drynnyА вам, уважаемый Хвост, предлагаю встретиться здесь лет через пять и обсудить тему. Если вас не прихлопнут, конечно, в глухой подворотне за ваш язык и манеру общения.

Хм..

drynnyне уподобляйтесь хабрадолдонам, прошу

Хех, ну лан )))


Я понял. Вы делаете свою СУБД. Сейчас у вас есть DML, и визуальное проектирование "движком", а там не за горами и DDL.

Понял-понял. Профитами тут не пахнет, решается задача с нуля придумать способ хранения схемы и данных.

Ну просто непонятно, зачем это? Ведь всё это можно делать и в любой СУБД. Создавать таблицы, добавлять атрибуты и с помощью DDL и с помощью визуальных редакторов, гораздо по-мощнее вашего надо сказать. Более того, существуют средства, как из UML получить готовенькую БД, дофигища решений.

Конечно, чтобы не изобретать, вам придётся подстраваться, ODBC, JDBC и прочие интерфейсы городить. SQL опять же, ваш язык всёж нафиг никому не упёрся, как не крути. Даже NoSQL давно осознали, что SQL даже со всеми своими недостатками это маст хев и многие приделали или приделывают к себе SQL синтаксис для запросов.
...
Рейтинг: 0 / 0
Как назвать эту структуру и подход, основанные на EAV?
    #39859072
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
d7iЗнатный холивар получился...
Пора завязывать.

Да нет холивара. Клещами из парня вытаскивают информацию, раскалёнными. Только сейчас выяснилось, что речь не о способе организации данных в СУБД, а вообще в целях своя СУБД.

И пока этой СУБД в итоге не будет говорит не о чем совершенно.

Так называемый "прототип", лежащий в единственной табличке, это курам на смех, а не решение. Но может (чем чёрт не шутит), своё решение будет не так уж катастрофически сильно отставать от СУБД версий эдак 2000-ых годов.
...
Рейтинг: 0 / 0
Как назвать эту структуру и подход, основанные на EAV?
    #39859073
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Еще один патчик.

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
CREATE TABLE quintet(
    id       NUMBER GENERATED ALWAYS AS IDENTITY,
    datatype NUMBER NOT NULL,
    parent   NUMBER NOT NULL, -- Здесь - непонятно. Обычно в деревьях существует хотя-бы 1 элемент без родителя
                                            -- это сам корень. Но соотв. констрейнт говорит нам что мы должны забить какое-то значение.
                                             -- Какое- непонятно. Что имел в виду архитектор?
    order    NUMBER NOT NULL,
    value    VARCHAR2(4000)
);

CREATE INDEX datatype_val_idx ON quintet(datatype, value); -- Даниный индекс мне непонятен. Он предполагает
                                                                                    -- смысловую нагрузку поиска в части поля datatype 
                                                                                    -- или композитного поля в том числе с значенем?

CREATE INDEX parent_datatype_idx ON quintet(parent, datatype);
...
Рейтинг: 0 / 0
Как назвать эту структуру и подход, основанные на EAV?
    #39859083
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
Код: plsql
1.
2.
3.
CREATE INDEX datatype_val_idx ON quintet(datatype, value); -- Даниный индекс мне непонятен. Он предполагает
                                                                                    -- смысловую нагрузку поиска в части поля datatype 
                                                                                    -- или композитного поля в том числе с значенем?



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

новая субд!
...
Рейтинг: 0 / 0
Как назвать эту структуру и подход, основанные на EAV?
    #39859114
Mr.Fontaine
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonА эти магические константы такие как 3 и 13 - зарезервированы?
ПОзволю свою ремарку по этому поводу....
это не константы, это обычные квинтеты, они не то что бы зарезервированы, они просто так записаны в БД.
Эти цифры указывают на тип данных (это в статьях на хабре и картинках, скопированных автором топика сюда): 3 - это number, 13 - это string
Дата Заезда будет иметь up=9

Если я правильно уловил суть, то в случае, если Вы будете создавать свою БД на основе квинтетов тип number вполне может иметь любое другое значение
...
Рейтинг: 0 / 0
Как назвать эту структуру и подход, основанные на EAV?
    #39859126
Mr.Fontaine
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
drynny
Собственно Многие-ко-многим будут выглядеть так:
iduptypordval348300Гость349300Номер3501300Бронирование351348003523490035335135013553523502

Почему "Гость" имеет тип string? Из-за того, что ФИО гостя надо записать в столбец value для id=351?
Почему "Бронирование" имеет тип "number"? Вообще не смог придумать вариантов...
А даты проживания куда писать?

P.S. Ну какие же тупые эти диванные эксперты...
...
Рейтинг: 0 / 0
Как назвать эту структуру и подход, основанные на EAV?
    #39859142
drynny
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Mr.Fontaine,

Там ошибка copy/paste.

Вот структура для бронирования с датами бронирования, заезда и выезда.

idtypeparentordervalue1110ROOT3300SHORT4400DATETIME8800CHARS9900DATE131300NUMBER141400SIGNED349300Номер3501300Бронирование351348003523490035335135013553523502356400Дата бронирования357900Заезд358900Выезд359356350336035735043613583505

...
Рейтинг: 0 / 0
Как назвать эту структуру и подход, основанные на EAV?
    #39859150
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Теперь "Гость" потерян.
...
Рейтинг: 0 / 0
Как назвать эту структуру и подход, основанные на EAV?
    #39859151
Mr.Fontaine
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
drynny, похоже опять copy/paste подвёл (строки с id=348 нет). ну да ладно
Плохо, что у некоторых строк столбйы value пустые....
Так ФИО гостя записывается в строку с id=353? А зачем id=351?
...
Рейтинг: 0 / 0
Как назвать эту структуру и подход, основанные на EAV?
    #39859153
drynny
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
maytonДруг. Это не будет работать! Я имею в виду сплошным ковром. Эволюция DBMS показывает что типизированные и dbf
подобные файловые штуки не летают! Они могут работать только в том случае когда твоя система - рид-онли.
Но как только по ней пойдут транзакции на обновление - твой ковер посыпется. В нем появится плавающее
свободное пространство и только ондному богу известно какие надо ставить параметры ватер-линии для
блоков страниц и сегментов. Да к чему это! Это уже 20 лет решено в реляционных базах. Это вынесено
в механику движков.

А ты что? Пытаешся еще и одним махом решить задачу ХРАНЕНИЯ? Это вообще капец нерешаемая задача
особенно в условиях когда работаем с документооборотм произвольной системы Х в которой нет ни таблиц
ни каких статистических свойств ни закономерностей. Есть просто простыня атрибутов и значений.
Да, брат, штука в том, что это уже работает .

Да, в виде прототипа в самой замухрыжистой СУБД, с огромными накладными расходами, с избыточной организацией данных и прочим. Если бы не было этого прототипа и ролика и разных тестов, то твое заявление звучало бы убийственно. Но прототип есть, и заявление уже не канает. Я могу забить весь терабайтный диск квинтетными данными (с документооборотом произвольной системы Х), сделать на нём приложение и оно будет вполне сносно работать.

А теперь я постепенно буду выкидывать из СУБД ненужное (например, ограничение на размер полей неактуально и много там всего), добавлять работу с данными, которая сейчас в ядре прототипа, сокращать избыточность и менять другие вещи под себя (да-да, я знаю, о чем говорю), чтобы работало всё это всё более и более быстро.

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

Да, в виде прототипа в самой замухрыжистой СУБД, с огромными накладными расходами, с избыточной организацией данных и прочим. Если бы не было этого прототипа и ролика и разных тестов, то твое заявление звучало бы убийственно. Но прототип есть, и заявление уже не канает. Я могу забить весь терабайтный диск квинтетными данными (с документооборотом произвольной системы Х), сделать на нём приложение и оно будет вполне сносно работать.

А теперь я постепенно буду выкидывать из СУБД ненужное (например, ограничение на размер полей неактуально и много там всего), добавлять работу с данными, которая сейчас в ядре прототипа, сокращать избыточность и менять другие вещи под себя (да-да, я знаю, о чем говорю), чтобы работало всё это всё более и более быстро.

В итоге будет уже не исходная СУБД, а тот ковер — решение твоей нерешаемой задачи.
1) Давай я вместо ковра тебе предложу некоторые решения.

- BerkeleyDb. Это старичок от мира Unix. Работает уже давно. О нём мало кто знает в мире NoSQL что удивительно.
- Tarantool. Развитая система индексов + оптимизации для In-Memory и быстрых вставок для дискового хранилища.

Все вышеперечисленные системы должны поддерживать вторичные индексы.

2) Мне очень не нравится термин "оно будет вполне сносно работать". От него пахнет непопаданием в SLA и NFR.
Вобщем нужно его ужесточить. Акцентировать на том что система ориентирована только на документоообоот.
И не предполагает long-term transactions, и аналитики. Про консистентность тоже умолчим. Будем просто
надеятся что операции а документами будут обеспечиваться атомарностью логики основного приложения.
...
Рейтинг: 0 / 0
Как назвать эту структуру и подход, основанные на EAV?
    #39859178
colibrii
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
d7iЗнатный холивар получился...
Пора завязывать.

наоборот!!!

drynny... (да-да, я знаю, о чем говорю) ...

это "квинтет головного мозга" запущенный случай, не спугните пациента, изучим его получше
...
Рейтинг: 0 / 0
Как назвать эту структуру и подход, основанные на EAV?
    #39859180
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нет никакого холивара. Я пока вижу - нехватку очебного материала по этим квинтетам.
...
Рейтинг: 0 / 0
Как назвать эту структуру и подход, основанные на EAV?
    #39859190
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonНет никакого холивара. Я пока вижу - нехватку очебного материала по этим квинтетам.
Я пока вижу нехватку цели. У любой разработки есть/должна быть некая цель - та задача или класс задач, которые она предназначена решать "действительно хорошо" - в смысле, лучше других. Именно эта цель определяет методику решения и дизайн проекта. РСУБД появились для того, чтобы просто и надёжно работать с данными. NoSQL появились для того, чтобы эффективно заменить РСУБД в некоторых задачах, для которых те слишком уж не подходят. А для чего нужна "квинтетная модель", какую задачу она решает лучше других? Тайна великая есмь.
...
Рейтинг: 0 / 0
Как назвать эту структуру и подход, основанные на EAV?
    #39859224
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мда. Согласен.
...
Рейтинг: 0 / 0
Как назвать эту структуру и подход, основанные на EAV?
    #39859259
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Еще один патчик для учебного примера.

Архитектора прошу сделать review и комментарии.
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
CREATE TABLE quintet(
    id       NUMBER GENERATED ALWAYS AS IDENTITY,
    datatype NUMBER NOT NULL,
    parent   NUMBER NOT NULL,
    order    NUMBER NOT NULL,
    value    VARCHAR2(4000)
);

CREATE INDEX datatype_val_idx ON quintet(datatype, value);

CREATE INDEX parent_datatype_idx ON quintet(parent, datatype);

INSERT INTO quintet VALUES (1,1,1,0,'ROOT');
INSERT INTO quintet VALUES (3,3,0,0,'SHORT');
INSERT INTO quintet VALUES (4,4,0,0,'DATETIME');
INSERT INTO quintet VALUES (8,8,0,0,'CHARS');
INSERT INTO quintet VALUES (9,9,0,0,'DATE');
INSERT INTO quintet VALUES (13,13,0,0,'NUMBER');
INSERT INTO quintet VALUES (14,14,0,0,'SIGNED');

INSERT INTO quintet VALUES (349,3,0,0,'Номер');
INSERT INTO quintet VALUES (350,13,0,0,'Бронирование');
INSERT INTO quintet VALUES (351,348,0,0,null);
INSERT INTO quintet VALUES (352,349,0,0,null);
INSERT INTO quintet VALUES (353,351,350,1,null);
INSERT INTO quintet VALUES (355,352,350,2,null);
INSERT INTO quintet VALUES (356,4,0,0,'Дата бронирования');
INSERT INTO quintet VALUES (357,9,0,0,'Заезд');
INSERT INTO quintet VALUES (358,9,0,0,'Выезд');
INSERT INTO quintet VALUES (359,356,350,3,null);
INSERT INTO quintet VALUES (360,357,350,4,null);
INSERT INTO quintet VALUES (361,358,350,5,null);
COMMIT;
...
Рейтинг: 0 / 0
Как назвать эту структуру и подход, основанные на EAV?
    #39859310
drynny
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
softwarermaytonНет никакого холивара. Я пока вижу - нехватку очебного материала по этим квинтетам.
Я пока вижу нехватку цели. У любой разработки есть/должна быть некая цель - та задача или класс задач, которые она предназначена решать "действительно хорошо" - в смысле, лучше других. Именно эта цель определяет методику решения и дизайн проекта. РСУБД появились для того, чтобы просто и надёжно работать с данными. NoSQL появились для того, чтобы эффективно заменить РСУБД в некоторых задачах, для которых те слишком уж не подходят. А для чего нужна "квинтетная модель", какую задачу она решает лучше других? Тайна великая есмь.
Цель — ускорить разработку и снизить порог вхождения для человека с программистским складом ума. Это не понизит планку для программиста, а наоборот повысит её, заставляя больше вникать в бизнес и меньше в тонкости IT.

Я встречаю много людей, которые заявляют, что в своём дельфи или там питоне сделают всё так же быстро. Но на практике у них не получается ни по срокам, ни по функционалу. Основная проблема в том, что им нужно ТЗ, которое они бездумно воплотят точь-в-точь, со всеми косяками аналитики и без интерфейса. Потому что сложно одновременно знать (0) язык программирования и SQL, (1) доскеры/кубернетисы/спринги/свн и CI/CD ботва, на которую забивают, (2) теорию баз данных и лучшые практики, (3) html/css/js/less/gulp/..., (4) бизнес и его нужды, (5) элементарные принципы общения с заказчиком и решения вопросов.

Обычно человека хватает на 2-3 компетенции, даже если у него есть потенциал во всех.
Так вот, для IdeaV должны быть хорошо прокачаны (4) и (5), остальное делается много проще, чем обычно.

Это мой путь, я не навязываю. Сам я IT-энтузиаст с 1989 года, профессионально программирую с 2000. В 2006 году я сделал первый проект на этом подходе и с тех пор его развиваю, не программируя, а разрабатывая (тут большая разница).
...
Рейтинг: 0 / 0
Как назвать эту структуру и подход, основанные на EAV?
    #39859313
drynny
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
maytonЕще один патчик для учебного примера.

Архитектора прошу сделать review и комментарии.
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
CREATE TABLE quintet(
    id       NUMBER GENERATED ALWAYS AS IDENTITY,
    datatype NUMBER NOT NULL,
    parent   NUMBER NOT NULL,
    order    NUMBER NOT NULL,
    value    VARCHAR2(4000)
);

CREATE INDEX datatype_val_idx ON quintet(datatype, value);

CREATE INDEX parent_datatype_idx ON quintet(parent, datatype);

INSERT INTO quintet VALUES (1,1,1,0,'ROOT');
INSERT INTO quintet VALUES (3,3,0,0,'SHORT');
INSERT INTO quintet VALUES (4,4,0,0,'DATETIME');
INSERT INTO quintet VALUES (8,8,0,0,'CHARS');
INSERT INTO quintet VALUES (9,9,0,0,'DATE');
INSERT INTO quintet VALUES (13,13,0,0,'NUMBER');
INSERT INTO quintet VALUES (14,14,0,0,'SIGNED');

INSERT INTO quintet VALUES (349,3,0,0,'Номер');
INSERT INTO quintet VALUES (350,13,0,0,'Бронирование');
INSERT INTO quintet VALUES (351,348,0,0,null);
INSERT INTO quintet VALUES (352,349,0,0,null);
INSERT INTO quintet VALUES (353,351,350,1,null);
INSERT INTO quintet VALUES (355,352,350,2,null);
INSERT INTO quintet VALUES (356,4,0,0,'Дата бронирования');
INSERT INTO quintet VALUES (357,9,0,0,'Заезд');
INSERT INTO quintet VALUES (358,9,0,0,'Выезд');
INSERT INTO quintet VALUES (359,356,350,3,null);
INSERT INTO quintet VALUES (360,357,350,4,null);
INSERT INTO quintet VALUES (361,358,350,5,null);
COMMIT;


Ну, норм, только добавить нужно:
Код: sql
1.
INSERT INTO quintet VALUES (348,3,0,0,'Гость');
...
Рейтинг: 0 / 0
Как назвать эту структуру и подход, основанные на EAV?
    #39859326
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
drynnyЯ встречаю много людей, которые заявляют, что в своём дельфи или там питоне сделают всё так же быстро. Но на практике у них не получается ни по срокам, ни по функционалу. Основная проблема в том, что им нужно ТЗ, которое они бездумно воплотят точь-в-точь, со всеми косяками аналитики и без интерфейса. Потому что сложно одновременно знать (0) язык программирования и SQL, (1) доскеры/кубернетисы/спринги/свн и CI/CD ботва, на которую забивают, (2) теорию баз данных и лучшые практики, (3) html/css/js/less/gulp/..., (4) бизнес и его нужды, (5) элементарные принципы общения с заказчиком и решения вопросов.

Обычно человека хватает на 2-3 компетенции, даже если у него есть потенциал во всех.
Так вот, для IdeaV должны быть хорошо прокачаны (4) и (5), остальное делается много проще, чем обычно.

Вы не ответили на вопрос. Такую задачу решают конструкторы, 1С, SAP и т.д.

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

drynnyЭто мой путь, я не навязываю. Сам я IT-энтузиаст с 1989 года, профессионально программирую с 2000. В 2006 году я сделал первый проект на этом подходе и с тех пор его развиваю, не программируя, а разрабатывая (тут большая разница).

Играть и бравировать словами "разрабатываю, а не программирую", "это не-EAV а нечто другое" -- попытка сместить фокус внимания от реальности, характеризуется обыкновенным фанатизмом.

Не нужно. Перед вами не та аудитория, зачем вот это вот всё? Все, значит, идиоты, и на своих питонах делают лабуду, которую вы можете сделать накликав мышкой? Серьёзно? Открыли священный грааль, который не дался ни одной, мировой крупной компании? Ну что вы в самом деле.

Давайте будем реалистами, и говорить о конкретных вещах и оставаться в конструктивном русле инженерных решений и доказательсв. А пока в ваших словах какой-то унылый маркетинг и реклама
...
Рейтинг: 0 / 0
Как назвать эту структуру и подход, основанные на EAV?
    #39859334
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
drynnyПотому что сложно одновременно знать (0) язык программирования и SQL, (1) доскеры/кубернетисы/спринги/свн и CI/CD ботва, на которую забивают, (2) теорию баз данных и лучшые практики, (3) html/css/js/less/gulp/..., (4) бизнес и его нужды, (5) элементарные принципы общения с заказчиком и решения вопросов.

Опять таки, давайте по пунктам.

0. У вас нет ЯП? Нельзя писать логику?
1. У вас нет девопса? "Разработка" на продакшене? Само себя как-нибудь развёртывает?
2. Не нужны компетенции в моделировании данных? Оно само как-нибудь?
3. UI сам себя пишет? UX сам решается?
4. Нужды бизнеса лесом, главное квинтеты?
5. Общаться с заказчиком не нужно, пусть сам тыкает мышью?
...
Рейтинг: 0 / 0
Как назвать эту структуру и подход, основанные на EAV?
    #39859363
iOracleDev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сам я IT-энтузиаст с 1989 года
Ууу все бесполезно, голос разума услышан не будет, такие "кулибины" в каждом виде деятельности находятся, они ищут себе сектантов-адептов и садятся им на уши.
...
Рейтинг: 0 / 0
Как назвать эту структуру и подход, основанные на EAV?
    #39859388
drynny
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
hVosttВы не ответили на вопрос. Такую задачу решают конструкторы, 1С, SAP и т.д.

Я-то ответил, просто вы не хотите увидеть связь.
Как раз квинтеты и позволяют создать конструктор и, в отличие от 1С и SAP, в нём нужно будет намного меньше и проще программировать.
...
Рейтинг: 0 / 0
Как назвать эту структуру и подход, основанные на EAV?
    #39859400
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
drynnyЦель — ускорить разработку и снизить порог вхождения для человека с программистским складом ума.
Да, именно эту, простите за выражение, фигню я и ожидал услышать.

"Ускорение разработки" и прочее, о чём Вы писали, не имеет ни малейшего отношения к структуре хранения данных на низовом уровне. Между ними просто нет никакой связи. Вы родили этот маркетинговый буллшит абы что-то сказать, и Ваш ответ показывает - как, собственно, и было очевидно, но из вежливости следовало проверить - что Вашей настоящей целью, как и у других бездумных энтузиастов, было "давай-ка я забабахаю псевдокрутую хрень и потешу ЧСВ, это гораздо интереснее, чем учиться правильно решать задачи".

Насколько я понял, Вы развиваете это решение с 2006-го года, то есть без малого пятнадцать лет. Несмотря на накопленный за это время опыт успешных проектов, Вы не смогли без ошибки решить простейшую задачу со средневзвешенным - это очень наглядно показывает, насколько Ваше решение в действительности облегчает и ускоряет разработку. То, что Вы, получив на выборке чисел 11, 12 и 15 среднее 4.93 (если мне память не изменяет) не остановились и не задумались, всё ли правильно сделали - ещё более наглядно показывает Ваш опыт в работе с данными. Короче говоря, уж извините, но когда Вы говорите о "профессиональной работе" и о "программистском мышлении" - стоит больших усилий удержаться от откровенного хохота.

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

Ну вот нам всем и непонятно, почему и с какой кстати квинтеты позволяют создать конструктор.
В 1С тоже модель динамическая и создаётся мышкой.

Чем тут квинтеты реально помогут?

Вот смотрите, давайте в лоб, если непонятно.

Такая структура таблиц у вас могла бы быть для хранения мета-данных:

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
-- типы сущностей
create table ETYPES (
  id int PK,
  name varchar(100),
  description varchar(1000)  
  ...
)

-- типы атрибутов
create table ATYPES (
  id int PK,
  name varchar(100),
  description varchar(1000)  
  ...
)

-- атрибуты типов
create table ATTRIBUTES (
  id int PK,
  eTypeId int FK(ETYPES),
  aTypeId int FK(ATYPES),
  order int,
  name varchar(100),
  description varchar(1000)
  ...
)

-- сущности (данные)
create table ENTITIES (
  id int PK,
  typeId int FK(ETYPES)
  ...
)

-- значения атрибутов сущностей
create table VALUES (
  entityId int FK(ENTITIES),
  attributeId int FK(ATTRIBUTES),
  value varchar(4000)
  ...
)



И она работает! Ещё можно добавить отдельно связи с разными параметрами. Хотя и так связи можно выразить через значения атрибутов-связей. Тут всё понятно, всё семантически разложено и даже поддерживается СУБД. Например, вы не можете указать вместо типа сущности, тип атрибута, или вместо сущности сослаться на тип, СУБД не даст. Такое можно сопровождать, и даже запросы будут проще, чем у вас.

Тут ваши зубодробительные квинтеты можно разложить по таблицам нормальным и понятным образом. Конечно это всё равно хуже нормализованной БД по ряду причин, но со своими плюсами (динамика), однако на порядки лучше ваших квинтетов, которые без каких-либо видимых причин вносят непомерную сложность.

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

Может вы недостаточно всё усложнили? Может 5 полей -- это много? Давайте как-нибудь в 3 уместим? В идеале конечно, всё в одно поле одной таблицы всё засунуть, давайте идти до конца. Ну зачем эти глупые полумеры? :)
...
Рейтинг: 0 / 0
Как назвать эту структуру и подход, основанные на EAV?
    #39859420
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVostt
Код: sql
1.
2.
3.
4.
5.
6.
7.
-- значения атрибутов сущностей
create table VALUES (
  entityId int FK(ENTITIES),
  attributeId int FK(ATTRIBUTES),
  value varchar(4000)
  ...
)



И вот вам простая математика.

Здесь для того, чтобы задать значение атрибута нужно всего 3 поля.
У вас для этого понадобится 5.
В отдельных случаях поля вашего квинтета лежат мёртвым грузом.

hVostt
Код: sql
1.
2.
3.
4.
5.
6.
-- сущности (данные)
create table ENTITIES (
  id int PK,
  typeId int FK(ETYPES)
  ...
)



А для записи сущности -- всего 2 поля, вместо 5.

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

Если мы сможем извлечь из квинтетной системы обобщенный интерфейс и внимательно его осмотрим - то мне кажется что на уровне системы хранения может встать обычная документная БД типа Mongo или CouchDb.

Я не берусь это доказывать, но я вижу что квинтеты это даже ... Хм...избыточно что-ли.
...
Рейтинг: 0 / 0
Как назвать эту структуру и подход, основанные на EAV?
    #39859465
Vladimir Baskakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вспомнил. что где-то я это уже в каком-то виде видел, было такое дежавю. Типа похожую, по стилистике конструкцию
=======================
Я.А.Фельдман
Создаем информационные системы
Разработка прикладных информационно-управляющих систем для предприятий, организаций и средней школы — это просто!
с компакт-диском. 2006

http://www.dom-spravka.info/biblio/files_knig/d_um_oss/inf_sistemi.pdf
=======================
Не ну..... что то же работает, внедрено и тп. Ну и дальше, чтобы еще лучше и больше, и быстрее и выше и сильнее!
...
Рейтинг: 0 / 0
Как назвать эту структуру и подход, основанные на EAV?
    #39859470
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonЕсли мы сможем извлечь из квинтетной системы обобщенный интерфейс и внимательно его осмотрим
То окажется, что и интерфейс тоже не представляет никакой заметной ценности.

maytonмне кажется что на уровне системы хранения может встать обычная документная БД
Или не документная. Или вообще что угодно. Хоть REDIS, хоть Teradata. Имхо, это очевидно.
...
Рейтинг: 0 / 0
Как назвать эту структуру и подход, основанные на EAV?
    #39859553
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVostthVostt
Код: sql
1.
2.
3.
4.
5.
6.
7.
-- значения атрибутов сущностей
create table VALUES (
  entityId int FK(ENTITIES),
  attributeId int FK(ATTRIBUTES),
  value varchar(4000)
  ...
)



И вот вам простая математика.

Здесь для того, чтобы задать значение атрибута нужно всего 3 поля.
У вас для этого понадобится 5.
В отдельных случаях поля вашего квинтета лежат мёртвым грузом.

Я пробовал использовать EAV с типизацией. Что-то типа
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
create table NUM_VALUES (
  entityId int FK(ENTITIES),
  attributeId int FK(ATTRIBUTES),
  value NUMBER
  ...
);

create table DATE_VALUES (
  entityId int FK(ENTITIES),
  attributeId int FK(ATTRIBUTES),
  value DATE
  ...
);



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

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

Посему объяснения два:

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

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

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
case class Quintet(
     id       : Int,
     parent   : Int,
     datatype : Int,
     order    : Int,
     value    : String)

trait QuntetBasicApi {
 ...
}


Можно начать с поисков по индексированным полям. И иерархическим запросам.

Архитектор?
...
Рейтинг: 0 / 0
Как назвать эту структуру и подход, основанные на EAV?
    #39859568
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttmaytonНе очень изящно зато есть гарантия строгости по типам. И есть надежда что количество типов в системе
- величина достаточно постоянная. 1 раз создал и забыл.

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

Формошлёпство это понятно, к этому вопросов нет.

Вопрос к способу реализации. Вот эти самые вымышленные квинтеты. Зачем? Как бы и лбом можно гвоздь забить. Зачем??? )))))

Меня даже уже не великий и беспощадный смысл, который вкладывал автор в это. А как он к этому пришёл. Вот как рассуждал?

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

Это ж почище изобретения вечного двигателя будет, там хоть цель благая.
...
Рейтинг: 0 / 0
Как назвать эту структуру и подход, основанные на EAV?
    #39859591
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я вижу в этом другие направления развития. Например event-store и битемпоральность.
Пишутся события. Мета-команды. Создания базовы типов. Создание таблиц. И собственно
команды фиксации бизнес-операций. Создание гостя. Создание номера. Резервирование гостем
номера. Потом соотв. UPDATES. Освобождение номера. Идеальное бэкапирование. Идеальная
изоляция транзакций. Конкуренции нет вообще. Репликация упрощается.

Зачем сливать всё в квинтеты? ХЗ. С этой точки зрения всё логично. Я-бы еще добавил
Timestamp и тип операции (UPDATE/DELETE/INSERT).

Вот как-то так.

Но если строить классическую модель без event-store то идея Хвоста мне больше нравится.
Лучше иметь десяток специализированных простых таблиц которые покрывают любую
предметную область чем 1 универсальную со сложной семантикой которая ХЗ
как себя ведет под нагрузкой.
...
Рейтинг: 0 / 0
Как назвать эту структуру и подход, основанные на EAV?
    #39859594
drynny
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
maytonДавайте рисовать API к этой системе. В конце концов идея определяется не квинтетами а методами доступа.

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
case class Quintet(
     id       : Int,
     parent   : Int,
     datatype : Int,
     order    : Int,
     value    : String)

trait QuntetBasicApi {
 ...
}


Можно начать с поисков по индексированным полям. И иерархическим запросам.

Архитектор?
Квинтет, он же для другого. Пользователь не пишет код и не знает ничего о квинтетах.
И классы не определяет, а задает нужные объекты в редакторе типов:
(подчиненные и связанные объекты расположены справа и распространяются вниз)

...
Рейтинг: 0 / 0
Как назвать эту структуру и подход, основанные на EAV?
    #39859596
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttМеня даже уже не великий и беспощадный смысл, который вкладывал автор в это. А как он к этому пришёл. Вот как рассуждал?
Да как обычно в таких случаях. Начинает знакомиться с предметной областью. Читает SQL. Думает: как бы круто программировать? Натыкается на EAV: о, круто. Особенно читая статью другого такого же ламера. Пробует. Плевать, что медленно и неудобно, зато один раз напишу крутой системный софт - это же интересно - и всё будет летать. Блин. Не летает. Тогда подрихтую модель, чтобы залетало. Совсем круто! Правда, не летает, но зато совсем своё, дайте мне нобелевку!
...
Рейтинг: 0 / 0
Как назвать эту структуру и подход, основанные на EAV?
    #39859599
drynny
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
softwarerhVosttМеня даже уже не великий и беспощадный смысл, который вкладывал автор в это. А как он к этому пришёл. Вот как рассуждал?

Да как обычно в таких случаях. Начинает знакомиться с предметной областью. Читает SQL. Думает: как бы круто программировать? Натыкается на EAV: о, круто. Особенно читая статью другого такого же ламера. Пробует. Плевать, что медленно и неудобно, зато один раз напишу крутой системный софт - это же интересно - и всё будет летать. Блин. Не летает. Тогда подрихтую модель, чтобы залетало. Совсем круто! Правда, не летает, но зато совсем своё, дайте мне нобелевку!
Что-то накал обсуждения ослаб. Подкину немного.

Когда-то, в 70-е, программное обеспечение часто разрабатывалось почти с нуля, а вычислительные мощности в принципе не позволяли создать конструктор, подобный IdeaV: он требовал бы на 3 порядка больше ресурсов. В 1000 раз больше ресурсов.

Потом, в 80-е, программисты стали использовать свои же, ранее написанные библиотеки программ. При этом для работы такие программы требовали в разы больше ресурсов на единицу полезного вычисления, чем написанные с нуля. Зато этот подход ускорял разработку также в разы. Конструктор требовал бы в 100 раз больше ресурсов , что было непозволительной роскошью.

Далее, в 90-е, программисты стали использовать, в основном, не свои наработки, а сторонние библиотеки и инструменты разработки. Чужой инструментарий часто был закрыт, решения работали медленнее, страдала совместимость. Тем не менее, использование библиотек ускоряло разработку на порядок-два. Вычислительные мощности росли, поэтому все легко мирились с тем, что их требуется также на 2 порядка больше. Теоретически, конструктор требовал бы в 10 раз больше ресурсов.

В 90-х были последние известные попытки создать нечто подобное моему конструктору, после чего идея, которая далеко не нова, была признана неработоспособной. Я внимательно изучил один из популярнейших эпизодов. Причина неудач: разработчик не опускался до низкого уровня написания программ, по привычке 80-90-х годов таща за собой библиотеки и стереотипы разработки. Вместо фундаментальной проработки ядра ставка была сделана на новейшие технологии.

В 2000-х мы наблюдали прежние темпы роста вычислительной мощности. Библиотеки программ стали шире, мощнее и устойчивее. При этом бесконечное богатство инструментария разработки сыграло с разработчиками злую шутку: выбор и овладение инструментом требовало столько же усилий, сколько тратили программисты из 90-х, при примерно одинаковом конечном результате. Скорость разработки уже не росла пропорционально накладным вычислительным расходам, как это было в 70-90-е годы.

Расчетная эффективность конструктора и традиционной разработки сравнялись в нулевых годах. В 2003 году мной, в качестве хобби, был спроектирован конструктор, а в 2006 запущен в реальном проекте (работает до сих пор). Конструктор использует простейшие технологии, основанные на наработках прошлого века, достаточно быстрые и надежные для своих задач.

На сегодняшний день, в 2019 году, при невероятной вычислительной мощности техники, мы можем секундами ожидать, когда на экране нашего монитора прорисуется web-страница (точно как в конце 90 х). Сервисы, которые мы используем, представляют собой сложный и многослойный пирог, который требует всё больше ресурсов и работает всё медленнее. Прогресс информационных технологий (IT) нивелируется их же сложностью и растущими требованиями программных продуктов. Ситуация как в постулате: «бюрократия расширяется, чтобы удовлетворить нужды расширяющейся бюрократии». Скорость разработки так и застыла на уровне 90-х годов.
...
Рейтинг: 0 / 0
Как назвать эту структуру и подход, основанные на EAV?
    #39859600
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
drynnyКвинтет, он же для другого. Пользователь не пишет код и не знает ничего о квинтетах.

Да это уже понятно, пользователь не знает о способе хранения, итак понятно. И то, что под пользователем вы понимаете и разработчиков, которые работают с "движком", и тоже не знают. Ясно всё это, ясно.

Но.

Зачем вот это форменное издевательство внутри? Какой профит именно от квинтетной модели?

Ваши цели могут быть достигнуты 100500 способов и классическим EAV.

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

Ваше видение истории доставляет, но как говорится, для кого-то Москва это сырой подвал, а для кого-то вид на Кремль с чашкой кофе.

Про квинтеты можете ответить? Не про конструкторы, не про скрытую магию для высшего существа, лениво двигающего мышкой.

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

Ваше видение истории доставляет, но как говорится, для кого-то Москва это сырой подвал, а для кого-то вид на Кремль с чашкой кофе.

Про квинтеты можете ответить? Не про конструкторы, не про скрытую магию для высшего существа, лениво двигающего мышкой.

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

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

Я вам уже показывал математику выше.

Там, где требуется 2 поля для хранения сущности, у вас 5.
Многосложная семантическая нагрузка на поля и комбинацию полей.

Какой профит? В чём смысл?
...
Рейтинг: 0 / 0
Как назвать эту структуру и подход, основанные на EAV?
    #39859609
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
https://tryjob.ru/index.html

Почитайте. Шиза в кубе, враньё, помешанное на фантазии лсд-шника...
Мошенничество в чистом виде.

Новый язык программирования — тренд 2019‑2021 гг.

Если это такой мощный "язык программирования", почему бы не зарабатывать на нём, а не привлекать доверчивых одептов за деньги?

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

Использование EAV без ORM требует ручного написания громоздких запросов. Это неприятно. Регулярно подглядывать в документацию или базу, какой атрибут как с чем связан - это утомительно.

В ORM, под которой обычные широкие таблицы (не EAV), каждое изменение набора атрибутов класса, отображённого на эти таблицы, требует изменения схемы БД. Для этого приходится делать громоздкие "миграции", которые могут требовать временного вывода системы из эксплуатации.
При этом ORM, как правило, работают с одиночными объектами, а не с большмим датасетами (коллекциями объектов). При такой работе однострочными INSERT\UPDATE широкие таблицы особой выгоды по сравнению с EAV не дают.

Соответственно, ORM поверх EAV обладает следующими достоинствами:
Высокая степень оперативной готовности - изменение набора полей класса не требует изменения схемы БД, следовательно миграции не нужны. Все изменения можно накатывать на лету.
Скорость разработки - не нужно руками джойнить атрибуты.
Потенциально высокая надёжность - из-за фиксированной структуры хранилища (EAV) все запросы и джойны, которые формирует ORM, одинаковы для любых атрибутов. Соответственно, код ORM будет простым. Меньше кода - меньше шансов на ошибку разработчиков ORM.

Учитывая, что в системе реализован конструктор интерфейса (если я правильно понял картинки), и планы автора сделать собственное хранилище вместо РСУБД, получается самодостаточное решение интерфейс + ORM + EAV + хранение.
Что-то наподобие MS Access или FOXPRO, но с указанными выше достоинствами.
...
Рейтинг: 0 / 0
Как назвать эту структуру и подход, основанные на EAV?
    #39859627
Siemargl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttdrynnyКак раз квинтеты и позволяют создать конструктор и, в отличие от 1С и SAP, в нём нужно будет намного меньше и проще программировать.

Ну вот нам всем и непонятно, почему и с какой кстати квинтеты позволяют создать конструктор.
В 1С тоже модель динамическая и создаётся мышкой.

Чем тут квинтеты реально помогут?

Вот смотрите, давайте в лоб, если непонятно.

Такая структура таблиц у вас могла бы быть для хранения мета-данных:

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
-- типы сущностей
create table ETYPES (
  id int PK,
  name varchar(100),
  description varchar(1000)  
  ...
)

-- типы атрибутов
create table ATYPES (
  id int PK,
  name varchar(100),
  description varchar(1000)  
  ...
)

-- атрибуты типов
create table ATTRIBUTES (
  id int PK,
  eTypeId int FK(ETYPES),
  aTypeId int FK(ATYPES),
  order int,
  name varchar(100),
  description varchar(1000)
  ...
)

-- сущности (данные)
create table ENTITIES (
  id int PK,
  typeId int FK(ETYPES)
  ...
)

-- значения атрибутов сущностей
create table VALUES (
  entityId int FK(ENTITIES),
  attributeId int FK(ATTRIBUTES),
  value varchar(4000)
  ...
)



И она работает! Ещё можно добавить отдельно связи с разными параметрами. Хотя и так связи можно выразить через значения атрибутов-связей. Тут всё понятно, всё семантически разложено и даже поддерживается СУБД. Например, вы не можете указать вместо типа сущности, тип атрибута, или вместо сущности сослаться на тип, СУБД не даст. Такое можно сопровождать, и даже запросы будут проще, чем у вас.

Тут ваши зубодробительные квинтеты можно разложить по таблицам нормальным и понятным образом. Конечно это всё равно хуже нормализованной БД по ряду причин, но со своими плюсами (динамика), однако на порядки лучше ваших квинтетов, которые без каких-либо видимых причин вносят непомерную сложность.

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

Может вы недостаточно всё усложнили? Может 5 полей -- это много? Давайте как-нибудь в 3 уместим? В идеале конечно, всё в одно поле одной таблицы всё засунуть, давайте идти до конца. Ну зачем эти глупые полумеры? :)Хм, EAV и 5 таблиц.
Кажется Хвост решил успеть на подножку уходящего квинтетного паровоза =)

Данные же могут храниться точно так же.
...
Рейтинг: 0 / 0
Как назвать эту структуру и подход, основанные на EAV?
    #39859637
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Одни пишут, другие критикуют. Хорошо, когда за это кто то им платит :)
...
Рейтинг: 0 / 0
Как назвать эту структуру и подход, основанные на EAV?
    #39859654
ldfanate
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Gerros следующими достоинствами:
Высокая степень оперативной готовности - изменение набора полей класса не требует изменения схемы БД, следовательно миграции не нужны. Все изменения можно накатывать на лету.

Скорость разработки

код ORM будет простым. Меньше кода - меньше шансов на ошибку разработчиков ORM.


Ну т.е. некое чисто разработчицкое средство быстрого прототипирования MDM-платформ? :)
Т.е. некое ООО "Корпоративные справочники", куда приходят корп.заказчики, и говорят "а сварганьте мне справочник материалов живенько ... а какой набор атрибутов? ... а хз (и далее крупными мазками, пальцами в воздухе) ... а вот пожалста нате".

Если к этому прикрутить кнопку-визард "сгенерировать продуктивную MDM-платформу", которая из EAV развернёт в нормальную структуру БД, со связязми и индексами, - то наверное взлетит. А если оно будет уметь корректно и безопасно "догенерять" изменения на лету на уже ранее сгенерённую MDMу (особенно набитую продутивными данными), то совсем взлетит.
...
Рейтинг: 0 / 0
Как назвать эту структуру и подход, основанные на EAV?
    #39859690
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GerrosТут многие интересовались у автора, в чём глубокий смысл его творения.
Не готов обсуждать степень новизны, просто попробую пофантазировать на тему применимости...
Фактически мы имеем ORM, у которой под капотом EAV. По-моему, эта комбинация лучше чем EAV без ORM или ORM без EAV.

Вопрос не в этом, обсуждается не конструктор и формошлепство. А выбранный способ организации данных, вся бд в одной таблице из 5 полей. И пусть это только прототип, уже этом этапе вызывает большие вопросы какие преимущества это даёт.

Я не вижу никаких преимуществ перед хранением той же структуры данных с мета данными, но разбитой на несколько таблиц. Зато виду очевидное усложнение на ровном месте и кучу недостатков

Учитывая, что срок разработки прототипа тянется с 2006 года, складываются большие сомнения правильную ли сферу деятельности выбрал автор

Глядя на его промо сайт я утверждают во мнении, что перед нами обыкновенный бездарный мошенник.
...
Рейтинг: 0 / 0
Как назвать эту структуру и подход, основанные на EAV?
    #39859694
Vladimir Baskakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GerrosВ ORM, под которой обычные широкие таблицы (не EAV), каждое изменение набора атрибутов класса, отображённого на эти таблицы, требует изменения схемы БД. Для этого приходится делать громоздкие "миграции", которые могут требовать временного вывода системы из эксплуатации.
При этом ORM, как правило, работают с одиночными объектами, а не с большмим датасетами (коллекциями объектов). При такой работе однострочными INSERT\UPDATE широкие таблицы особой выгоды по сравнению с EAV не дают.
.
В ядерную часть логики и объектов сложной и объемной системы изменения вносятся редко, очень редко или почти никогда - после вызревания системы. Поэтому делать на EAV ядро я резона не вижу. Приложить его сбоку для настроек и кастомизаций системы в том или ином виде можно. Равно как и ==свой новый язык программирования, который намного лучше тех, что уже есть в изобилии== - профит несет редко. И то что оно есть в 1С - так, 1С любят не за это. и SAP - не за ABAP.

особого профита от того, что в EAV ==можно легко добавить атрибут не делая alter table add ... == добавить легко. А вот с проапдейтить и проиндексировать - сразу интереснее. поэтому, по сути- баш на баш как минимум. То что атрибуты добавляются на ==живой, работающей системе и ничего! == - так с ними должен работать код, для встраивания коего в общий контур все же придется нажать стоп-кран. поэтому тоже.... профит сомнительный. в целом.
...
Рейтинг: 0 / 0
Как назвать эту структуру и подход, основанные на EAV?
    #39859708
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Vladimir Baskakovи SAP - не за ABAP

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

Я вам уже показывал математику выше.

Там, где требуется 2 поля для хранения сущности, у вас 5.
Многосложная семантическая нагрузка на поля и комбинацию полей.

Какой профит? В чём смысл?
При чем тут семантическая нагрузка и какое отношение она имеет к пользователю, у которого визуальный редактор и всё просто?

Факт 2 против 5 вообще ни о чем.

Но давайте другие рассмотрим. По вашей методике — сравним числа :-)

1) Поскольку мы решили скрывать от пользователя все несущественные детали, такие как связующие ID, например, схема будет несколько упрощена: удалены упоминания ID и объединены названия сущностей и их ключевые значения.

Классическая схема:


В квинтетах:


Теперь мы видим 6 разных полей данных вместо 9, а вся схема предлагает нам прочитать и осмыслить 7 слов вместо 13.

2) Ядро для работы с квинтетной моделью состоит из 2300 строк кода и будет только сокращаться при написании нового ядра СУБД. Оно занимает пару мегабайт в оперативной памяти, оставляя много места под данные, кэш индексов и прочие полезные вещи.
Использование памяти можете посмотреть здесь: habr.com/ru/company/neoflex/blog/451218/#tests
(там в среднем 32 запроса в секунду занимают суммарно менее 100МБ памяти)
Сравните с вашими мелкосервисами на Java и предъявите сюда ваши картинки.
...
Рейтинг: 0 / 0
Как назвать эту структуру и подход, основанные на EAV?
    #39860006
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
drynnyПри чем тут семантическая нагрузка и какое отношение она имеет к пользователю, у которого визуальный редактор и всё просто?

Разработчик. Любой разработчик, который будет нанят в команду разрабатывать эту байду будет вынужден знатно ибстись с этими квинтетами для развития системы.


drynnyФакт 2 против 5 вообще ни о чем.

Факт о чём.

1. Ровно столько полей, сколько нужно для задачи, против любого другого количества ненужного обвеса.
2. Каждое из полей несёт одну смысловую нагрузку как для разработчика, так и для СУБД, катастрофически снижая возможность ошибки.
3. Ограничения целостности на уровне СУБД, против ОЦ на уровне ПО. СУБД тупо не даст выстрелить в ногу на самом элементарном уровне. В ваши квинтеты можно записать что угодно и потом разгребать это говно.


drynnyТеперь мы видим 6 разных полей данных вместо 9, а вся схема предлагает нам прочитать и осмыслить 7 слов вместо 13.

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


drynny2) Ядро для работы с квинтетной моделью состоит из 2300 строк кода и будет только сокращаться при написании нового ядра СУБД. Оно занимает пару мегабайт в оперативной памяти, оставляя много места под данные, кэш индексов и прочие полезные вещи.
Использование памяти можете посмотреть здесь: habr.com/ru/company/neoflex/blog/451218/#tests
(там в среднем 32 запроса в секунду занимают суммарно менее 100МБ памяти)

Разница между запросами по квинтетами и обычными таблицами -- космос. ВЫ их даже не осмелились привести, сравнивая _индексированные_ запросы на квинтетах с _неиндексированными_ данными на классических таблицах. И это на простых запросах, на элементарных.

А на сложных запросах деградация будет адовая.

drynnyСравните с вашими мелкосервисами на Java и предъявите сюда ваши картинки.

Нет нужды, в интернете всё гуглится, есть книги, статьи, масштабные исследования. А у вас чё, три картинки и нарисованные в пейнте графики.

И вы опять не смогли пояснить в чём профит от квинтетов. Одни и те же картинки постите, которые вообще ничего не говорят о преимуществах квинтетов, как о способе организации данных.

Ничего. Вы либо к разработке ПО имеете такое же отношение, как ёжик к балерине, либо просто бездарный неуч, который не может ответить на простейший вопрос.
...
Рейтинг: 0 / 0
Как назвать эту структуру и подход, основанные на EAV?
    #39860010
iOracleDev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
drynnyИспользование памяти можете посмотреть здесь: habr.com/ru/company/neoflex/blog/451218/#tests
Блог компании Неофлекс, компания Неофлекс впаривает такую дичь клиентам?
...
Рейтинг: 0 / 0
Как назвать эту структуру и подход, основанные на EAV?
    #39860011
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iOracleDevdrynnyИспользование памяти можете посмотреть здесь: habr.com/ru/company/neoflex/blog/451218/#tests
Блог компании Неофлекс, компания Неофлекс впаривает такую дичь клиентам?

Да это писец. Стоит сразу давать ссылку на эти квинтеты тем, кто захочет с неофлексом связаться, чтоб даже близко не подходили.
...
Рейтинг: 0 / 0
Как назвать эту структуру и подход, основанные на EAV?
    #39860023
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
drynny2) Ядро для работы с квинтетной моделью состоит из 2300 строк кода и будет только сокращаться при написании нового ядра СУБД. Оно занимает пару мегабайт в оперативной памяти, оставляя много места под данные, кэш индексов и прочие полезные вещи.
Использование памяти можете посмотреть здесь: habr.com/ru/company/neoflex/blog/451218/#tests
(там в среднем 32 запроса в секунду занимают суммарно менее 100МБ памяти)
Сравните с вашими мелкосервисами на Java и предъявите сюда ваши картинки.
Я вот этот пассаж про ядро вообще не понял. Ни строки кода ни 100 Мб не имеют никакого значения
для оценки качества среднего бизнес-продукта данного уровня.

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

хоть я и любитель оценить потребление ресурсов, но

во-первых мерять нужно с умом, как и весь бенчмаркинг впрочем. И 100Мб может оказаться и хорошим и плохим результатом, в зависимости от дальнейшей функции от нагрузки

во-вторых мне больше не понравилось по ссылке Тем не менее, при 20-25 запросах в секунду (пиковая нагрузка при работе 20 пользователей), сервер укладывается в требования по производительности — 1 секунда на отклик. В целом ресурсы его недогружены, хотя это самый бюджетный вариант: 1 ядро 2.4 ГГц при 1 ГБ оперативной памяти.25RPS это какой то трэш вне зависимости от задачи

собственно, может там задача на расчет 100 биткойнов, но сомневаюсь и не вникал
...
Рейтинг: 0 / 0
Как назвать эту структуру и подход, основанные на EAV?
    #39860185
Дмитрий Мух
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Тем не менее, при 20-25 запросах в секунду (пиковая нагрузка при работе 20 пользователей), сервер укладывается в требования по производительности — 1 секунда на отклик.
Вот это требования к производительности, так требования: 1 секунда на отклик сервера. Сильно.

У нас за прошедшие сутки в среднем 152,5 запроса в секунду, отклик сервера - 94,4 миллисекунды.
Не, квинтеты точно не для нас :)
...
Рейтинг: 0 / 0
Как назвать эту структуру и подход, основанные на EAV?
    #39860323
Vladimir Baskakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторЧто-то накал обсуждения ослаб. Подкину немного.
у меня интерес ненадолго проснется при выкладывании документации по системе (статьи на хабре это не она) тексте соглашения по использованию, с тем что по чем стоит, и общедоступным в песочнице примером ..... требующим сравнительно сложного скручивания и работы с данными, ..... ну там агрегация на пять 6 табличек чего нибудь, при проверке условия наличия чего то где то в другом месте.

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

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

Нужно понимать, что там запросы максимально примитивные с точки зрения модели данных.

Простейшие запросы генерируют увесистые тяжёлые джойны и условия выборок, которые на 99% технические, нежели бизнесовые.

Будь там что по-сложнее, из реального мира, будет уже не 1 секунда, а больше, местами на порядки.
...
Рейтинг: 0 / 0
Как назвать эту структуру и подход, основанные на EAV?
    #39860333
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Давайте я немножко сделаю шаг назад. Я уже спрашивал Архитектора про API.
На основании индексной информации я сделал набросок к квинтетному интерфейсу.
Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
trait QuntetBasicApi {

  def quintetById(id : Int) : Quintet = ???

  def quintetChainStartWith(id : Int) : LazyList[Quintet] = ???

  def quintetByDatatypeValue(datatype : Int, value : Option[Int]) : LazyList[Quintet] = ???

  def quintetByParentDatatype(parent : Int, dataType : Option[Int]) : LazyList[Quintet] = ???

}



Я включил базовый набор поисковых атрибутов с учотом индексов. Они расположены таким образом
чтобы обеспечивать быстрый доступ к множествам квинтетов.

Все прочие проекции которые можно придумать по идее должны покрываться этим API. Дополнительные
фильтры по прочим полям я пока не включил. Их можно отфильтровать позже.

Исключение - метод quintetChainStartWith(). Его задача - выборка поддеревьев по id корня.

drynny - прошу вас дать комментарии по этому API. Чего в нем еще не хватает для полноценной работы?
...
Рейтинг: 0 / 0
Как назвать эту структуру и подход, основанные на EAV?
    #39860369
drynny
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Siemarglmayton, softwarer,

хоть я и любитель оценить потребление ресурсов, но

во-первых мерять нужно с умом, как и весь бенчмаркинг впрочем. И 100Мб может оказаться и хорошим и плохим результатом, в зависимости от дальнейшей функции от нагрузки

во-вторых мне больше не понравилось по ссылке Тем не менее, при 20-25 запросах в секунду (пиковая нагрузка при работе 20 пользователей), сервер укладывается в требования по производительности — 1 секунда на отклик. В целом ресурсы его недогружены, хотя это самый бюджетный вариант: 1 ядро 2.4 ГГц при 1 ГБ оперативной памяти.25RPS это какой то трэш вне зависимости от задачи

собственно, может там задача на расчет 100 биткойнов, но сомневаюсь и не вникал

Там к заметке приложен тест-скрипт, в котором перечисленны запросы к разным диапазонам дат, сущностям, условиям и прочему. То есть на каждый запрос делается:
1) проверка токена авторизации и прав пользователя
2) выбирается и разбирается нужный шаблон рабочего места
3) собираются метаданные запрошенных объектов
4) делается выборка из нескольких таблиц (фильтр, агрегаты, сортировка)
5) шаблон заполняется данными и готовая страница возвращается пользователю

Пункт 4 занимает основное время, остальное — миллисекунды.
...
Рейтинг: 0 / 0
Как назвать эту структуру и подход, основанные на EAV?
    #39860379
drynny
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
maytonДавайте я немножко сделаю шаг назад. Я уже спрашивал Архитектора про API.
На основании индексной информации я сделал набросок к квинтетному интерфейсу.
Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
trait QuntetBasicApi {

  def quintetById(id : Int) : Quintet = ???

  def quintetChainStartWith(id : Int) : LazyList[Quintet] = ???

  def quintetByDatatypeValue(datatype : Int, value : Option[Int]) : LazyList[Quintet] = ???

  def quintetByParentDatatype(parent : Int, dataType : Option[Int]) : LazyList[Quintet] = ???

}



Я включил базовый набор поисковых атрибутов с учотом индексов. Они расположены таким образом
чтобы обеспечивать быстрый доступ к множествам квинтетов.

Все прочие проекции которые можно придумать по идее должны покрываться этим API. Дополнительные
фильтры по прочим полям я пока не включил. Их можно отфильтровать позже.

Исключение - метод quintetChainStartWith(). Его задача - выборка поддеревьев по id корня.

drynny - прошу вас дать комментарии по этому API. Чего в нем еще не хватает для полноценной работы?

А какова цель этого api?
Вы же не хотите получить квинтеты и склеивать их, надеюсь.

API есть готовое, оно реализует основные функции платформы:
cmdМетодid объектаОписаниеauthpostАвторизация пользователя, возвращает токены XSRF и авторизации_d_aliaspostidСохранить псевдоним для ссылочного реквизита_d_attrspostidСохранить атрибуты реквизита_d_delpostidУдалить тип_d_del_reqpostidУдалить реквизит_d_newpost-Создать новый тип_d_not_nullpostidУстановить флаг "Обязательный" у реквизита_d_nullpostidСнять флаг "Обязательный" у реквизита_d_refpostidСоздать ссылку на тип_d_reqpostidДобавить реквизит_d_savepostidСохранить имя типа, его базовый тип и признак обязательности_d_uppostidПереместить реквизит на 1 позицию выше среди равных_m_delpostidУдаление объекта_m_movepostidПеремещение подчиненного ообъекта под другого родителя_m_newpostid типаСоздание объекта заданного типа_m_savepostidСохранить значение и реквизиты объекта, если они заданы_m_setpostidИзменить / создать / удалить реквизит объекта_m_uppostidПереместить объект на 1 позицию выше среди равныхdictget-Список независимых типов объектовdir_adminget, post-Список файлов и директорий, действия с нимиedit_objgetidДанные для формы редактирования объектаedit_typesget-Данные для Редактора типовobjectget, postid типаДанные для формы списка экземпляров типа объекта, команда на удалениеreportget, postid отчетаДанные выполненного запроса (отчета), параметры, команда на выполнение изменений
...
Рейтинг: 0 / 0
Как назвать эту структуру и подход, основанные на EAV?
    #39860497
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
drynny, вы продаете описание интерфейса вот в таком виде?

Дружище - это несеръезно! Здесь нет типа возвращаемого параметра. Тоесть я щас должен
глядя на это просто догадаться что мне вернут и будет ли это коллекция или атом?

Почему у вас нет описания хотя-бы на SOAP/GraphQL или в крайнем случае на Swagger?
Вы проделали тонну работ с 2006 года но у вас отсутствует элементарное! Почему?
...
Рейтинг: 0 / 0
Как назвать эту структуру и подход, основанные на EAV?
    #39860545
drynny
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
maytondrynny, вы продаете описание интерфейса вот в таком виде?

Дружище - это несеръезно! Здесь нет типа возвращаемого параметра. Тоесть я щас должен
глядя на это просто догадаться что мне вернут и будет ли это коллекция или атом?

Почему у вас нет описания хотя-бы на SOAP/GraphQL или в крайнем случае на Swagger?
Вы проделали тонну работ с 2006 года но у вас отсутствует элементарное! Почему?

Я не пилю ядро с 2006 года, а делал перерывы (например, с 2008 по 2014 развития ядра не было).
API вообще появилось в конце прошлого года и ещё не устоялось.

В таблицу не смог скопировать ячейки описания из экселя, а файлы тут никто не скачивает (прилагаю) и по ссылкам не ходит, где всё есть.
...
Рейтинг: 0 / 0
Как назвать эту структуру и подход, основанные на EAV?
    #39860551
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо. Эксцель файл более плотный хотя все таки не достаточный. В вашей конторе... эээ "Интеграл" (?)
есть техно-писатель который верстает документацию? Вообще кто у вас есть? Есть вы. Сколько еще примерно
людей участвуют в разработке?
...
Рейтинг: 0 / 0
Как назвать эту структуру и подход, основанные на EAV?
    #39860559
drynny
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
maytonСпасибо. Эксцель файл более плотный хотя все таки не достаточный. В вашей конторе... эээ "Интеграл" (?)
есть техно-писатель который верстает документацию? Вообще кто у вас есть? Есть вы. Сколько еще примерно
людей участвуют в разработке?
Ядро писал я один, но мне помогал друг, как специалист по безопасности, искал дыры и давал советы. Он же иногда советовал как реализовать некоторые моменты.
Еще я обращаюсь к различным дизайнерам при необходимости.
Все остальные материалы, на которые здесь даны ссылки, созданы мной.

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

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

не могу после заявленных утверждений пройти мимо, несколько цитат с сайта этой скромной системы :)


Выберите свой формат, способ и продолжительность обучения из 5 вариантов

Бесплатно. Все необходимые материалы предоставляются.

3-дневный курс. Стоимость: 8900 руб. (в группе), 28900 руб. (индивидуально).

5-дневный курс. Стоимость: 12900 руб.

8, 16, 24 или 40-часовой курс. Стоимость: 1000 руб./час.

Ответы на вопросы, помощь, программирование. Любая длительность. 1500 руб./час.




— Вы научитесь программировать простые веб-приложения: проектировать базу данных, организовывать бизнес-логику, создавать запросы SQL (как в MySQL, Posgre, ...) и экранные формы, используя HTML, CSS, Javascript.

(Posgre -- чё? )

— Работе в Интеграле вас можем научить только мы . Все вложения окупятся с первого же заказа, на который с нашей платформой вы потратите минимум времени, а результат будет достаточно эффектным, чтобы продавать потом ваши услуги.

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

(интеграл вообще всё делает сам и даже заказчиков находит)

и.. любой сайт лохотронов-разводил

Доходы на практике

— 90% наших слушателей начинают зарабатывать уже на практических занятиях. Наши коучи вам в помощь

Прибыльно и проверено

— Проверенные стратегии сводят на минимум потери и увеличивают процент успешных сделок до 80%
...
Рейтинг: 0 / 0
Как назвать эту структуру и подход, основанные на EAV?
    #39860580
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
drynnyЯ не пилю ядро с 2006 года, а делал перерывы (например, с 2008 по 2014 развития ядра не было)
А с 2006 по 2008 и с 2014 по 2019-й оно таки развивалось? Мне просто любопытно, сколько Вам понадобилось времени на то, чтобы написать и отладить 2300 строк кода.
...
Рейтинг: 0 / 0
Как назвать эту структуру и подход, основанные на EAV?
    #39860583
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttРаботе в Интеграле вас можем научить только мы
Как там было у классиков... "Любая деятельность, учить которой выгоднее, нежели заниматься ей самому - лохотрон"?
...
Рейтинг: 0 / 0
Как назвать эту структуру и подход, основанные на EAV?
    #39860586
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я вот в 90х задумал написать комьютерную сетевую игру на сокетах. Танчики.
И кирпичики. До сих пор - в статусе тех задания. Я уже 20 раз технологию
поменял. Сначала это был MS-DOS в VGA mode. Потом Windows 98/OpenGL...
Вобщем ... когда буду на пенсии...

Короче некоторые проекты нельзя закончить. Их можно только прекратить.

Но с нашим топиком мне кажется что рост системы шел не от идеи квинтетов
а от улучшений уже работающей системы документооборота. Ядро или приложение?
Яйцо или курица?
...
Рейтинг: 0 / 0
Как назвать эту структуру и подход, основанные на EAV?
    #39860618
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarerdrynnyЯ не пилю ядро с 2006 года, а делал перерывы (например, с 2008 по 2014 развития ядра не было)
А с 2006 по 2008 и с 2014 по 2019-й оно таки развивалось? Мне просто любопытно, сколько Вам понадобилось времени на то, чтобы написать и отладить 2300 строк кода.

Товарищ готов говорить про всё, что угодно. Про количество строк, по какие-то 100 мб в вакууме.

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

Забиваю гвозди пассатижами. Выяснилось, что остальные инструменты не нужны, вредны и избыточны. А я уже 10 собачих будок так построил, заказчики довольны! Сколько сэкономили. Потрачено не больше 100 гвоздей на будку. А вас сколько гвоздей уходит, а? Ну-ка приведите свои графики.
...
Рейтинг: 0 / 0
Как назвать эту структуру и подход, основанные на EAV?
    #39860622
drynny
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
maytonЯ вот в 90х задумал написать комьютерную сетевую игру на сокетах. Танчики.
И кирпичики. До сих пор - в статусе тех задания. Я уже 20 раз технологию
поменял. Сначала это был MS-DOS в VGA mode. Потом Windows 98/OpenGL...
Вобщем ... когда буду на пенсии...

Короче некоторые проекты нельзя закончить. Их можно только прекратить.

Но с нашим топиком мне кажется что рост системы шел не от идеи квинтетов
а от улучшений уже работающей системы документооборота. Ядро или приложение?
Яйцо или курица?

Ну, такое тоже было (1994 год, ZX Spectrum, ходилка-стрелялка на ассемблере), но тут не тот случай.

В 2003 я с нуля делал систему управления контентом на EAV в филиале сотовой компании. Ну, тормозила, но как-то работала (года три). То был конструктор, и мне понравилось. Хотя остальное я фигачил на PL/SQL и всяких PHP в обычных базах Oracle, MySQL и MSSQL.
А потом мне нужно было навести порядок в планово-экономическом отделе компании, где всё было в бумажных журналах (я был типа управляющего). Днем я методом кнута и пряника пересаживал бабушек в эксель (смотрите, сумма прописью тут сама пишется!), а потом в систему на квинтетах (чтобы набрать счет вы просто тычете в товары из списка). А вечерами опять с нуля продумывал и писал эту самую систему, а на ней немедленно делал приложение.

Ядро таки было первым.
...
Рейтинг: 0 / 0
Как назвать эту структуру и подход, основанные на EAV?
    #39860628
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttТоварищ готов говорить про всё, что угодно. ... Но не готов ответить какую задачу решают квинтеты, и почему именно они решают её эффективнее, чем классический EAV
Это изначально было очевидно. В детстве я читал книжку про инженерное мышление, и там на первых страницах было сказано: большинство людей, думая, как решить задачу, хватаются за первый попавшийся способ и начинают работать, не думая об альтернативах. Именно в этом месте чаще всего упускается оптимальное решение, да и сколько-нибудь вменяемое решение вообще. Ровно тот случай. Квинтеты ничего эффективнее не решают, просто они попались первыми.
...
Рейтинг: 0 / 0
Как назвать эту структуру и подход, основанные на EAV?
    #39860637
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarerЭто изначально было очевидно. В детстве я читал книжку про инженерное мышление, и там на первых страницах было сказано: большинство людей, думая, как решить задачу, хватаются за первый попавшийся способ и начинают работать, не думая об альтернативах. Именно в этом месте чаще всего упускается оптимальное решение, да и сколько-нибудь вменяемое решение вообще. Ровно тот случай. Квинтеты ничего эффективнее не решают, просто они попались первыми.

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

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

Ладно бы просто не решали. Они значительно усугубляют. Забудем про производительность и эффективность. Тут банальная надёжность ниже плинтуса.
...
Рейтинг: 0 / 0
Как назвать эту структуру и подход, основанные на EAV?
    #39860770
Vladimir Baskakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[quot drynny]maytonВ 2003 я с нуля делал систему управления контентом на EAV в филиале сотовой компании. Ну, тормозила, но как-то работала (года три). То был конструктор, и мне понравилось. Хотя остальное я фигачил на PL/SQL и всяких PHP в обычных базах Oracle, MySQL и MSSQL.
А потом мне нужно было навести порядок в планово-экономическом отделе компании, где всё было в бумажных журналах (я был типа управляющего). Днем я методом кнута и пряника пересаживал бабушек в эксель (смотрите, сумма прописью тут сама пишется!), а потом в систему на квинтетах (чтобы набрать счет вы просто тычете в товары из списка). А вечерами опять с нуля продумывал и писал эту самую систему, а на ней немедленно делал приложение.

Ядро таки было первым.

а как пришла идея ядрить на квинтетах, а не на, просто как в Руби-он-Раилс на табличках?

В ПЭД сколько данных было? мне тоже довелось поработать в таком подразделении .... в банке .... как представлю что все счета, проводки, обороты, лифо и фифо заквинтечены, так и удивлюсь..... впрочем, если до времени хватало бумаги - не особо наверное много.
...
Рейтинг: 0 / 0
Как назвать эту структуру и подход, основанные на EAV?
    #39860771
Vladimir Baskakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarerhVosttТоварищ готов говорить про всё, что угодно. ... Но не готов ответить какую задачу решают квинтеты, и почему именно они решают её эффективнее, чем классический EAV
Это изначально было очевидно. В детстве я читал книжку про инженерное мышление, и там на первых страницах было сказано: большинство людей, думая, как решить задачу, хватаются за первый попавшийся способ и начинают работать, не думая об альтернативах. Именно в этом месте чаще всего упускается оптимальное решение, да и сколько-нибудь вменяемое решение вообще. Ровно тот случай. Квинтеты ничего эффективнее не решают, просто они попались первыми.

а что за книга?
...
Рейтинг: 0 / 0
Как назвать эту структуру и подход, основанные на EAV?
    #39860781
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Vladimir Baskakovа что за книга?
Ох. Затруднюсь точно назвать. Помню, что автор американский. Дома пороюсь, если найду в архивах - скажу точные данные, она того стоит.
...
Рейтинг: 0 / 0
Как назвать эту структуру и подход, основанные на EAV?
    #39860802
drynny
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Vladimir Baskakovа как пришла идея ядрить на квинтетах, а не на, просто как в Руби-он-Раилс на табличках?
Не было времени верстать формы и админить таблички в базе.
Создал тип, добавил реквизиты и связи — уже готова форма для редактирования всего этого.
Накликал отчет, написал инструкцию — пользователь пошел работать.

Vladimir BaskakovВ ПЭД сколько данных было? мне тоже довелось поработать в таком подразделении .... в банке .... как представлю что все счета, проводки, обороты, лифо и фифо заквинтечены, так и удивлюсь..... впрочем, если до времени хватало бумаги - не особо наверное много.
Дались вам эти квинтеты. Вот, покликайте здесь демку:
bkint.ru/index.php?db=demo

Там партионный учет, фифо, оборотная ведомость, отчеты рентабельности по типам и товарам.
Придет ли вам в голову, что там всё на квинтетах? Спорю, что нет.

Данных в ПЭО было столько:
- 10-12 сотрудников
- сотни договоров (с этапами, ответственными, счетами, калькуляциями)
- тысячи клиентов
- тысячи счетов
- сотни товаров
- десятки событий в день
- десятки отчетов

При таких объемах приложение живет больше 13 лет и бед не знает ни с надежностью, ни производительностью.
...
Рейтинг: 0 / 0
Как назвать эту структуру и подход, основанные на EAV?
    #39860825
Vladimir Baskakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
автор- сотни договоров (с этапами, ответственными, счетами, калькуляциями)
- тысячи клиентов
- тысячи счетов

ПЭД группы ВТБ. Немного больше клиентов, договоров, счетов, отчетности и сотрудников.
...
Рейтинг: 0 / 0
Как назвать эту структуру и подход, основанные на EAV?
    #39860828
Vladimir Baskakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarerVladimir Baskakovа что за книга?
Ох. Затруднюсь точно назвать. Помню, что автор американский. Дома пороюсь, если найду в архивах - скажу точные данные, она того стоит.
мерси
...
Рейтинг: 0 / 0
Как назвать эту структуру и подход, основанные на EAV?
    #39861014
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttsoftwarerКвинтеты ничего эффективнее не решают

Ладно бы просто не решали. Они значительно усугубляют. Забудем про производительность и эффективность. Тут банальная надёжность ниже плинтуса.
Я увидел пока только 1 поинт. Если проектировать CQRS или EventStore то лента событий имеет очень
простую спецификацию. 5 атомов на каждую запись + таймстамп + тип евента (команды).
Создание записи или удаление или апдейт.
...
Рейтинг: 0 / 0
Как назвать эту структуру и подход, основанные на EAV?
    #39861034
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Давайте рассмотрим мои concerns.

1) Остался КМК без ответа мой вопрос касательно иерархической таблицы.
В первых двух строках происходит регистрация примитивных типов.

Рутовый элемент. На псевдо-языке
Код: javascript
1.
registerPrimitiveType(id = 1, datatype = 1, parent = 1, ord = 0, value = 'root');



Здесь мне непонятно почему древовидная структура имеет петли. Рутовый элемент имеет родителя тоже root.
Немного сбивает с толку сквозная нумерация всех атрибутов. Я-бы предпочел добавить +1000 хотя-бы к sequence
чтоб не "рубила" так похожесть по глазам. И вообще КМК хорошая практика разделять неоднозначные применнеия
сиквенсов на дипазоны. Хотя-бы на положительные и отрицательные. К примеру примитивные типы + энтити = отрицательные.


2) И тип SHORT.
Код: javascript
1.
registerPrimitiveType(id = 3, datatype = 3, parent = 0, ord = 0, value = 'short');



Вобщем непонятно почему архитектор не ввел NULL как признак отсутствия родителя.

Непонятно почему для SHORT парентовый элемент не петля как в случае с рут. А некий нулевой элемент.

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
CREATE TABLE quintet(
    id       INT    PRIMARY KEY,
    datatype INT    NOT NULL,
    parent   BIGINT NOT NULL,
    ord      INT    NOT NULL,
    value    TEXT
);

INSERT INTO quintet VALUES (1,1,1,0,'ROOT');
INSERT INTO quintet VALUES (3,3,0,0,'SHORT');
INSERT INTO quintet VALUES (4,4,0,0,'DATETIME');
INSERT INTO quintet VALUES (8,8,0,0,'CHARS');
INSERT INTO quintet VALUES (9,9,0,0,'DATE');
INSERT INTO quintet VALUES (13,13,0,0,'NUMBER');
INSERT INTO quintet VALUES (14,14,0,0,'SIGNED');

INSERT INTO quintet VALUES (348,3,0,0,'Гость');
INSERT INTO quintet VALUES (349,3,0,0,'Номер');
INSERT INTO quintet VALUES (350,13,0,0,'Бронирование');
INSERT INTO quintet VALUES (351,348,0,0,null);
INSERT INTO quintet VALUES (352,349,0,0,null);
INSERT INTO quintet VALUES (353,351,350,1,null);
INSERT INTO quintet VALUES (355,352,350,2,null);
INSERT INTO quintet VALUES (356,4,0,0,'Дата бронирования');
INSERT INTO quintet VALUES (357,9,0,0,'Заезд');
INSERT INTO quintet VALUES (358,9,0,0,'Выезд');
INSERT INTO quintet VALUES (359,356,350,3,null);
INSERT INTO quintet VALUES (360,357,350,4,null);
INSERT INTO quintet VALUES (361,358,350,5,null);


3) Непонятно почему сущность Гость имеет тип SHORT (3) ? Это-ж ерунда. Сущность должна иметь тип сущность!

Хотелось-бы услышать камент dryny.

Понимаешь. Все эти исключения. Рулы. Касаемо 0 и 1 и NULL они очень важны. Они определяют
чистоту технологии. Как например язык Lisp один раз определяет семантику списка списков
с очень простыми рулами. И дальше идет просто лавинообразное наращивание смыслов. Причем
гладкое и красивое. Без внутренних противоречий.

С твоей технологией я признаюсь что я - буксую. Я буксую потому что эти все исключения
напрягают и заставляют меня искать другие смыслы которых скорее всего нет. Просто есть
какая-то оплошность или опечатка.

Вобщем проясни.
...
Рейтинг: 0 / 0
Как назвать эту структуру и подход, основанные на EAV?
    #39861148
drynny
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
maytonДавайте рассмотрим мои concerns.

1) Остался КМК без ответа мой вопрос касательно иерархической таблицы.
В первых двух строках происходит регистрация примитивных типов.

Здесь мне непонятно почему древовидная структура имеет петли. Рутовый элемент имеет родителя тоже root.
Немного сбивает с толку сквозная нумерация всех атрибутов. Я-бы предпочел добавить +1000 хотя-бы к sequence
чтоб не "рубила" так похожесть по глазам. И вообще КМК хорошая практика разделять неоднозначные применнеия
сиквенсов на дипазоны. Хотя-бы на положительные и отрицательные. К примеру примитивные типы + энтити = отрицательные.

2) И тип SHORT.
Код: javascript
1.
registerPrimitiveType(id = 3, datatype = 3, parent = 0, ord = 0, value = 'short');



Вобщем непонятно почему архитектор не ввел NULL как признак отсутствия родителя.

Непонятно почему для SHORT парентовый элемент не петля как в случае с рут. А некий нулевой элемент.
Как-то нужно их различать — метаданные и данные.
Здесь принято так, что метаданные подчинены несуществующему элементу с ID=0, а данные подчинены корневому элементу с ID=1.
Это сделано из удобства обращения ядра с квинтетными данными (например, если нужно дать доступ к данным от корня и ниже, то даем доступ к id=1) и не противоречит квинтетной модели.
Вы можете сделать по-своему, и я не претендую на безупречность исполнения ядра и самой модели.

Отрицательные энтити я бы сделал, но выдавал бы их по очереди: +,-,+,-,...
только для того, чтобы значительно реже балансировать индексы.

mayton3) Непонятно почему сущность Гость имеет тип SHORT (3) ? Это-ж ерунда. Сущность должна иметь тип сущность!

Хотелось-бы услышать камент dryny.

Понимаешь. Все эти исключения. Рулы. Касаемо 0 и 1 и NULL они очень важны. Они определяют
чистоту технологии. Как например язык Lisp один раз определяет семантику списка списков
с очень простыми рулами. И дальше идет просто лавинообразное наращивание смыслов. Причем
гладкое и красивое. Без внутренних противоречий.

С твоей технологией я признаюсь что я - буксую. Я буксую потому что эти все исключения
напрягают и заставляют меня искать другие смыслы которых скорее всего нет. Просто есть
какая-то оплошность или опечатка.

Вобщем проясни.
Гость имеет тип SHORT потому что это — строка (имя гостя, например).

Если что-то непонятно, значит, вероятно, это не важно и ни на что не влияет.
Нужно помнить одну вещь: нет никакой таблицы. Таблица СУБД используется в прототипе как временное решение, и не важно, NULL там или 0. Да, с эстетической точки зрения это важно, но это разовая задача, и вылизывание таких моментов даст 0 денег, и силы лучше потратить на продажу того, что есть, торговцу помидорами.
...
Рейтинг: 0 / 0
Как назвать эту структуру и подход, основанные на EAV?
    #39861155
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
drynnyКак-то нужно их различать — метаданные и данные.
Если Ваш конструктор начнёт приближаться к промышленному решению, Вы обнаружите ещё несколько важных требований.

1. Метаданные должны лежать отдельно от данных. Просто потому, что вне детских проектов с ними работают разные люди на нескольких серверах, и им нужно обмениваться метаданными, таскать изменения, решать конфликты, и всё это - без данных. Помимо прочего, метаданные нужно ещё и класть в version control, причём в том формате, в котором человек легко глазами разберётся в изменениях, и одновременно в том формате, который без проблем подхватит сервер.

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

3. Нужна "метамодель метамодели", то есть возможность искать, вводить и редактировать метаданные, пользуясь теми возможностями сервера, которые предоставляются для поиска, ввода и редактирования данных. Как минимум, это вдвое сокращает работы по кодированию интерфейса (отдельно - админский, отдельно - пользовательский), но куда важнее то, что это является своеобразной гарантией полноценности каждого из них.

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

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

Это всё не нужно
...
Рейтинг: 0 / 0
Как назвать эту структуру и подход, основанные на EAV?
    #39861779
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonЯ увидел пока только 1 поинт. Если проектировать CQRS или EventStore то лента событий имеет очень
простую спецификацию. 5 атомов на каждую запись + таймстамп + тип евента (команды).
Создание записи или удаление или апдейт.

Если говорить об CQRS/EventSource, нет не достаточно. Во-первых, квинтет ничего не описывает, вообще. Такое event в потоке не нужен. Кроме того, нужна ревизия агрегата. В контексте квинтетов нельзя описать такие понятия как агрегат, объект-значения. Ну конечно, о таких вещах, как ограниченный контекст, сага, тут говорить вообще не приходится.
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
Как назвать эту структуру и подход, основанные на EAV?
    #40116797
SQL*Plus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Расскажите, что нового произошло-появилось за прошедшие 2 года?
Как развивается подход? Куда он уже дошёл или зашёл?
...
Рейтинг: 0 / 0
Как назвать эту структуру и подход, основанные на EAV?
    #40126171
drynny
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
SQL*Plus
Расскажите, что нового произошло-появилось за прошедшие 2 года?
Как развивается подход? Куда он уже дошёл или зашёл?


Много всякого было. Часть инфы в соседней ветке выкладывал.

Зарубались с одинэсовцами намутить учетную систему по их ТЗ. Взбодрился, сделал, записал ролики ( https://www.youtube.com/watch?v=K7RpGL35k_4
...
Рейтинг: 0 / 0
454 сообщений из 454, показаны все 19 страниц
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Как назвать эту структуру и подход, основанные на EAV?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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