|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
Есть такой формат хранения данных – 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/ ... |
|||
:
Нравится:
Не нравится:
|
|||
29.07.2019, 16:43 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
От того, что ты в структуру EAV добавил дополнительное поле, оно не перестаёт быть EAV. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
29.07.2019, 16:53 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
AEAV наверное (А = Advanced :) ... |
|||
:
Нравится:
Не нравится:
|
|||
29.07.2019, 17:36 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
Блин, неужели кто-то наивно полагает, что в "настоящем EAV" у таблицы сущностей нет суррогатного первичного ключа?.. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
29.07.2019, 17:38 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
Dimitry SibiryakovОт того, что ты в структуру EAV добавил дополнительное поле, оно не перестаёт быть EAV. Структура как была, так и осталась EAV, но мне нужно как-то обозвать получившийся комплекс: структура + подход. Обычно EAV – только компонент системы, а в моем случае описана вся система: я собираю метаданные и данные из таблицы EAV и из них строю всё, что нужно приложению в плане ORM. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.07.2019, 17:50 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
Ну так и называй: "ORM с использованием EAV в качестве хранилища". Или, сокращённо, 1C. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
29.07.2019, 17:52 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
так раз принципиально остался EAV - то и основной минус остался (отвратительная производительность на сколь нибудь больших объёмах). Вот если например вы хитрые функциональные индексы к этому EAVу начнёте формировать, чтобы только по наиболее часто используемым Attribute (или даже Attr-Value, например, дай мне все материалы с рыночной ценой больше нуля) быстрее формировало, то это ещё можно будет както притянуть "+ подход". ... |
|||
:
Нравится:
Не нравится:
|
|||
29.07.2019, 17:56 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
ldfanateAEAV наверное (А = Advanced :) Как-то бы хотелось отразить, в чем именно он Advanced. В идеале вообще отказаться от акронима EAV, например: SDDM Self-Descriptive data model или подобное, но было бы наивно думать, что читатель форума будет настолько заморачиваться, чтобы придумывать за меня название. Поэтому этим я сам заморочусь, а у вас прошу некий emotional kick, стимулирующей критики, издевок и прочего креатива. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.07.2019, 17:58 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
авторВ идеале вообще отказаться от акронима EAV, например: SDDM Self-Descriptive data model или подобное И когда другие говорят "плагиат", я говорю "традиция" (с) :) ... |
|||
:
Нравится:
Не нравится:
|
|||
29.07.2019, 18:00 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
ldfanateтак раз принципиально остался EAV - то и основной минус остался (отвратительная производительность на сколь нибудь больших объёмах). Вот как раз здесь есть некий прогресс: производительность вполне приемлемая при работе с сотнями гигабайт данных или десятками миллионов объектов. Есть куча работающих проектов уже. Но сейчас дело не в этом, а в придумывании названия. Спасибо! ... |
|||
:
Нравится:
Не нравится:
|
|||
29.07.2019, 18:02 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
ldfanateосновной минус остался (отвратительная производительность на сколь нибудь больших объёмах). Это миф, созданный теми, кто попытался прогнуть EAV под привычный квадратно-гнездовой эксель, формируемый одним запросом и, естественно, облажался. Ибо не натягивается эта сова. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
29.07.2019, 18:03 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
наблюдал это сову неоднократно в т.ч. на "взрослых" платформах типа SAP ERP. В итоге там кончается созданием дублирующих плоских таблиц "вторичных индексов", и сложными коммитами в оба места. Даже если там какаято аппаратная ускорялка на уровне СУБД (типа флэщь + много памяти), всёравно как ни крути, суммарные ресурсы БД на считывание 1 записи из N полей существенно меньше, чем N записей x 1 поле. Плюс усложнение построения специальных индексов (что называется под конкретный отчёт - как правило сводный, квартальный, годовой или подобное, где надо прожевать много всего и по возможности сразу). ... |
|||
:
Нравится:
Не нравится:
|
|||
29.07.2019, 18:06 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
т.е. как правило EAV любят лепить разработчики, которые вместо надлежащей методологической проработки бизнес-процесса и его реализации уповают на "универсальность и гибкость". Получается в итоге "всемирная теория всего", которая столь же универсальна, сколь и толком непригодна, и обрастает постепенно различными прикладными "костылями". ... |
|||
:
Нравится:
Не нравится:
|
|||
29.07.2019, 18:09 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
ldfanateв т.ч. на "взрослых" платформах типа SAP ERP. "Не боги горшки обжигают." Эти "серьёзные" платформы тоже делаются людьми с "экселем головного мозга". Ну и Оракул с его скудным выбором TIL провоцирует. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
29.07.2019, 18:11 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
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. и да я помню студентов и их преподавателей даже не подозревавших существование этих трёх волшебных букв. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.07.2019, 18:12 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
drynny…. а у вас прошу некий emotional kick, стимулирующей критики... Фундаментально у вас остается EAV, поскольку главное это логическое. Для БД это тип модели данных. А индексы, производительность это как бы физические детали. И вот фундаментальным недостатком EAV является то, что это плохая РМД. Она РМД из-за того, что для структурирования и манипулирования там используются средства РМД: таблицы, реляционные ОЦ, система запросов SQL. Эти средства приспособлены именно для моделирования данных таким способом,что таблицы - про отдельные сущности, а колонки про атрибуты. В этом случае и ОЦ и система достаточно эффективны. Недостатком РМД является сильная типизированность. Надо затолкать реальный мир в плоские таблицы. Но именно за счет такой типизированности эффективны и ОЦ и язык запросов РМД. EAV пытается уйти от этих недостатков, сохранив реляционные средства. Но так как средства не для EAV придумывались, они теряют свою эффективность. Естественный путь уйти от недостатков используя МД с другими средствами структурирования. Например, МД - XML, документные. А EAV как бы не совсем естественный путь: исковерканная РМД. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.07.2019, 18:28 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
experiencedrynny, По одной из ваших ссылок мельком зацепил текст: Тестирование проводилось на самом простом сервере: 1 ядро @2.4GHz, 1GB RAM, диск SSD. Базы с индексами занимают 207 МБ в классической базе данных и 289 МБ в таблице конструктора. Если хотите что то тестировать, данные должны в десятки раз превышать размер ОЗУ. То, что вы мельком зацепили, это размер одной из самых маленьких форм, просто для сравнения объема. А форм там много. В начале ветки я упоминал про многогигабайтные базы (сотни ГБ) и сотни миллионов записей, но это не важно. С высоты вашего опыта, вы наверняка бы могли классифицировать такую штуковину: база данных, хранимая единым списком из 4 полей, проиндексированных в трёх разрезах (ID записи, родитель, тип), из которого собираются метаданные и данные, включая сущности предметной области, запросы, ролевую модель, журналы, настройки и т.д. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.07.2019, 20:44 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
vadiminfodrynny…. а у вас прошу некий emotional kick, стимулирующей критики... И вот фундаментальным недостатком EAV является то, что это плохая РМД. Она РМД из-за того, что для структурирования и манипулирования там используются средства РМД: таблицы, реляционные ОЦ, система запросов SQL. Эти средства приспособлены именно для моделирования данных таким способом,что таблицы - про отдельные сущности, а колонки про атрибуты. В этом случае и ОЦ и система достаточно эффективны. Смешной прикол в том, что на носителе это всё хранится не как таблицы и колонки, а как набор цепочек байтов, порой очень зло фрагментированных (представьте, например, что менеджер дописывает в поле примечания по паре слов ежедневно, и ведь они уже не влезут в отведенное ранее место). Я не спорю, что собирать такую мозаику из EAV тоже непросто – на порядок сложнее, я бы сказал, но не невыполнимо и даже оправданно для большой доли проектов. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.07.2019, 22:20 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
drynny, я бы добавил ещё одно поле IDP (ID Parents) - ключ родителя (у главного родителя его значение =0)-отвечает за связи...а название... поскольку добавляем Keys: Key-EAV, следовательно KEAV ... |
|||
:
Нравится:
Не нравится:
|
|||
29.07.2019, 23:39 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
drynnyСмешной прикол в том, что на носителе это всё хранится не как таблицы и колонки, а как набор цепочек байтов, порой очень зло фрагментированных (представьте, например, что менеджер дописывает в поле примечания по паре слов ежедневно, и ведь они уже не влезут в отведенное ранее место). . Вы просили критику. Я написал про логику. Вот C# для написания клиентских прог лучше подходит, чем ассемблер, несмотря на то, что все хранится в байтах, а там все в битах, и вообще команды компьютеру передаются в 0 и 1. И БД пришли на смену файловым системам несмотря на байты. И РМД на смену иерархическим и сетевым. Причем в физике она уступала (в производительности). Взяла логикой. Для БД имеет большое значение логика. Цель БД в идеале, чтобы как можно было проще извлечь требуемую информацию. Чтобы проще было понять модель и проще написать запрос. Требовалось меньше квалификации. А физику на себя пусть в основном СУБД берет. Может где-то EAV хорош оказался. Обычная РБД там не подошла. Надо было выбирать другой тип МД или остаться в РСУБД, но использовать EAV. И последнее подошло. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.07.2019, 00:22 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
aleckodrynny, я бы добавил ещё одно поле IDP (ID Parents) - ключ родителя (у главного родителя его значение =0)-отвечает за связи...а название... поскольку добавляем Keys: Key-EAV, следовательно KEAV Entity – это и есть Parent ID Пока в голову приходит только REAV – Relational EAV Это структурная основа RDBMS, но с фиксированным форматом таблиц ... |
|||
:
Нравится:
Не нравится:
|
|||
30.07.2019, 10:29 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
так всёравно как ни крути, получается "анти-реляционная модель". В виде схемы данных даже связи по отдельным "Attribute-Справочник значений" или "Attribute-дочерняя таблица" нормально не отобразишь. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.07.2019, 10:05 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
ldfanateтак всёравно как ни крути, получается "анти-реляционная модель". В виде схемы данных даже связи по отдельным "Attribute-Справочник значений" или "Attribute-дочерняя таблица" нормально не отобразишь. Почему не отобразишь? Вот пример фрагмента схемы данных, сделанной с применением этого решения. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.07.2019, 10:38 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
drynnyvadiminfoпропущено... И вот фундаментальным недостатком EAV является то, что это плохая РМД. Она РМД из-за того, что для структурирования и манипулирования там используются средства РМД: таблицы, реляционные ОЦ, система запросов SQL. Эти средства приспособлены именно для моделирования данных таким способом,что таблицы - про отдельные сущности, а колонки про атрибуты. В этом случае и ОЦ и система достаточно эффективны. Смешной прикол в том, что на носителе это всё хранится не как таблицы и колонки, а как набор цепочек байтов, порой очень зло фрагментированных (представьте, например, что менеджер дописывает в поле примечания по паре слов ежедневно, и ведь они уже не влезут в отведенное ранее место). Я не спорю, что собирать такую мозаику из EAV тоже непросто – на порядок сложнее, я бы сказал, но не невыполнимо и даже оправданно для большой доли проектов. А тип поля для Value у вас какой выбран? ... |
|||
:
Нравится:
Не нравится:
|
|||
01.08.2019, 17:39 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
Megabytedrynnyпропущено... Смешной прикол в том, что на носителе это всё хранится не как таблицы и колонки, а как набор цепочек байтов, порой очень зло фрагментированных (представьте, например, что менеджер дописывает в поле примечания по паре слов ежедневно, и ведь они уже не влезут в отведенное ранее место). Я не спорю, что собирать такую мозаику из EAV тоже непросто – на порядок сложнее, я бы сказал, но не невыполнимо и даже оправданно для большой доли проектов. А тип поля для Value у вас какой выбран? Концептуально – это байты данных, трактуемые в зависимости от их типа. В существующих приложениях и сервисах – это текстовое поле, в котором также текстом хранятся числовые значения, в т.ч. datetime. Данные можно преобразовать к тому виду, в котором они хранятся, чтобы использовать индекс. Затруднение вызывает только применение индекса к диапазону чисел, потому что у них различается порядок — нельзя ранжировать по первым цифрам, нужно считать всё число. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.08.2019, 19:04 |
|
|
start [/forum/topic.php?fid=32&fpage=1&tid=1539762]: |
0ms |
get settings: |
10ms |
get forum list: |
11ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
27ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
67ms |
get tp. blocked users: |
1ms |
others: | 278ms |
total: | 416ms |
0 / 0 |