powered by simpleCommunicator - 2.0.40     © 2025 Programmizd 02
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Как назвать эту структуру и подход, основанные на EAV?
25 сообщений из 454, страница 1 из 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
25 сообщений из 454, страница 1 из 19
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Как назвать эту структуру и подход, основанные на EAV?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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