|
Как назвать эту структуру и подход, основанные на 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 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
drynnyMegabyteпропущено... А тип поля для Value у вас какой выбран? Концептуально – это байты данных, трактуемые в зависимости от их типа. В существующих приложениях и сервисах – это текстовое поле, в котором также текстом хранятся числовые значения, в т.ч. datetime. Т.е. вместо 1млн. чисел вы храните 1 миллион строк(небось еще и максимальной длины)..? В угоду "универсальности" нормальный такой перерасход пространства. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.08.2019, 20:41 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
MegabyteВ угоду "универсальности" нормальный такой перерасход пространства.Пространство - полбеды. Основная беда - преобразование строки в число на лету при массовых вычислениях. Дичайше тормозит. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.08.2019, 21:52 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
MegabyteВ угоду "универсальности" нормальный такой перерасход пространства. СУБД - это универсальное решение. Хорошо отработанное универсальное решение. И вот, очередной квазиархитектор решает использовать это универсальное решение на 0.1% возможностей для того, чтобы создать четыре таблицы и громоздить над ними собственный велосипед. Нетрудно догадаться, что результат получается похожим на самолёт-истребитель, к которому туземец приспособил велосипедную цепь с седлом и пытается на этом плавать. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.08.2019, 22:59 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
Megabytedrynnyпропущено... Концептуально – это байты данных, трактуемые в зависимости от их типа. В существующих приложениях и сервисах – это текстовое поле, в котором также текстом хранятся числовые значения, в т.ч. datetime. Т.е. вместо 1млн. чисел вы храните 1 миллион строк(небось еще и максимальной длины)..? В угоду "универсальности" нормальный такой перерасход пространства. Я сравнивал, и благодаря нормализации получается почти столько же места база занимает ( здесь можно видеть ), как такая же в оракле, но здесь зато сразу всё проиндексировано. А у вас есть какой-нибудь вариант названия для этого неоднозначного подхода? ... |
|||
:
Нравится:
Не нравится:
|
|||
01.08.2019, 23:21 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
softwarerMegabyteВ угоду "универсальности" нормальный такой перерасход пространства. СУБД - это универсальное решение. Хорошо отработанное универсальное решение. И вот, очередной квазиархитектор решает использовать это универсальное решение на 0.1% возможностей для того, чтобы создать четыре таблицы и громоздить над ними собственный велосипед. Нетрудно догадаться, что результат получается похожим на самолёт-истребитель, к которому туземец приспособил велосипедную цепь с седлом и пытается на этом плавать. Смешновато ) в точку ... |
|||
:
Нравится:
Не нравится:
|
|||
01.08.2019, 23:22 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
softwarerMegabyteВ угоду "универсальности" нормальный такой перерасход пространства. СУБД - это универсальное решение. Хорошо отработанное универсальное решение. И вот, очередной квазиархитектор решает использовать это универсальное решение на 0.1% возможностей для того, чтобы создать четыре таблицы и громоздить над ними собственный велосипед. Нетрудно догадаться, что результат получается похожим на самолёт-истребитель, к которому туземец приспособил велосипедную цепь с седлом и пытается на этом плавать. Живописно как сочинили. Ну, всякое бывает... С названием поможете? ... |
|||
:
Нравится:
Не нравится:
|
|||
01.08.2019, 23:27 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
drynnyДля навигации в этом списке построены 3 упорядоченных указателя – индексы: ID, Entity+Attribute, Attribute+Value При такой организации данных мы можем работать с базой данных любого размера, не имея проблем с производительностью, свойственных системам, построенным на обычном EAV. Какие ваши доказательства? ) Что значит любого размера? На каком конкретно объеме данных тестировали? Какие запросы делали? какого типа атрибуты использовали? Какие результаты получены? То же самое,но без EAV что показывает? Название наверное пока еще рановато придумывать... ... |
|||
:
Нравится:
Не нравится:
|
|||
01.08.2019, 23:54 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
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Название наверное пока еще рановато придумывать... Если что, задавайте ещё вопросы, а я жду вашего ответа. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.08.2019, 08:29 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
drynny[ Пока в голову приходит только REAV – Relational EAV Это структурная основа RDBMS, но с фиксированным форматом таблиц Все EAV так как все они RDBMS и потому на структурное основе RDBMS. Т.е. тогда любую EAV можно было бы назвать REAV. Кроме того, традиционно термин Relational выглядит много обещающим для МД. Поскольку происходит от понятия Отношения в теории множеств - одной из важнейших теоретико-множественных конструкций. Используется в многих разделах математики. В частности, в теории реляционных БД. Поэтому как бы от REAV ожидается что-то типа аксиом Амстронга или что-то подобное. Какая-то теория. Ведь это МД. Поэтому REAV с одной стороны не позволяет отличить от других EAVов, с другой, слишком громкое. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.08.2019, 15:00 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
vadiminfodrynny[ Пока в голову приходит только REAV – Relational EAV Это структурная основа RDBMS, но с фиксированным форматом таблиц Все EAV так как все они RDBMS и потому на структурное основе RDBMS. Т.е. тогда любую EAV можно было бы назвать REAV. Кроме того, традиционно термин Relational выглядит много обещающим для МД. Поскольку происходит от понятия Отношения в теории множеств - одной из важнейших теоретико-множественных конструкций. Используется в многих разделах математики. В частности, в теории реляционных БД. Поэтому как бы от REAV ожидается что-то типа аксиом Амстронга или что-то подобное. Какая-то теория. Ведь это МД. Поэтому REAV с одной стороны не позволяет отличить от других EAVов, с другой, слишком громкое. Ок, спасибо. В целом согласен. Как вариант, можно вообще не использовать аббревиатуру EAV, назвав это типа Quintet data model. Общался с одним экспертом по БД, и он сразу начал применять термин «пятерки». Пять штук чего-либо называется квинтетом, а у меня все записи содержат 5 полей. Статью одноименную я запилил на хабре об этом. Что скажете? ... |
|||
:
Нравится:
Не нравится:
|
|||
02.08.2019, 19:18 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
drynny Статью одноименную я запилил на хабре об этом. Что скажете? 14 декабря 2018 года... удивительно ... |
|||
:
Нравится:
Не нравится:
|
|||
03.08.2019, 11:27 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
Дмитрий Мухdrynny Статью одноименную я запилил на хабре об этом. Что скажете? 14 декабря 2018 года... удивительно Ну а что тут? Мне очень важно ваше мнение. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.08.2019, 20:16 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
drynnyНу а что тут? Мне очень важно ваше мнение. было бы интересно увидеть реализацию какого то кейса с демонстрацией возможностей, а до того не интересно время тратить... У меня в системе используется аналогичное решение, но не для хранения всего и вся, а частично. Простые структуры да удобно, а чуть посложнее - все приплыли... ... |
|||
:
Нравится:
Не нравится:
|
|||
04.08.2019, 10:25 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
drynnyА у вас есть какой-нибудь вариант названия для этого неоднозначного подхода?Синяя изолента - быстро дешево и сердито Да, в некоторых случаях может быть удобно и даже прочно ... |
|||
:
Нравится:
Не нравится:
|
|||
04.08.2019, 18:56 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
drynny но здесь зато сразу всё проиндексировано. Это в большинстве случаев не хорошо. ЗЫ. Хочешь, подскажу более универсальную структуру? Это XML, хранящийся в clob в одном поле и всего одна строка в одной таблице! Можешь запатентовать! ... |
|||
:
Нравится:
Не нравится:
|
|||
05.08.2019, 15:52 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
oragraf Это в большинстве случаев не хорошо. ЗЫ. Хочешь, подскажу более универсальную структуру? Это XML, хранящийся в clob в одном поле и всего одна строка в одной таблице! Можешь запатентовать! Для этого даже термин есть - кладбище XMLей ) Теоретически во многих базах можно прямо из SQL делать запросы к XML который в блоб (clob в oracle), но на практике это получится очень медленно и на больших объемах загнется на селектах. Кроме того, не будет никакого контроля целостности данных. В этом случае вообще зачем писать в базу- можно сразу в xml на диск складировать. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.08.2019, 17:39 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
L_argoMegabyteВ угоду "универсальности" нормальный такой перерасход пространства.Пространство - полбеды. Основная беда - преобразование строки в число на лету при массовых вычислениях. Дичайше тормозит. еще вместе с датой надо хранить её формат. Т.е. чтобы 03/01/2019 распознать где месяц, где день. Ради таких костылей начинаются EAV вида Attribute- Value text, Value int, Value datetime, Value decimal .... Потом ради ускорения можно таблцу партицировать по Ентитям. Норм решение, рабочее. Но это уже шаг к тому, что ентити надо разделить, чтобы не мешали друг-другу. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.08.2019, 09:19 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
drynnyНапример, мне приходят в головы такие варианты: IEAV – Indexed EAV или ID–Entity–Attribute–Value (второе не отражает суть подхода, а только структуру) CREAV – Cross-referenced EAV Не удержался... АУЕАВ ... |
|||
:
Нравится:
Не нравится:
|
|||
08.08.2019, 00:47 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
Нафига этот ущербный EAV и все его кривые производные, отлитые из костылей? Если есть Event Sourcing и проекции? ... |
|||
:
Нравится:
Не нравится:
|
|||
08.08.2019, 00:49 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
hVosttАУЕАВ Класс !!! ... |
|||
:
Нравится:
Не нравится:
|
|||
08.08.2019, 07:28 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
hVosttНафига этот ущербный EAV и все его кривые производные, отлитые из костылей? Если есть Event Sourcing и проекции?Это куета и балабольство. Много слов, но по сути проблемы нет ничего. Ценность EAV в том, что можно на лету добавить к сущности новое свойство или его новое значение и не затронуть никаких старых данных или структур. Легко систематизировать и трансформировать. Модель не идеальная, но гибкая. Новые данные создаются новыми строками в постоянных таблицах, а не новыми полями и таблицами. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.08.2019, 10:29 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
L_argo Ценность EAV в том, что можно на лету добавить к сущности новое свойство или его новое значение и не затронуть никаких старых данных или структур. Легко систематизировать и трансформировать. . В текстовый документ тоже можно на лету что хочешь добавлять. Да и в тот же Йксель. Т.е. если целью является занять персонал набором данных, есть что-то и получше ЕАВа. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.08.2019, 12:01 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
L_argoЦенность EAV в том, что можно на лету добавить к сущности новое свойство или его новое значение и не затронуть никаких старых данных или структур. И в чём ценность этого? ... |
|||
:
Нравится:
Не нравится:
|
|||
08.08.2019, 12:07 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
softwarerL_argoЦенность EAV в том, что можно на лету добавить к сущности новое свойство или его новое значение и не затронуть никаких старых данных или структур. И в чём ценность этого? Ладно, чтобы не выслушивать тонны бреда, поясню вопрос. Допустим, есть таблица obj$somedata, в которой лежат те или иные важные бизнес-объекты. Поставлена задача добавлять к ним произвольные новые свойства и значения. В тот момент, когда у Вас дёргается рука организовать eav, я делаю так. Завожу таблицу ext$somedata с единственным полем id. Там, где данные выводятся в интерфейс, я пишу запрос: Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9.
Ну и даю клиенту возможность описывать и создавать дополнительные поля в ext$somedata. Внимание, вопрос: опишите, что и сколько Вам потребуется сделать в eav, чтобы достичь того же результата. Не забудьте, например, про необходимость отфильтровать эту выборку по значению двух-трёх полей из "расширенного" набора. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.08.2019, 12:17 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
softwarerИ в чём ценность этого? Позволяет призвать дух товарища Тенцера. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
08.08.2019, 12:29 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
softwarerНу и даю клиенту возможность описывать и создавать дополнительные поля в ext$somedata. Внимание, вопрос: опишите, что и сколько Вам потребуется сделать в eav, чтобы достичь того же результата. Не забудьте, например, про необходимость отфильтровать эту выборку по значению двух-трёх полей из "расширенного" набора.В Вашем случае создается новый объект в БД. Ввести новые данные - полдела. Нужно их научиться еще и вычитывать. Н-р в отчетах. Научиться реплицировать на другие БД. Это все может потребовать вмешательства разработчиков и админов. В "моем" EAV: 1. Создается новая запись-карточка нового параметра (Имя,Тип,Форматировка,Связи,Безопасность и пр.). 2. Привязывается к сущностям, н-р к "товары" и "заказчики". Простая таблица Ключ+Ключ. 3. Теперь можно вносить данные: заходим в карточку товара -> "Добавить свойство" -> Выбираю из списка нужное свойство из доступных для "товар" -> Система предлагает ввести значение (варианты ввода и ограничения были настроены в п.1). 4. (профит) Для массовой заливки данных в EAV нужен список карточек и значения. Есть унифицированный импорт в любое EAV-свойство. Н-р из экселя. Его можно клонировать с доработками. Никаких новых таблиц. Дописка кода нужна нечасто (н-р нестандартная проверка введенных данных) и она не нарушает работу другого кода. Не нужны админские полномочия. Это все (кроме дописки кода) может делать аналитик средней руки. В любой момент этот новый параметр можно перенастроить или даже удалить вместе с данными. Есть набор готовых процедур для вычитки данных, н-р для отчетов. МССКЛ. зы: ппц. Уже раза три про все это писал. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.08.2019, 13:28 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
Что касается выборок с фильтрами.... Да, временами не очень удобно и не очень быстро. Зато все просто и одинаково. И для юзера и для разработчика. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.08.2019, 13:34 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
авторМодель не идеальная, но гибкая. Выше писал уже, что при ближайшем рассмотрении "гибкость и универсальность" оказывается практически знак равенства с "кривая, методологически непроработанная реализация бизнес-процесса в ИУСе". Информационно-справочные системы, чтото типа "Центральный справочник материалов", - да наверное тут EAV чемто поможет, т.к. у разных групп номенклатуры МТР кардинально отличаются наборы характеристик. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.08.2019, 15:26 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
L_argoВвести новые данные - полдела. Нужно их научиться еще и вычитывать. Н-р в отчетах. Я не уверен, что именно Вы подразумеваете под термином "вычитывать", но подозреваю, что как раз ту операцию, которая приведена в моём сообщении, и своей реализации которой Вы по понятным причинам не привели. L_argo3. Теперь можно вносить данные: заходим в карточку товара -> "Добавить свойство" -> Выбираю из списка нужное свойство из доступных для "товар" Вот так и подозревал. Вся эта громоздкая хрень, помимо прочего, провоцирует неудобный интерфейс. Делать пользователю больше нечего, как только вносить значения двадцати свойств каждое отдельным нажатием кнопки "добавить". И так по нескольким сотням тысячам записей товаров.... L_argo4. (профит) Если это профит, не хотел бы я увидеть фейл. L_argoЕсть унифицированный импорт ... Никаких новых таблиц. ... Не нужны админские полномочия ... Вместо ответа на заданный вопрос Вы изображаете магнитофон, повторяющий заученные фразы. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.08.2019, 15:44 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
ldfanateИнформационно-справочные системы, чтото типа "Центральный справочник материалов", - да наверное тут EAV чемто поможет, т.к. у разных групп номенклатуры МТР кардинально отличаются наборы характеристик. Хотя бы простое в лоб поле "характеристики" типа XMLType поможет гораздо лучше. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.08.2019, 15:46 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
L_argoНе нужны админские полномочия. Это тоже вы в плюс записали? ... |
|||
:
Нравится:
Не нравится:
|
|||
08.08.2019, 16:44 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
Добавлю в "плюсы" - никаких ограничений: можно записать все что угодно и сколько угодно раз. И читать тоже, даже если программист накосячит и будет запрашивать свойство несуществующего поля то ошибки не будет. Да здавствуют программы без ошибок! ... |
|||
:
Нравится:
Не нравится:
|
|||
08.08.2019, 17:08 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
SergueidrynnyНу а что тут? Мне очень важно ваше мнение. было бы интересно увидеть реализацию какого то кейса с демонстрацией возможностей, а до того не интересно время тратить... У меня в системе используется аналогичное решение, но не для хранения всего и вся, а частично. Простые структуры да удобно, а чуть посложнее - все приплыли... Ок, сегодня-завтра я запилю ролик про рекрутерскую систему, которая работает на этом решении. Если вы, как и я, ненавидите ролики, то могу накидать скриншотов с пояснениями. В общем, пропарюсь лишь бы получить ваш вариант названия. Я помог знакомому рекрутеру делать стартап для массового подбора персонала. Там есть приличный бизнес-процесс, включающий переходы откликов кандидатов по статусам, планирование интервью, рассылку email и смс, работу с вакансиями (набор этапов, трёхуровневые специализации, скрипты, тайм-слоты встреч, права, и т.д. и т.п.) и сайтом Хэдхантер (HH). Фрейм HH написан отдельно, используется как сторонний сервис, внедренный в интерфейс, остальное — в QDM (Quintet data model). Так вот, есть формы вакансии, отклика и прочие, состоящие из блоков, которые включаются/выключаются и совершают действия (вызывают запросы, запрашивают и сохраняют данные) в зависимости от статуса отклика или иного контекста. Приложение «ведет» пользователя, ограничивает, не дает спотыкаться. Могу показать как это работает по скайпу, со всеми запросами, исходниками и формами. В целом, всё как в обычном приложении, но без python, php, nodejs. Я мониторил загрузку, вот здесь опубликованы результаты за день: habr.com/ru/post/358934/#comment_18715197 ... |
|||
:
Нравится:
Не нравится:
|
|||
08.08.2019, 17:57 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
hVosttНафига этот ущербный EAV и все его кривые производные, отлитые из костылей? Если есть Event Sourcing и проекции? Цель – сделать конструктор приложений. От костылей удалось избавиться, как это ни странно, и я желаю рассказать о внутренностях решения, если зритель готов смотреть, а не только с пеной у рта доказывать тут, что EAV – зло. Зло, кто ж спорит. Только я здесь не про EAV. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.08.2019, 18:20 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
drynny Ну назовите Универсальный Формат Типизированных Данных - УФТД (UFTD) . Звучать будет внушительно . Или не Формат а Хранилище УХТД. А если не секрет, какой движок БД подкладывали под модель, когда ворочали (поверю на слово) большим количеством данных? чисто из любопытства вопрошаю, ибо со скепсисом ранее написавших согласен. Потому что получается - на табличную модель положили хранилище вашего формата, на базе которого работают снова таблицы. Наличие лишнего звена, создающего доп нагрузки очевидно ((((((((((( если оно работает поверх некоего SQL движка, оно никак не может работать быстрее и эффективнее. Только медленнее (((((( ... |
|||
:
Нравится:
Не нравится:
|
|||
08.08.2019, 18:26 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
и теперь, чтобы универсально работать с данными уложенными по новому, надо будет заново придумать нечто на замену SQL и реализовать сей механизм. План величественный и грандиозный. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.08.2019, 18:30 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
softwarerВот так и подозревал. Вся эта громоздкая хрень, помимо прочего, провоцирует неудобный интерфейс. Делать пользователю больше нечего, как только вносить значения двадцати свойств каждое отдельным нажатием кнопки "добавить". И так по нескольким сотням тысячам записей товаров....Реакция ожидаемая, но это реакция троля, а не инженера. Увы. А как иначе пользователь должен поступить ? В вашем кейсе вообще ничего не описано. Мною был описан кейс вставки редко используемых значений. Про массовую вставку я тоже писал. Также можно сделать обработки для автоматического внесения данных. Разовых или регулярных. И вызывать их по регламенту или одним кликом. У меня еще есть возможность сразу показывать свойство. Без "добавить" и "выбрать". Это удобно, если свойство есть у большинства карточек. Сначала свойство горит пустым. Юзер просто одним кликом сразу вносит значение. Значение может быть проверено на допустимость. Свойство может быть единичным или списочным, т.е. допускать неск. разных значений. Даже не представляю как подобный процесс можно сократить хотя бы на один клик. Единственный недостаток: для сложных вставок и проверок нужно написать код. Иначе никак. Так это везде так. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.08.2019, 08:59 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
Забыл добавить, что свойство может хранить историю значений на дату, если нужно. Также историю можно внести наперед, н-р скидка 10% с 01-09-2019. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.08.2019, 09:04 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
softwarerХотя бы простое в лоб поле "характеристики" типа XMLType поможет гораздо лучше. А оно поможет? Ведь там не только сложная структура характеристик получится, но и потребность строить потом, при распухании справочника, специализированные индексы для ускорения поиска, - типа "дай мне всю номенклатуру товарного департамента N кроме гаек вида M". ... |
|||
:
Нравится:
Не нравится:
|
|||
09.08.2019, 12:23 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
ldfanateА оно поможет? Ну.. мне достаточно сложно назвать задачу, в которой оно поможет меньше, чем EAV. ldfanateВедь там не только сложная структура характеристик получится, Сложная структура - это, скорее, фича. По крайней мере, в неё естественным образом укладываются составные характеристики, массивы и т. п. Да и верифицировать можно по xml schema, что по сравнению с eav - огромная прибавка к надёжности. ldfanateно и потребность строить потом, при распухании справочника, специализированные индексы для ускорения поиска, - типа "дай мне всю номенклатуру товарного департамента N кроме гаек вида M". Может быть. Но к таким объёмам EAV уже просто давно загнётся без вариантов, поэтому я не считал бы это сравнительным недостатком. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.08.2019, 12:47 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
L_argoРеакция ожидаемая, но это реакция троля, а не инженера. Увы. Ну конечно. Ваше "не трогай святое и любимое детище" - это реакция инженера, а моё "вот код", после которого Вам стыдно показывать свой - реакция тролля. L_argoУ меня еще есть возможность Смотрите. Ваше решение условно состоит из следующих частей. Во-первых, это API - то есть то, что "прикладной код" вызывает для реализации функционала. Во-вторых, некий движок метаинформации. И в-третьих, код реализации - то есть то, что получает команду в терминах метаинформации (например, "вернуть значение такой-то выборки" или "записать значение такого-то атрибута") и выполняет физический select, insert или update. Представьте себе, что кто-то взял, добавил в метаинформацию данные типа "этот атрибут лежит в таком-то поле такой-то таблицы", а код реализации изменил таким образом, что вместо EAV тот начал работать с обычными плоскими таблицами. Если Ваше решение хорошо написано, сделать так вполне возможно и даже не особо сложно, верно? API при этом не изменилось, то есть приложение сможет работать с новой реализацией и даже не заметит подмену. Так вот... мы говорим про EAV. Поэтому всё, что сохранится при такой подмене - к EAV уже не относится. Это функционал (хороший или плохой, удачно или неудачно реализованный) который Вы сделали, но который от EAV не зависит. В сравнении нас интересует то, что при такой подмене изменится - в лучшую или в худшую сторону. Я утверждаю, что при такой замене довольно много изменится к лучшему и крайне мало - к худшему. И пока я не услышал ни одного конкретного примера, что же ухудшится - только общие слова типа "меняются таблицы", показывающие, что собеседник сам не понимает, что же станет хуже, просто религиозно верит, что станет. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.08.2019, 12:59 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
Да и верифицировать можно по xml schema, что по сравнению с eav - огромная прибавка к надёжности. Какая нафиг схема и надежность ? Схема примитивно проверяет в пределах xml. Как верифицировать параметр "подтвержден=True", если по договору или доп.соглашению имеется просроченная задолженность или в связанном документе присутствует неподтвержденная позиция ? Придется делать неск. типов проверок. С данными в ХМЛ работать неудобно и вообще это противоречит 1 норм.форме. :) Надеюсь мы обсуждаем абстрактное БД-решение, а не на какой-то специфической платформе ? Задача - реализация на любой СУБД. Например Фаерберд. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.08.2019, 13:06 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
L_argoЦенность EAV в том, что можно на лету добавить к сущности новое свойство или его новое значение и не затронуть никаких старых данных или структур. Легко систематизировать и трансформировать. На каком ещё "на лету"? Вы в БД не можете добавить колонку "на лету"? Я вот могу. Показать инструкцию? Нет, вы похоже не понимаете для чего пришлось изобретать костыли типа EAV. L_argohVosttНафига этот ущербный EAV и все его кривые производные, отлитые из костылей? Если есть Event Sourcing и проекции?Это куета и балабольство. Много слов, но по сути проблемы нет ничего. Понятно, для вас это пустой звук, просто не хватает компетенций. Ничего страшного :) ... |
|||
:
Нравится:
Не нравится:
|
|||
09.08.2019, 14:04 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
L_argoНикаких новых таблиц. Так СУБД как раз и придумана для управления этими таблицами. Вы чего их экономите? П.С. Теперь наш суп можно есть руками, больше никаких ложек! ... |
|||
:
Нравится:
Не нравится:
|
|||
09.08.2019, 14:06 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
drynnyЦель – сделать конструктор приложений. Это не может быть целью. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.08.2019, 14:07 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
hVosttdrynnyЦель – сделать конструктор приложений. Это не может быть целью.Надо было написать "Цель - заработать денег" ? ... |
|||
:
Нравится:
Не нравится:
|
|||
09.08.2019, 14:33 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
drynnySergueiпропущено... было бы интересно увидеть реализацию какого то кейса с демонстрацией возможностей, а до того не интересно время тратить... У меня в системе используется аналогичное решение, но не для хранения всего и вся, а частично. Простые структуры да удобно, а чуть посложнее - все приплыли... Ок, сегодня-завтра я запилю ролик про рекрутерскую систему, которая работает на этом решении. Если вы, как и я, ненавидите ролики, то могу накидать скриншотов с пояснениями. В общем, пропарюсь лишь бы получить ваш вариант названия. Я помог знакомому рекрутеру делать стартап для массового подбора персонала. Там есть приличный бизнес-процесс, включающий переходы откликов кандидатов по статусам, планирование интервью, рассылку email и смс, работу с вакансиями (набор этапов, трёхуровневые специализации, скрипты, тайм-слоты встреч, права, и т.д. и т.п.) и сайтом Хэдхантер (HH). Фрейм HH написан отдельно, используется как сторонний сервис, внедренный в интерфейс, остальное — в QDM (Quintet data model). Так вот, есть формы вакансии, отклика и прочие, состоящие из блоков, которые включаются/выключаются и совершают действия (вызывают запросы, запрашивают и сохраняют данные) в зависимости от статуса отклика или иного контекста. Обзорный ролик ... |
|||
:
Нравится:
Не нравится:
|
|||
09.08.2019, 14:40 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
Пришел исчо один умник.... менторски поумничать. Никаких решений не предлагает. Просто умничает. Блещет остроумием. Поле добавить на лету... Дело же не в добавленном на лету поле, а в работе с ним. На каждый новый параметр поле добавлять ? Возьми какой-нить Волмарт. Там миллионы товаров с десятками разнородных параметров каждый. Ты всерьез думаешь, что это отдельные таблички и поля ? ... |
|||
:
Нравится:
Не нравится:
|
|||
09.08.2019, 14:41 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
Vladimir Baskakovdrynny Ну назовите Универсальный Формат Типизированных Данных - УФТД (UFTD) . Звучать будет внушительно . Или не Формат а Хранилище УХТД. «Ну ...» Слишком абстрактное название, не отражает суть. Внушительность звучания вообще не важна. Vladimir BaskakovА если не секрет, какой движок БД подкладывали под модель, когда ворочали (поверю на слово) большим количеством данных? чисто из любопытства вопрошаю, ибо со скепсисом ранее написавших согласен. Потому что получается - на табличную модель положили хранилище вашего формата, на базе которого работают снова таблицы. Наличие лишнего звена, создающего доп нагрузки очевидно ((((((((((( если оно работает поверх некоего SQL движка, оно никак не может работать быстрее и эффективнее. Только медленнее (((((( Данные хранятся в MySQL, также можно использовать Postgre, в котором запросы MySQL прозрачно отрабатывают, кроме ключа LIMIT, который нужно передавать отдельно. Скепсис – это же отлично! Но нужна конкретика. Вот там выше товарищ вещает про объемы. Какие конкретно объемы убьют это решение? Не EAV, а именно это. Сам EAV неубиваем, и вы можете писать туда столько, сколько вместится на диск. А вот собрать работающее решение – другое дело. Ранее мне говорили, что 100-200 тысяч записей – предел возможностей законченного решения на основе EAV. 2 млн называли недостижимой планкой. Я сделал прототипы и сервисы и на 4 млн, и на 80, и на 180. Судя по динамике, предела вообще нет. Знаете что отвечали оппоненты? А ничего, затыкались и уходили. Ваше заявление про «таблицы поверх формата поверх таблиц» – это попытка на лету спроектировать мою систему, с последующим вердиктом, что это (то, что вы сочинили на ходу) работать не может. Давайте таки придумаем название. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.08.2019, 15:09 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
L_argohVosttпропущено... Это не может быть целью.Надо было написать "Цель - заработать денег" ? Заработать денег это тоже не цель. Если я дам 1 рубль за решение, цель достигнута? )) ... |
|||
:
Нравится:
Не нравится:
|
|||
09.08.2019, 16:04 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
L_argoНикаких решений не предлагает. Просто умничает. Блещет остроумием. Не понимаю, чего вы так кипятитесь. Предложение решения не является обязательным условием в обсуждении и критике. И никогда не являлось. А зачастую это конкретная работа. Назревает сразу вопрос, может вам ещё и на хлеб намазать? Не надо так. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.08.2019, 16:06 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
Предложение решения не является обязательным условием в обсуждении и критикеУгу. Можно просто придти поумничать в стиле "вы фсе тут п*сы". На нормальных инженерных форумах принято: Критикуешь ? ОК. Предложи более правильную альтернативу. Опиши плюсы/минусы. Не знаешь альтернативы ? Сиди молча. Кому надо, тот прочтет топик и выберет решение по вкусу. Я описал свое решение в подробностях. зы: Слежу за скуль.ру с 2002г. Уровень неимоверно упал. И вообще форум стремительно теряет аудиторию. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.08.2019, 16:31 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
L_argoУгу. Можно просто придти поумничать в стиле "вы фсе тут п*сы". Ну или можно поклянчить готовые решения, да? :) L_argoКритикуешь ? ОК. Предложи более правильную альтернативу. Опиши плюсы/минусы. Не знаешь альтернативы ? Сиди молча. Я от вас ничего подобного чёт не увидел. Сплошные набросы какие-то и неуместная демагогия. L_argoзы: Слежу за скуль.ру с 2002г. Уровень неимоверно упал. И вообще форум стремительно теряет аудиторию. Вот именно, что только следите. Где решения? Код давайте в студию, желательно с докой, демой, примерами использования, тестами, бенчмарками, доказательствами преимуществ и серией различных интеграций. Вот тогда видимо у вас и появятся хоть какие-то основания кому-то что-то там указывать и сорить нравоучениями. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.08.2019, 01:02 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
L_argoЯ описал свое решение в подробностях. Это вам так кажется. А до решения и тем более каких-то подробностей в вашем опусе там как до ближайшей звезды пешком. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.08.2019, 01:05 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
hVosttL_argoУгу. Можно просто придти поумничать в стиле "вы фсе тут п*сы". Ну или можно поклянчить готовые решения, да? :) L_argoКритикуешь ? ОК. Предложи более правильную альтернативу. Опиши плюсы/минусы. Не знаешь альтернативы ? Сиди молча. Я от вас ничего подобного чёт не увидел. Сплошные набросы какие-то и неуместная демагогия. L_argoзы: Слежу за скуль.ру с 2002г. Уровень неимоверно упал. И вообще форум стремительно теряет аудиторию. Вот именно, что только следите. Где решения ? Код давайте в студию, желательно с докой , демой , примерами использования, тестами , бенчмарками , доказательствами преимуществ и серией различных интеграций . Что вы пристали к человеку? Он тут ни при чем. По этой же теме я предоставил описание мат.части и решения , ссылки на доку , демо и песочницу (можно самому пощупать), примеры использования: раз два три , тесты всякие, бенчмарки , интеграции тут с смс, email, hh.ru . Поможете разобраться с вопросом в начале темы? ... |
|||
:
Нравится:
Не нравится:
|
|||
10.08.2019, 11:04 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
softwarerL_argoЦенность EAV в том, что можно на лету добавить к сущности новое свойство или его новое значение и не затронуть никаких старых данных или структур. И в чём ценность этого? Ну, ценность на уровне отдела продаж. Наши продавцы продвигают сие как фичу. Некоторые глупые юзеры верят, и покупают. На самом деле, что-то достаточно серьезное все равно приходится делать нам, ибо мозг юзера - юзерский, и, как ни странно, юзерских руководств они не читают, а если и читают, то понимают далеко не все. Добавить поле - это не все, нужно его использовать, например, в системе отчетов. Да, мы в итоге реализовали интерфейс, позволяющий общаться (например, из системы подготовки отчетов) с EAV как с "обычной" СУБД. Т.е., мы через задницу, но пришли к тому, от чего начинали. Э... может быть, EAV позволяет обходить ограничения некоторых СУБД на число полей или их типы. Но никто не мешает выбрать другую СУБД, и не любит мозг себе в дальнейшем. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.08.2019, 14:58 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
ёёёёёНу, ценность на уровне отдела продаж. Наши продавцы продвигают сие как фичу. Фокус вопроса не в этом. "Ценность на уровне отдела продаж" - это добавление атрибутов, она не зависит от реализации. Я же спрашиваю о ценности именно EAV как одной из возможных реализаций этой фичи, и о ценности того, что мой уважаемый собеседник неточно сформулировал как "не затронуть никаких старых данных или структур", хотя, видимо, имел в виду "не выполняя DDL". Я упомянул ещё две возможных реализации этой фичи - расширяющие таблицы и XML-поле - и хотел бы услышать от жрецов EAV, мнящих себя инженерами, какие преимущества даёт именно EAV-реализация. ёёёёёТ.е., мы через задницу, но пришли к тому, от чего начинали. Хорошо. К сожалению, большинство любителей застревает на стадии любования своим гениальным велосипедом и к этому не приходит. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.08.2019, 15:43 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
drynnyПо этой же теме я предоставил описание мат.части и решения , ссылки на доку , демо и песочницу (можно самому пощупать), примеры использования: раз два три , тесты всякие, бенчмарки , интеграции тут с смс, email, hh.ru . Поможете разобраться с вопросом в начале темы? Как назвать структуру? Я не уверен, что это название нужно, так как принципиально качественного и нового решения я не увидел. EAV он и в Африке EAV. Как конкретно вы его реализуете с каким набором артефактов и обвесов сути вообще не меняет. Кроме того, я выразил своё мнение по этому поводу. Считаю EAV откровенным кривым костылём, ущербной методой, обладающей большим количеством недостатков и неудобств на всех уровнях использования. С одним единственным сомнительным преимуществом в виде динамической схемы данных, что уже давно решено специализированными СУБД. Нафига козе баян, тут вообще непонятно. Не нужен и задаром. Также я указал, что выглядит гораздо интереснее: Event Sourcing. Как оно коррелирует и связано с EAV? Довольно очевидно. Из ES вы можете генерить бесчисленное количество проекций данных под разные задачи, классические таблицы в РСУБД, с которыми приятно, удобно работать решая задачи BI. Это проверено на практике, это работает в огромных энтерпрайз решениях с постоянно изменяющимся бизнесом. А с бизнесом удобно работать моделируя предменую область. Ну и получаем CQRS, DDD и все плюшки, для которых не нужно изобретать очередные костыли в виде "квинтетов" и прочих усложняющих всем жизнь артефактов. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.08.2019, 18:01 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
softwarer...добавление атрибутов, она не зависит от реализации. Я же спрашиваю о ценности именно EAV как одной из возможных реализаций этой фичи... Можно предположить, что человека когда-то напугал процесс изменения метаданных "фактически на лету". Нарвались когда-то на проблемы, и "не справились". Например, в Firebird/Interbase количество изменений структуры ("закоммиченных" изменений) архитектурно для одной таблички ограничено числом 255, а если больше - нужно делать дополнительные телодвижения (backup-restore). Или попали на ограничение записи по размеру. Или вообще не смогли изменить метаданные (прав не хватило, или что-либо еще). А с EAV - не нужно (почти) знать об особенностях конкретной СУБД. Т.е., вместо того, чтобы разобраться, люди строят велосипед. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.08.2019, 20:31 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
Считаю EAV откровенным кривым костылём, ущербной методой, обладающей большим количеством недостатков и неудобств на всех уровнях использования. С одним единственным сомнительным преимуществом в виде динамической схемы данных, что уже давно решено специализированными СУБД. Что по вашему не костыль ? Я так и не увидел. ES ? Это пустые слова. Модный маркетинговый слоган. Как это выглядит технически ? Просмотрел много роликов на эту тему. Одна пустая болтовня ниочем. Одни и те же фразы вдоль и поперек во всех роликах. Даже элементарного примера (для наглядности) никто не приводит. Специализированные СУБД ? Бгг. Просто ради этой фичи никто не возьмет специализированную СУБД. В ряде случаев взять "другую СУБД" вообще нереально. Это может быть просто требование бай-дизайн. ЕАВ одинаково работает на любой СУБД. И запросы практически одинаковые на любой SQL-СУБД. И данные легко достать и проверить простым классическим запросом. И 1в1 передать в другую СУБД. А вот массово доставать или вставлять данные из/в XML (а почему собственно не JSON ?) то еще удовольствие. И синтаксис наверное разный у разных СУБД. Если вообще таковой есть. Есть в MySQL, FB/IB, SQLite ? ps: То же МССКЛ выдает ошибку на совершенно нормальный XML. Просто ему не нравятся некот. теги или форматы данных. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.08.2019, 21:29 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
ёёёёёsoftwarer...добавление атрибутов, она не зависит от реализации. Я же спрашиваю о ценности именно EAV как одной из возможных реализаций этой фичи... Можно предположить, что человека когда-то напугал процесс изменения метаданных "фактически на лету". Нарвались когда-то на проблемы, и "не справились". Например, в Firebird/Interbase количество изменений структуры ("закоммиченных" изменений) архитектурно для одной таблички ограничено числом 255, а если больше - нужно делать дополнительные телодвижения (backup-restore). Или попали на ограничение записи по размеру. Или вообще не смогли изменить метаданные (прав не хватило, или что-либо еще). А с EAV - не нужно (почти) знать об особенностях конкретной СУБД. Т.е., вместо того, чтобы разобраться, люди строят велосипед. А можно предположить, что многих пугает кое-что пострашнее. Логика, а не физика. Например, в РМД в любой РСУБД (а EAV именно в РСУБД) если есть таблица СТУДЕНТ, то чтобы найти что-то про ПЕТРОВА, можно достаточно просто на SQL спросить: выбрать все про студентов с фамилией петров: SELECT * FROM СТУДЕНТ WHERE ФАМИЛИЯ = "ПЕТРОВ". Кроме того, легко декларативно (в свойствах атрибута) ограничить, например, допустимый возраст. Ведь БД и нужны, чтобы как можно проще извлекать информацию. И вот стремно, что вместо всего этого, надо будет писать какие-то более сложные запросы или вообще циклы. Т.е. дополнительные ощутимые телодвижения. Проггеров, которые только пришли в БД из другой проблемной области (например, программирования драйверов) это не пугает, потому, что они все равно пока везде пишут циклы. А вот те, кто давно пришел могут видеть в этом плохо спроектированную БД: чем хуже спроектирована, тем больше требуется программных ухищрений. А в EAV типа лету может проектировать вообще юзер. Это может еще больше ухудшить БД. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.08.2019, 21:48 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
vadiminfoА вот те, кто давно пришел могут видеть в этом плохо спроектированную БД: чем хуже спроектирована, тем больше требуется программных ухищрений. Я бы немного развил эту мысль. Многих новичков прёт от собственной крутизны, мерилом которой они полагают величину и сложность программного решения - мол, а я вот эдак могу и ещё вот эдак и ещё кандибобриком. И далеко не до всех доходит, что правильный подход - "Я ещё и не так могу, но для этой задачи этого не нужно, действительная крутизна в том, чтобы решить её легко и просто". ... |
|||
:
Нравится:
Не нравится:
|
|||
10.08.2019, 21:54 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
vadiminfo... А можно предположить, что многих пугает кое-что пострашнее. Логика, а не физика. ... Несколько раз видел, что в качестве преимущества "велосипеда"(очередного варианта ORM, например) указывается "не требуется знание SQL". Более того, в "умных книжках" советуют ориентироваться на то, что SQL - вещь, недоступная для большинства: М.Фаулер, "Архитектура..."Многие разработчики просто не владеют SQL и потому, пытаясь сформулировать эффективные запросы и команды, сталкиваются с проблемами. И предлагает обходится специальными классами - адаптерами ("шлюзами"), формирующими запросы, и да, потом тупо перебирать записи формируемых датасетов... ... |
|||
:
Нравится:
Не нравится:
|
|||
10.08.2019, 22:33 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
ёёёёёБолее того, в "умных книжках" советуют ориентироваться на то, что SQL - вещь, недоступная для большинства: Тогда бы уместно и не ориентироваться на РСУБД. Ведь система запросов главное, поскольку отвечает за извлечение информации из БД. Т.е. ради чего и создавалась БД. И есть попытки создать типы СУБД, которые бы вытеснили РСУБД. Вплоть NOSQL СУБД. А вот EAV как бы - попытка остаться в РСУБД. А значит и с SQL. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.08.2019, 23:08 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
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. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.08.2019, 01:14 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
drynnyВот там выше товарищ вещает про объемы. Какие конкретно объемы убьют это решение? Не EAV, а именно это. Сам EAV неубиваем, и вы можете писать туда столько, сколько вместится на диск. А вот собрать работающее решение – другое дело. Ранее мне говорили, что 100-200 тысяч записей – предел возможностей законченного решения на основе EAV. 2 млн называли недостижимой планкой. Я сделал прототипы и сервисы и на 4 млн, и на 80, и на 180. Судя по динамике, предела вообще нет. Знаете что отвечали оппоненты? А ничего, затыкались и уходили. Ваше заявление про «таблицы поверх формата поверх таблиц» – это попытка на лету спроектировать мою систему, с последующим вердиктом, что это (то, что вы сочинили на ходу) работать не может. Давайте таки придумаем название. Да не то что совсем убъет. Но если поверх вашего движка лежащего на БД организовать структуру на табличках с джойнами, то очевидно что будут затраты, и заметные, по сравнению с тем же решением на чистом движке БД. То есть, за железо в виде лишних процессоров и памяти, в случае масштабного с большим объемом данных проекта, заплатит покупатель системы. А с учетом того, что разрабатывать вряд ли проще чем на общеизвестном SQL - то и за человекочасы. Чем сложнее связи между сущностями, тем сильнее вспотеет железка соединяя внешние данные.... ну вроде так.... ... |
|||
:
Нравится:
Не нравится:
|
|||
11.08.2019, 09:16 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
Vladimir BaskakovДа не то что совсем убъет. Но если поверх вашего движка лежащего на БД организовать структуру на табличках с джойнами, то очевидно что будут затраты, и заметные, по сравнению с тем же решением на чистом движке БД. То есть, за железо в виде лишних процессоров и памяти, в случае масштабного с большим объемом данных проекта, заплатит покупатель системы. А с учетом того, что разрабатывать вряд ли проще чем на общеизвестном SQL - то и за человекочасы. Чем сложнее связи между сущностями, тем сильнее вспотеет железка соединяя внешние данные.... ну вроде так.... А вот практика показывает обратное. Я дал выше ссылки, и там видно нагрузочную способность сервиса на этом решении – 20-30 человек работают одновременно на одноядерном процессоре с 1ГБ оперативной памяти. При этом есть приличный запас по нагрузке: в самый нагруженный час это единственное ядро загружено меньше чем на треть. На картинке ниже показано количество запросов в минуту, их суммарное и среднее время отработки (в мс) Про человеко-часы: этот сервис, показанный в ролике , был сделан за 2-3 недели одним человеком. Насколько сложно это программировать, вы можете посмотреть здесь: habr.com/ru/post/346816/ Я вижу, что по ссылкам никто здесь не ходит, предпочитают спорить вслепую, набрасывая тонны нелепых клише и уклоняясь от объективной оценки. И кстати, если бы я вам не сказал, что под этим всем крутится EAV, вы бы ни за что об этом не догадались :-) ... |
|||
:
Нравится:
Не нравится:
|
|||
11.08.2019, 10:23 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
Телезрители подсказывают такое название: IdeaV Мне понравилось название, но оно больше подходит как торговый знак продукта, а не название решения. hVosttL_argoЕАВ одинаково работает на любой СУБД. И запросы практически одинаковые на любой SQL-СУБД. И данные легко достать и проверить простым классическим запросом. И 1в1 передать в другую СУБД. Вы эти запросы вообще видели? Планы выполнения смотрели? А давайте вместе посмотрим (копипаста отсюда ). Запрос к классической базе: Код: sql 1. 2. 3. 4.
Вот его план выполнения: Этот же запрос в конструкторе IdeaV выглядит так: Из выпадающего списка мы накликали нужные атрибуты объектов, указали фильтр по автору и задали подсчитать количество записей. Как видите, ни о каких JOIN мы не паримся, потому что ядро IdeaV всё сделает за нас. Движок IdeaV сгенерирует такой запрос к БД: Код: sql 1. 2. 3. 4. 5. 6. 7.
Таков будет его план выполнения: Каждый из запросов вернет по 465 записей, классический запрос выполнится за 193 мс, в IdeaV то же самое выполнилось за 266 мс. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.08.2019, 13:21 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
Ну работают. И собственно что? Давайте рассмотрим схему данных, примерную, с примерным количеством записей. И типовые запросы, которые работают поверх этой схемы данных. В хабровской статье я увидел с десяток таблиц. и вряд ли там мегатонны данных. В типовых складских и бухгалтерских решениях их куда как больше, со сложной взаимной логикой. даже если набросать задачку расчета зарплаты, будет заметно больше- люди табель с отпусками и больничными и все такое. с табелем, с календарем рабочих дней и чуть более сложное чем простое решение может встать колом гораздо раньше, чем на миллионах записей. Кстати, в просто базах запросы можно и иногда нужно хинтовать, выстраивая план выполнения. на каком языке у вас программист общается с наборами данных? не, я собственно не опровергаю, если на этом конструкте получается делать решения, то это прекрасно, и замечательно ............ ... |
|||
:
Нравится:
Не нравится:
|
|||
11.08.2019, 14:08 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
drynny, если без "конструктора" жизнь не мила - что мешало его заточить на "классическую" структуру, без eav? ... |
|||
:
Нравится:
Не нравится:
|
|||
11.08.2019, 14:31 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
drynny, если ваш IdeaV работает быстрее, чем СУБД, над которой она надстроена. Не планируете ли вы сделать IdeaV надстройку над самой IdeaV? ... |
|||
:
Нравится:
Не нравится:
|
|||
11.08.2019, 14:55 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
ёёёёёdrynny, если без "конструктора" жизнь не мила - что мешало его заточить на "классическую" структуру, без eav? Я знаю много конструкторов на классической структуре: от ЦФТ Банка (я узнал его в 2004 году) до относительно недавно появившегося Бипиума. Если сравнивать с ними и всеми остальными, то моё решение имеет минимальное количество действий для создания и поддержки структуры данных (таблицы, связи, индексы, запросы, ограничения и т.д.). ёёёёёdrynny, если ваш IdeaV работает быстрее, чем СУБД, над которой она надстроена. Не планируете ли вы сделать IdeaV надстройку над самой IdeaV? Ну, допустим, вы действительно не догоняете о чем речь, и я вам объясню. Во-первых, я не говорил, что это быстрее в принципе. Грамотно и долго настроенная обычная база в СУБД будет работать быстрее, но это нужно настраивать, следить, думать и сопровождать. Это дорого. IdeaV устраняет черновую работу админа. Работа эта достаточно простая, но в ней часто делают ошибки от незнания (новички), лени (матёрые разработчики) или невнимательности (все кому не лень). Единожды устранив этот неблагодарный труд, нет необходимости делать это ещё раз. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.08.2019, 18:00 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
drynny, ну да, конечно. Если выяснится, что (скажем, неделю назад) физическую табличку грохнул админ - это катастрофа. А если EAV - сущность грохнул юзер без прав админа - это нормально, можно не обращать внимания. Так, что ли? ... |
|||
:
Нравится:
Не нравится:
|
|||
11.08.2019, 18:12 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
drynny...Грамотно и долго настроенная обычная база в СУБД будет работать быстрее, но это нужно настраивать, следить, думать и сопровождать. Это дорого. IdeaV устраняет черновую работу админа. Работа эта достаточно простая, но в ней часто делают ошибки от незнания (новички), лени (матёрые разработчики) или невнимательности (все кому не лень). Единожды устранив этот неблагодарный труд, нет необходимости делать это ещё раз. Может быть, вы просто не знаете, как "классические СУБД" устроены? Кроме select/insert/update/delete, там еще разные объекты есть. Например: если вы хотите дать "обычному" юзеру возможность создавать таблички, достаточно дать ему (вашему приложению, которым он пользуется) право запускать процедуру, которая обладает такими правами. Процедуру создаёте, отлаживаете. А потом (!!!) ею можно пользоваться многократно, такие дела. И никаких EAV. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.08.2019, 18:42 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
drynny... Для навигации в этом списке построены 3 упорядоченных указателя – индексы: ID, Entity+Attribute, Attribute+Value При такой организации данных мы можем работать с базой данных любого размера, не имея проблем с производительностью... А как вы заливаете "много" данных? Давайте создадим новую псевдотабличку и зальём в нее данные, много (они же "любого размера"). В "обычной" СУБД такая операция может выполняться с временной дезактивацией индексов. Вы - частично дезактивируете индекс " Attribute+Value "? ... |
|||
:
Нравится:
Не нравится:
|
|||
11.08.2019, 18:55 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
Vladimir BaskakovНу работают. И собственно что? Нужна помощь с названием для подхода, о чём эта ветка и есть. Vladimir BaskakovДавайте рассмотрим схему данных, примерную, с примерным количеством записей. И типовые запросы, которые работают поверх этой схемы данных. В хабровской статье я увидел с десяток таблиц. и вряд ли там мегатонны данных. В типовых складских и бухгалтерских решениях их куда как больше, со сложной взаимной логикой. даже если набросать задачку расчета зарплаты, будет заметно больше- люди табель с отпусками и больничными и все такое. с табелем, с календарем рабочих дней Вы видели схему для рекрутеров? Вот эту (это только фрагмент схемы данных рекрутерского приложения, о котором ролик в сообщении выше ): На самом деле схема может быть сколько угодно сложная, тут предела нет. И запросы поддерживают почти всё, что есть в SQL (кроме рекурсии и прочих специфических вещей). Зарплату тоже приходилось считать, вот так выглядит, например: Vladimir Baskakovи чуть более сложное чем простое решение может встать колом гораздо раньше, чем на миллионах записей. Кстати, в просто базах запросы можно и иногда нужно хинтовать, выстраивая план выполнения. А в этой базе данных нужно соблюдать всего 3 основных правила , и хинтовать не понадобится. Vladimir Baskakovна каком языке у вас программист общается с наборами данных? ... Есть построитель запросов, который дает выбрать объекты и их атрибуты (см. картинка в моём ответе выше или подробнее тут ). Конструктор автоматически связывает все таблицы запроса, а также можно их связать вручную принудительно, в более сложных случая. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.08.2019, 18:59 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
drynny... Vladimir Baskakovна каком языке у вас программист общается с наборами данных? ... Есть построитель запросов, который дает выбрать объекты и их атрибуты (см. картинка в моём ответе выше или подробнее тут ). Конструктор автоматически связывает все таблицы запроса, а также можно их связать вручную принудительно, в более сложных случая. Конструктор сам себе задания формирует? Нельзя ли более конкретно. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.08.2019, 19:04 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
ёёёёёdrynny... пропущено... Есть построитель запросов, который дает выбрать объекты и их атрибуты (см. картинка в моём ответе выше или подробнее тут ). Конструктор автоматически связывает все таблицы запроса, а также можно их связать вручную принудительно, в более сложных случая. Конструктор сам себе задания формирует? Нельзя ли более конкретно. Например - как работает с вашей структурой подсистема построения отчетов? ... |
|||
:
Нравится:
Не нравится:
|
|||
11.08.2019, 19:06 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
ёёёёёdrynny... пропущено... Есть построитель запросов, который дает выбрать объекты и их атрибуты (см. картинка в моём ответе выше или подробнее тут ). Конструктор автоматически связывает все таблицы запроса, а также можно их связать вручную принудительно, в более сложных случая. Конструктор сам себе задания формирует? Нельзя ли более конкретно. Да вот же ссылки прямо в моём сообщении. И мультики можете посмотреть про систему, которая использует api к конструктору отчетов: ... |
|||
:
Нравится:
Не нравится:
|
|||
11.08.2019, 19:18 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
drynnyёёёёёпропущено... Конструктор сам себе задания формирует? Нельзя ли более конкретно. Да вот же... То есть, API отсутствует. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.08.2019, 19:30 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
... |
|||
:
Нравится:
Не нравится:
|
|||
11.08.2019, 19:35 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
drynnyVladimir BaskakovНу работают. И собственно что? Нужна помощь с названием для подхода, о чём эта ветка и есть. Vladimir BaskakovДавайте рассмотрим схему данных, примерную, с примерным количеством записей. И типовые запросы, которые работают поверх этой схемы данных. В хабровской статье я увидел с десяток таблиц. и вряд ли там мегатонны данных. В типовых складских и бухгалтерских решениях их куда как больше, со сложной взаимной логикой. даже если набросать задачку расчета зарплаты, будет заметно больше- люди табель с отпусками и больничными и все такое. с табелем, с календарем рабочих дней Вы видели схему для рекрутеров? Вот эту (это только фрагмент схемы данных рекрутерского приложения, о котором ролик в сообщении выше ): На самом деле схема может быть сколько угодно сложная, тут предела нет. И запросы поддерживают почти всё, что есть в SQL (кроме рекурсии и прочих специфических вещей). Зарплату тоже приходилось считать, вот так выглядит, например: Vladimir Baskakovи чуть более сложное чем простое решение может встать колом гораздо раньше, чем на миллионах записей. Кстати, в просто базах запросы можно и иногда нужно хинтовать, выстраивая план выполнения. А в этой базе данных нужно соблюдать всего 3 основных правила , и хинтовать не понадобится. Vladimir Baskakovна каком языке у вас программист общается с наборами данных? ... Есть построитель запросов, который дает выбрать объекты и их атрибуты (см. картинка в моём ответе выше или подробнее тут ). Конструктор автоматически связывает все таблицы запроса, а также можно их связать вручную принудительно, в более сложных случая. Вопрос не в схеме, она не такая сложная. сложности модели хранения проявятся с момента, когда надо будет строить сложносоставной агрегат на большом объеме. Или сложносоставной поиск. в динамике насчитывать разнообразные агрегаты. А, работу в режиме ввода данных, пообъектно на связанных объектах потянет вполне, тут вопросов нет. Вводи себе и вводи. Опять же проход от корневого, базового объекта ко всем его детализирующим, в режиме интерактивной работы не затормозит В современный SQL же не зря напихано и аналитических функций, и почти экселя с оракловой клозой model Но, какие то бизнес задачи на движке решать можно, ну и ладно. ============================================= Что касается бренда, для технологии, я бы покрутил идеи вокруг образа ==Химии Данных== - типа квинтеты это атомы их которых все остальное.... ... |
|||
:
Нравится:
Не нравится:
|
|||
12.08.2019, 09:23 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
drynnyЯ вижу, что по ссылкам никто здесь не ходит, предпочитают спорить вслепую, набрасывая тонны нелепых клише и уклоняясь от объективной оценки. Нет никаких тон нелепых клише. Есть объективная реальность. В объективной реальности, разработка ПО востребована как никогда ранее, а все конструкторы с разработкой "без программиста" пошли лесом 20 лет назад, потом сходили лесом 15-10-5 лет назад, и до сих пор идут лесом в том же самом объёме. В некоторых местах программисты поменялись на интеграторов с ЗП местами большей чем у программистов, при чём с компетенциями ниже на порядок. Выиграл ли от этого бизнес? Не особо. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.08.2019, 11:37 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
Опять же. Я повторю тот же самый вопрос, который уже раз 500 тут задавал. Если вы придумали офигенный конструктор, на котором задачи решаются в 10 раз быстрее и проще, чем при разработке с нуля, то... Какого фига вы на нём не зарабатываете? НЕ делаете конечных решений? Вы (или другие овер-гениальные разработчики конструкторов) почему-то предлагают людям свой конструктор. Это означает ровно то, что очевидно любому человеку хотя бы с граммом активной субстанции в голове. Конструктор бесполезен. Ровно настолько, насколько бесполезны книжки, методики и практики "как заработать миллион". ... |
|||
:
Нравится:
Не нравится:
|
|||
12.08.2019, 11:40 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
hVosttКонструктор бесполезен. Ровно настолько, насколько бесполезны книжки, методики и практики "как заработать миллион". Неужели ? А что же тогда 1С, AX, NAV, SAP, OEBS, JDE, Галактика и сотни других продуктов ? Разве они не конструкторы ? Их наверно создали идиоты, не читавшие товарища hVosttа ? Какой толстый троллинг. А еще гением-ментором прикидывается Для тётки бухгалтерши или манагера конструктор не нужен. Но он нужен разработчику для супербыстрого решения задач. Хотя встречаются и манагеры и бухгалтеры, кот. что-то понимают в перечисленных платформах. Чаще всего 1С. И все эти "бесполезные конструкторы" продаются. Да, у них есть начальное наполнение готовыми наконструированными решениями. Но покупают их не только потому, что есть готовые наработки, а потому что их можно изучить и доработать под свой вкус. А вот хардкодные решения (особенно бух) почти вымерли, т.к. даже с хорошей поддержкой не успевают за кастомизациями. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.08.2019, 12:18 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
L_argoНеужели ? А что же тогда 1С, AX, NAV, SAP, OEBS, JDE, Галактика и сотни других продуктов ? Это целые платформы, на которых реализованы конечные решения, которые и продаются бизнесу. Бизнесу никогда не продаётся конструктор. Ни в одном из перечисленных случаев. Ни в одном, подчёркиваю. Продаются конечные готовые к употреблению решения. Конечно же бизнес получает возможность кастомизации решений, и для этого нанимаются дорогие специалисты, порой целые отделы, которые осуществляют консалтинг, внедрение, разработку конечных решений на конкретной платформе под конкретные целевые решения. И это никогда не делает обычный и даже продвинутый пользователь. L_argoКакой толстый троллинг. А еще гением-ментором прикидывается Никакого троллинга. Я задаю конкретный вопрос, и никогда не получаю на него ответа. L_argoНо он нужен разработчику для супербыстрого решения задач. А то я не знаю, сколько те же 1С "программисты" делаю свои "супербыстрые" решения. Элементарные задачи для рядового программиста нативных решений, в 1С делают месяцами. Поэтому не надо тут ля ля ) L_argoИ все эти "бесполезные конструкторы" продаются. Да, у них есть начальное наполнение готовыми наконструированными решениями. Но покупают их не только потому, что есть готовые наработки, а потому что их можно изучить и доработать под свой вкус. Сейча уже никто не купит решение, которое не поддаётся кастомизации. Это верно. Но сама по себе кастомизация не стоит и рваного рубля без основного целевого решения, которое собственно и покупается. L_argoА вот хардкодные решения (особенно бух) почти вымерли, т.к. даже с хорошей поддержкой не успевают за кастомизациями. Вы просто не видели средний ценник консалтинга. Особенно того же SAP. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.08.2019, 12:50 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
Но сама по себе кастомизация не стоит и рваного рубля без основного целевого решения, которое собственно и покупается.Утверждение перевернуто с ног на голову. Ниодно современное решение не стоит рваного рубля, если в нем невозможна кастомизация, т.е. конструктор. Готовое решение все равно сделано на базе конструктора... Как ни крути, но сначала нужен конструктор, а потом уже появляется все остальное. Готовое хардкодное решение либо нишевое (клиент-банк, POS, плат.терминал или что-то заказное), либо малоценное. Что касается САП-ценника, то я его знаю. Но это уже другая история. САП это золотой бентли. Очень дорого, но комфорт очень специфичен. И в топике ниразу не шла речь про "конструктор для бухгалтера". Это притянутые за уши выдумки Хвоста. :) Конструктор жизненно необходим разработчикам готовых решений. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.08.2019, 13:16 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
L_argoНо сама по себе кастомизация не стоит и рваного рубля без основного целевого решения, которое собственно и покупается.Утверждение перевернуто с ног на голову. Ниодно современное решение не стоит рваного рубля, если в нем невозможна кастомизация, т.е. конструктор. Не совсем. Бизнес посовещался и решил, что "микросервисы наше ВСИО" Сейчас мода на микросеврисы еще не прошла. Одна из основных фишек "микросервиса", то что его легко "взять и переписать", за разумное время. Правда потом выяснилось, что среднестатистический программист не умеет в "микросеврисную архитектуру". Т.е. взять и с нуля правильно разбить приложение на "микросервисы". Но работа в этом направлении идет. В частности для систем хранения предлагается "лямбда-архитектура". Для REST-API - domen driven development. И прочие страшные слова. L_argoГотовое решение все равно сделано на базе конструктора... Как ни крути, но сначала нужен конструктор, а потом уже появляется все остальное. Готовые решение, доводятся до состояния облачных сервисов. Т.е. вы покупаете жестко определенный функционал, но за очень дешево. Нужно что-то странное... Платите программистам. L_argoИ в топике ниразу не шла речь про "конструктор для бухгалтера". Это притянутые за уши выдумки Хвоста. :) Конструктор жизненно необходим разработчикам готовых решений. Гугл уже сделал универсальный конструктор готовых решений - go lang ;-) ... |
|||
:
Нравится:
Не нравится:
|
|||
12.08.2019, 13:34 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
Напомню, что SQL был создан именно для бухгалтеров. Чтобы общаться с базой на нормальном английском языке. А вы над ними издеваетесь, конструкторы какие-то. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.08.2019, 13:43 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
Не совсем. Бизнес посовещался и решил, что "микросервисы наше ВСИО" Сейчас мода на микросеврисы еще не прошла. Одна из основных фишек "микросервиса", то что его легко "взять и переписать", за разумное время.Для стильных, модных, молодежных с вейпом и гироскутером... Микросервисы - такой же хайп, как и многое другое. Бизнесу вообще пофигу. Ему главное, чтобы выполняло задачу. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.08.2019, 13:44 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
L_argoДля стильных, модных, молодежных с вейпом и гироскутером... Микросервисы - такой же хайп, как и многое другое. Хайп это RUSТ/haskel/etc, а "микросервисы" это серьезно. Т.е. в это вкладывают сейчас много денег. L_argoБизнесу вообще пофигу. Ему главное, чтобы выполняло задачу. Не совсем. "Горизонтальная масштабируемость", "непрерывные изменения" бизнесу очень нравятся. :-) ... |
|||
:
Нравится:
Не нравится:
|
|||
12.08.2019, 14:53 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
L_argoНиодно современное решение не стоит рваного рубля, если в нем невозможна кастомизация, т.е. конструктор. Готовое решение все равно сделано на базе конструктора... Как ни крути, но сначала нужен конструктор, а потом уже появляется все остальное. Любое решение так или иначе кастомизируется. ИС это не калькулятор, бизнес меняется, развивается. Конструктором точно также можно считать любую среду разработки. L_argoИ в топике ниразу не шла речь про "конструктор для бухгалтера". Это притянутые за уши выдумки Хвоста. :) Конструктор жизненно необходим разработчикам готовых решений. Чепуха какая-то. Как раз обычно и идёт речь про "конструктор для бухгалтера". В ином случае, почему разработчики этих конструторов сами же его и не используют и не продают конечные решения? Зачем предлагают взять вот эти (обычно) детские лопатку и ведёрко и самому себе всё реализовать? И вывод напрашивается сам собой. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.08.2019, 15:11 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
В ином случае, почему разработчики этих конструторов сами же его и не используют и не продают конечные решения? ЯННП. Что значит не продают и не используют ? А что они по вашему делают ? Весь список упомянутых систем это делает. И мелкие вендоры делают. И даже индивидуальные. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.08.2019, 16:14 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
L_argoВ ином случае, почему разработчики этих конструторов сами же его и не используют и не продают конечные решения? ЯННП. Что значит не продают и не используют ? А что они по вашему делают ? Весь список упомянутых систем это делает. И мелкие вендоры делают. И даже индивидуальные. Я вижу другое. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.08.2019, 16:21 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
hVosttL_argoпропущено... ЯННП. Что значит не продают и не используют ? А что они по вашему делают ? Весь список упомянутых систем это делает. И мелкие вендоры делают. И даже индивидуальные. Я вижу другое.Что вендоры не продают готовых решений ? 1С не продает ? САП не продает ? :) Понятно, что их часто нужно допиливать. Но базовая часть есть. Ну ОК, бро. Нет, так нет. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.08.2019, 17:47 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
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 работоспособен, а также то, что он интересен не как конструктор, а как построенные на нем решения, на которые в этой теме дано с полдюжины ссылок. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.08.2019, 20:45 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
drynnyИтак, пока в финале 2 названия: QDM – Quintet Data Model – уникально идентифицирует подход Не слишком ли большое сходство с OMD? И хотя последнюю продвигал ЧАЛ лет N-цать назад, а потом как бы перестал вообще упоминать. Да и сам пока находится в забаненном состоянии на этом ресурсе, но все же. И хоть и я с трудом вспоминаю ту МД, но в отличии от ООМД, у ЧАЛа нельзя было создавать пользовательские типы объектов. Только объекты предопределенные авторами МД. Обоснование: пользователи ничего хорошего создать не могут, только все испортят. А у Вас наоброт: EAV, собственно, и нужен, чтобы кажный на лету туда что хотел, то там и создавал. Т.е. отличие снаружи Q и O, получается не большое. А внутри большая разница: у него все пользователи - тупые, а у Вас все проектировщики от Бога. Поэтому, возможно, лучше чтобы первая буквы не была похожа O. Вообще лучше чтобы ни на какие известные МД не была похожа.. Например, что-то типа ЩМД (Щит МД), АМД (атомная МД), ЮМД (Юпитер МД). ... |
|||
:
Нравится:
Не нравится:
|
|||
12.08.2019, 23:47 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
drynnyИтак, пока в финале 2 названия: QDM – Quintet Data Model – уникально идентифицирует подход IdeaV – содержит ID, EAV, V (пять – квинтет) и в целом выглядит модно Ну в таком случае, естественно должна победить лёгкая и красивая "идея ви", а не аморфный "кьюди эм" ... |
|||
:
Нравится:
Не нравится:
|
|||
13.08.2019, 09:25 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
L_argoЧто вендоры не продают готовых решений ? 1С не продает ? САП не продает ? :) Понятно, что их часто нужно допиливать. Но базовая часть есть. Ну ОК, бро. Нет, так нет. Я говорю про поделки-конструкторы, которые тут на sql.ru обсуждаются ... |
|||
:
Нравится:
Не нравится:
|
|||
13.08.2019, 13:46 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
drynny, Например, тот же Интеграл ... |
|||
:
Нравится:
Не нравится:
|
|||
13.08.2019, 13:47 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
hVosttЯ говорю про поделки-конструкторы, которые тут на sql.ru обсуждаютсяПоделки тоже продаются. И готовые решения на них. Среди них не все финансово успешные, но тем не менее эта тема не гаснет. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.08.2019, 13:52 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
L_argo, Да кто ж против-то? Я с точек зрения: разработки, пользователя и бизнеса хотел бы увидеть преимущества этих решений, киллер-фичи, крутую, качественную, современную реализацию. Удобные, быстрые решения, чего ещё не делали раньше, чего ещё нет на рынке. Хоть что-то такое, чего не делали 20 лет назад, потому что унылое велосипедостроение не представляет никакого интереса, ни для бизнеса, ни технически и вообще уже надоело и набило оскомину. Ну невозможно без слёз смотреть на очередную наивную реализацию MS Access-а, например. Или попытку повторить 1С, на сомнительных, скучных и наивных решениях. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.08.2019, 14:30 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
Ключевое тут, устарелое, застарелое. Хочется так и сказать, человек открыл для себя какой-нибудь дельфи, всё -- держись 1С! ... |
|||
:
Нравится:
Не нравится:
|
|||
13.08.2019, 14:31 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
drynnyMegabyteпропущено... А тип поля для Value у вас какой выбран? Концептуально – это байты данных, трактуемые в зависимости от их типа. В существующих приложениях и сервисах – это текстовое поле, в котором также текстом хранятся числовые значения, в т.ч. datetime. Данные можно преобразовать к тому виду, в котором они хранятся, чтобы использовать индекс. Затруднение вызывает только применение индекса к диапазону чисел, потому что у них различается порядок — нельзя ранжировать по первым цифрам, нужно считать всё число. поэтому вся арифметика потянет за собой конвертации. ну и - для хранения каждого, абсолютно каждого числа отдельная запись в таблице БД. Просто из любопытства - объемы сравнивали? Сколько на мускуле займут объекты, когда таблички уложены по простому, и сколько - когда через квинтеты? В старые, не помню уж насколько добрые времена занимался я OEBS. B и там, конечно все было сделано на нормальных таблицах. А для пользовательской гибкости, таблицы объектов дополнялись десятком - другим текстовых полей и полем - тэгом, говорившим о том, как это надо трактовать. это называлось описательным гибким полем - descriptive flex field. Если таковой конструкт отселялся в отдельную таблицу, а в основной оставался только ключ - ссылка, это получалось ключевое гибкое поле KFF. Через эти штуки бизнес-сущности обогащались настраиваемыми пользователями аттрибутами ..... ну так, к слову. Если юзеры которым внедрено довольны - все хорошо... ... |
|||
:
Нравится:
Не нравится:
|
|||
13.08.2019, 15:02 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
Vladimir Baskakov, Самое смешное, что в СУБД сто лет назад придумали колонки с типом, ограничениями, ссылочной целостностью, с оптимизацией хранения, с дескрипшенами и прочим. Как раз для того, чтобы потом поверх лепили костыли в виде EAV и кривых "квинтетов", чтобы решать проблему с типами полей ... |
|||
:
Нравится:
Не нравится:
|
|||
13.08.2019, 16:28 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
hVosttСамое смешное, что в СУБД сто лет назад придумали колонки с типом, ограничениями, ссылочной целостностью, с оптимизацией хранения, с дескрипшенами и прочим. У СУБД есть фатальный недостаток . ... |
|||
:
Нравится:
Не нравится:
|
|||
13.08.2019, 16:30 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
hVosttVladimir Baskakov, Самое смешное, что в СУБД сто лет назад придумали колонки с типом, ограничениями, ссылочной целостностью, с оптимизацией хранения, с дескрипшенами и прочим. Как раз для того, чтобы потом поверх лепили костыли в виде EAV и кривых "квинтетов", чтобы решать проблему с типами полей Пустое замечание. Ниачомъ. Реши нам простой кейс: товарам (их миллион и они разнородные) нужно добавлять параметры. Как в интернет-магазине. И фильтровать по этим параметрам. В двух словах, но по сути. По строчке на вариант. Вариант 1: все свалить в XML/JSON. Вариант 2: классический EAV Итак, мы внимательно слушаем про другие варианты. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.08.2019, 17:25 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
L_argoВариант 1: все свалить в XML/JSON. Вариант 2: классический EAV Вариант 3: широкая таблица с отдельным столбцом на каждый параметр. Многие СУБД поддерживают так называемые разреженные столбцы (sparse column), так что место не будет тратиться впустую. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.08.2019, 17:40 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
softwarerhVosttСамое смешное, что в СУБД сто лет назад придумали колонки с типом, ограничениями, ссылочной целостностью, с оптимизацией хранения, с дескрипшенами и прочим. У СУБД есть фатальный недостаток . СУБД придумали во времена дефицита ресурсов, а далее они больше полувека развивались экстенсивным путем. Таким же путем с брутальной упорностью человечество пыталась сделать однотабличные и прочие конструкторы, сохранив для потомков ярчайшие примеры былинных неудач, как вот этот: https://www.simple-talk.com/opinion/opinion-pieces/bad-carma/ . Описанный в теме подход возвращает нас во времена незамутненного докерами и кубернетесами разума и даже еще раньше, когда зараза ООП не разъела мозг энтузиастов, когда можно было начать с чистого листа и применить разумную избыточность хранения и вычисления там, где это действительно выгодно. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.08.2019, 21:42 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
Vladimir Baskakovпоэтому вся арифметика потянет за собой конвертации. ну и - для хранения каждого, абсолютно каждого числа отдельная запись в таблице БД. Просто из любопытства - объемы сравнивали? Сколько на мускуле займут объекты, когда таблички уложены по простому, и сколько - когда через квинтеты? В старые, не помню уж насколько добрые времена занимался я OEBS. B и там, конечно все было сделано на нормальных таблицах. А для пользовательской гибкости, таблицы объектов дополнялись десятком - другим текстовых полей и полем - тэгом, говорившим о том, как это надо трактовать. это называлось описательным гибким полем - descriptive flex field. Если таковой конструкт отселялся в отдельную таблицу, а в основной оставался только ключ - ссылка, это получалось ключевое гибкое поле KFF. Через эти штуки бизнес-сущности обогащались настраиваемыми пользователями аттрибутами ..... ну так, к слову. Если юзеры которым внедрено довольны - все хорошо... Сравнивал объемы. Не поленюсь ещё раз дать ссылку: habr.com/ru/company/neoflex/blog/451218/#volumes Да тут все читатели и писатели в ветке вспоминают свой опыт с улыбкой скрывающего боль Гарольда, у всех что-то было и кончилось, скажем так, неидеально. Про карму почитайте, обязательно, я выше дал ссылку. Есть бесконечное количество способов сделать что-то, и не всегда удается прийти к успеху. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.08.2019, 21:53 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
Вариант 3: широкая таблица с отдельным столбцом на каждый параметр.Очень плохой вариант. Типов параметров может быть многие тысячи. Даже не все СУБД умеют создавать такие таблицы. Тем более такой вариант не позволит хранить более одного значения параметра или зависимость параметра от времени. Создание параметров на лету тоже может вызвать большие проблемы. Не говоря уже о репликации данных. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.08.2019, 09:01 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
Mr.FontainedrynnyИтак, пока в финале 2 названия: QDM – Quintet Data Model – уникально идентифицирует подход IdeaV – содержит ID, EAV, V (пять – квинтет) и в целом выглядит модно Ну в таком случае, естественно должна победить лёгкая и красивая "идея ви", а не аморфный "кьюди эм" По-русски QDM будет «квинтетная модель данных», да, не очень звучит. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.08.2019, 13:35 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
авторпростой кейс: товарам (их миллион и они разнородные) нужно добавлять параметры во времена СССР очень любили всё подряд классифицировать (целые НИИ, ЦНИИ при отраслевых министерствах и проч. над этим штаны протирали :). Все эти миллионы товаров наверное могут быть классифицированы по какому либо Общероссийскому классификатору? Т.е. количество категорий товаров - величина конечная. А значит можно спроектировать какоето ограниченное количество реляционных таблиц, которые бы какойто обобщённый набор характеристик (атрибутов) товара хранили бы в конечном наборе таблиц БД. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.08.2019, 09:50 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
L_argoПустое замечание. Ниачомъ. Сурьёзно? L_argoРеши нам простой кейс: товарам (их миллион и они разнородные) нужно добавлять параметры. Как в интернет-магазине. И фильтровать по этим параметрам. В двух словах, но по сути. По строчке на вариант. Вариант 1: все свалить в XML/JSON. Вариант 2: классический EAV Итак, мы внимательно слушаем про другие варианты. Я уже говорил. CQRS + Event Sourcing + нормальные проекции в SQL с нормальными колонками, типами, ограничениями и полным набором всей целостности, полный фарш в ваши руки. Как нормализованные, так и не нормализованные. Для конкретных больных извращенцев можно даже делать EAV проекции Никакого убогого УГ в виде EAV и всех его не менее убогих вариаций, который является ни чем иным, как результат ограниченного, импотентного мышления. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.08.2019, 09:54 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
hVosttCQRS + Event Sourcing + нормальные проекции в SQL с нормальными колонками, типами, ограничениями и полным набором всей целостности, полный фарш в ваши руки. и какими инструментами сие реализуется? ... |
|||
:
Нравится:
Не нравится:
|
|||
27.08.2019, 22:28 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
ёёёёёи какими инструментами сие реализуется? видимо CQRS + Event Sourcing Когда хочется ввернуть умное слово прочитанное вчера в интернете, то контекст значения не имеет. На своих фрилансерских проектах он видимо так и развлекается - когда в руках молоток, то вокруг одни гвозди ... |
|||
:
Нравится:
Не нравится:
|
|||
28.08.2019, 03:05 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
ёёёёёи какими инструментами сие реализуется? мы на C# писали, знакомые коллеги на Java, другие знакомые коллеги на Go stenfordвидимо CQRS + Event Sourcing Когда хочется ввернуть умное слово прочитанное вчера в интернете, то контекст значения не имеет. На своих фрилансерских проектах он видимо так и развлекается - когда в руках молоток, то вокруг одни гвозди когда нечего по существу сказать, но очень сильно хочется, стенфорд по своему обыкновению зачем-то выставляет себя дурачком на форуме. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.08.2019, 14:27 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
hVosttёёёёёи какими инструментами сие реализуется? мы на C# писали, знакомые коллеги на Java, другие знакомые коллеги на Go ... С вами все ясно. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.08.2019, 15:05 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
ldfanateВсе эти миллионы товаров наверное могут быть классифицированы по какому либо Общероссийскому классификатору? Т.е. количество категорий товаров - величина конечная. А значит можно спроектировать какоето ограниченное количество реляционных таблиц, . Ни один классификатор не покроет всех задач, потому что с точки зрения методологии в учете могут быть разные ракурсы и срезы, и нет единственно верного. поэтому какую то гибкость в параметризации оставлять необходимо. Но, делать на этой гибкости все сверху донизу, вряд ли целесообразно. По моему. Это одно из возможных по вопросу мнений ... |
|||
:
Нравится:
Не нравится:
|
|||
28.08.2019, 16:27 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
ёёёёёС вами все ясно. вот это вряд ли ... |
|||
:
Нравится:
Не нравится:
|
|||
28.08.2019, 16:45 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
автор потому что с точки зрения методологии в учете могут быть разные ракурсы и срезы, и нет единственно верного. поэтому какую то гибкость в параметризации оставлять необходимо. Ну по видам характеристик (характеристики веса товара, характеристики материала изготовления товара, характеристики производителя товара, характеристики товарной упаковки и проч.) можно ведь покрыть все даже достаточно дикие классификации. Это в каком то смысле будет чтото переходное между идеологией EAV и противоположной ей "пихаем все атрибуты поколоночно в одну гигантскую разреженную таблицу". И скорее всего порождать достаточно дикие планы поисковых запросов. Но всёравно почемуто думается что задача вполне решается классическим реляционным подходом, а не наслоением EAV на глобус. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.08.2019, 09:14 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
Но всёравно почемуто думается что задача вполне решается классическим реляционным подходом, а не наслоением EAV на глобусА вы не думайте, а реализуйте. Потом нам расскажете об успехах, если таковые будут. Вместе и посмеёмся. Это будет весело. И не сомневайтесь. Особенно интересно будет с различными интеграциями и синхронизациями. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.08.2019, 08:58 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
ldfanate... наслоением EAV на глобус. Вот вам не дает покоя этот глобус... Хотя мне тоже нравится тот анекдот. Квинтетная модель сама по себе весьма проста, её можно постичь за 20 минут. Но вам ничего натягивать не нужно, потому что есть конструктор , он всё сделает за вас. Ваша задача: продумать и описать структуру в визуальном конструкторе, а далее соблюдать 3 простых правила при проектировании запросов. Всё, о чем вы тут так страшно рассуждаете, будучи далеко не в материале, уже давно сделано, протестировано и работает. Вот, кстати, свежак: habr.com/ru/post/465161 ... |
|||
:
Нравится:
Не нравится:
|
|||
30.08.2019, 10:37 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
L_argo Но всёравно почемуто думается что задача вполне решается классическим реляционным подходом, а не наслоением EAV на глобусА вы не думайте, а реализуйте. Потом нам расскажете об успехах, если таковые будут. Вместе и посмеёмся. Это будет весело. И не сомневайтесь. Особенно интересно будет с различными интеграциями и синхронизациями. Абсолютно все оппоненты уже пробовали, причем неоднократно. Многие при этом облажались самым жалким образом, поэтому неприемлют возможность преуспеть на поприще EAV: «у меня не получилось» = «это невозможно». ... |
|||
:
Нравится:
Не нравится:
|
|||
30.08.2019, 10:40 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
L_argo Но всёравно почемуто думается что задача вполне решается классическим реляционным подходом, а не наслоением EAV на глобусА вы не думайте, а реализуйте. Потом нам расскажете об успехах, если таковые будут. Вместе и посмеёмся. Это будет весело. И не сомневайтесь. Особенно интересно будет с различными интеграциями и синхронизациями. Ну наблюдал много лет данное решение в ПАО "Газпром" - там номенклатура единого корпоративного справочника МТР куда как ширше, чем у вебмагазинов. И интеграций в части его ведения и использования там немало наворочено, всё прекрасно работает на реляционках. Ещё лучше (слышал но не видел лично) удался справочник у МТРщиков Росатома, у них тоже номенклатура очень - там даже классификации и атрибуты МТР соотносятся с некой "обобщённой номенклатурой", которую на порталах госзакупок необходимо заявлять, в целях соблюдения требований последних тендерных ФЗ. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.08.2019, 12:08 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
drynnyВот, кстати, свежак: habr.com/ru/post/465161 Собственно комменты зарешали :) Замените все выражения "традиционная таблица", "обычная БД" и аналогичные им на "существующая система". Отдельным абзацем укажите, что в существующей системе нет индексов, а в вашей есть. Также можно упомянуть, что вариант добавить индексы в существующую систему не рассматривался. Это будет более соответствовать положению дел и не будет ни у кого создавать неправильных представлений о ситуации и используемых технологиях. drynnyВсё, о чем вы тут так страшно рассуждаете, будучи далеко не в материале, уже давно сделано, протестировано и работает. Было очень бы странно, если бы не работало. На хабре были как-то статьи, как сделать огромную БД с кучей сущностей и атрибутов всего на двух-трёх таблицах. Такой себе экстремальный EAV в вакууме. И оно тоже работает. И работает вполне себе быстро, на индексах. Но надо головой сильно удариться, чтобы подобное использовать на проде. drynnyо вам ничего натягивать не нужно, потому что есть конструктор , он всё сделает за вас. Проблема тут в том, что конструктор непонятно зачем в итоге нужен, и ничего он там не сделает за нас, всё равно нужно конструировать. А раз всё равно нужно конструировать, то почему бы не взять широко известные, понятные многим инструменты? При чём инструменты можно взять любые, они все совместимы с SQL, выбранной парадигмой реляционных и/или нереляционных БД. В вашем же случае предлагается прибить себя за яйца ржавыми гвоздями к какой-то поделке, без хоть каких-то видимых преимуществ. :) ... |
|||
:
Нравится:
Не нравится:
|
|||
30.08.2019, 14:53 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
из вон той старенькой статьи "В Интеграле проиндексированы все данные всех таблиц." а ещё к системе прилагается сотня китайце-индусов на поддержку. Такое происходит, когда люди имеют мало опыта с реальным миром, с реальными задачами, реальными пользователями, реальными рисками, издержками, разработчиками и т.д. и т.п. Воздушный замок вдоль и поперёк индексированный с на-EAV-который-не-совсем-EAV :) ... |
|||
:
Нравится:
Не нравится:
|
|||
30.08.2019, 14:59 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
Проблема тут в том, что конструктор непонятно зачем в итоге нужен , и ничего он там не сделает за нас, всё равно нужно конструировать. А раз всё равно нужно конструировать, то почему бы не взять широко известные, понятные многим инструменты?Пустословие. Ну чем компилятор ассемблера или Watcom-С не инструмент ? Лопата тоже инструмент, который еще бульдозера переживет... Инструмент инструменту рознь. Можно манипулятором водить в удобной кабине, а можно лопатой махать на жаре. В обоих случаях используется вполне эффективный инструмент. Расскажи ка коллега, зачем строчат сотнями ПХП-фреймворки, если есть просто старый-добрый ПХП ? Можно "ПХП" поменять на "JS". Суть вопроса не поменяется. Наверно потому, что они не осилили всей мудрости Хвостта. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.09.2019, 21:26 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
EAV это отрыжка квадратно-гнездового SQL Т.е. то, что не вписалось в идеальную модель реального мира в майнкрафт ... |
|||
:
Нравится:
Не нравится:
|
|||
01.09.2019, 23:25 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
SiemarglEAV это отрыжка квадратно-гнездового SQLОчень аргументировано. Что тогда не отрыжка ? ... |
|||
:
Нравится:
Не нравится:
|
|||
02.09.2019, 09:05 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
SiemarglEAV это отрыжка квадратно-гнездового SQL EAV - представитель типового семейства "я не понял и не хочу понимать инструмент, поэтому напишу свой наколеночный такой же". Есть такие забавные люди, которые, например, берут Delphi и начинают писать на нём интепретатор кода, конструктор форм, object inspector, иногда даже отладчик, и потом хвастаются - вот, смотрите, как круто, я написал всё как в дельфях. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.09.2019, 09:08 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
Есть такие забавные люди, которые, например, берут Delphi и начинают писать на нём интепретатор кода, конструктор форм, object inspector, иногда даже отладчик, и потом хвастаются - вот, смотрите, как круто, я написал всё как в дельфях. А разве не так устроены все ERP системы (и претендующие на них) ? ... |
|||
:
Нравится:
Не нравится:
|
|||
02.09.2019, 09:37 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
ну в конце концов, автор внедрил и оно работает, так что почему бы и да. Но, особо острого желания использовать не возникло пока. Другое дело, если в будущем автор запилит свой, квинтет ориентированный движок данных, то возможно, это будет круто и модно. а если еще и на своем языке, то вообще няшно. Если там вообще все будет внутри квинтет-ориентированно, как в лиспе - на атомах и диадах, вообще все. А так ну.... есть и есть. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.09.2019, 09:40 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
И, автор сам честно указал на хабре, ожидаемое и предсказуемое авторКак мы ожидали, работа с небольшими наборами данных, например, по отдельному счету или клиенту, в конструкторе выглядит достаточно комфортно (время отклика в пределах секунды), в отличие от таблицы без индексов, где отклика приходится ждать минутами. В то же время основная задача приложения — массовая выборка и агрегация данных в различных разрезах — может занимать в конструкторе в разы больше времени. .................................. Для сравнения, те же данные, загруженные в обычную таблицу реляционной базы данных, занимают 2.3 ГБ (в 8 раз меньше) вместе с индексом по дате, а их загрузка длится менее получаса (в 28 раз быстрее). В обоих случаях данные вставлялись напрямую из файла порциями по 100 тысяч записей, без отключения индексов. == в отличие от таблицы без индексов == стоит проиндексировать таблицу в ==обычной БД== как она о чудо, нормально заработает в контуре системы. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.09.2019, 09:47 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
L_argoА разве не так устроены все ERP системы (и претендующие на них) ? Проблема в категорическом и упёртом непонимании конечной бизнес-ценности. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.09.2019, 11:28 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
L_argoА разве не так устроены все ERP системы (и претендующие на них) ? Нет. Не так. Кроме того, стоит помнить, что бездумное копирование того, как что-то устроено, называется карго-культ и приводит примерно к тем же результатам. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.09.2019, 11:31 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
hVosttL_argoА разве не так устроены все ERP системы (и претендующие на них) ? Проблема в категорическом и упёртом непонимании конечной бизнес-ценности.+1. Коллега Хвостт её так и не понял. Нет. Не так.Во многих ERP-системах (к термину не придираемся. Это просто класс задач, а не богатство прикладного решения) есть что-то наподобие инспектора свойств. У той же 1С, Nav, AX и пр. Во всех есть свой внутр. язык разработки и отладчик. Мощные они или не очень - не суть. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.09.2019, 11:52 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
L_argoВо всех есть свой внутр. язык разработки и отладчик. Это прямо-таки образцовая иллюстрация к тезису "Утверждения со словами "все" или "никогда" никогда не бывают верными". L_argoМощные они или не очень - не суть. Для класса задач ERP названные Вами "внутренний язык разработки", "отладчик" и т. п. как таковые не требуются. Если Вы удосужитесь нагуглить список функций - а что, собственно, должна уметь система, чтобы называться ERP - там не будет ни одной задачи, для решения которой необходимы такие модули. Эти модули - одно из возможных решений совсем другой задачи, которая к ERP как таковым отношения не имеет. Кроме того, стоит иметь в виду, что это решение было практически необходимым эдак в 95-м году, но бездумно повторять его сегодня - примерно то же, что в 95-м году стартовать ERP на решениях уровня 1970-го. Я не раз и не два видел нетленки, которые в том или ином тихом болоте пилят один-два-три неграмотных разработчика. И именно от них часто звучит "а вот ERP" - они уверены, что в самом деле делают ERP, "а вот SAP" - они уверены, что делают не хуже - и т. п. Карго-культ в чистом виде. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.09.2019, 13:03 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
softwarerбыло практически необходимым эдак в 95-м году Поясню: "практически необходимым" для систем уровня того же SAP. В его необходимости для нетленки Васи Пупкина из холдинга "Три ларька" есть, деликатно говоря, обоснованные сомнения. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.09.2019, 13:05 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
L_argohVosttПроблема в категорическом и упёртом непонимании конечной бизнес-ценности.+1. Коллега Хвостт её так и не понял. А её нету. Пользы от квинтетов и еав бизнесу как от гомна на лопате :) Какой-то наколеночный конструктор, никому неизвестный, с абсолютно пустым рынком спецов и отсутствием перспектив его наработать -- не надо и забесплатно. Перспектива "пользователь лабает модели данных в конструкторе", где этим пользователем представляется сам бизнес -- это как свалить перед офисом кучу кирпичей и мешков с цементов -- на мужик, сам строй, всё очень удобно, обещаем! ... |
|||
:
Нравится:
Не нравится:
|
|||
02.09.2019, 14:04 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
softwarerДля класса задач ERP названные Вами "внутренний язык разработки", "отладчик" и т. п. как таковые не требуются. Если Вы удосужитесь нагуглить список функций - а что, собственно, должна уметь система, чтобы называться ERP - там не будет ни одной задачи, для решения которой необходимы такие модули. Эти модули - одно из возможных решений совсем другой задачи, которая к ERP как таковым отношения не имеет. Кроме того, стоит иметь в виду, что это решение было практически необходимым эдак в 95-м году, но бездумно повторять его сегодня - примерно то же, что в 95-м году стартовать ERP на решениях уровня 1970-го. Тогда вообще непонятно, что требуется. Пилить кастомный хардкод одновременно на 3-4 Студиях ??? Вот это и есть 70-е. Любая более-менее приличная ERP должна иметь внутри себя самодостаточную среду разработки. И все они имеют. Те, кто не имел - давно на кладбище. Какая из ERP- систем, как решение для бизнес приложений, соответствует Вашему виденью настоящей ERP ? Аж интересно. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.09.2019, 14:14 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
L_argoЛюбая более-менее приличная ERP должна иметь внутри себя самодостаточную среду разработки. И все они имеют. Те, кто не имел - давно на кладбище. Самодостаточная среда разработки в ERP не представляет никакого интереса. Она представляет интерес для вендора, чтобы быстрее создавать и поставлять решения. Если вендор говорит, вот вам крутая лопата -- копайте дальше сами, то вендор со своей лопатой идёт лесом безоговорочно и копает себе сколько угодно самую глубокую и удобную могилу. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.09.2019, 14:47 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
Самодостаточная среда разработки в ERP не представляет никакого интереса. Она представляет интерес для вендора, чтобы быстрее создавать и поставлять решения.Ппц.. Опять по кругу одно и то же.... Без СР ниодна ERP не стоит ломаного гроша. Исключение - специализированные решения, н-р для HORECA встречаются хардкодными. Без готовых наработок ценность СР невелика, но при этом далеко не нулевая. Мне известны многочисленные случаи написанных решений с нуля (1С). Транспорт, Финансы и пр. У САП есть отдельная голая СР: miniSAP. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.09.2019, 15:48 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
L_argoЛюбая более-менее приличная ERP должна Поддерживаться сообществом из вендора и кастомизаторов, на разный вкус и кошелек. А как эти консалтеры будут мучиться или быть счастливы, адаптируя решение, то волнует заказчика, как сытость крестьян прогуливающегося по Фонтебло короля Луи. А вот, какое железо нужно под решение - поставщика решения волнует, чем дешевле жестянка тем больше денег себе. и потому вопрос, сколько квинтеты проигрывают чистой базе на агрегировании, это вопрос чувствительный (дилетантская имха) ... |
|||
:
Нравится:
Не нравится:
|
|||
02.09.2019, 15:54 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
L_argoБез СР ниодна ERP не стоит ломаного гроша. Это не значит, что СР нужно разрабатывать с нуля, на детсадовском уровне и заведомо безнадёжно уступающей конкурентам. Тем более это не значит, что невнятная поделка с детсадовской СР будет стоить хотя бы ломаный грош. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.09.2019, 15:58 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
Это не значит, что СР нужно разрабатывать с нуля, на детсадовском уровне и заведомо безнадёжно уступающей конкурентам. Тем более это не значит, что невнятная поделка с детсадовской СР будет стоить хотя бы ломаный грош. Смотря какие критерии уступания. Если лопата или мотоблок уступают экскаватору это не значит, что продажи лопат и мотоблоков = 0. Есть примеры успешных систем с СР, написанных поначалу именно на коленке. Это нифига не рокетсайнс. И решения на их основе вполне себе успешно продаются. Могу перечислить, но не буду. Не хочу рекламы. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.09.2019, 16:14 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
L_argoЕсть примеры успешных систем с СР, написанных поначалу именно на коленке. И так и оставшихся именно на коленке. Лет двадцать назад меня звали писать компилятор для 1С - до сих пор рад, что отказался. А дальше всё просто. Если Вы пишете "убийцу SAP" - озвучьте, пожалуйста, бюджет проекта в миллиардах рублей. Если же нет - не надо рассказывать, что проект велосипеда построен на отбрасываемых ступенях с реактивными двигателями, поскольку в космос летают именно на них. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.09.2019, 16:21 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
L_argoЕсть примеры успешных систем с СР, написанных поначалу именно на коленке. Это нифига не рокетсайнс. И решения на их основе вполне себе успешно продаются. Это итак-то смешно, так как уровень прыщавого бреда. А когда в теме, ещё в десять раз смешнее :) ... |
|||
:
Нравится:
Не нравится:
|
|||
02.09.2019, 17:10 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
hVosttЭто итак-то смешно, так как уровень прыщавого бреда. А когда в теме, ещё в десять раз смешнее :)Уверенная позиция в Gartner тоже прыщавый бред ? Вы тупее, чем я думал. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.09.2019, 17:27 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
L_argohVosttЭто итак-то смешно, так как уровень прыщавого бреда. А когда в теме, ещё в десять раз смешнее :)Уверенная позиция в Gartner тоже прыщавый бред ? Вы тупее, чем я думал. А можно пример, сего? ... |
|||
:
Нравится:
Не нравится:
|
|||
03.09.2019, 09:26 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
hVosttНо надо головой сильно удариться, чтобы подобное использовать на проде. hVosttПроблема тут в том, что конструктор непонятно зачем в итоге нужен, и ничего он там не сделает за нас, всё равно нужно конструировать. А раз всё равно нужно конструировать, то почему бы не взять широко известные, понятные многим инструменты? При чём инструменты можно взять любые, они все совместимы с SQL, выбранной парадигмой реляционных и/или нереляционных БД. В вашем же случае предлагается прибить себя за яйца ржавыми гвоздями к какой-то поделке, без хоть каких-то видимых преимуществ. :) hVosttПользы от квинтетов и еав бизнесу как от гомна на лопате :) Какой-то наколеночный конструктор, никому неизвестный, с абсолютно пустым рынком спецов и отсутствием перспектив его наработать -- не надо и забесплатно. Перспектива "пользователь лабает модели данных в конструкторе", где этим пользователем представляется сам бизнес -- это как свалить перед офисом кучу кирпичей и мешков с цементов -- на мужик, сам строй, всё очень удобно, обещаем! Вам привели аргументы, ссылки на конкретные описания, тесты, замеры, работающие сервисы. Где ваши аргументы? Не в виде летящих абстрактных какашек с нелепыми аллегориями, а нормальные доводы? Например, покажите, что вы хоть сколько-нибудь понимаете о чем тут речь, ответьте: какая нормальная форма используется в этом решении? ... |
|||
:
Нравится:
Не нравится:
|
|||
03.09.2019, 10:23 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
Vladimir Baskakovну в конце концов, автор внедрил и оно работает, так что почему бы и да. Но, особо острого желания использовать не возникло пока. Другое дело, если в будущем автор запилит свой, квинтет ориентированный движок данных , то возможно, это будет круто и модно. а если еще и на своем языке, то вообще няшно. Если там вообще все будет внутри квинтет-ориентированно, как в лиспе - на атомах и диадах, вообще все. А так ну.... есть и есть. Я иду к этому, и реализация движка достаточно проста. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.09.2019, 10:25 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
L_argoУверенная позиция в Gartner тоже прыщавый бред ? в огороде бузина, а в киеве дядька L_argoВы тупее, чем я думал. вы переоцениваете свои способность по поводу "думал" :) ... |
|||
:
Нравится:
Не нравится:
|
|||
03.09.2019, 12:56 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
drynny, Подкину дровишек в топку. EAV (и подобное) поверх реляционной СУБД реализовывать, как тут и сказали, действительно идея плохая. Как минимум потому, что накладные расходы на реализацию EAV идут поверх расходов на реляционность (а они большие, в угоду универсальности). А вот поверх иерархической БД - милое дело, почти идеально. Смотрим mumps, gtm и им подобные вот в этой ветке форума Только про язык MUMPS забыть как страшный сон, а прикрутить что то современное. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.09.2019, 13:15 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
drynnyВам привели аргументы, ссылки на конкретные описания, тесты, замеры, работающие сервисы. Где ваши аргументы? Не в виде летящих абстрактных какашек с нелепыми аллегориями, а нормальные доводы? Доводы простые, я их уже приводил. Так как вы их не нашли, судя по всему вам не очень-то интересно. 1. С нормальной нормализованной БД работать может любой разработчик, аналитик, BI-щик и другие заинтересованные лица. 2. Нормальные таблицы хранят данные по колонкам с соответствующими типами, ограничениями, поддержкой целостности со стороны БД, это всё работает максимально быстро, оптимально, компактно, так как это заложено в самой природе СУБД. 3. В вашем случае более менее приемлемая производительность вытягивается индексами, в то время как те же индексы в нормальных таблицах, особенно если правильно расставлены, работать будут намного быстрее ваших костылей. 4. Как следствие, покрытие всё 100% индексами, ожидаемый результат архитектуры на костылях Ваша архитектуры не может быть охарактеризована никак иначе, как костыли и подпорки в чистом виде. Переусложнённые кривые концепции, которые ничего не решают и не дают ничего. drynnyНапример, покажите, что вы хоть сколько-нибудь понимаете о чем тут речь, ответьте: какая нормальная форма используется в этом решении? Никакая. Но вы конечно можете думать иначе. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.09.2019, 13:15 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
drynny, и должен добавить. в тему, у меня есть в активе разработка и внедрение систем, основанных на конструкторе. да, всё верно. с мета-моделью (макро-типы, инфо-типы, домены, ссылки...), динамическая, можно даже мышкой "сверстать" бизнес модель данных. всё это мы делали. и всё это интегрировано и работает. при этом все данные хранятся в нормализованных таблицах, идеально нормализованных, идеально разложенных по колонкам, FK связями, ограничениями, правильными индексами где они нужны, с аннотациями и прочим-прочим. и всё это поддерживается системой. рай для BI-щика. плюс к этому полноценные DSL для программирования бизнес-логики на самом высоком уровне (не требуются квалифицированные программисты) в терминах бизнеса. чистый DDD. и всё это на CQRS, Event Sourcing. никакого уродливого кривого EAV нам для этого не понадобилось. нет его даже в зачатках. про конструктор. его особо не афишировали, и в планах продавать его нет и не было. почему? потому что это инструмент для зарабатывания денег. он хорош и он работает, зачем его отдавать кому-то налево? бизнесу нужны конечные решения, и он их получает дешёво, быстро, оперативно. поэтому когда я вижу, как кто то выпячивает свои конструкторы, мне становится кристально очевидно: значит это говно полное. раз не получилось его использовать для разработки. продать хотя бы так, навешав порцию лапши кому-то на уши. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.09.2019, 13:28 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
Нормальные таблицы хранят данные по колонкам с соответствующими типами, ограничениями, поддержкой целостности со стороны БД, это всё работает максимально быстро, оптимально, компактно, так как это заложено в самой природе СУБД.В принципе так и есть, но есть нюанс: с такими метаданными трудно работать. Нужно каждую таблицу/поле обернуть кодом, раздать права и т.д. Добавление колонок в большую таблицу может привести к тяжелым последствиям в нагруженном проде. Эти постоянно меняющиеся таблицы сложно реплицировать, мигрировать и репортить. Система управления такими метаданными будет сложной. Таблиц и полей в общем случае будет эпично много даже в небольших проектах. Доработки потребуют больше времени. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.09.2019, 13:29 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
L_argoВ принципе так и есть, но есть нюанс: с такими метаданными трудно работать. Нужно каждую таблицу/поле обернуть кодом, раздать права и т.д. Добавление колонок в большую таблицу может привести к тяжелым последствиям в нагруженном проде. Эти постоянно меняющиеся таблицы сложно реплицировать, мигрировать и репортить. Система управления такими метаданными будет сложной. Таблиц и полей в общем случае будет эпично много даже в небольших проектах. Доработки потребуют больше времени. читайте выше. ничего сложного в этом нет. мета-данные можно хранить и управлять ими отдельно, у меня никаких претензий к этому нет, это нормальная и правильная практика. просто дальше EAV многие не смогли продвинуться. каменный век в головах и неспособность находить качественные, эффективные, не обязывающие решения. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.09.2019, 13:33 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
hVostt.... и всё это на CQRS, Event Sourcing. никакого уродливого кривого EAV нам для этого не понадобилось. нет его даже в зачатках. .... На первый взгляд выглядит еще страшнее. Как решена задача - в программе получить объект (отчет, сущность) в версии структуры, которая была скажем 10 итераций изменений структуры ранее ? Можно даже форкнуть в отдельную тему. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.09.2019, 14:04 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
SiemarglКак решена задача - в программе получить объект (отчет, сущность) в версии структуры, которая была скажем 10 итераций изменений структуры ранее ? подсказываю... 1. Event Sourcing -- вы можете вообще получить систему в идеальном состоянии на любой момент времени её существования без лишних артефактов. 2. Event Sourcing -- вы делаете сколько угодно проекций под разные задачи. идеально строго нормализованная структура БД -- это лишь одна из авто-проекций. бизнесу часто требуются денормализованные данные. отдельные микросервисы могут создавать и вести свои проекции без зависимости от общих изменений модели данных. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.09.2019, 14:15 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
SiemarglНа первый взгляд выглядит еще страшнее. это сложнее. поэтому многие и не лезут дальше, чем могут осилить -- еав ... |
|||
:
Нравится:
Не нравится:
|
|||
03.09.2019, 14:16 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
hVosttSiemarglКак решена задача - в программе получить объект (отчет, сущность) в версии структуры, которая была скажем 10 итераций изменений структуры ранее ? подсказываю... 1. Event Sourcing -- вы можете вообще получить систему в идеальном состоянии на любой момент времени её существования без лишних артефактов. 2. Event Sourcing -- вы делаете сколько угодно проекций под разные задачи. идеально строго нормализованная структура БД -- это лишь одна из авто-проекций. бизнесу часто требуются денормализованные данные. отдельные микросервисы могут создавать и вести свои проекции без зависимости от общих изменений модели данных. Т.е в любом запросе должна быть указан номер/версия [автосгенерированной] проекции. Или сгенерирован мискросервис нужной версии. Честно говоря, выглядит хрен редьки не слаще ... |
|||
:
Нравится:
Не нравится:
|
|||
03.09.2019, 14:41 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
SiemarglhVosttпропущено... подсказываю... 1. Event Sourcing -- вы можете вообще получить систему в идеальном состоянии на любой момент времени её существования без лишних артефактов. 2. Event Sourcing -- вы делаете сколько угодно проекций под разные задачи. идеально строго нормализованная структура БД -- это лишь одна из авто-проекций. бизнесу часто требуются денормализованные данные. отдельные микросервисы могут создавать и вести свои проекции без зависимости от общих изменений модели данных. Т.е в любом запросе должна быть указан номер/версия [автосгенерированной] проекции. Или сгенерирован мискросервис нужной версии. Честно говоря, выглядит хрен редьки не слаще Выглядит таким же лютым кабздецом как вот тут в соседней ветке коллега выкладывал: sql.ru/forum/1234375-3/programmirovanie-bd-otchetov-i-zaprosov-bez-programmirovaniya#19943752 Только у этого товарища всё настолько хуже, что даже показать стремается, а не то что дать демо-доступ и подробную информацию. Если он вообще не сочинил всё это на ходу. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.09.2019, 15:03 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
hVosttdrynnyНапример, покажите, что вы хоть сколько-нибудь понимаете о чем тут речь, ответьте: какая нормальная форма используется в этом решении? Никакая. Но вы конечно можете думать иначе. Слив засчитан. Данные в таблице по-любому в какой-то нормальной форме. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.09.2019, 15:05 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
drynnyДанные в таблице по-любому в какой-то нормальной форме. Да ну правда что ли? ... |
|||
:
Нравится:
Не нравится:
|
|||
03.09.2019, 15:06 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
hVosttSiemarglНа первый взгляд выглядит еще страшнее. это сложнее. поэтому многие и не лезут дальше, чем могут осилить -- еавЯ тут пример придумал. 1. Жила была в базе 10лет сущность Сотрудник с полем Зарплата. 2. После некоторых изменений бизнеса база изменилась. Теперь у Сотрудника есть Зарплата и Премия. 3. После очередной итерации Базовый_оклад, Премия_за_выслугу_лет, Штрафы, Прочие_выплаты Другие связанные таблицы тоже менялись несинхронно с этой. Приходит Нач.кадров и говорить - а скажите мне среднюю Иванова за последние 10 лет! Как это на практике будет выглядеть на CQRS, Event Sourcing ? ... |
|||
:
Нравится:
Не нравится:
|
|||
03.09.2019, 15:18 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
softwarerdrynnyДанные в таблице по-любому в какой-то нормальной форме. Да ну правда что ли? Да. Хотя бы в 1НФ ... |
|||
:
Нравится:
Не нравится:
|
|||
03.09.2019, 15:19 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
SiemarglДа. Хотя бы в 1НФ (открыл блокнотик и приготовился записывать всех, кто не умеет создать таблицу, нарушающую 1НФ) ... |
|||
:
Нравится:
Не нравится:
|
|||
03.09.2019, 15:21 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
softwarerdrynnyДанные в таблице по-любому в какой-то нормальной форме. Да ну правда что ли? Так, один пионер немедленно спалился. Сейчас ещё хвост придет с рассказом, как записывал в одну ячейку экселя номера объектов через запятую, разрывая шаблоны нормальных форм. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.09.2019, 15:24 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
Приходит Нач.кадров и говорить - а скажите мне среднюю Иванова за последние 10 лет! Как это на практике будет выглядеть на CQRS, Event Sourcing ? Сейчас Хвостт "ответит уклончиво" (с) ... |
|||
:
Нравится:
Не нравится:
|
|||
03.09.2019, 15:30 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
SiemarglhVosttпропущено... это сложнее. поэтому многие и не лезут дальше, чем могут осилить -- еавЯ тут пример придумал. 1. Жила была в базе 10лет сущность Сотрудник с полем Зарплата. 2. После некоторых изменений бизнеса база изменилась. Теперь у Сотрудника есть Зарплата и Премия. 3. После очередной итерации Базовый_оклад, Премия_за_выслугу_лет, Штрафы, Прочие_выплаты Другие связанные таблицы тоже менялись несинхронно с этой. Приходит Нач.кадров и говорить - а скажите мне среднюю Иванова за последние 10 лет! Как это на практике будет выглядеть на CQRS, Event Sourcing ? Кусочечно. :) Вычисляется средняя для каждого подпериода стабильности структуры. Потом вычисляется за весь период. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.09.2019, 15:37 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
ёёёёёSiemarglпропущено... Я тут пример придумал. 1. Жила была в базе 10лет сущность Сотрудник с полем Зарплата. 2. После некоторых изменений бизнеса база изменилась. Теперь у Сотрудника есть Зарплата и Премия. 3. После очередной итерации Базовый_оклад, Премия_за_выслугу_лет, Штрафы, Прочие_выплаты Другие связанные таблицы тоже менялись несинхронно с этой. Приходит Нач.кадров и говорить - а скажите мне среднюю Иванова за последние 10 лет! Как это на практике будет выглядеть на CQRS, Event Sourcing ? Кусочечно. :) Вычисляется средняя для каждого подпериода стабильности структуры. Потом вычисляется за весь период.А если в базе овер 1000 версий структуры? Однозначно же сказать, что затронуто каждым изменением и влияет ли это на результат - слишком сложно. Подожду ответа практика. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.09.2019, 17:15 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
drynnyСлив засчитан. Данные в таблице по-любому в какой-то нормальной форме. Нет, не по-любому, вы ошибаетесь. Поэтому выглядите вы жалко со своим "сливом", чесслово. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.09.2019, 17:18 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
... |
|||
:
Нравится:
Не нравится:
|
|||
03.09.2019, 17:20 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
Siemargl...Подожду ответа практика. Сомневаюсь, что дождешься. Пока ничего конкретного от него не было. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.09.2019, 17:23 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
SiemarglЯ тут пример придумал. 1. Жила была в базе 10лет сущность Сотрудник с полем Зарплата. 2. После некоторых изменений бизнеса база изменилась. Теперь у Сотрудника есть Зарплата и Премия. 3. После очередной итерации Базовый_оклад, Премия_за_выслугу_лет, Штрафы, Прочие_выплаты Другие связанные таблицы тоже менялись несинхронно с этой. Приходит Нач.кадров и говорить - а скажите мне среднюю Иванова за последние 10 лет! Как это на практике будет выглядеть на CQRS, Event Sourcing ? 1. Есть сущность Сотрудник. В БД она может лежать в любой форме, какой захотите -- это проекция. Для удобства мы вели авто-проекции в 4нф, на этом строилось много запросов и логики работы с данными на чтение, плюс BI. 2. Поменялась сущность Сотрудник, добавлено поле, в связи с этим в проекцию 4нф добавлено поле в соответствующей таблице, автоматически. 3. Тоже самое. Никакие таблицы не могут менять "несинхронно", так как их никто руками не меняет. Руками DDL запрещены, только через механизм проекций. Поэтому мимо. Это ж ES. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.09.2019, 17:25 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
drynnyСейчас ещё хвост придет с рассказом, как записывал в одну ячейку экселя номера объектов через запятую, разрывая шаблоны нормальных форм. А смешно получается, человек, который недавно с серьёзным лицом убедительно напрашивался на аргументированную беседу, внезапно оказывается прыщавым пацаном, способным лишь демонстрировать попытки нелепых подколок. Ох уж эти орхитекторы. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.09.2019, 17:27 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
hVosttdrynnyСлив засчитан. Данные в таблице по-любому в какой-то нормальной форме. Нет, не по-любому, вы ошибаетесь. Поэтому выглядите вы жалко со своим "сливом", чесслово. Ну, как-то все таки надо ответить за базар. Вот описание таблицы: drynnyЕсть такой формат хранения данных – EAV (Entity–attribute–value) И есть его модификация, в которой формат дополнен полем ID – уникальный идентификатор каждой записи: ID–Entity–Attribute–Value То есть, это такой большой список из 4 полей, в котором хранится вся база данных. Вообще вся – все сущности и их описания (метаданные), включая описание примитивных типов данных (string, number, date, ...). Для навигации в этом списке построены 3 упорядоченных указателя – индексы: ID, Entity+Attribute, Attribute+Value При такой организации данных мы можем работать с базой данных любого размера, не имея проблем с производительностью, свойственных системам, построенным на обычном EAV. Вы сказали, что нормальная форма «никакая». Что это значит и почему, обоснуйте, пожалуйста. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.09.2019, 17:30 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
drynnyВы сказали, что нормальная форма «никакая». Что это значит и почему, обоснуйте, пожалуйста. Никакая. Так как каждое поле в БД должно иметь тот же смысл для всех строк. Очевидно, что для EAV это не так. Но обычно на это забивают, и считается, что поле Значение это и есть его смысл. Если так, то очевидно, 3-я. Опять таки, вот это рвение спуститься до определений, выдаёт отсутствие какой-то интересной базы для дискуссии. Печаль, в общем. drynnyНу, как-то все таки надо ответить за базар. Да, особенно вот за это drynnyДанные в таблице по-любому в какой-то нормальной форме. не хотите? :) ... |
|||
:
Нравится:
Не нравится:
|
|||
03.09.2019, 17:46 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
hVosttSiemarglЯ тут пример придумал. 1. Жила была в базе 10лет сущность Сотрудник с полем Зарплата. 2. После некоторых изменений бизнеса база изменилась. Теперь у Сотрудника есть Зарплата и Премия. 3. После очередной итерации Базовый_оклад, Премия_за_выслугу_лет, Штрафы, Прочие_выплаты Другие связанные таблицы тоже менялись несинхронно с этой. Приходит Нач.кадров и говорить - а скажите мне среднюю Иванова за последние 10 лет! Как это на практике будет выглядеть на CQRS, Event Sourcing ? 1. Есть сущность Сотрудник. В БД она может лежать в любой форме, какой захотите -- это проекция. Для удобства мы вели авто-проекции в 4нф, на этом строилось много запросов и логики работы с данными на чтение, плюс BI. 2. Поменялась сущность Сотрудник, добавлено поле, в связи с этим в проекцию 4нф добавлено поле в соответствующей таблице, автоматически. 3. Тоже самое. Никакие таблицы не могут менять "несинхронно", так как их никто руками не меняет. Руками DDL запрещены, только через механизм проекций. Поэтому мимо. Это ж ES. Не понимаю, что в этом контексте значит "проекция". С одной стороны - БД, а с другой ? А вопрос был - как сквозь проекции различных версий строится сквозной запрос к исторической базе "скажите мне среднюю зрп Иванова за последние 10 лет!" 1.2.3 это были условия а не вопросы ... |
|||
:
Нравится:
Не нравится:
|
|||
03.09.2019, 18:13 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
несинхронно, это значит что могли меняться еще таблицы, связанные с Сотрудником - персональные данные там, должности итп когда явно не видно, связано ли это с расчетом зарплаты, но проекция меняет версию ... |
|||
:
Нравится:
Не нравится:
|
|||
03.09.2019, 18:16 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
SiemarglА вопрос был - как сквозь проекции различных версий строится сквозной запрос к исторической базе "скажите мне среднюю зрп Иванова за последние 10 лет!" 1.2.3 это были условия а не вопросы А, понял. Это просто была пыль в глаза. Уважуха, совершенно правильно суть вопроса прятать как можно глубже, а то и вовсе не сообщать, это по-нашему Создаём проекцию, в которую записываем изменения ЗП. Если она понадобилась только сегодня, сегодня и создаём, затем прогоняем все события через проекцию, всё осядет в табличке, можно считать средню, максимальную, поперечную, какую хотите. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.09.2019, 18:24 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
Siemarglнесинхронно, это значит что могли меняться еще таблицы, связанные с Сотрудником - персональные данные там, должности итп когда явно не видно, связано ли это с расчетом зарплаты, но проекция меняет версию Создаём подходящую под задачу проекцию. С учётом смены должности, увольнения, восстановления и т.д. и тп. Мы и не такие задачи решали, намного сложнее. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.09.2019, 18:25 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
SiemarglА вопрос был - как сквозь проекции различных версий строится сквозной запрос к исторической базе Мне кажется, у вас идёт недопонимание терминологии. Суть подхода ES в том, что есть один поток событий - например "сотрудник устроился на работу", "сотруднику назначен оклад", "сотруднику выплачена зарплата" и так далее - столько, сколько придумаете, на каждый важный вам чих. Дальше из этого общего потока создаются любые нужные представления - например "сотрудники", "выплаты", "зарплаты" и так далее. Всё это живёт, добавляете новые события, правила их раскидывания по существующим представлениям, новые представления. И "средняя зарплата Иванова" в результате считается примерно как Код: sql 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
03.09.2019, 18:38 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
hVostt, Ок, остался последний вопрос и я его не прятал >Не понимаю, что в этом контексте значит "проекция". С одной стороны - БД, а с другой ? ... |
|||
:
Нравится:
Не нравится:
|
|||
03.09.2019, 18:39 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
softwarerSiemarglА вопрос был - как сквозь проекции различных версий строится сквозной запрос к исторической базе Мне кажется, у вас идёт недопонимание терминологии. Суть подхода ES в том, что есть один поток событий - например "сотрудник устроился на работу", "сотруднику назначен оклад", "сотруднику выплачена зарплата" и так далее - столько, сколько придумаете, на каждый важный вам чих. Дальше из этого общего потока создаются любые нужные представления - например "сотрудники", "выплаты", "зарплаты" и так далее. Всё это живёт, добавляете новые события, правила их раскидывания по существующим представлениям, новые представления. И "средняя зарплата Иванова" в результате считается примерно как Код: sql 1.
Именно так, не понимаю. Т.е у нас хранится _в базе данных_ "поток событий", а не нормализованные данные проекций, так? И Выплаты_Зарплат это что то типа мат.вью или процедуры, которая пишется на каждый требуемый запрос. Собственно, я тогда плохо понимаю, как в РСУБД хранить этот самый "поток событий" ... |
|||
:
Нравится:
Не нравится:
|
|||
03.09.2019, 18:43 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
И собственно, как отслеживать актуальное соответствие этой Выплаты_Зарплат, когда по моему примеру добавилось поле "Премия". Запрос не сломается (не будем о сложном типа Оракловых пакетов) ... |
|||
:
Нравится:
Не нравится:
|
|||
03.09.2019, 18:47 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
SiemarglТ.е у нас хранится _в базе данных_ "поток событий" Ну, собственно, даже не обязательно в базе данных - хотя, конечно, вполне вероятно, что в ней. SiemarglИ Выплаты_Зарплат это что то типа мат.вью или процедуры Зависит от. Но скорее всего, это таблица, которая хранится в (возможно, другой) базе данных и заполняется обработчиком потока событий. SiemarglСобственно, я тогда плохо понимаю, как в РСУБД хранить этот самый "поток событий" Да, собственно, как угодно. Это уже вопрос архитектурного решения - как эти события вообще будут формироваться, передаваться и обрабатываться. Наверное, в большинстве случаев используют слабо структурированный текст типа xml или json. В то же время никто не мешает создать под каждый тип события реляционную таблицу, разложить атрибуты по полям и формировать из них те же "проекции" итп. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.09.2019, 18:58 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
softwarer, Спасибо :) Я просто думал, что не нужно объяснять что такое Event Sourcing Siemargl>Не понимаю, что в этом контексте значит "проекция". С одной стороны - БД, а с другой ? С другой поток событий. В довесок может быть репозиторий агрегатов в NoSQL, но это уже вопрос реализации. SiemarglТ.е у нас хранится _в базе данных_ "поток событий", а не нормализованные данные проекций, так? Поток событий это по сути единственный истинный источник данных. Мастер данные так сказать, так как из потока можно получить любые проекции в любых БД, любых формах и видах. И поддерживать их как угодно. SiemarglСобственно, я тогда плохо понимаю, как в РСУБД хранить этот самый "поток событий" Лучше всего подходит NoSQL хранилище, например, Монга. Естественно через централизованную шину событий. Но можно и в РСУБД, правда в этом нет большого смысла. SiemarglИ собственно, как отслеживать актуальное соответствие этой Выплаты_Зарплат, когда по моему примеру добавилось поле "Премия". Запрос не сломается (не будем о сложном типа Оракловых пакетов) Добавление поля Премия влияет на логику. Однако вы можете предупредить подобные шатания, создав проекту, где в проекцию будет писаться фактические выплаты с учётом всех ЗП, премий, надбавок, за вычетом налогов и прочего прочего прочего. Тогда вы можете никогда не париться с запросом, он у вас не изменится. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.09.2019, 19:01 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
SiemarglИ собственно, как отслеживать актуальное соответствие этой Выплаты_Зарплат, когда по моему примеру добавилось поле "Премия" Да, собственно, ровно так же, как без ES - аналитик говорит "добавились вот такие новые данные, они должны проявиться вот здесь вот таким образом". Скажем: "зарплата теперь частично оформляется премией, поэтому Выплаты_Зарплаты раньше считались как сумма величин из событий "Начислен аванс" и "Начислена зарплата", а теперь ещё и из события "Начислена премия" за ту же дату, что и зарплата. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.09.2019, 19:06 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
hVostt.....SiemarglИ собственно, как отслеживать актуальное соответствие этой Выплаты_Зарплат, когда по моему примеру добавилось поле "Премия". Запрос не сломается (не будем о сложном типа Оракловых пакетов) Добавление поля Премия влияет на логику. Однако вы можете предупредить подобные шатания, создав проекту, где в проекцию будет писаться фактические выплаты с учётом всех ЗП, премий, надбавок, за вычетом налогов и прочего прочего прочего. Тогда вы можете никогда не париться с запросом, он у вас не изменится. В моем примере изменения происходят со временем, по требованиям бизнеса, так что заранее бы не вышло. И значит, что проблема отслеживания бизнес логики остается и плохо автоматизируется. В общем за ликбез с Александром спасибо, только я не понял......А какая выгода по сравнению с EAV? Ведь при каждом изменении будут меняться проекции (структура проекционной БД), бизнес логика, и это все потребует массовой переливки и трансформации данных, версионирования приложений, блэкаута на это все итп. А в случае с EAV таких проблем нет. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.09.2019, 19:33 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
SiemarglА какая выгода по сравнению с EAV? Это немного странный вопрос. Примерно как "а какая выгода от танка по сравнению с дизельным мотором?" Это понятия из разных категорий. EAV - это формат хранения данных, а ES - архитектура построения информационных систем. ES вполне может использовать EAV, скажем, для представления того же самого потока событий - как танк может использовать дизельный мотор - но их странно сравнивать. SiemarglВедь при каждом изменении будут меняться проекции (структура проекционной БД) Наоборот. Идея в том, что все, кто пользуется проекции Выплаты_Зарплат, вообще не заметят, что зарплата развалилась на зарплату и премию. То есть, приложение, которое считает "среднюю зарплату Иванова" так и будет выполнять вышеописанный запрос и получать верный результат, как бы ни менялась логика начисления этой самой зарплаты. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.09.2019, 19:39 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
softwarerSiemarglА какая выгода по сравнению с EAV? Это немного странный вопрос. Примерно как "а какая выгода от танка по сравнению с дизельным мотором?" Это понятия из разных категорий. EAV - это формат хранения данных, а ES - архитектура построения информационных систем. ES вполне может использовать EAV, скажем, для представления того же самого потока событий - как танк может использовать дизельный мотор - но их странно сравнивать. Это наверное к первоисточнику, который противопоставлял. 21944256 softwarerSiemarglВедь при каждом изменении будут меняться проекции (структура проекционной БД) Наоборот. Идея в том, что все, кто пользуется проекции Выплаты_Зарплат, вообще не заметят, что зарплата развалилась на зарплату и премию. То есть, приложение, которое считает "среднюю зарплату Иванова" так и будет выполнять вышеописанный запрос и получать верный результат, как бы ни менялась логика начисления этой самой зарплаты.Не поменяется, только если у приложения была функция Суммарная_выплата, а так API поменяется - чтобы отражать все новые данные. Я вообще не вижу каких то принципиально новых идей в ES %-/ Кажется лет 30 изобрели Enterprise Servise Bus и это одна из простейших реализаций ... |
|||
:
Нравится:
Не нравится:
|
|||
03.09.2019, 19:50 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
SiemarglЭто наверное к первоисточнику, который противопоставлял. Я помню, что hVostt их противопоставил, и не был в восторге от той реплики, хотя и понял, что он имел в виду. SiemarglНе поменяется, только если у приложения была функция Суммарная_выплата, Не "функция Суммарная_выплата", а "проекция Зарплата". Вы, когда говорите о расчёте средней зарплаты, имеете в виду некое понятие "Зарплата". Немного виртуальное в том смысле, что не продумываете чётко, как оно рассчитывается. Выше я упомянул про аванс и собственно зарплату - как раз поэтому. Когда Вы говорили про расчёт средней зарплаты, Вы наверняка имели в виду их сумму, но явно об этом не говорили и не думали. И эта архитектура позволяет именно так и действовать - завести проекцию "Зарплата" а дальше уточнять это понятие, формировать его из белой, чёрной и серобуромалиновой, используя при этом независимо от уточнений. Siemarglа так API поменяется - чтобы отражать все новые данные. API останется прежним - та же проекция в виде реляционной таблицы. Поменяется скрытая от приложения логика её наполнения. Может быть, API дополнится - появятся новые проекции или новые атрибуты в той же проекции. А поменяться так, чтобы потребовалось менять старые приложения - сравнительно редкая необходимость. Скорее даже не необходимость вообще. SiemarglЯ вообще не вижу каких то принципиально новых идей в ES Ну, я и не агитирую про принципиально новые идеи. Я и в ООП принципиально новых идей не вижу, например - в отличие от большинства, свято уверенного, что раньше был ад и кошмар, а потом стало ООП и порядок. Знакомство с историей любого вопроса показывает, как то, что при первом знакомстве кажется "революционными идеями", оказывается серией мелких последовательных шагов, сделанных разными людьми и логично вытекающих друг из друга. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.09.2019, 20:18 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
SiemarglА в случае с EAV таких проблем нет. Пишу с телефона, поэтому процитирую маленький кусочек. Нет есть, и они просто огромные, колоссальные В еав вы не можете добавить обязательный атрибут, просто не можете. Вообще. Без ядреных костылей. Все ваши атрибуты опциональные. Иначе при добавлении атрибута придется сделать огромный посев значений по умолчанию. И база данных ничего вам не гарантирует. Теперь наше решение на ES. 1. Добавляете новый атрибут в метамодель. 2. Создаётся событие добавление атрибута 3. Подсистема проекций ловит такое событие с создаёт колонку. При чем not null тоже допускается со значением по умолчанию 4. Далее в колонку с новым атрибутом будут писаться значения. Все. Идеально. И данные строго нормализованы и никаких проблем с ограничениями целостности, в том числе со ссылочной целостностью . Выгода очевидная, Профит космический, у вас на руках нормальная бд с человеческим лицом, а не кусок какахи, для которого нормальных запросов не напишешь. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.09.2019, 20:49 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
SiemarglЯ вообще не вижу каких то принципиально новых идей в ES %-/ Ну я даж незнаю, это как вообще можно их не видеть? А мы ведь даже ещё не говорили про микросеовисы, только одну тему затронули про нормализованное хранение данных. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.09.2019, 20:52 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
softwarerSiemarglЭто наверное к первоисточнику, который противопоставлял. Я помню, что hVostt их противопоставил, и не был в восторге от той реплики, хотя и понял, что он имел в виду. А я не понял. И в свете ваших обоюдных уточнений хотелось бы понять, чем мое непонимание противопоставления, упомянутое здесь 21962820 отличается от высказывания Хвоста, которое внезапно, оказалось понятным. softwarerSiemarglНе поменяется, только если у приложения была функция Суммарная_выплата, Не "функция Суммарная_выплата", а "проекция Зарплата". Вы, когда говорите о расчёте средней зарплаты, имеете в виду некое понятие "Зарплата". Немного виртуальное в том смысле, что не продумываете чётко, как оно рассчитывается. Выше я упомянул про аванс и собственно зарплату - как раз поэтому. Когда Вы говорили про расчёт средней зарплаты, Вы наверняка имели в виду их сумму, но явно об этом не говорили и не думали. И эта архитектура позволяет именно так и действовать - завести проекцию "Зарплата" а дальше уточнять это понятие, формировать его из белой, чёрной и серобуромалиновой, используя при этом независимо от уточнений. Siemarglа так API поменяется - чтобы отражать все новые данные. API останется прежним - та же проекция в виде реляционной таблицы. Поменяется скрытая от приложения логика её наполнения. Может быть, API дополнится - появятся новые проекции или новые атрибуты в той же проекции. А поменяться так, чтобы потребовалось менять старые приложения - сравнительно редкая необходимость. Скорее даже не необходимость вообще. Нет, я думал не так. Я как раз думал, что Зарплата распадается и далее становится агрегатом от разных опций. Аналогично Биллингу с кучей опций от фазы луны, например. И невозможно поддерживать старыми функциями новые расширения. Но скорее, что поменяется структура проекционной базы со всеми вытекающими .... ... |
|||
:
Нравится:
Не нравится:
|
|||
03.09.2019, 23:43 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
hVosttSiemarglА в случае с EAV таких проблем нет. Пишу с телефона, поэтому процитирую маленький кусочек. Нет есть, и они просто огромные, колоссальные В еав вы не можете добавить обязательный атрибут, просто не можете. Вообще. Без ядреных костылей. Все ваши атрибуты опциональные. Иначе при добавлении атрибута придется сделать огромный посев значений по умолчанию. И база данных ничего вам не гарантирует. Теперь наше решение на ES. 1. Добавляете новый атрибут в метамодель. 2. Создаётся событие добавление атрибута 3. Подсистема проекций ловит такое событие с создаёт колонку. При чем not null тоже допускается со значением по умолчанию 4. Далее в колонку с новым атрибутом будут писаться значения. Все. Идеально. И данные строго нормализованы и никаких проблем с ограничениями целостности, в том числе со ссылочной целостностью . Выгода очевидная, Профит космический, у вас на руках нормальная бд с человеческим лицом, а не кусок какахи, для которого нормальных запросов не напишешь.Я не говорил, что в EAV совсем нет проблем, я говорил, что нет таких проблем как, повторюсь > потребует массовой переливки и трансформации данных, версионирования приложений, блэкаута на это все итп. Пп 1-4 выше это только примитивный случай, а для упомянутой тобой 4НФ, потребуются новые таблицы, реляции, ключи, индексы, права итп И нормальная БД с космической кармой будет только после прогона 100% тестового покрытия, что БЛогика не поломалась от изменений. А блекаут - хуже всего. Даже перегенерить базу из ES на несколько TB будет просто местами невозможно - бизнес неделю ждать не будет. hVosttSiemarglЯ вообще не вижу каких то принципиально новых идей в ES %-/ Ну я даж незнаю, это как вообще можно их не видеть? А мы ведь даже ещё не говорили про микросеовисы, только одну тему затронули про нормализованное хранение данных. ОК, чем ES лучше чем ESB? Или классической схемы - поменяли, подгрузили.... А микросервисы - отдельная тема. Отрыжка теоретического ФП, которые на практике (а не на бумаге) в затратах стоят дороже выгоды. Только если придумать идеальный фиксированный интерфейс обмена......Иначе N^2-N ... |
|||
:
Нравится:
Не нравится:
|
|||
04.09.2019, 00:02 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
hVosttТеперь наше решение на ES. 1. Добавляете новый атрибут в метамодель. 2. Создаётся событие добавление атрибута 3. Подсистема проекций ловит такое событие с создаёт колонку. При чем not null тоже допускается со значением по умолчанию 4. Далее в колонку с новым атрибутом будут писаться значения. А чем плох механизм типа гибких полей в OEBS? Добавить поле на системе не находящейся в эксплуатации конечно никаких проблем, а вот на продуктовой каждый чих выполнять в технологическое окно как то не комильфо и перекомпилировать возможно придется некоторые объекты и кто будет переписывать логику работы бэк и фронт-энда под использование нового поля и нового алгоритма работы? И как эта замечательная система переварит таблицу товаров в которой много разных типов товаров у каждого типа по 200-300 свойств? Вот пример Стиральные машины У утюгов будет другой набор свойств, у телевизоров третий и т.д., и каждый тип товара еще не просто тип, а иерархическая классификация. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.09.2019, 01:39 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
iOracleDevИ как эта замечательная система переварит таблицу товаров в которой много разных типов товаров у каждого типа по 200-300 свойств? Вот пример Стиральные машины. У утюгов будет другой набор свойств, у телевизоров третий и т.д., и каждый тип товара еще не просто тип, а иерархическая классификация. Наверное, при проектировании НСИ не следует увлекаться техникой, не разобравшить в методологии бизнес-процессов, которые данное НСИ будут использовать. НСИ ради красивого структурированно НСИ - не является самоцелью. Накой 200-300 свойств стиралке? Для целей выбора (покупки) товара цена, вес, габариты, цвет, ну может быть для эстетов "тип привода барабана" и "с дисплейчиком/с кнопочками". Всё остальное можно просто в текстовом описании хранить. Кто будет теми 200-300 свойствами практически пользоваться, и главное зачем? ... |
|||
:
Нравится:
Не нравится:
|
|||
04.09.2019, 08:55 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
Накой 200-300 свойств стиралке?Это был пример. Возьмите мобильный в любом инт.магазе. Список опций и оборудования будет ок. сотни строк. У стиралки - полсотни. Не суть. В крупном универсальном магазе список свойств товаров будет десятки тыщ. Если не сотни. Интересно было бы посмотреть на этот кошмар из проекций и новых полей и таблиц. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.09.2019, 09:20 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
SiemarglПп 1-4 выше это только примитивный случай, а для упомянутой тобой 4НФ, потребуются новые таблицы, реляции, ключи, индексы, права итп Естественно. Связи, индексы, ограничения, аннотации, всё создаётся. Права это совершенно другая история. И проекции они всегда только на чтение, без исключений. SiemarglИ нормальная БД с космической кармой будет только после прогона 100% тестового покрытия, что БЛогика не поломалась от изменений. А блекаут - хуже всего. Даже перегенерить базу из ES на несколько TB будет просто местами невозможно - бизнес неделю ждать не будет. Бизнес-логики в БД нет. Проекции только для чтения. При использовании DDD/CQRS логика в командах, и она работает с агрегатами, обращаясь к проекциям только для чтения всяких сводных данных. Насчёт "сломалась". Вообще, про генерацию БД в 4нф это только частный случай. В микросервисной архитектуре, каждый микросервис ведёт свои маленькие проекции из потока событий, и класть хотел на какую-то большую мега-базу. Допустим, зарплатный сервис ведёт только проекции начислений, премий, бонусов, списаний, вычетов и т.п. Другие ему не нужны, а изменения в других сервисах и моделях его не затрагивает. И т.д. Разделяй и властвуй. SiemarglОК, чем ES лучше чем ESB? Или классической схемы - поменяли, подгрузили.... ES это данные, история изменения всех данных вообще. А ESB это архитектура коммуникации. Поэтому их нельзя сравнивать. Вы можете и то и другое использовать. SiemarglА микросервисы - отдельная тема. Отрыжка теоретического ФП, которые на практике (а не на бумаге) в затратах стоят дороже выгоды. Только если придумать идеальный фиксированный интерфейс обмена......Иначе N^2-N Вас никто не заставляет и не обязывает. Однако преимущества микросервисов давно очевидны многим. Но чудес не бывает, конечно, за всё нужно чем-то платить. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.09.2019, 11:47 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
iOracleDevДобавить поле на системе не находящейся в эксплуатации конечно никаких проблем, а вот на продуктовой каждый чих выполнять в технологическое окно как то не комильфо и перекомпилировать возможно придется некоторые объекты и кто будет переписывать логику работы бэк и фронт-энда под использование нового поля и нового алгоритма работы? Это совершенно другой подход к разработке ПО. Если вы выбрали принцип динамического моделирования, то высшую бизнес-логику вам придётся тоже выносить в динамику. Всё становится сложнее в разработке на порядки, чудес не бывает, говорил уже. Вы не добавляете "поле" строго говоря. Вы изменяете мета-модель, добавляете в бизнес-сущность характеристику, связь, поведение и т.д. Появление поля в БД это детали реализации, не суть и не самоцель. Но решает многое. iOracleDevИ как эта замечательная система переварит таблицу товаров в которой много разных типов товаров у каждого типа по 200-300 свойств? Вот пример Стиральные машины У утюгов будет другой набор свойств, у телевизоров третий и т.д., и каждый тип товара еще не просто тип, а иерархическая классификация Да не вопрос. Если вдруг для какой-то конкретной приложения стал удобен именно EAV-подход, например, атрибуты товаров не несут никакой бизнес-логической нагрузки кроме поиска/фильтрации, можно вообще вести проекцию для таких сущностей в ElasticSearch, а не в РСУБД -- нафига они там? Собственно, вы даже можете сделать EAV-проекцию. Суть в том, что вы не прибиваете себя за яйца ржавыми гвоздями к одному единственному способу и методу хранения, а выбираете сколько угодно методов под конкретные задачи. Здесь вам удобно 4нф, а здесь сотни атрибутов для поиска, положу их в поисковое NoSQL хранилище, здесь требуется денормализация, а здесь историчность... И т.д. и т.п. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.09.2019, 11:55 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
L_argoНе суть. В крупном универсальном магазе список свойств товаров будет десятки тыщ. Если не сотни. Интересно было бы посмотреть на этот кошмар из проекций и новых полей и таблиц. Пояснил выше. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.09.2019, 11:56 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
hVosttL_argoНе суть. В крупном универсальном магазе список свойств товаров будет десятки тыщ. Если не сотни. Интересно было бы посмотреть на этот кошмар из проекций и новых полей и таблиц.Пояснил выше.Пояснение было уклончивым. Проекции, события, "пояснил выше" - это не ответ. Как это будет выглядеть в реале ? Тысячи таблиц и полей ? Возможную связь между свойствами считаем некритичной. ПЫСЫ: Все равно разумное решение будет одной из разновидностей ЕАВ. Просто ему дадут более заумное название. :) ... |
|||
:
Нравится:
Не нравится:
|
|||
04.09.2019, 12:21 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
ldfanateКто будет теми 200-300 свойствами практически пользоваться, и главное зачем? Гы гы, у меня знакомый думает автомобиль менять, ни за что не догадаешься по какому критерию он его выбирает, многие менеджеры вообще не знают есть ли это на тех моделях которые они продают)) ... |
|||
:
Нравится:
Не нравится:
|
|||
04.09.2019, 12:32 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
hVosttЭто совершенно другой подход к разработке ПО. Если вы выбрали принцип динамического моделирования, то высшую бизнес-логику вам придётся тоже выносить в динамику. Всё становится сложнее в разработке на порядки, чудес не бывает, говорил уже. Сложность на порядки выше, значит и поддержка на порядки сложнее и что то мне подсказывает с производительностью будут ооочень большие проблемы, так куда это можно прикладывать? ... |
|||
:
Нравится:
Не нравится:
|
|||
04.09.2019, 12:36 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
L_argoКак это будет выглядеть в реале ? Тысячи таблиц и полей ? Возможную связь между свойствами считаем некритичной. Слушай, в реальном проекте тысячи таблиц и у некоторых сотни полей. СУБД собственно и создано, чтобы эту задачу решать и решать её эффективно. Если уж на то пошло, не знаю чего вас тут смущает или пугает. Или в вашей реальности десяток таблиц и десяток полей -- предел, который вы вообще видели? :) L_argoПЫСЫ: Все равно разумное решение будет одной из разновидностей ЕАВ. Просто ему дадут более заумное название. :) Речь шла о том, что вы берёте микроскоп и забиваете им гвозди. Т.е. берёте РСУБД со всей мощью ведения таблиц и ОЦ, и вхерачиваете туда тупой и кривой EAV, потому что не осилили современные подходы к разработке, не осилили инструмент и не поняли его смысла. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.09.2019, 12:38 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
iOracleDevhVosttЭто совершенно другой подход к разработке ПО. Если вы выбрали принцип динамического моделирования, то высшую бизнес-логику вам придётся тоже выносить в динамику. Всё становится сложнее в разработке на порядки, чудес не бывает, говорил уже. Сложность на порядки выше, значит и поддержка на порядки сложнее и что то мне подсказывает с производительностью будут ооочень большие проблемы, так куда это можно прикладывать? Сложность разработки подобной системы. Разработав её, вы получаете профит в чистом виде. Но вот это сложность на старте и пугает многих. Я ж говорю с позиции опыта, подобная система разработана, введена в эксплуатацию на федеральном уровне. Работает хорошо, позволяет сильно сократить затраты на решение бизнес-задач. Иначе, нафига бы это всё было нужно :) ... |
|||
:
Нравится:
Не нравится:
|
|||
04.09.2019, 12:40 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
iOracleDevс производительностью будут ооочень большие проблемы Как раз об этом я и писал, в этом суть и соль. С производительностью проблем нет, так как данные хранятся максимально эффективно. Плюс, есть возможность вести любые проекции под задачи, в том числе денормализованные, что является просто вышкой с точки зрения производительности, быстрее уже некуда для РСУБД, когда данные у вас разложены в табличках и по типизированным колонкам с правильными индексами. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.09.2019, 12:43 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
Слушай, в реальном проекте тысячи таблиц и у некоторых сотни полей. СУБД собственно и создано, чтобы эту задачу решать и решать её эффективно. Если уж на то пошло, не знаю чего вас тут смущает или пугает.В данном случае речь только про Товар и его свойства. Это большой проект ? Нет. Продолжаете отвечать уклончиво. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.09.2019, 13:10 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
L_argoСлушай, в реальном проекте тысячи таблиц и у некоторых сотни полей. СУБД собственно и создано, чтобы эту задачу решать и решать её эффективно. Если уж на то пошло, не знаю чего вас тут смущает или пугает.В данном случае речь только про Товар и его свойства. Это большой проект ? Нет. Продолжаете отвечать уклончиво. Вообще не понимаю про что вы говорите, чё вы хотите, вопрос можете конкретный задать? ... |
|||
:
Нравится:
Не нравится:
|
|||
04.09.2019, 13:17 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
hVosttВообще не понимаю про что вы говорите, чё вы хотите, вопрос можете конкретный задать?Вопрос все тот же: как это выглядит физически ? Товаров сотни тыщ. Видов характеристик товара десятки тыщ. Интересует хранение характеристик. Новые должны добавляться сразу, т.е. в бизнес-время. Никаких технологических окон. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.09.2019, 13:53 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
L_argohVosttВообще не понимаю про что вы говорите, чё вы хотите, вопрос можете конкретный задать?Вопрос все тот же: как это выглядит физически ? Товаров сотни тыщ. Видов характеристик товара десятки тыщ. Интересует хранение характеристик. Новые должны добавляться сразу, т.е. в бизнес-время. Никаких технологических окон. Вы заставляете меня повторяться, что означает одно из двух: вам либо пофигу на ответ, либо у вас проблемы усвоением информации. Всё зависит от задач. Если у вас характеристик у одной сущности "десятки тысяч", что означает, что вы тупо натягиваете слона на уши в своих утверждениях, при этом выглядите довольно глупо. Зачем? А если характеристик больше чем данных? Например, пару миллионов, чё тогда? А ещё характеристики создаются/удаляются/изменяются чаще, чем данные... Дурачка может перестанем включать? ... |
|||
:
Нравится:
Не нравится:
|
|||
04.09.2019, 14:09 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
hVosttКак раз об этом я и писал, в этом суть и соль. С производительностью проблем нет, так как данные хранятся максимально эффективно. Плюс, есть возможность вести любые проекции под задачи, в том числе денормализованные, что является просто вышкой с точки зрения производительности, быстрее уже некуда для РСУБД, когда данные у вас разложены в табличках и по типизированным колонкам с правильными индексами. А где реализована бизнес логика? Если у вас была некая череда событий и нужно что то получить из начала ветки изменений, то вам придется восстанавливать всю ретроспективу, т.е. итеративно по частям, что не может быть быстрым. Опять же, пользователи изменяют данные в таблице в которой сотни миллионов записей, ddl не выкинув пользователей вы сделать не сможете, как работает ваша система на БД находящейся в эксплуатации? ... |
|||
:
Нравится:
Не нравится:
|
|||
04.09.2019, 14:10 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
iOracleDevА где реализована бизнес логика? Если у вас была некая череда событий и нужно что то получить из начала ветки изменений, то вам придется восстанавливать всю ретроспективу, т.е. итеративно по частям, что не может быть быстрым. Опять же, пользователи изменяют данные в таблице в которой сотни миллионов записей, ddl не выкинув пользователей вы сделать не сможете, как работает ваша система на БД находящейся в эксплуатации? Бизнес-логика реализована на DSL, на некотором количестве концепций (workflow, бизнес-задачи, бизнес-обработчики...). Для прогона событий существуют набор механизмов для ускорения процесса, для конкретной проекции нужны только конкретные события, значит фильтрация. Потом через некоторые крупные промежутки времени, создаются снепшоты агрегатов, и срезы данных. Все решения рабочие и позволяют быстро решать большинство задач. И конечно всегда остаётся ультимативный прогон по всем событиям с начала эпохи, но он очень редко используется. Изменение мета-модели редко производится на активной БД, для этого существует либо теневая, либо система на отдельной среде. Потом изменения переносятся в виде последовательности событий в поток мастер данных событий. Заметного влияния на пользователей это не оказывает. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.09.2019, 14:23 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
hVostt, Слишком красиво в теории, нужно видеть на практике, судя по тому что такой подход не распространен, там есть большие проблемы. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.09.2019, 14:35 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
iOracleDevhVostt, Слишком красиво в теории, нужно видеть на практике, судя по тому что такой подход не распространен, там есть большие проблемы. Проблемы безусловно есть, но они не связаны непосредственно с самим подходом. Методология DDD + CQRS + Event Sourcing довольно широко применяется. Но в связке с динамикой не часто, так как это отдельный класс решений, и далеко не под все задачи подходит. Основной кейс применения это enterprise, с большим количеством справочников, реестров, процессов, постоянно изменчивые бизнес-процессы. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.09.2019, 14:48 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
hVosttЕсли у вас характеристик у одной сущности "десятки тысяч", что означает, что вы тупо натягиваете слона на уши в своих утвержденияхЗачем так грубо передергивать ? Речь о списке всех возможных характеристик всех товаров. Не обязательно все они одновременно присутствуют у конкретного товара. Набор х-к может быть произвольный для каждой карточки товара. Что тут не ясно ? Где нибудь может храниться список допустимых комбинаций (чтобы не было мегапикселов у чайника и литров у мобилки). Но это несущественно. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.09.2019, 16:10 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
hVostt, Примеры коммерческих продуктов для энтрерпрайза есть? ... |
|||
:
Нравится:
Не нравится:
|
|||
04.09.2019, 16:53 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
L_argoЗачем так грубо передергивать ? Речь о списке всех возможных характеристик всех товаров. Хера се, "передёргивать". Покажите хотя бы один пример, где есть тысяча атрибутов у сущности, не говоря уж о десятках тысяч. Понятно, если разобрать холодильник по винтикам и охарактеризовать каждую, то может что и выйдет -- но это уже не сущность, а композиция, которая легко разбивается на сущности. L_argoНабор х-к может быть произвольный для каждой карточки товара. Что тут не ясно ? Я уже сказал, по количеству атрибутов мы упираемся только в ограничения РСУБД на количество колонок, если говорить о авто-генерации 4НФ проекции. В MS SQL там предельное ограничение до 30 тыс. колонок. Нет ни одного решения, которое было бы серебряной пилюлей для всех задач. Не существует. Возможность создавать десятки тысяч характеристик в EAV не является преимуществом ни в какой реальности, так как сущности с тысячами атрибутов -- это плохая архитектура модели. И микроскопом можно себе ногу сломать, зачем вот эти тупые набросы, оторванные от реальности? L_argoГде нибудь может храниться список допустимых комбинаций (чтобы не было мегапикселов у чайника и литров у мобилки). Но это несущественно. Это существенно. Видно, что вы не понимаете задачу, не задаётесь вопросом, какая задача и проблема решается. А я говорил про решение, для магазина нужен другой подход по крайне мере в части хранения атрибутов товаров, РСУБД плохо подходит. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.09.2019, 19:30 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
iOracleDevhVostt, Примеры коммерческих продуктов для энтрерпрайза есть? Есть реальные внедрения на федеральном уровне, в разработке которых я принимал основное участие. А как коммерческий продукт не продаётся и не выпускается, в этом нет смысла. Есть смысл использовать платформу для реализации конечных решений, это реальный профит и реальные деньги, долгосрочные контракты и плотное партнёрство. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.09.2019, 19:33 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
hVostt, Федеральный уровень не внушает доверия, на федеральном уровне пилятся бюджеты, коммерческий успех уже показатель. Пока больше похоже на секту, у нас есть сверхсекретная божественная штука, но покажем мы ее только самым преданным адептам. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.09.2019, 21:11 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
hVosttЯ уже сказал, по количеству атрибутов мы упираемся только в ограничения РСУБД на количество колонок, если говорить о авто-генерации 4НФ проекции. В MS SQL там предельное ограничение до 30 тыс. колонок.Для Firebird это неск. тыс. колонок, для MySQL аж 4096. Всего то. Учитывая, что это будет ну очень сильно разреженная таблица с минимумом индексов, производительность и прожорливость места будет унылой. А вопрос репликации такой БД вообще, обойдён стороной. И вообще. Если в таблице более 200 колонок, это повод сильно сомневаться во вменяемости разработчиков. hVosttРСУБД плохо подходитИногда это внешнее требование, через которое нельзя переступить. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.09.2019, 23:26 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
L_argo, Кажется за флеймом выплеснули и суть. Предложено 3 варианта, со своими +-. Я склоняюсь, что ТС неправ, но идеала нет, зато гибридный вариант будет рабочим. А ТС как и любой идеалист, в пролете фантазии ... |
|||
:
Нравится:
Не нравится:
|
|||
04.09.2019, 23:41 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
iOracleDevhVostt, Федеральный уровень не внушает доверия, на федеральном уровне пилятся бюджеты, коммерческий успех уже показатель. Пока больше похоже на секту, у нас есть сверхсекретная божественная штука, но покажем мы ее только самым преданным адептам. Ок, я вам ничего и не продаю. Ничего божественного тут нет, если для вас ES это что-то божественное, то у меня для вас плохие новости. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.09.2019, 00:59 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
L_argoДля Firebird это неск. тыс. колонок, для MySQL аж 4096. Всего то. Учитывая, что это будет ну очень сильно разреженная таблица с минимумом индексов, производительность и прожорливость места будет унылой. А вопрос репликации такой БД вообще, обойдён стороной. Давайте сначала отыщем задачу, где хотя бы 500 характеристик у одной сущности будет? О волшебных конях в вакууме из чье-то больной фантазии разговаривать неинтересно. L_argoИ вообще. Если в таблице более 200 колонок, это повод сильно сомневаться во вменяемости разработчиков. Это вопрос вообще не в таблице. L_argoИногда это внешнее требование, через которое нельзя переступить. Современные СУБД, например, постгрес -- умеют хранить и работать данные без структуры. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.09.2019, 01:03 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
hVosttСовременные СУБД, например, постгрес -- умеют хранить и работать данные без структуры. Могут, но получается не так хорошо, как хотелось бы. В частности имел печальный опыт с MS SQL. Он может хранить json и даже запросы по ним делать. Но план запроса "ужас, ужас". ИМХО лучше, все таки положить данные в плоскую таблицу, чем огрести проблемы с JSON. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.09.2019, 05:52 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
Давайте сначала отыщем задачу, где хотя бы 500 характеристик у одной сущности будет?Это тролинг такой ? Товары любого интернет-магазина. Н-р бытовая электроника. Даже в одной их категории может быть совокупно 100-200 характеристик. А категорий может быть неск. сотен. По ключевым характеристикам на сайте есть фильтры. Возьмите инфу по недвижимости. Там многие сотни х-к. А еще есть запчасти, техн. оборудование, одежда и т.д. Практически нет баз, где таких х-к мало. Их или много или очень много. Почему нужно разжевывать такие простые вещи ? ... |
|||
:
Нравится:
Не нравится:
|
|||
05.09.2019, 09:19 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
L_argohVosttВообще не понимаю про что вы говорите, чё вы хотите, вопрос можете конкретный задать?Вопрос все тот же: как это выглядит физически ? Товаров сотни тыщ. Видов характеристик товара десятки тыщ. Интересует хранение характеристик. Новые должны добавляться сразу, т.е. в бизнес-время. Никаких технологических окон. да, как человек будет в этом ориентироваться? в рамках каких задач? каждая задача или тип задач сильно ограничивают это разнообразие, и под каждую задачу вполне создается ограниченное количество таблиц, с ограниченным множеством полей. Задачи, в которой бы все это перечисленное, переливалось бы вместе подобно постмодернистской ризоме, я пока не видел .... все равно есть ограниченные сабсеты, между которыми есть интеграционные прослойки. У каждого рода товаров есть набор характеристик. Для каждого вида товаров, входящих в род, можно создать табличку с набором характеристик этого вида. Каждый конкретно товар, имеет какие то свои, присущие именно ему, а не роду и виду атрибуты тоже получает свою табличку... примерно так можно проектировать.... ... |
|||
:
Нравится:
Не нравится:
|
|||
05.09.2019, 09:27 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
hVosttSiemarglА в случае с EAV таких проблем нет. Нет есть, и они просто огромные, колоссальные В еав вы не можете добавить обязательный атрибут, просто не можете. Вообще. Без ядреных костылей. Все ваши атрибуты опциональные. Иначе при добавлении атрибута придется сделать огромный посев значений по умолчанию. И база данных ничего вам не гарантирует. Теперь наше решение на ES. 1. Добавляете новый атрибут в метамодель. 2. Создаётся событие добавление атрибута 3. Подсистема проекций ловит такое событие с создаёт колонку. При чем not null тоже допускается со значением по умолчанию 4. Далее в колонку с новым атрибутом будут писаться значения. Все. Идеально. И данные строго нормализованы и никаких проблем с ограничениями целостности, в том числе со ссылочной целостностью . «Мы же профессионалы, давайте просто достанем и померяемся» (с) Вот как это делается в IdeaV: Not null – это атрибут описания термина (в данном случае Телефон), и его поведение знает ядро, которое всё это собирает и обрабатывает. А теперь зададим значение по умолчанию: А теперь приведите вашу серию скриншотов, которые наглядно докажут вот это вот заявление: hVosttВыгода очевидная, Профит космический, у вас на руках нормальная бд с человеческим лицом, а не кусок какахи, для которого нормальных запросов не напишешь. Особенно доставляет наличие вот этого: «Подсистема проекций ловит такое событие с создаёт колонку» «Без ядреных костылей», ага ... |
|||
:
Нравится:
Не нравится:
|
|||
05.09.2019, 09:38 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakovldfanateосновной минус остался (отвратительная производительность на сколь нибудь больших объёмах). Это миф, созданный теми, кто попытался прогнуть EAV под привычный квадратно-гнездовой эксель, формируемый одним запросом и, естественно, облажался. Ибо не натягивается эта сова. а раскажите как надо с этим работать плз. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.09.2019, 09:57 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
авторУ каждого рода товаров есть набор характеристик. Для каждого вида товаров, входящих в род, можно создать табличку с набором характеристик этого вида. Каждый конкретно товар, имеет какие то свои, присущие именно ему, а не роду и виду атрибуты тоже получает свою табличку... примерно так можно проектировать.... Так тоже иногда делают. Но в итоге этим сложно управлять. Справочник товара будет состоять из многих десятков, а то и сотен таблиц. Строить отчетность по ним - одно удовольствие. :) ... |
|||
:
Нравится:
Не нравится:
|
|||
05.09.2019, 12:08 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
L_argo, строить отчётность по куче товаров можно только по общим параметрам. Как засунуть (главное, зачем засовывать) в отчёт по обуви с разбивкой на мужскую/женскую/детскую с учётом сезонности и размерам, например посуду? ... |
|||
:
Нравится:
Не нравится:
|
|||
05.09.2019, 12:24 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
L_argoТак тоже иногда делают. Но в итоге этим сложно управлять. Забавно. Вы понимаете, какие выводы следуют из этого высказывания, если предположить, что оно верно? L_argoСтроить отчетность по ним - одно удовольствие Даже любопытно, какие проблемы Вы видите. Скорее всего, такие же, как с историчностью и репликацией. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.09.2019, 12:43 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
Mr.FontaineL_argo, строить отчётность по куче товаров можно только по общим параметрам. Как засунуть (главное, зачем засовывать) в отчёт по обуви с разбивкой на мужскую/женскую/детскую с учётом сезонности и размерам, например посуду? Какая только галиматья не придет в голову диванным экспертам. Что самое интересное, авторство этого бреда они сразу же приписывают оппонентам. Вот вам нормальная задача: выгрузить полный реестр товаров с характеристиками для сети дилеров, которые имеют разные системы, но понимают единый формат этого реестра. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.09.2019, 13:16 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
Mr.FontaineКак засунуть (главное, зачем засовывать) в отчёт по обуви с разбивкой на мужскую/женскую/детскую с учётом сезонности и размерам, например посуду?Ну почему посуду ? Например спортивную обувь. В ней много специфических параметров и вероятно для этих групп будут созданы отдельные таблицы параметров. Часть параметров неизбежно будет дублироваться для разных групп. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.09.2019, 13:25 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
drynny, напишем процедуру, заполняющую этот формат. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.09.2019, 13:42 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
drynnyВот вам нормальная задача: выгрузить полный реестр товаров с характеристиками для сети дилеров, которые имеют разные системы, но понимают единый формат этого реестра. Вообще-то разговор идёт не о передаче данных из одной системы в другую, а об отчёте ... |
|||
:
Нравится:
Не нравится:
|
|||
05.09.2019, 13:45 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
L_argo Часть параметров неизбежно будет дублироваться для разных групп. Однозначно будут. Одинаковые параметры пишутся в один столбец отчёта. Так? ... |
|||
:
Нравится:
Не нравится:
|
|||
05.09.2019, 13:48 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
Mr.Fontainedrynny, напишем процедуру, заполняющую этот формат. На вопросы об API пока не было ответов. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.09.2019, 13:51 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
ёёёёё, тут мне кажется мы обсуждаем не поделку автора темы. Я подтянулся к разговору L_agro со всем миром. А уж за мной подтянулся автор темы в разговор не по теме. P.S. Да и зачем нам API, когда есть прямой доступ к таблицам.... Отсутствие API нам не препятствие. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.09.2019, 14:06 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
Mr.FontaineЯ подтянулся к разговору L_agro со всем миром. А уж за мной подтянулся автор темы в разговор не по теме. Я тоже топлю за систему, выросшую из EAV, если что. И против антинаучных подходов с разреженными таблицами или кучей таблиц со сгруппированными характеристиками. Mr.FontainedrynnyВот вам нормальная задача: выгрузить полный реестр товаров с характеристиками для сети дилеров, которые имеют разные системы, но понимают единый формат этого реестра. Вообще-то разговор идёт не о передаче данных из одной системы в другую, а об отчёте Ок, а если я вас попрошу сформировать ценники на все товары по цене 49 рублей (с их характеристиками, разумеется)? Есть у меня отдел где всё по 49 или иной отдел, но тоже с неким признаком, хоть распродажа или VIP. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.09.2019, 14:55 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
Vladimir Baskakovда, как человек будет в этом ориентироваться? в рамках каких задач? каждая задача или тип задач сильно ограничивают это разнообразие, и под каждую задачу вполне создается ограниченное количество таблиц, с ограниченным множеством полей. Задачи, в которой бы все это перечисленное, переливалось бы вместе подобно постмодернистской ризоме, я пока не видел .... все равно есть ограниченные сабсеты, между которыми есть интеграционные прослойки. У каждого рода товаров есть набор характеристик. Для каждого вида товаров, входящих в род, можно создать табличку с набором характеристик этого вида. Каждый конкретно товар, имеет какие то свои, присущие именно ему, а не роду и виду атрибуты тоже получает свою табличку... примерно так можно проектировать.... Я уже выше давал ссылку на яндекс маркет, там сотни второстепенных характеристик для товаров, по которым пользователи хотели бы иметь поиск, например я хочу найти стиральные машины с вертикальной загрузкой и инверторным двигателем, причем категория вертикальная/горизонтальная значимая характеристика (основная) для стиральных машин и она есть во всех интернет-магазинах, а тип двигателя уже характеристика дополнительная и во многих магазинах этого атрибута нет, буду ли я искать в магазинах которые не предоставляют мне возможности найти интересующий меня товар? В категории мониторы я например по мимо диагонали, разрешения и типа матрицы захочу отсутствие мерцания и т.п. У меня знакомый автомобиль ищет исходя из критерия наличия расширенной функции круиз контроля - ограничителя скорости, очень мало бюджетных автомобилей имеют эту функцию, причем для него это обязательный критерий, тут не то что информационные системы, многие менеджеры не понимают о чем идет речь, что это не какая то пищалка о превышении, а физическое ограничение при штатном режиме, т.е. если ты плавно нажимаешь на педаль газа скорость автомобиль не превысит заданного значения, при резком нажатии на газ функция будет временно отключена. Предлагаете создавать по таблице на каждый артикул? Думаю это совершенно нецелесообразно, сложность разработки и поддержки такой системы будет колоссальная. Использовать некий отличный от РСУБД инструмент, который бы инкапсулировал объект целиком, да возможно и в дальнейшем с появлением нейросетей в железе и с отказом от центрального процессора так и будет, но это уже совсем в другой жизни. В настоящее время для решения такого рода задач в разрезе РСУБД хорошо подходят два механизма, для основных свойств - гибкие поля по аналогии механизма реализованного в OEBS и EAV-подобные структуры для второстепенных характеристик, при этом добавление новой характеристики не требует изменения таблиц и интерфейса пользователя, программист для этого не нужен. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.09.2019, 15:22 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
drynnyЯ тоже топлю за систему, выросшую из EAV, если что. И против антинаучных подходов с разреженными таблицами или кучей таблиц со сгруппированными характеристиками. Ну и зря, ищите другие инструменты, рсубд вам не подходят они основаны на антинаучной по вашему мнению реляционной алгебре. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.09.2019, 15:34 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
drynnyА теперь приведите вашу серию скриншотов, которые наглядно докажут вот это вот заявление: hVosttВыгода очевидная, Профит космический, у вас на руках нормальная бд с человеческим лицом, а не кусок какахи, для которого нормальных запросов не напишешь. Я не понимаю на что смотреть. На унылый и примитивный дизайнер сущностей? Такое 100 раз видел, и даже делали мы в 2007 году прям вот такое, и да -- на еав, дружище. Но это был 2007 год, не думал что больше чем через 10 лет меня будут пытаться удивить такой вот детской фигнёй. Выпрашивать у меня скринов, кусков кода и т.д. не нужно, я их не покажу. Проект закрытый, что-то показывают только потенциальным заказчикам. На вопросы по реализации отвечаю без проблем. drynnyОсобенно доставляет наличие вот этого: «Подсистема проекций ловит такое событие с создаёт колонку» «Без ядреных костылей», ага Сцук.. вы с каких глухих деревень повылезли и с каких деревьев слезли? ES уже много лет, а в последние годы активно рассказывают на конфах, статьи, книги -- всё есть. Можем пора вылезти из танка? ... |
|||
:
Нравится:
Не нравится:
|
|||
05.09.2019, 15:55 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
hVosttES уже много лет, а в последние годы активно рассказывают на конфах, статьи, книги -- всё есть. Можем пора вылезти из танка? Реальные коммерческие системы, внедрения? ... |
|||
:
Нравится:
Не нравится:
|
|||
05.09.2019, 15:59 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
drynnyЯ тоже топлю за систему, выросшую из EAV, если что. Когда вас биайщики изобьют палками за уг вместо нормальной человеческой бд, тож будете топить? :) Потом придут суровые чуваки, отвечающие за оптимальное расходование серверных ресурсов, и ещё добавят от себя за 100% индексы :) Лан.. я понял, тут уровень трёх-колёсного велосипедостроения, топите ради бога, главное чтобы приносило удовольствие. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.09.2019, 15:59 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
iOracleDevhVosttES уже много лет, а в последние годы активно рассказывают на конфах, статьи, книги -- всё есть. Можем пора вылезти из танка? Реальные коммерческие системы, внедрения? Естественно. И гос структуры тоже. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.09.2019, 16:00 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
hVosttЕстественно. И гос структуры тоже. Я не про конкретно вашу закрытую и известную в очень узких кругах систему, а про то что продается и внедряется не в госструктурах, можете дать названия таких систем и где их внедряли? ... |
|||
:
Нравится:
Не нравится:
|
|||
05.09.2019, 16:05 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
iOracleDevhVosttES уже много лет, а в последние годы активно рассказывают на конфах, статьи, книги -- всё есть. Можем пора вылезти из танка? Реальные коммерческие системы, внедрения? вот кратенько и по существу https://hackernoon.com/1-year-of-event-sourcing-and-cqrs-fb9033ccd1c6 ... |
|||
:
Нравится:
Не нравится:
|
|||
05.09.2019, 16:07 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
iOracleDevhVosttЕстественно. И гос структуры тоже. Я не про конкретно вашу закрытую и известную в очень узких кругах систему, а про то что продается и внедряется не в госструктурах, можете дать названия таких систем и где их внедряли? ходите на конференции и многое узнаете, познакомитесь с людьми, вам все расскажут/покажут и даже больше. мне лично известны пяток крупных проектов, где в основе архитектуры активно используется DDD/CQRS/EventSourcing, микросервисы и монолиты. собирайте свою аналитику, если вам это интересно. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.09.2019, 16:13 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
hVostt, Интересная тема, даже джавовский фреймворк есть axoniq.io , жаль для нас эта тема бесперспективная. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.09.2019, 16:37 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
iOracleDevВ настоящее время для решения такого рода задач в разрезе РСУБД хорошо подходят два механизма, для основных свойств - гибкие поля по аналогии механизма реализованного в OEBS и EAV-подобные структуры для второстепенных характеристик, при этом добавление новой характеристики не требует изменения таблиц и интерфейса пользователя, программист для этого не нужен. С выделенным бы не согласился. Что хорошо подходит для поиска, фильтрации по атрибутам, это NoSQL. Если говорить про интернет-магазины, то скорее всего вам понадобятся фасеты, фасетная фильтрация. Что вообще крайне отвратительно решается на еав. С какими угодно перделками и квинтетами. Но берём какой-нибудь RavenDb и как по маслу :) ... |
|||
:
Нравится:
Не нравится:
|
|||
05.09.2019, 16:52 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
iOracleDevhVostt, Интересная тема, даже джавовский фреймворк есть axoniq.io , жаль для нас эта тема бесперспективная. знакомый фреймворк, мы вдохновлялись в том числе этой разработкой, когда мы начинали, подходящих нам тулов небыло, сейчас уже хватает. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.09.2019, 16:54 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
hVosttС выделенным бы не согласился. Почему? Делается быстро, дешево, сердито и силами половинки землекопа в пределах используемой РСУБД, прикручивать еще одну СУБД, уже понадобится интеграция и полтора землекопа с большим набором скилов и последующая поддержка сложнее. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.09.2019, 17:03 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
iOracleDevДелается быстро, дешево Всё верно, на скрутку и соплях :) ... |
|||
:
Нравится:
Не нравится:
|
|||
05.09.2019, 17:11 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
iOracleDevВ настоящее время для решения такого рода задач в разрезе РСУБД хорошо подходят два механизма, для основных свойств - гибкие поля по аналогии механизма реализованного в OEBS Вы уже второй раз упоминаете это решение. Требуется ли явно упоминать, что конкретно "гибкие поля в OEBS" реализованы совершенно безобразно, настолько, что пожалуй даже EAV предпочтительнее? ... |
|||
:
Нравится:
Не нравится:
|
|||
05.09.2019, 17:17 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
hVostt, EAV скорее вынужденное решение чем желаемое, хотя некоторые видят в нем какое то откровение и панацею от всего на свете, просто плодить таблицы для допаттрибутов одной сущности еще хуже. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.09.2019, 17:18 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
softwarerВы уже второй раз упоминаете это решение. Требуется ли явно упоминать, что конкретно "гибкие поля в OEBS" реализованы совершенно безобразно, настолько, что пожалуй даже EAV предпочтительнее? Дело имел вскользь, мне идея понравилась, в чем безобразность реализации? ... |
|||
:
Нравится:
Не нравится:
|
|||
05.09.2019, 17:20 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
iOracleDevДело имел вскользь, мне идея понравилась, в чем безобразность реализации? Хотя бы в том, что в таблице просто заранее делаются поля, грубо, FIELD1, FIELD2, FIELD3, FIELD4 - и если тебе понадобился пятый custom-атрибут, сунуть его тупо некуда. Если тебе понадобился custom-атрибут типа даты - храни его как varchar, поскольку мест хранения с типом date не предусмотрено. И так далее в том же духе - я тоже затронул мельком и не знаю всех граблей, это то, что запомнилось из матюков тех, кто этим занимался. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.09.2019, 17:26 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
softwarerХотя бы в том, что в таблице просто заранее делаются поля, грубо, FIELD1, FIELD2, FIELD3, FIELD4 - и если тебе понадобился пятый custom-атрибут, сунуть его тупо некуда. Если тебе понадобился custom-атрибут типа даты - храни его как varchar, поскольку мест хранения с типом date не предусмотрено. И так далее в том же духе - я тоже затронул мельком и не знаю всех граблей, это то, что запомнилось из матюков тех, кто этим занимался. Ограничение по количеству, есть такое, поэтому и думаю что целесообразно использовать для небольшого количества основных аттрибутов, остальной зверинец в EAV, тип значения тоже дает неприятные моменты, но решаемо, в EAV также можно сделать всего одно поле для значения и плеваться потом. Большой плюс гибких полей в том что атрибут в той же таблице что и сущность, не нужны дополнительные соединения с вертикально организованным хранением атрибутов, просто для разных типов одно и то же поле имеет разное по смыслу значение, например для велосипеда поле может содержать тип велосипеда (хардтейл, двухподвес, складной), а для стиральной машины в том же поле будет тип стиральной машины (вертикальная/горизонтальная загрузка), метаданные о типах атрибутов нужно организовывать что для гибких полей что для EAV. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.09.2019, 17:37 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
iOracleDevБольшой плюс гибких полей в том что атрибут в той же таблице что и сущность Это спорный плюс. Ведь именно он создаёт основные сложности в добавлении новых полей на лету. iOracleDevпросто для разных типов одно и то же поле имеет разное по смыслу значение И это, согласитесь, тоже отнюдь не best practice, а исключительно приспособление к нищете. iOracleDevне нужны дополнительные соединения с вертикально организованным хранением атрибутов Так ведь их не обязательно хранить вертикально. Кроме этого, есть ещё как минимум два подхода: а) Делать дополнительную таблицу и складывать все необходимые custom-атрибуты в неё б) Делать слабо структурированное поле (например, XMLType) и складывать все custom-атрибуты в него. iOracleDevметаданные о типах атрибутов нужно организовывать что для гибких полей что для EAV. В случае OEBS большинство "метаданных о гибких полях" хранилось в голове разработчика. И в этом случае аргумент L_argo про удовольствие строить отчёт по данным, в которых "одно и то же поле имеет разное по смыслу значение" вполне справедлив. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.09.2019, 17:51 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
softwarerпро удовольствие строить отчёт по данным, в которых "одно и то же поле имеет разное по смыслу значение" вполне справедлив. Как, впрочем, он справедлив и для EAV, по той же самой причине ... |
|||
:
Нравится:
Не нравится:
|
|||
05.09.2019, 17:53 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
softwarerЭто спорный плюс. Ведь именно он создаёт основные сложности в добавлении новых полей на лету. В реальности они не добавляются, просто есть запас на "всякий пожарный" случай. Любое разной степени универсальности решение будет накладывать какие то ограничения и неудобства, серебряной пули нет. softwarerВ случае OEBS большинство "метаданных о гибких полях" хранилось в голове разработчика. Да вроде нет там особых вопросов в отчетах, все достается и на самом деле при создании нового типа по моему создается соответствующая вьюха и индексы можно создавать штатными средствами и ключевые поля, т.е. поля по которым будет построен уникальный индекс. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.09.2019, 18:09 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
iOracleDevВ реальности они не добавляются, просто есть запас на "всякий пожарный" случай. И этот запас регулярно исчёрпывался. И начинались всякие непотребства: сначала хранение в одном поле разных по смыслу данных, потом хитрая упаковка и запихивание в одно поле нескольких значений и так далее. iOracleDevЛюбое разной степени универсальности решение будет накладывать какие то ограничения и неудобства Всё же есть качественная разница в уровне этих ограничений. Например, эта же фраза справедлива для РСУБД - это тоже "универсальное решение", которое накладывает ограничения и подходит не везде и не всегда. Но давайте представим, что РСУБД выдвигает ограничение "не больше 10 колонок в таблице". Думаю, мы тут же её выбросим и навсегда забудем, как она называлась. А ведь с custom-атрибутами примерно так и есть. Ограничение ограничению рознь. В общем, лично моё мнение о OEBS-реализации - ниже плинтуса. iOracleDevДа вроде нет там особых вопросов в отчетах, все достается и на самом деле Возможно, при построении отчёта штатными средствами и достаётся. А представьте себе, что хочется использовать какой-нибудь внешний инструмент, ну хотя бы тот же Discoverer? ... |
|||
:
Нравится:
Не нравится:
|
|||
05.09.2019, 18:21 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
softwarersoftwarerпро удовольствие строить отчёт по данным, в которых "одно и то же поле имеет разное по смыслу значение" вполне справедлив. Как, впрочем, он справедлив и для EAV , по той же самой причине Зависит от реализации EAV. В правильной реализации все параметры - строго по назначению. И их верификация не проблема. Как и хранение в любых СУБД, даже старых. К тому же сам EAV не мешает работе базы, т.е. не меняет ее структуру и может быть надстроен над сторонней системой. И уж тем долее не мешает использовать прочие способы хранения данных. Некоторые проблемы с производительностью в большинстве случаев вообще не критичны. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.09.2019, 20:18 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
L_argoЗависит от реализации EAV. В правильной реализации все параметры - строго по назначению. Это никак не мешает "огромному удовольствию" строить отчёты над EAV-данными. Ну просто для примера, допустим, есть следующие данные (в реляционном виде): Номер партииДата поставкиКоличество кирпичейЦена за штуку101.09.2019100015202.09.2019200012.5302.09.2019100012403.09.2019300014 Задача - вывести общее количество и средневзвешенную цену кирпича для всех закупок между 02 и 03 сентября. Как эти данные лежат в EAV - наверное, все примерно понимают, но если важно для ответа - покажите как правильно. Приведёте запрос, решающий эту задачу? ... |
|||
:
Нравится:
Не нравится:
|
|||
05.09.2019, 20:42 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
L_argoЗависит от реализации EAV. В правильной реализации все параметры - строго по назначению. И их верификация не проблема. Что это за "правильная реализация" такая? Покажите ОЦ на EAV, интересуют хотя бы ограничения по типу, размеру, диапазону значений, ссылочная целостность с каскадом и без. И типизированное хранение. L_argoНекоторые проблемы с производительностью в большинстве случаев вообще не критичны. Это откуда такие фантазии? ... |
|||
:
Нравится:
Не нравится:
|
|||
05.09.2019, 22:15 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
Как раз хотел подытожить. Предложены были 4 варианта. 1. EAV + легкость изменений, в т.ч онлайн,++ - грубо говоря, нетипизированное хранилище пентаграммы от ТС примерно равны добавлению бубна 2. @softwarer добавлять табличку с частными данными +весьма просто -на большом объеме доп.параметров начнет загибаться, уже не онлайн 3. Вариант OEBS field1,...fieldX +проверен практикой -нетипизирован, объем новых аттрибутов лимитирован 4.ES+CQRS+DD +Очень универсальный, при определенных условиях задачи быстрый -самая дорогая реализация и в трудозатратах и в вычислительных, неспособна к частым изменениям ... |
|||
:
Нравится:
Не нравится:
|
|||
05.09.2019, 22:56 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
Siemargl-на большом объеме доп.параметров начнет загибаться, Знаете, мне немного смешно. Siemarglуже не онлайн Вы не правы. SiemarglПредложены были 4 варианта Ещё как минимум один Вы забыли. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.09.2019, 23:04 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
softwarerВ общем, лично моё мнение о OEBS-реализации - ниже плинтуса. Я тоже от него не в восторге, тем не менее продукт есть и он вполне рабочий, просто там где он разрабатывался обычно процессы более менее стандартизованы, а у нас каждый идиот предметный специалист придумывает своего сферического коня в вакууме и искренне негодует, что софт для предприятий не калькулятор и не может из коробки обеспечить его безумные хотелки. softwarerВозможно, при построении отчёта штатными средствами и достаётся. А представьте себе, что хочется использовать какой-нибудь внешний инструмент, ну хотя бы тот же Discoverer? Было давно и неправда к тому же недолго, но штатным инструментом был Oracle Reports, соответственно отчет представлял из себя вполне обычные запросы, которые нужно было писать ручками, далее отчет запускался в фоновом режиме или по расписанию и результат в виде pdf-ника помещался в какую то папку, ссылка на файл по завершении выполнения появлялась в системе. softwarerНомер партии Как бы ты делал сквозные аналитики для приход->сток (внутрискладские операци)->отгрузка, причем для разных клиентов (внедрения продукта) набор аналитик которые они используют может отличаться, т.е. должен быть настраиваемым и сквозным? Понятно что с EAV в такой ситуации лучше сразу застрелиться, но как организовать грамотно? ... |
|||
:
Нравится:
Не нравится:
|
|||
05.09.2019, 23:10 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
iOracleDevКак бы ты делал сквозные аналитики для приход->сток (внутрискладские операци)->отгрузка, причем для разных клиентов (внедрения продукта) набор аналитик которые они используют может отличаться, т.е. должен быть настраиваемым и сквозным? Понятно что с EAV в такой ситуации лучше сразу застрелиться, но как организовать грамотно? Хороший вопрос. Думаю, это предмет для отдельного топика, куда более заслуживающего быть в этом форуме, нежели обсуждение EAV. "Грамотно".. не возьмусь утверждать, это слишком далеко от моего опыта. В первую очередь я бы, наверное, подумал над следующим подходом: сделать таблицу "Комбинации аналитик", куда запихнуть поля всех возможных аналитик. При приходовании (либо другой "стартовой" операции) формировать комбинацию по требованиям клиента (с null-ами в неиспользуемых полях), делать select + insert if not found и пихать id найденной комбинации в запись прихода, а оттуда копировать в создаваемые на основании этой. Среди прочего, это позволит в разных ситуациях формировать разные по составу комбинации, например, выставить один свой сервер как сервис и обслуживать на нём одновременно разных клиентов с разными требованиями. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.09.2019, 23:54 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
softwarerSiemargl-на большом объеме доп.параметров начнет загибаться, Знаете, мне немного смешно. Если все параметры в одну таблицу, как тут 21944555 , то да, если для каждой категории - отдельную, то нет softwarerSiemarglуже не онлайн Вы не правы. Можно на ты, я скромный. Скажем так, тут я прав не всегда - зависит от СУБД, позволяет ли она DDL (add column) на используемой таблице. softwarerSiemarglПредложены были 4 варианта Ещё как минимум один Вы забыли.Ок, какой? Дописываем ... |
|||
:
Нравится:
Не нравится:
|
|||
06.09.2019, 00:16 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
SiemarglЕсли все параметры в одну таблицу, как тут 21944555 , то да, если для каждой категории - отдельную, то нет Не уверен, что Вы в данном случае называете категорией. "Как тут" делается следующее: на каждую "основную" таблицу - дополнительная кастомная (расширяемая), привязанная один к одному. SiemarglСкажем так, тут я прав не всегда - зависит от СУБД, позволяет ли она DDL (add column) на используемой таблице. Не только. Таблица ведь малоиспользуемая и не критичная для бизнес-логики, поэтому можно поискать варианты для конкретных СУБД. В принципе вплоть до такого изврата как создание под каждое поле отдельной таблицы - это уж точно пройдёт онлайн. SiemarglОк, какой? Дописываем Неформатированное поле в таблице. XML итп. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.09.2019, 01:00 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
softwarerSiemarglЕсли все параметры в одну таблицу, как тут 21944555 , то да, если для каждой категории - отдельную, то нет Не уверен, что Вы в данном случае называете категорией. "Как тут" делается следующее: на каждую "основную" таблицу - дополнительная кастомная (расширяемая), привязанная один к одному.1. Основная таблица - товар, дополнительная - атрибуты товара не ОК 2.Основная таблица - товар (поле категория товара), дополнительные - разные таблицы атрибутов по категориям: стиральных машинок, атрибуты холодильников ОК 3.Основные таблицы - отдельно стир.машинки, холодильники, утюги. Дополнительная 1 на каждую категорию. ОК softwarer SiemarglСкажем так, тут я прав не всегда - зависит от СУБД, позволяет ли она DDL (add column) на используемой таблице. Не только. Таблица ведь малоиспользуемая и не критичная для бизнес-логики, поэтому можно поискать варианты для конкретных СУБД. В принципе вплоть до такого изврата как создание под каждое поле отдельной таблицы - это уж точно пройдёт онлайн. Не очень понял. Пример, что в магазин завезли вибраторы, и нужны новая категория и набор атрибутовsoftwarer SiemarglОк, какой? Дописываем Неформатированное поле в таблице. XML итп.Ну это для практики поиска по атрибутам нерабочий вариант. Да и НФ0, для блокнотика ... |
|||
:
Нравится:
Не нравится:
|
|||
06.09.2019, 01:12 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
SiemarglОсновная таблица - товар, дополнительная - атрибуты товара не ОК Скажем так, утверждение о том, что при прочих равных некий набор информации "начнёт загибаться" в таком формате и "не начнёт загибаться" в EAV для меня выглядит... сомнительным. SiemarglНе очень понял. Пример, что в магазин завезли вибраторы, и нужны новая категория и набор атрибутов Попробую сформулировать. Я не то чтобы серьёзно отношусь к требованию непрерывного онлайна, по моему опыту, для тех задач, для которых требуются кастомные атрибуты, оно нехарактерно. Тем не менее, я уверен, что если мне выставят подобные требования - я как минимум для Oracle смогу предложить тот или иной приемлемый вариант на основе этого подхода. Думаю, это справедливо не только для Oracle. SiemarglНу это для практики поиска по атрибутам нерабочий вариант. Отнюдь. Зависит от возможностей индексации конкретной СУБД. Наверное, какие-то этого не умеют - но я не стал бы из-за этого называть вариант нерабочим. Тем более что он обладает ценимой Вами максимальной онлайновостью. SiemarglДа и НФ0, для блокнотика Не совсем так. Понятие нормальных форм опирается на понятие атомарности хранимого значения. Само понятие атомарности, если над ним задуматься, специфицировано весьма размыто. Ну например поле даты - оно ведь состоит из дня, месяца, года. Или строковое поле, которое состоит из кучи символов. Какие же это атомарные значения и что такое вообще атомарность? Если подумать над этим, становится очевидным следующее: значение является атомарным тогда и только тогда, когда оно "целым" участвует в операциях бизнес-логики (как минимум в явном большинстве таких операций). Вот у нас есть строковое поле. Если мы делаем с ним такие операции как "прочитать" (целиком), "записать" (целиком), "сконкатенировать с другими" (целиком) - это атомарные значения. Если же мы только и делаем, что "берём первый символ", "берём со второго по пятый символы" и т. п. - значение неатомарно и, соответственно, дизайн нарушает требования 1НФ. Почему я говорю про большинство операций - потому что даже с "вроде бы атомарными" значениями иногда надо выделять части. Скажем, иногда мне нужно взять из лога записи, о том, что случалось с третьего по пятое сентября с девяти до десяти утра - но это не повод объявлять, что datetime поле нарушает 1НФ. Или - ИНН вроде бы вполне себе атомарное значение, мало кто будет хранить его по частям, но его первые цифры дают номер налоговой инспекции, да и контрольный разряд надо вычислять. И это приводит к разумному и практичному выводу: на самом деле "атомарный" - неудачный термин для этого случая (как он в итоге оказался неудачным и для атома, который, как выяснилось, очень даже делим). Понятие атомарности используется по историческим причинам, но то, что в самом деле следовало бы поставить на его место, имеет смысл наподобие "удобно в использовании". Если нам приходится всё время строковыми операциями выщемлять значения из списка через запятую - это неудобно, нарушение 1НФ. Если для выделения, например, месяца из даты есть удобный синтаксис extract - нет проблем, поле даты не нарушает 1НФ даже если кое-где такое выделение происходит. И здесь стоит вспомнить, что понятие атомарности вводилось в те времена, когда в БД не было не то что хранимых процедур, а вообще каких-либо функций. Ну так вот, смысл всей этой портянки в том, что подобное поле "коллекция дополнительных атрибутов" - значение, с которым вполне удобно работать. Главные операции с ним - выдать в интерфейс, получить из интерфейса, отфильтровать по значению какого-либо атрибута - выполняются вполне легко и эффективно. Так что не проблема. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.09.2019, 02:07 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
softwarerL_argoЗависит от реализации EAV. В правильной реализации все параметры - строго по назначению. Это никак не мешает "огромному удовольствию" строить отчёты над EAV-данными. Ну просто для примера, допустим, есть следующие данные (в реляционном виде): Номер партииДата поставкиКоличество кирпичейЦена за штуку101.09.2019100015202.09.2019200012.5302.09.2019100012403.09.2019300014 Задача - вывести общее количество и средневзвешенную цену кирпича для всех закупок между 02 и 03 сентября. Как эти данные лежат в EAV - наверное, все примерно понимают, но если важно для ответа - покажите как правильно. Приведёте запрос, решающий эту задачу? Квинтетная модель была задумана не для написания запросов непосредственно к ней. Этим занимается обвязка, и в моем случае это ядро, которое отображает базовый интерфейс пользователя: редактор структуры данных, навигатор по данным, конструктор запросов и шаблонизатор. В редакторе типов я набросал структуру (метаданные): Вот так эти метаданные лежат в EAV: iduptypordval1110ROOT3300SHORT9900DATE111100BOOLEAN131300NUMBER141400SIGNED161600REPORT_COLUMN2711301Номер партии272900Дата поставки2731300Количество кирпичей2741400Цена за штуку275272271127627327122772742713 ... |
|||
:
Нравится:
Не нравится:
|
|||
06.09.2019, 21:02 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
Я вбил данные в навигаторе, где отображается таблица согласно только что созданной структуре: А вот так эти данные лежат в EAV: iduptypordval2782711112792752781201909012802762781100028127727811528227111228327528212019090228427628212000285277282112.052862711132872752861201909022882762861100028927728611229027111429127529012019090329227629013000293277290114 ... |
|||
:
Нравится:
Не нравится:
|
|||
06.09.2019, 21:05 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
Далее там же в навигаторе я набросал пару запросов, которые приведены ниже. Эта штука называется построитель запросов . Так она выглядит в базовом интерфейсе, но также у неё есть более дружественные пользователю воплощения. Запрос total считает общую сумму за диапазон дат, а запрос Кирпичи взвешивает суммы и считает среднюю. Запрос total я использую как вложенный в запросе Кирпичи. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.09.2019, 21:11 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
Теперь я запускаю отчет Кирпичи и вижу результат. Я задал диапазон дат (FR_date=2&TO_date=3), который используется обоими запросами. Обратите внимание, что я не лезу в EAV, не задумываюсь как строить запрос: я просто перечислил нужные колонки и добавил функции, фильтры и формулы. Девиз IdeaV: «Не сложнее Excel!» ... |
|||
:
Нравится:
Не нравится:
|
|||
06.09.2019, 21:17 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
А вот теперь таки влезем в журнал базы и посмотрим, какой запрос сгенерировало ядро. Вот он: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11.
... |
|||
:
Нравится:
Не нравится:
|
|||
06.09.2019, 21:20 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
Что-то с формулой я накосячил второпях, но не в этом суть ... |
|||
:
Нравится:
Не нравится:
|
|||
06.09.2019, 21:33 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
drynnyЭта штука называется построитель запросов . Так она выглядит в базовом интерфейсе, но также у неё есть более дружественные пользователю воплощения. Я ожидал такого ответа. В общем, неважно, как она выглядит - важно то, что её необходимо использовать и у неё нет альтернативы. Напомню, речь в этом фрагменте шла про "удовольствие построения отчётов". Так вот, получается, что при этом подходе практически недоступно подавляющее большинство инструментов построения отчётов, существующих в мире. Годится только один - тот, который написали Вы. И либо Вы заявите, что он самый лучший, умеет абсолютно всё и для любой задачи годится лучше, чем другие существующие построители - либо мой тезис про то, что такой подход делает построение отчётов хуже и неудобнее, доказан. drynnyОбратите внимание, что я не лезу в EAV, не задумываюсь как строить запрос: я просто перечислил нужные колонки и добавил функции, фильтры и формулы. Это важно для чайников. Более-менее приличный профессионал пишет запрос руками куда быстрее, чем он нащёлкивается в подобном построителе, ну и кроме того я на 99.9% уверен, что если взять, допустим, отчёты из того проекта, над которым я сейчас работаю, окажется, что Ваш построитель не в состоянии реализовать ни один из них - просто интерфейс не позволит сформулировать соответствующий запрос. drynnyЧто-то с формулой я накосячил второпях, но не в этом суть Суть, конечно, не в этом, но деталь показательная. Думаю, если Вы попытаетесь написать этот запрос руками на SQL над обычной реляционной таблицей - не ошибётесь даже с первого раза. Довольно наглядное сравнение сложности. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.09.2019, 21:52 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
softwarerЯ ожидал такого ответа. В общем, неважно, как она выглядит - важно то, что её необходимо использовать и у неё нет альтернативы. Напомню, речь в этом фрагменте шла про "удовольствие построения отчётов". Так вот, получается, что при этом подходе практически недоступно подавляющее большинство инструментов построения отчётов, существующих в мире. Годится только один - тот, который написали Вы. И либо Вы заявите, что он самый лучший, умеет абсолютно всё и для любой задачи годится лучше, чем другие существующие построители - либо мой тезис про то, что такой подход делает построение отчётов хуже и неудобнее, доказан. Да, рискну заявить, что сам подход достаточно прост для постижения, поэтому написать свой построитель будет заметно легче, чем любой из существующих построителей. В большинстве случаев вообще достаточно обертки к существующему, которая делается за полдня, как здесь или здесь . ... |
|||
:
Нравится:
Не нравится:
|
|||
06.09.2019, 22:07 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
drynnyДа, рискну заявить, что сам подход достаточно прост для постижения, поэтому написать свой построитель будет заметно легче, чем любой из существующих построителей. В большинстве случаев вообще достаточно обертки к существующему, которая делается за полдня, как здесь или здесь . Печально. Похоже, Вы искренне не понимаете, о чём вообще речь. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.09.2019, 22:11 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
softwarerdrynnyОбратите внимание, что я не лезу в EAV, не задумываюсь как строить запрос: я просто перечислил нужные колонки и добавил функции, фильтры и формулы. Это важно для чайников. Более-менее приличный профессионал пишет запрос руками куда быстрее, чем он нащёлкивается в подобном построителе, ну и кроме того я на 99.9% уверен, что если взять, допустим, отчёты из того проекта, над которым я сейчас работаю, окажется, что Ваш построитель не в состоянии реализовать ни один из них - просто интерфейс не позволит сформулировать соответствующий запрос. На текущем этапе это, в основном, инструмент именно для чайников и тех, кто пользуется MS Excel. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.09.2019, 22:13 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
softwarerЭто важно для чайников. Более-менее приличный профессионал пишет запрос руками куда быстрее, чем он нащёлкивается в подобном построителе, ну и кроме того я на 99.9% уверен, что если взять, допустим, отчёты из того проекта, над которым я сейчас работаю, окажется, что Ваш построитель не в состоянии реализовать ни один из них - просто интерфейс не позволит сформулировать соответствующий запрос. Дело вообще не в том для чайников или не для чайников. Нормальных, из реального мира, запросов на _этом_ написать вообще не представляется возможным. Для любого среднего анализа это ад, для серьёзного это совершенно нельзя использовать. Даже в MS Access можно решать сложные задачи, а в таком решении ничего дальше примитивнейшего одноклеточного хранения данных придумать невозможно. Ну там, каталог книг какой-нибудь, или что-то такое. Не более того. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.09.2019, 15:06 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
softwarerdrynnyДа, рискну заявить, что сам подход достаточно прост для постижения, поэтому написать свой построитель будет заметно легче, чем любой из существующих построителей. В большинстве случаев вообще достаточно обертки к существующему, которая делается за полдня, как здесь или здесь . Печально. Похоже, Вы искренне не понимаете, о чём вообще речь. А невозможно понять без реального опыта в реальном мире. Очень похоже, что автор не сталкивался с задачами реального мира, придумал себе примитивные задачи, их и решает. Печально, что он тратит время впустую, без какого-либо потенциально выхлопа, даже в теории. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.09.2019, 15:07 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
drynnyНа текущем этапе это, в основном, инструмент именно для чайников и тех, кто пользуется MS Excel. Тех кто пользуется эксель, этот эксель устраивает более чем. Более того, предлагая мощнйшие системы с построителями запросов, сложной и умной фильтрацией, сортировкой, группировкой, и т.д. и т.п., оказывается, что бизнес зачастую быстрее решает свои задачи выгрузкой в эксель и оперированием данными в нём. И предпочитает именно такой подход. Там где не справляется эксель в ход идут отчётные системы, SQL запросы, представления. И здесь _идеал_ даже не в районе плинтуса, а где-то в миллиметровом зазоре между полом и плинтусом. Чистое самоубийство использовать подобные системы в бизнесе. Любой более менее вменяемый специалист подобную систему не то, что не будет рассматривать и рекомендовать бизнесу, он будет категорически против с позицией "вы чё там, головой ударились или грибов объелись?". ... |
|||
:
Нравится:
Не нравится:
|
|||
07.09.2019, 15:14 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
drynnyпоэтому написать свой построитель будет заметно легче, чем любой из существующих построителей. И вот это абсолютная неправда, ложь, которую вы себе придумали. Нет не будет легче ни в чём и ничем. Не тешьте себя идиотскими иллюзиями. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.09.2019, 15:17 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
hVosttsoftwarerЭто важно для чайников. Более-менее приличный профессионал пишет запрос руками куда быстрее, чем он нащёлкивается в подобном построителе, ну и кроме того я на 99.9% уверен, что если взять, допустим, отчёты из того проекта, над которым я сейчас работаю, окажется, что Ваш построитель не в состоянии реализовать ни один из них - просто интерфейс не позволит сформулировать соответствующий запрос. Дело вообще не в том для чайников или не для чайников. Нормальных, из реального мира, запросов на _этом_ написать вообще не представляется возможным. Для любого среднего анализа это ад, для серьёзного это совершенно нельзя использовать. Даже в MS Access можно решать сложные задачи, а в таком решении ничего дальше примитивнейшего одноклеточного хранения данных придумать невозможно. Ну там, каталог книг какой-нибудь, или что-то такое. Не более того. Выше я показывал ролик про рекрутинговую систему 21945654 . Она одноклеточна? Почти всем стартапам и малому бизнесу в принципе этого достаточно. А вот в экселе так не сделаешь, потому что сложно с правами, запросами, формами и прочим. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.09.2019, 16:59 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
drynnyВыше я показывал ролик про рекрутинговую систему 21945654 . Она одноклеточна? Ну и? Никаких преимуществ мета-моделирования в этом нет, весь интерфейс и логика построены по конкретной модели данных. Никаких преимуществ в хранении данных EAV тут также нет, классическое моделирование здесь подойдёт лучше и быстрее, так как логика будет работать со статичными, известным моделями, можно тестировать, покрывать тестами, планировать нагрузку, масштабировать. Ну и опять-таки. На старте всё хорошо обычно, смотрите кнопки нажимаются, данные сохраняются, какой-то воркфлоу, -- ну просто вау! Серьёзно? Мы такие пилоты писали за неделю, на чём попало, и это работало. При чём вплоть до того, что заказчик смотрел и говорил, ну а чё, всё же работает, может того? Запустим? Конечно нет, не запустим, это всё хорошо только на демо. А когда дойдёт до дела, там тысячи ньюансов, когда дойдёт до сложных отчётов, аналитики, за эти костыли хвинтеты можно получить много нелестных эпитетов. drynnyПочти всем стартапам и малому бизнесу в принципе этого достаточно. А вот в экселе так не сделаешь, потому что сложно с правами, запросами, формами и прочим. Ну т.е. вы позиционируете своё детище, как средство для временных пилотов? ХЗ какое в этом преимущество, и на классике решается всё не менее быстро. И с правами, и запросами, и формами, представьте себе. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.09.2019, 18:56 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
drynny, Отнеситесь к критике конструктивно. Нет ни у меня, ни у других задачи -- кого-то или что-то об___ть, зачем? Про очень серьёзные минусы, жирные, важные, критические вам уже сказали. Каких-то серьёзных плюсов я не увидел, ну прям вообще. EAV он и в Африке EAV, как был довольно убогим костылём, так им и останется, что вы с ним не делайте. Учитывая, что я сам много занимался подобным ранее, сам делал и в команде, и даже запускали в продакшен, "смотрите! работает!" -- это вообще не показатель. Из говна и палок можно сделать что-то что работает и даже выглядит сложно. Но это пыль в глаза. На минусы вы просто не реагируете, а аргументы ваши не показательны. Хотя то, что вы хоть что-то показываете и кто-то это даже какт-то использует, оно заслуживает уважения бесспорно. Но не стоит тешить себя иллюзиями, это на старте путь с очень плохими и мутными перспективами, пока вы не порешаете проблемы, которые были озвучены в этом топике. Если вы на них забьёте, то грош цена вашим достижениям. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.09.2019, 19:04 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
hVosttEAV он и в Африке EAV, как был довольно убогим костылём, так им и останется, что вы с ним не делайте. EAV — это просто список. Сам по себе он не может быть убогим костылём, и если вы сталкивались именно с костылём, то это лично ваша заслуга, а не EAV. Как говорится, нечего на него пенять. hVosttПро очень серьёзные минусы, жирные, важные, критические вам уже сказали. Из внятно озвученных минусов есть два: 1) типы данных в поле Value — разные, поэтому СУБД не может обойтись без преобразования 2) сложно написать запрос к EAV, потому что нужно много join и вообще сначала придется собрать метаданные Первый минус касается только прототипа системы, сделанного в РСУБД и показанного тут вам. Сама же квинтетная модель свободна от подобного недостатка, потому что данные, как и в обычной СУБД, хранятся байтами для любых типов. Следовательно, движок QDM будет считывать эти байты и трактовать их нужным образом, имея возможность делать операции, применять индексы и всё прочее. То есть, это не минус QDM, а минус прототипа. По второму пункту, как я уже показал выше, проблема решается ядром системы: оно может преобразовать любой запрос, будь то DDL или DML в запрос к квинтетной модели. Если вы присмотритесь к запросу 21965738 и напишете обычный SQL, то вы убедитесь, что их можно легко транслировать один в другой. Вот тут 21965765 человек печалится, что я не понимаю засады, что людям невозможно использовать Discoverer для обращения к QDM. В то же время я могу выставить QDM во внешний мир так, как будто это, например, Postgre или MySQL какой-нибудь. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.09.2019, 20:27 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
drynny... модель свободна от подобного недостатка, потому что данные, как и в обычной СУБД, хранятся байтами для любых типов...Повешу на стену, как образец тупоумия. Внезапно, все данные в сегодняшних! компьютерах хранятся байтами. Разница только в способах их обработки. Топику посоветую пройти классическое обучение. Кажется, начинают с Дэйта. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.09.2019, 23:48 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
Siemargl, Справедливости ради, атомарная единица это ячейка у которой есть заряд (магнитный или электрический) или его нет, т.е. два состояния или один бит. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.09.2019, 01:03 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
drynny, drynnyИз внятно озвученных минусов есть два: Нет их больше, но и этих хватает. А вы их не решили, вы просто пытаетесь нам впарить, что есть суп циркулем, и забивать гвозди пассатижами, это нормально и даже здорово. Это мы дураки и не лечимся, а не вы. Видимо вы считаете тут всех за идиотов, либо сами реально не понимаете проблем, которые создаёте, а не решаете. drynnyСама же квинтетная модель свободна от подобного недостатка, потому что данные, как и в обычной СУБД, хранятся байтами для любых типов. Следовательно, движок QDM будет считывать эти байты и трактовать их нужным образом, имея возможность делать операции, применять индексы и всё прочее. Нет никакой "квинтетной модели", не существует. Трактование байтов клиентом БД, а не самой БД -- это вообще зачем? Для чего? Десятки лет люди бились над совершенствованием СУБД, оптимизацией типизированного хранения для гарантий целостности, молниеносного доступа, быстрого и удобного оперирования данных с помощью простого единого языка запросов, который понимают все разработчики. Но вы решили просто нивелировать всё это в угоду противному, неудобному оперированию с данными, никому неизвестным образом. И любой, кто в этом решит разобраться, у него волосы на голове зашевелятся, от глубины глупости решения. drynnyПо второму пункту, как я уже показал выше, проблема решается ядром системы: оно может преобразовать любой запрос, будь то DDL или DML в запрос к квинтетной модели. Если вы присмотритесь к запросу 21965738 и напишете обычный SQL, то вы убедитесь, что их можно легко транслировать один в другой. Запрос, который для нормальной схемы пишется в одну строку у вас это превращается в кромешный п....ц из джойнов. А будь что по-сложней, чем посчитать сумму по отфильтрованному набору, там вообще будет жопа. Планы запросов там будут с десятиэтажными матами. И не надо чесать нам про "любой DML запрос". drynnyВот тут 21965765 человек печалится, что я не понимаю засады, что людям невозможно использовать Discoverer для обращения к QDM. В то же время я могу выставить QDM во внешний мир так, как будто это, например, Postgre или MySQL какой-нибудь. Это и называется костыли. Нафига они упали вообще не ясно. Хотите сделать динамическое моделирование? Хранить мета-модель? Та ради бога. Но если вы не можете обеспечить в результате нормальную схему в БД, оно не нужно никому и за даром. EAV это решение для очень узкоспециализированного спектра задач. Вы же его расширили до всех задач. А такое не может быть не наказуемо. В общем, непонятно зачем вы сюда пишите, если критику вы не усваиваете, аргументы у вас какие-то странные и больше смахивают на маркетинг, чем на предметный спор. Спорить даже со слабой позицией можно с целью расширить и углубить свои знания. Но вам это ни к чему, у вас ультимативная позиция и непреклонная вера в свою правоту, вы просто тут зачем-то продаёте откровенные костыли, считая людей за идиотов. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.09.2019, 01:37 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
drynnyА вот теперь таки влезем в журнал базы и посмотрим, какой запрос сгенерировало ядро. Вот он: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11.
Если посмотреть на запрос, то станет понятно, что это даже хуже чем классический EAV, тут просто кромешный п....ц. Из области, как плюнуть на головы всем разработчикам СУБД, утритесь придурки. Ох.. в общем удачи вам с вашими костылями. Не завидую тем, кому вы по ушам поездите и впарите своё непотребство, ой не завидую. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.09.2019, 01:50 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
drynnyДля навигации в этом списке построены 3 упорядоченных указателя – индексы: ID, Entity+Attribute, Attribute+Value При такой организации данных мы можем работать с базой данных любого размера, не имея проблем с производительностью, свойственных системам, построенным на обычном EAV. Прочекал с чего всё началось и... заплакал. Любого размера... Не имея проблем с производительностью... Плевок всторону даже "обычного EAV". Лучше бы вы в сатану верили и приносили ему в жертву девственниц, было бы не так стыдно. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.09.2019, 02:15 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
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.
Если я где-то ошибся в базовой DML - прошу поправить меня. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.09.2019, 14:13 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
mayton, Как реализуются несколько предков для одной сущности и соотношения многие ко многим? ... |
|||
:
Нравится:
Не нравится:
|
|||
08.09.2019, 14:27 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
В квинтетной модели? Понятия не имею. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.09.2019, 14:32 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
iOracleDevmayton, Как реализуются несколько предков для одной сущности и соотношения многие ко многим? По первой ссылке в сообщении mayton 21966285 рассматривается структура для вот этих данных: Давайте её разберем. Здесь есть ссылка на справочник состояний (1 заявка — 1 состояние) и связанная таблица комментариев (1 заявка — много комментариев) Вот это структура квинтета: В метаданных есть базовые типы (строка, число, файл, текст, дата и так далее): и пользовательские типы (стрелками показано как они связаны): А вот как хранятся сами данные: Но пользователю мы их показываем в более привычном виде. Структура: и данные в виде таблиц в начале этого сообщения. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.09.2019, 15:10 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
помню ещё статья была много лет назад на хабре, как засунуть всю БД в одну таблицу ради фана (без патентов, открытии америки и прочих унылых трепетаний), но я чёт не нашёл её к сожалению iOracleDev, видимо до раздела учебника "многие ко многим" ТС не дошёл, надо же было скорее разобраться с патентованием и придумывать название гениального решения для патента drynnyiOracleDevКак реализуются несколько предков для одной сущности и соотношения многие ко многим? По первой ссылке в сообщении mayton 21966285 рассматривается структура для вот этих данных: это шедевр! М:М в примере-то где? :) ... |
|||
:
Нравится:
Не нравится:
|
|||
08.09.2019, 15:34 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
drynny, вы пишете все что угодно но только не DDL. Зачем вы приводите пример конкретной задачи с заявками и комментариями? Я-же это не спрашиваю. Я - спрашивую другое. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.09.2019, 15:34 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
mayton1) Не приводится сравнительный бенчмарк системы ДО декомпозиции на квинтеты и после. Не нашел нигде технических деталей по индексной организации. Сравнение систем, быстродействия и планов запросов приведено в четвертой ссылке вашего сообщения: Запатентованная мечта программиста — часть II habr.com/ru/post/414255 Про индексы написано в стартовом сообщении этой темы: Для навигации в этом списке построены 3 упорядоченных указателя – индексы: ID, Entity+Attribute, Attribute+Value mayton2) Я нарисовал для себя базовую DML но как все понимают без индекса она - неэффективна а беря во внимание универсализм подхода... все петабайты нужно толкать в одну табличку его (индекс) обсуждать НУЖНО. Он является частью АРХИТЕКТУРЫ. Код: plsql 1. 2. 3. 4. 5. 6. 7.
Если я где-то ошибся в базовой DML - прошу поправить меня. В целом правильно. Для Value мы используем 127 байт, а всё, что превышает, записываем в подчиненные записи с типом 0 и заданной очередностью. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.09.2019, 15:36 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
drynnymayton1) Не приводится сравнительный бенчмарк системы ДО декомпозиции на квинтеты и после. Не нашел нигде технических деталей по индексной организации. Сравнение систем, быстродействия и планов запросов приведено в четвертой ссылке вашего сообщения: Запатентованная мечта программиста — часть II habr.com/ru/post/414255 Дружище! Да ты совсем не умеешь презентовать результаты своих достижений! Я расчитывал увидеть вывод. Дескыть квинтетная системы позволяет сэкономить 30% датасемгента и бла-бла... упростить дизайн и в то-же время дает просадку на 15% по сравнению с классической реляционной моделью на конкретных запросах конкретной продуктовой задачи. Этого нигде нет! Это разбросано по всей статье равномерным слоем! Это - не акцентировано. А ведь это - главное. В целом правильно. Для Value мы используем 127 байт, а всё, что превышает, записываем в подчиненные записи с типом 0 и заданной очередностью. Но зачем? БД - позволяет! ... |
|||
:
Нравится:
Не нравится:
|
|||
08.09.2019, 15:46 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
mayton, а в статьях там все графики, взятые с потолка, и ничего, что можно было бы взять и проверить самому на практике. об этом уже и в комментариях писали, но ТС тупо наплевал. вот вам нарисовал в пейнте красные и зелёные линии, не хотите -- не верьте дело ваше ... |
|||
:
Нравится:
Не нравится:
|
|||
08.09.2019, 15:51 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
hVosttmayton, а в статьях там все графики, взятые с потолка, и ничего, что можно было бы взять и проверить самому на практике. об этом уже и в комментариях писали, но ТС тупо наплевал. вот вам нарисовал в пейнте красные и зелёные линии, не хотите -- не верьте дело ваше Не гоните, да не гонимы будете. Там везде есть ссылки самому пощупать, часто с админскими правами. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.09.2019, 15:56 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
iOracleDevmayton, Как реализуются несколько предков для одной сущности и соотношения многие ко многим? Собственно Многие-ко-многим будут выглядеть так: iduptypordval348300Гость349300Номер3501300Бронирование351348003523490035335135013553523502 Для вот такой структуры, когда много гостей бронируют много номеров: ... |
|||
:
Нравится:
Не нравится:
|
|||
08.09.2019, 16:00 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
drynnyНе гоните, да не гонимы будете. Там везде есть ссылки самому пощупать, часто с админскими правами. Пока ни в статьях, ни по ссылкам нет ничего, что можно было бы прогнать локально на своём железе. Что толку щупать ваш интерфейс с админскими правами? Речь про бенчмарки и возможность написать, например, рекурсивные табличные запросы, оконные функции, сложные выборки со сложными подвыборками и т.д. и т.п. Поэтому выглядит это как шоу с фокусами на средневековом рынке. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.09.2019, 16:05 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
Это больше похоже на иерархическую DBMS реализованную поверх реляционной. Наподобие Lotus и всяких там М-систем. А эти магические константы такие как 3 и 13 - зарезервированы? (Вы не обижайтесь если я спрашиваю что-то что уже упомианлось в ваших статьях. Они плохо структурированы и без глоссариев. Трудно искать ответы на простые вопросы а я- нетерпеливый.) ... |
|||
:
Нравится:
Не нравится:
|
|||
08.09.2019, 16:14 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
drynny Прошу помочь мне с названием для этой структуры и/или подхода вообще. heap small bunch little (куча мала) ... |
|||
:
Нравится:
Не нравится:
|
|||
08.09.2019, 16:15 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
Патчик на свой DDL. Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14.
... |
|||
:
Нравится:
Не нравится:
|
|||
08.09.2019, 16:26 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
maytonЧто такое "attribute" ? Где в таблице этот чортов attribute? Это parent. Автор замыслил хранить примерно такое дерево: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11.
... |
|||
:
Нравится:
Не нравится:
|
|||
08.09.2019, 16:39 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
softwarerЭто parent. Прошу прощения, сверился, у него это называется не parent, а typ. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.09.2019, 16:43 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
mayton Код: sql 1.
Это ссылка на запись, которая является типом, видимо.. mayton Код: sql 1.
1. для атрибутов в мета-типе, у них есть порядок 2. для связи М:М как в примере выше, тож есть порядок 3. для большого значения >127 байт 4. чет ещё? Кстати, если значение будет разбито посередине 127 байт, то как искать по подстроке без конкатенации? видимо никак. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.09.2019, 16:43 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
hVostt1. для атрибутов в мета-типе, у них есть порядок 2. для связи М:М как в примере выше, тож есть порядок 3. для большого значения >127 байт 4. чет ещё? Напоминает то, как писали софт в шестидесятые годы. Правда, тогда последнему идиоту не пришло бы в голову строить одну модель данных над другой, совершенно перпендикулярной. Тогда бы эти "квинтеты" реализовали бы поверх байтиков на диске, и не исключено, получили бы вполне приличное для тех лет решение, какой-нибудь предок ADABAS-а. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.09.2019, 16:49 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
softwarermaytonЧто такое "attribute" ? Где в таблице этот чортов attribute? Это parent. Автор замыслил хранить примерно такое дерево: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11.
Аха... Он через иерархию хочет описать реляцию? А всегда-ли это возможно? А если у меня будет one-to-many-to-one-to-many? ... |
|||
:
Нравится:
Не нравится:
|
|||
08.09.2019, 19:48 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
mayton...Он через иерархию хочет описать реляцию? А всегда-ли это возможно? А если у меня будет one-to-many-to-one-to-many?Это вроде и есть родная структура иерархии. Или же ты не так выразился ... |
|||
:
Нравится:
Не нравится:
|
|||
08.09.2019, 19:58 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
maytonАха... Он через иерархию хочет описать реляцию? А всегда-ли это возможно? А если у меня будет one-to-many-to-one-to-many? Можно. И гвозди тоже можно микроскопом забивать. Другое дело, что лично я не нашёл ответа на вопрос, на кой нужно было всё в одну таблицу засовывать. В чём профит? Ещё вопрос вызывает патентование схемы данных. Сам по себе патент не страшен, ценности подобная схема не представляет, она даже не нулевая, она отрицательная. Но вот сам прецедент вызывает опасения. Тем более, что всё держится чисто на индексации БД. Если бы оно шло со своей БД со своими индексами -- ради бога, но нет. Если там и правда патент, голову бы оторвать тем, кто подобное допустил. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.09.2019, 20:48 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
softwarerНапоминает то, как писали софт в шестидесятые годы. Правда, тогда последнему идиоту не пришло бы в голову строить одну модель данных над другой, совершенно перпендикулярной. Тогда бы эти "квинтеты" реализовали бы поверх байтиков на диске, и не исключено, получили бы вполне приличное для тех лет решение, какой-нибудь предок ADABAS-а. Это называется клиника. Когда ищешь не эффективное решение, а наиболее хитровывернутым способом с переподвыподвертом решить абсолютно тривиальную задачу. Но до меня начало таки доходить в чём смысл. Дело в патенте. Да, я уже встречался с таким. Когда человек патентует наколеночное решение, элементарный алгоритм на экселе, который любое школо-ло напишет за пару дней, но оно уже в продакшене и в крупной компании. А потом тупо ходит и снимает сливки. Это не шутка, в моей практике я с этим сталкивался. И тогда всё становится на свои места. Все эти квинтеты -- не более чем пыль в глаза. Тут не нужно ума палата, что увидеть, что решение -- хреновое по всем фронтам, и это ещё мягко сказано. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.09.2019, 20:54 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
hVostt, Да мне тоже непонятно зачем данные и метаданные нужно хранить в общей таблице. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.09.2019, 21:12 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
hVosttДа, я уже встречался с таким. Когда человек патентует наколеночное решение, элементарный алгоритм на экселе, который любое школо-ло напишет за пару дней, но оно уже в продакшене и в крупной компании. А потом тупо ходит и снимает сливки. Это не шутка, в моей практике я с этим сталкивался. А что он запатентовал и где? Иерархические СУБД известны давно, закостылить разрешение отношений сущностей и множественное наследование, скрестить с EAV и попытаться запихнуть в реляционную субд, все это уже давно в том или ином виде делалось, он не пионер, если покопаться в дореляционной эпохе и в ее начале, таких опубликованных в виде статей материалов найдется вагон и маленькая тележка, по идее его патент не должен был быть принят, нельзя патентовать общеизвестные вещи и вещи которые публиковались ранее. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.09.2019, 21:44 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
hVosttsoftwarerНапоминает то, как писали софт в шестидесятые годы. Правда, тогда последнему идиоту не пришло бы в голову строить одну модель данных над другой, совершенно перпендикулярной. Тогда бы эти "квинтеты" реализовали бы поверх байтиков на диске, и не исключено, получили бы вполне приличное для тех лет решение, какой-нибудь предок ADABAS-а. Это называется клиника. Когда ищешь не эффективное решение, а наиболее хитровывернутым способом с переподвыподвертом решить абсолютно тривиальную задачу. Но до меня начало таки доходить в чём смысл. Дело в патенте. Да, я уже встречался с таким. Когда человек патентует наколеночное решение, элементарный алгоритм на экселе, который любое школо-ло напишет за пару дней, но оно уже в продакшене и в крупной компании. А потом тупо ходит и снимает сливки. Это не шутка, в моей практике я с этим сталкивался. И тогда всё становится на свои места. Все эти квинтеты -- не более чем пыль в глаза. Тут не нужно ума палата, что увидеть, что решение -- хреновое по всем фронтам, и это ещё мягко сказано.Какие еще патенты на алгоритмы? Это только в штатах. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.09.2019, 22:00 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
Siemargl, При чем тут штаты? У нас тоже есть патентное бюро. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.09.2019, 22:29 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
iOracleDevА что он запатентовал и где? Иерархические СУБД известны давно, закостылить разрешение отношений сущностей и множественное наследование, скрестить с EAV и попытаться запихнуть в реляционную субд, все это уже давно в том или ином виде делалось, он не пионер, если покопаться в дореляционной эпохе и в ее начале, таких опубликованных в виде статей материалов найдется вагон и маленькая тележка, по идее его патент не должен был быть принят, нельзя патентовать общеизвестные вещи и вещи которые публиковались ранее. В статьях на хабре они об этом писали. Собственно я реально больше не могу найти ни одного вменяемого объяснения этой вакханалии. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.09.2019, 22:32 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
maytonhVostt, Да мне тоже непонятно зачем данные и метаданные нужно хранить в общей таблице. Кто сказал про таблицу? В постановке задачи про таблицу ничего нет: Как назвать эту структуру и подход, основанные на EAV? . Всё несколько хуже иначе, чем вам это кажется на первый взгляд. И я сейчас не о патентной паранойе (не уподобляйтесь хабрадолдонам, прошу). Обсуждаемый подход хранит квинтеты на носителе (диске, флэшке, RAM), сплошным ковром. Их можно хранить в порядке возрастания ID, чтобы сэкономить на одноименном индексе. Также на диске хранится подобие индекса по двум значениям квинтета: Entity+Attribute, Attribute+Value, чтобы можно было быстро найти физический адрес квинтета на том ковре, не зная ID, но имея ID его родителя или ID типа и значение. Всё это обслуживается ядром, функционал которого примерно на 98% уже сделан в любой РСУБД, поэтому эмуляция этого подхода была сделана в РСУБД. Это временно — прототип, сделанный для подтверждения концепции. Далее мы перепишем ядро какой-то свободной СУБД: выкинем лишнее и допишем совсем немного (даже скорее соберем из других мест СУБД). А вам, уважаемый Хвост, предлагаю встретиться здесь лет через пять и обсудить тему. Если вас не прихлопнут, конечно, в глухой подворотне за ваш язык и манеру общения. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.09.2019, 22:53 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
drynnyА вам, уважаемый Хвост, предлагаю встретиться здесь лет через пять и обсудить тему. Отличное предложение. Форум видел многих энтузиастов-изобретателей, и подобное предложение звучало не раз - но Вы имеете шанс стать первым, кто таки действительно придёт и покажет свои успехи. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.09.2019, 22:59 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
maytonПатчик на свой DDL. Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14.
У меня вот так: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15.
... |
|||
:
Нравится:
Не нравится:
|
|||
08.09.2019, 23:01 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
drynny, ok я поменяю порядок колонок. А имена почему такие сокращенные? Я с вашего позволения сохраню свои. Мне они... более информативны. И что MySQL является вашей основной платформой разработки? КМК это не наилучший выбор. ADD KEY t_val (t,val) - это я так понимаю модный аналог CREATE INDEX... ... |
|||
:
Нравится:
Не нравится:
|
|||
08.09.2019, 23:10 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
hVosttSiemargl, При чем тут штаты? У нас тоже есть патентное бюро.У нас и в Европе алгоритмы не патенуются ... |
|||
:
Нравится:
Не нравится:
|
|||
08.09.2019, 23:21 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
drynnymaytonhVostt, Да мне тоже непонятно зачем данные и метаданные нужно хранить в общей таблице. Кто сказал про таблицу? В постановке задачи про таблицу ничего нет: Как назвать эту структуру и подход, основанные на EAV? . Всё несколько хуже иначе, чем вам это кажется на первый взгляд. И я сейчас не о патентной паранойе (не уподобляйтесь хабрадолдонам, прошу). Обсуждаемый подход хранит квинтеты на носителе (диске, флэшке, RAM), сплошным ковром. Их можно хранить в порядке возрастания ID, чтобы сэкономить на одноименном индексе. Также на диске хранится подобие индекса по двум значениям квинтета: Entity+Attribute, Attribute+Value, чтобы можно было быстро найти физический адрес квинтета на том ковре, не зная ID, но имея ID его родителя или ID типа и значение. Друг. Это не будет работать! Я имею в виду сплошным ковром. Эволюция DBMS показывает что типизированные и dbf подобные файловые штуки не летают! Они могут работать только в том случае когда твоя система - рид-онли. Но как только по ней пойдут транзакции на обновление - твой ковер посыпется. В нем появится плавающее свободное пространство и только ондному богу известно какие надо ставить параметры ватер-линии для блоков страниц и сегментов. Да к чему это! Это уже 20 лет решено в реляционных базах. Это вынесено в механику движков. А ты что? Пытаешся еще и одним махом решить задачу ХРАНЕНИЯ? Это вообще капец нерешаемая задача особенно в условиях когда работаем с документооборотм произвольной системы Х в которой нет ни таблиц ни каких статистических свойств ни закономерностей. Есть просто простыня атрибутов и значений. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.09.2019, 23:31 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
SiemarglУ нас и в Европе алгоритмы не патенуются Техническое решение, не сам алгоритм. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.09.2019, 23:35 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
Просто как я услышал про сортировку с целью оптимизации какого-то там хранения - мой ДБА-шный мозг не выдержал. Пока грелась идея об альтернативе ЕАВ - мне было понятно. Типизация там. Дерево - тоже понятно. Метадата как часть основных данных. Но когда афтор говорит об альтернативных RAM, флешках ... тут мне стало плохо и почему-то вспомнились создатели FVMAS, Стебелек и прочие Кроносы. Вобщем обозначте приоритеты вашей системы. Главный приоритет - универсализм мы все поняли и вроде-бы даже никто и не поспорил. Конструкторы там... Вобщем вот в таком вот аспекте. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.09.2019, 23:37 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
Знатный холивар получился... Пора завязывать. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.09.2019, 23:41 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
drynnyА вам, уважаемый Хвост, предлагаю встретиться здесь лет через пять и обсудить тему. Если вас не прихлопнут, конечно, в глухой подворотне за ваш язык и манеру общения. Хм.. drynnyне уподобляйтесь хабрадолдонам, прошу Хех, ну лан ))) Я понял. Вы делаете свою СУБД. Сейчас у вас есть DML, и визуальное проектирование "движком", а там не за горами и DDL. Понял-понял. Профитами тут не пахнет, решается задача с нуля придумать способ хранения схемы и данных. Ну просто непонятно, зачем это? Ведь всё это можно делать и в любой СУБД. Создавать таблицы, добавлять атрибуты и с помощью DDL и с помощью визуальных редакторов, гораздо по-мощнее вашего надо сказать. Более того, существуют средства, как из UML получить готовенькую БД, дофигища решений. Конечно, чтобы не изобретать, вам придётся подстраваться, ODBC, JDBC и прочие интерфейсы городить. SQL опять же, ваш язык всёж нафиг никому не упёрся, как не крути. Даже NoSQL давно осознали, что SQL даже со всеми своими недостатками это маст хев и многие приделали или приделывают к себе SQL синтаксис для запросов. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.09.2019, 23:43 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
d7iЗнатный холивар получился... Пора завязывать. Да нет холивара. Клещами из парня вытаскивают информацию, раскалёнными. Только сейчас выяснилось, что речь не о способе организации данных в СУБД, а вообще в целях своя СУБД. И пока этой СУБД в итоге не будет говорит не о чем совершенно. Так называемый "прототип", лежащий в единственной табличке, это курам на смех, а не решение. Но может (чем чёрт не шутит), своё решение будет не так уж катастрофически сильно отставать от СУБД версий эдак 2000-ых годов. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.09.2019, 23:47 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
Еще один патчик. Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15.
... |
|||
:
Нравится:
Не нравится:
|
|||
08.09.2019, 23:50 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
mayton Код: plsql 1. 2. 3.
в данном случае тип данных это не примитив, а домен поиск по домену, вроде понятно ... |
|||
:
Нравится:
Не нравится:
|
|||
09.09.2019, 00:54 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
все мои вопросы и критика в связи с новой полученной информацией, кстати, снимаются :) новая субд! ... |
|||
:
Нравится:
Не нравится:
|
|||
09.09.2019, 00:56 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
maytonА эти магические константы такие как 3 и 13 - зарезервированы? ПОзволю свою ремарку по этому поводу.... это не константы, это обычные квинтеты, они не то что бы зарезервированы, они просто так записаны в БД. Эти цифры указывают на тип данных (это в статьях на хабре и картинках, скопированных автором топика сюда): 3 - это number, 13 - это string Дата Заезда будет иметь up=9 Если я правильно уловил суть, то в случае, если Вы будете создавать свою БД на основе квинтетов тип number вполне может иметь любое другое значение ... |
|||
:
Нравится:
Не нравится:
|
|||
09.09.2019, 07:15 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
drynny Собственно Многие-ко-многим будут выглядеть так: iduptypordval348300Гость349300Номер3501300Бронирование351348003523490035335135013553523502 Почему "Гость" имеет тип string? Из-за того, что ФИО гостя надо записать в столбец value для id=351? Почему "Бронирование" имеет тип "number"? Вообще не смог придумать вариантов... А даты проживания куда писать? P.S. Ну какие же тупые эти диванные эксперты... ... |
|||
:
Нравится:
Не нравится:
|
|||
09.09.2019, 07:58 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
Mr.Fontaine, Там ошибка copy/paste. Вот структура для бронирования с датами бронирования, заезда и выезда. idtypeparentordervalue1110ROOT3300SHORT4400DATETIME8800CHARS9900DATE131300NUMBER141400SIGNED349300Номер3501300Бронирование351348003523490035335135013553523502356400Дата бронирования357900Заезд358900Выезд359356350336035735043613583505 ... |
|||
:
Нравится:
Не нравится:
|
|||
09.09.2019, 08:41 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
Теперь "Гость" потерян. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.09.2019, 08:55 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
drynny, похоже опять copy/paste подвёл (строки с id=348 нет). ну да ладно Плохо, что у некоторых строк столбйы value пустые.... Так ФИО гостя записывается в строку с id=353? А зачем id=351? ... |
|||
:
Нравится:
Не нравится:
|
|||
09.09.2019, 08:55 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
maytonДруг. Это не будет работать! Я имею в виду сплошным ковром. Эволюция DBMS показывает что типизированные и dbf подобные файловые штуки не летают! Они могут работать только в том случае когда твоя система - рид-онли. Но как только по ней пойдут транзакции на обновление - твой ковер посыпется. В нем появится плавающее свободное пространство и только ондному богу известно какие надо ставить параметры ватер-линии для блоков страниц и сегментов. Да к чему это! Это уже 20 лет решено в реляционных базах. Это вынесено в механику движков. А ты что? Пытаешся еще и одним махом решить задачу ХРАНЕНИЯ? Это вообще капец нерешаемая задача особенно в условиях когда работаем с документооборотм произвольной системы Х в которой нет ни таблиц ни каких статистических свойств ни закономерностей. Есть просто простыня атрибутов и значений. Да, брат, штука в том, что это уже работает . Да, в виде прототипа в самой замухрыжистой СУБД, с огромными накладными расходами, с избыточной организацией данных и прочим. Если бы не было этого прототипа и ролика и разных тестов, то твое заявление звучало бы убийственно. Но прототип есть, и заявление уже не канает. Я могу забить весь терабайтный диск квинтетными данными (с документооборотом произвольной системы Х), сделать на нём приложение и оно будет вполне сносно работать. А теперь я постепенно буду выкидывать из СУБД ненужное (например, ограничение на размер полей неактуально и много там всего), добавлять работу с данными, которая сейчас в ядре прототипа, сокращать избыточность и менять другие вещи под себя (да-да, я знаю, о чем говорю), чтобы работало всё это всё более и более быстро. В итоге будет уже не исходная СУБД, а тот ковер — решение твоей нерешаемой задачи. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.09.2019, 09:01 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
drynnyДа, брат, штука в том, что это уже работает . Да, в виде прототипа в самой замухрыжистой СУБД, с огромными накладными расходами, с избыточной организацией данных и прочим. Если бы не было этого прототипа и ролика и разных тестов, то твое заявление звучало бы убийственно. Но прототип есть, и заявление уже не канает. Я могу забить весь терабайтный диск квинтетными данными (с документооборотом произвольной системы Х), сделать на нём приложение и оно будет вполне сносно работать. А теперь я постепенно буду выкидывать из СУБД ненужное (например, ограничение на размер полей неактуально и много там всего), добавлять работу с данными, которая сейчас в ядре прототипа, сокращать избыточность и менять другие вещи под себя (да-да, я знаю, о чем говорю), чтобы работало всё это всё более и более быстро. В итоге будет уже не исходная СУБД, а тот ковер — решение твоей нерешаемой задачи. 1) Давай я вместо ковра тебе предложу некоторые решения. - BerkeleyDb. Это старичок от мира Unix. Работает уже давно. О нём мало кто знает в мире NoSQL что удивительно. - Tarantool. Развитая система индексов + оптимизации для In-Memory и быстрых вставок для дискового хранилища. Все вышеперечисленные системы должны поддерживать вторичные индексы. 2) Мне очень не нравится термин "оно будет вполне сносно работать". От него пахнет непопаданием в SLA и NFR. Вобщем нужно его ужесточить. Акцентировать на том что система ориентирована только на документоообоот. И не предполагает long-term transactions, и аналитики. Про консистентность тоже умолчим. Будем просто надеятся что операции а документами будут обеспечиваться атомарностью логики основного приложения. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.09.2019, 09:23 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
d7iЗнатный холивар получился... Пора завязывать. наоборот!!! drynny... (да-да, я знаю, о чем говорю) ... это "квинтет головного мозга" запущенный случай, не спугните пациента, изучим его получше ... |
|||
:
Нравится:
Не нравится:
|
|||
09.09.2019, 09:56 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
Нет никакого холивара. Я пока вижу - нехватку очебного материала по этим квинтетам. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.09.2019, 09:58 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
maytonНет никакого холивара. Я пока вижу - нехватку очебного материала по этим квинтетам. Я пока вижу нехватку цели. У любой разработки есть/должна быть некая цель - та задача или класс задач, которые она предназначена решать "действительно хорошо" - в смысле, лучше других. Именно эта цель определяет методику решения и дизайн проекта. РСУБД появились для того, чтобы просто и надёжно работать с данными. NoSQL появились для того, чтобы эффективно заменить РСУБД в некоторых задачах, для которых те слишком уж не подходят. А для чего нужна "квинтетная модель", какую задачу она решает лучше других? Тайна великая есмь. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.09.2019, 10:17 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
Мда. Согласен. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.09.2019, 11:12 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
Еще один патчик для учебного примера. Архитектора прошу сделать 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.
... |
|||
:
Нравится:
Не нравится:
|
|||
09.09.2019, 11:53 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
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 году я сделал первый проект на этом подходе и с тех пор его развиваю, не программируя, а разрабатывая (тут большая разница). ... |
|||
:
Нравится:
Не нравится:
|
|||
09.09.2019, 13:36 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
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.
Ну, норм, только добавить нужно: Код: sql 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
09.09.2019, 13:40 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
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 а нечто другое" -- попытка сместить фокус внимания от реальности, характеризуется обыкновенным фанатизмом. Не нужно. Перед вами не та аудитория, зачем вот это вот всё? Все, значит, идиоты, и на своих питонах делают лабуду, которую вы можете сделать накликав мышкой? Серьёзно? Открыли священный грааль, который не дался ни одной, мировой крупной компании? Ну что вы в самом деле. Давайте будем реалистами, и говорить о конкретных вещах и оставаться в конструктивном русле инженерных решений и доказательсв. А пока в ваших словах какой-то унылый маркетинг и реклама ... |
|||
:
Нравится:
Не нравится:
|
|||
09.09.2019, 14:08 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
drynnyПотому что сложно одновременно знать (0) язык программирования и SQL, (1) доскеры/кубернетисы/спринги/свн и CI/CD ботва, на которую забивают, (2) теорию баз данных и лучшые практики, (3) html/css/js/less/gulp/..., (4) бизнес и его нужды, (5) элементарные принципы общения с заказчиком и решения вопросов. Опять таки, давайте по пунктам. 0. У вас нет ЯП? Нельзя писать логику? 1. У вас нет девопса? "Разработка" на продакшене? Само себя как-нибудь развёртывает? 2. Не нужны компетенции в моделировании данных? Оно само как-нибудь? 3. UI сам себя пишет? UX сам решается? 4. Нужды бизнеса лесом, главное квинтеты? 5. Общаться с заказчиком не нужно, пусть сам тыкает мышью? ... |
|||
:
Нравится:
Не нравится:
|
|||
09.09.2019, 14:19 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
Сам я IT-энтузиаст с 1989 года Ууу все бесполезно, голос разума услышан не будет, такие "кулибины" в каждом виде деятельности находятся, они ищут себе сектантов-адептов и садятся им на уши. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.09.2019, 14:47 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
hVosttВы не ответили на вопрос. Такую задачу решают конструкторы, 1С, SAP и т.д. Я-то ответил, просто вы не хотите увидеть связь. Как раз квинтеты и позволяют создать конструктор и, в отличие от 1С и SAP, в нём нужно будет намного меньше и проще программировать. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.09.2019, 15:21 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
drynnyЦель — ускорить разработку и снизить порог вхождения для человека с программистским складом ума. Да, именно эту, простите за выражение, фигню я и ожидал услышать. "Ускорение разработки" и прочее, о чём Вы писали, не имеет ни малейшего отношения к структуре хранения данных на низовом уровне. Между ними просто нет никакой связи. Вы родили этот маркетинговый буллшит абы что-то сказать, и Ваш ответ показывает - как, собственно, и было очевидно, но из вежливости следовало проверить - что Вашей настоящей целью, как и у других бездумных энтузиастов, было "давай-ка я забабахаю псевдокрутую хрень и потешу ЧСВ, это гораздо интереснее, чем учиться правильно решать задачи". Насколько я понял, Вы развиваете это решение с 2006-го года, то есть без малого пятнадцать лет. Несмотря на накопленный за это время опыт успешных проектов, Вы не смогли без ошибки решить простейшую задачу со средневзвешенным - это очень наглядно показывает, насколько Ваше решение в действительности облегчает и ускоряет разработку. То, что Вы, получив на выборке чисел 11, 12 и 15 среднее 4.93 (если мне память не изменяет) не остановились и не задумались, всё ли правильно сделали - ещё более наглядно показывает Ваш опыт в работе с данными. Короче говоря, уж извините, но когда Вы говорите о "профессиональной работе" и о "программистском мышлении" - стоит больших усилий удержаться от откровенного хохота. В общем, действительно, приходите через пять лет и приносите нового лидера мирового рынка RAD. Обещаю, я буду здесь под тем же ником. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.09.2019, 15:36 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
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.
И она работает! Ещё можно добавить отдельно связи с разными параметрами. Хотя и так связи можно выразить через значения атрибутов-связей. Тут всё понятно, всё семантически разложено и даже поддерживается СУБД. Например, вы не можете указать вместо типа сущности, тип атрибута, или вместо сущности сослаться на тип, СУБД не даст. Такое можно сопровождать, и даже запросы будут проще, чем у вас. Тут ваши зубодробительные квинтеты можно разложить по таблицам нормальным и понятным образом. Конечно это всё равно хуже нормализованной БД по ряду причин, но со своими плюсами (динамика), однако на порядки лучше ваших квинтетов, которые без каких-либо видимых причин вносят непомерную сложность. Вы сами видите, до сих пор народ не может въехать толком как ваша байда должна работать. Ну и нафига это всё? До сих пор непонятно, уже какая страница пошла, а вы всё ответить не можете, для чего такой овер-инжениринг был нужен? Какую цель это решает? Ну зачем это всё? Может вы недостаточно всё усложнили? Может 5 полей -- это много? Давайте как-нибудь в 3 уместим? В идеале конечно, всё в одно поле одной таблицы всё засунуть, давайте идти до конца. Ну зачем эти глупые полумеры? :) ... |
|||
:
Нравится:
Не нравится:
|
|||
09.09.2019, 15:58 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
hVostt Код: sql 1. 2. 3. 4. 5. 6. 7.
И вот вам простая математика. Здесь для того, чтобы задать значение атрибута нужно всего 3 поля. У вас для этого понадобится 5. В отдельных случаях поля вашего квинтета лежат мёртвым грузом. hVostt Код: sql 1. 2. 3. 4. 5. 6.
А для записи сущности -- всего 2 поля, вместо 5. С другой стороны, если я хочу добавить информации, которая характеризует все сущности (например, время создания, автора и т.д. и т.п.), я легко могу это сделать здесь. В ваших квинтетах это будут атрибуты динамической модели, в то время как эти атрибуты явно статические. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.09.2019, 16:02 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
hVostt, Если мы сможем извлечь из квинтетной системы обобщенный интерфейс и внимательно его осмотрим - то мне кажется что на уровне системы хранения может встать обычная документная БД типа Mongo или CouchDb. Я не берусь это доказывать, но я вижу что квинтеты это даже ... Хм...избыточно что-ли. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.09.2019, 17:18 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
Вспомнил. что где-то я это уже в каком-то виде видел, было такое дежавю. Типа похожую, по стилистике конструкцию ======================= Я.А.Фельдман Создаем информационные системы Разработка прикладных информационно-управляющих систем для предприятий, организаций и средней школы — это просто! с компакт-диском. 2006 http://www.dom-spravka.info/biblio/files_knig/d_um_oss/inf_sistemi.pdf ======================= Не ну..... что то же работает, внедрено и тп. Ну и дальше, чтобы еще лучше и больше, и быстрее и выше и сильнее! ... |
|||
:
Нравится:
Не нравится:
|
|||
09.09.2019, 17:23 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
maytonЕсли мы сможем извлечь из квинтетной системы обобщенный интерфейс и внимательно его осмотрим То окажется, что и интерфейс тоже не представляет никакой заметной ценности. maytonмне кажется что на уровне системы хранения может встать обычная документная БД Или не документная. Или вообще что угодно. Хоть REDIS, хоть Teradata. Имхо, это очевидно. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.09.2019, 17:35 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
hVostthVostt Код: sql 1. 2. 3. 4. 5. 6. 7.
И вот вам простая математика. Здесь для того, чтобы задать значение атрибута нужно всего 3 поля. У вас для этого понадобится 5. В отдельных случаях поля вашего квинтета лежат мёртвым грузом. Я пробовал использовать EAV с типизацией. Что-то типа Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13.
Не очень изящно зато есть гарантия строгости по типам. И есть надежда что количество типов в системе - величина достаточно постоянная. 1 раз создал и забыл. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.09.2019, 19:32 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
maytonНе очень изящно зато есть гарантия строгости по типам. И есть надежда что количество типов в системе - величина достаточно постоянная. 1 раз создал и забыл. В таком ключе, как не крути, стоит использовать NoSQL. Там эта проблема решена и довольно изящно. Более того, если хранить мета-данные типов и атрибутов отдельно, в самой БД легко хранить данные в коллекциях, где коллекция это имя сущности, динамическое, и поля с именем атрибутов. Вообще шикардос. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.09.2019, 20:09 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
В общем, объяснения, зачем и кому упали эти квинтеты так мы и не получилось, и найти самостоятельными изысканиями тоже не удалось. Посему объяснения два: 1. пантенты, патентный троллинг. чего, кого хз, возможно собрать сливки после внедрения и запретить саму возможность стороннему вендору предлагать свои решения поверх данной бредовины. 2. автор изобрел для себя священную корову, и чем она сложнее внутри, тем для него лучше. с таким я тоже сталкивался, и... чего греха таить, сам подобным болел в глубокой молодости. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.09.2019, 20:12 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
Давайте рисовать API к этой системе. В конце концов идея определяется не квинтетами а методами доступа. Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.
Можно начать с поисков по индексированным полям. И иерархическим запросам. Архитектор? ... |
|||
:
Нравится:
Не нравится:
|
|||
09.09.2019, 20:15 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
hVosttmaytonНе очень изящно зато есть гарантия строгости по типам. И есть надежда что количество типов в системе - величина достаточно постоянная. 1 раз создал и забыл. В таком ключе, как не крути, стоит использовать NoSQL. Там эта проблема решена и довольно изящно. Более того, если хранить мета-данные типов и атрибутов отдельно, в самой БД легко хранить данные в коллекциях, где коллекция это имя сущности, динамическое, и поля с именем атрибутов. Вообще шикардос. Да я тоже склоняюсь к тому что система тяготеет к NoSQL-ной. Вообще убежден что здесь идея лежит вне плоскости нормализации. Грубо говоря - наплевать на нормальные формы. Главное - дать пользователю скорость формошлёпства. И документо-шлёпства. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.09.2019, 20:20 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
maytonДа я тоже склоняюсь к тому что система тяготеет к NoSQL-ной. Вообще убежден что здесь идея лежит вне плоскости нормализации. Грубо говоря - наплевать на нормальные формы. Главное - дать пользователю скорость формошлёпства. И документо-шлёпства. Формошлёпство это понятно, к этому вопросов нет. Вопрос к способу реализации. Вот эти самые вымышленные квинтеты. Зачем? Как бы и лбом можно гвоздь забить. Зачем??? ))))) Меня даже уже не великий и беспощадный смысл, который вкладывал автор в это. А как он к этому пришёл. Вот как рассуждал? А что если я возьму байты, разобью их на биты, таак.. первые четыре бита будут тип, ещё четыре парент, если следующий за ним бит 0, а после него 1, то это атрибут, иначе это связь.... Вот как? Это ж почище изобретения вечного двигателя будет, там хоть цель благая. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.09.2019, 21:18 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
Я вижу в этом другие направления развития. Например event-store и битемпоральность. Пишутся события. Мета-команды. Создания базовы типов. Создание таблиц. И собственно команды фиксации бизнес-операций. Создание гостя. Создание номера. Резервирование гостем номера. Потом соотв. UPDATES. Освобождение номера. Идеальное бэкапирование. Идеальная изоляция транзакций. Конкуренции нет вообще. Репликация упрощается. Зачем сливать всё в квинтеты? ХЗ. С этой точки зрения всё логично. Я-бы еще добавил Timestamp и тип операции (UPDATE/DELETE/INSERT). Вот как-то так. Но если строить классическую модель без event-store то идея Хвоста мне больше нравится. Лучше иметь десяток специализированных простых таблиц которые покрывают любую предметную область чем 1 универсальную со сложной семантикой которая ХЗ как себя ведет под нагрузкой. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.09.2019, 21:37 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
maytonДавайте рисовать API к этой системе. В конце концов идея определяется не квинтетами а методами доступа. Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.
Можно начать с поисков по индексированным полям. И иерархическим запросам. Архитектор? Квинтет, он же для другого. Пользователь не пишет код и не знает ничего о квинтетах. И классы не определяет, а задает нужные объекты в редакторе типов: (подчиненные и связанные объекты расположены справа и распространяются вниз) ... |
|||
:
Нравится:
Не нравится:
|
|||
09.09.2019, 21:45 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
hVosttМеня даже уже не великий и беспощадный смысл, который вкладывал автор в это. А как он к этому пришёл. Вот как рассуждал? Да как обычно в таких случаях. Начинает знакомиться с предметной областью. Читает SQL. Думает: как бы круто программировать? Натыкается на EAV: о, круто. Особенно читая статью другого такого же ламера. Пробует. Плевать, что медленно и неудобно, зато один раз напишу крутой системный софт - это же интересно - и всё будет летать. Блин. Не летает. Тогда подрихтую модель, чтобы залетало. Совсем круто! Правда, не летает, но зато совсем своё, дайте мне нобелевку! ... |
|||
:
Нравится:
Не нравится:
|
|||
09.09.2019, 21:48 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
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-х годов. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.09.2019, 22:04 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
drynnyКвинтет, он же для другого. Пользователь не пишет код и не знает ничего о квинтетах. Да это уже понятно, пользователь не знает о способе хранения, итак понятно. И то, что под пользователем вы понимаете и разработчиков, которые работают с "движком", и тоже не знают. Ясно всё это, ясно. Но. Зачем вот это форменное издевательство внутри? Какой профит именно от квинтетной модели? Ваши цели могут быть достигнуты 100500 способов и классическим EAV. Но нахрена всё вот именно так делать? Вы сами хотя бы для себя понимаете? Зачем квинтеты? В чём профит? ... |
|||
:
Нравится:
Не нравится:
|
|||
09.09.2019, 22:05 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
drynny, Ваше видение истории доставляет, но как говорится, для кого-то Москва это сырой подвал, а для кого-то вид на Кремль с чашкой кофе. Про квинтеты можете ответить? Не про конструкторы, не про скрытую магию для высшего существа, лениво двигающего мышкой. Про реализацию. Какого хрена так всё усложнять? В чём смысл? ... |
|||
:
Нравится:
Не нравится:
|
|||
09.09.2019, 22:09 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
hVosttdrynny, Ваше видение истории доставляет, но как говорится, для кого-то Москва это сырой подвал, а для кого-то вид на Кремль с чашкой кофе. Про квинтеты можете ответить? Не про конструкторы, не про скрытую магию для высшего существа, лениво двигающего мышкой. Про реализацию. Какого хрена так всё усложнять? В чём смысл? Где вы видите сложность и в чём её измеряете? ... |
|||
:
Нравится:
Не нравится:
|
|||
09.09.2019, 22:11 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
drynny Расчетная эффективность конструктора и традиционной разработки сравнялись в нулевых годах. Хера себе. То-то я смотрю как все на конструторах вокруг делается... Что ещё за шизофренические выводы? Откуда? График нарисованный в пейнте не приложите? :) ... |
|||
:
Нравится:
Не нравится:
|
|||
09.09.2019, 22:12 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
drynnyГде вы видите сложность и в чём её измеряете? Я вам уже показывал математику выше. Там, где требуется 2 поля для хранения сущности, у вас 5. Многосложная семантическая нагрузка на поля и комбинацию полей. Какой профит? В чём смысл? ... |
|||
:
Нравится:
Не нравится:
|
|||
09.09.2019, 22:17 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
https://tryjob.ru/index.html Почитайте. Шиза в кубе, враньё, помешанное на фантазии лсд-шника... Мошенничество в чистом виде. Новый язык программирования — тренд 2019‑2021 гг. Если это такой мощный "язык программирования", почему бы не зарабатывать на нём, а не привлекать доверчивых одептов за деньги? Карма существует, ох и огребёте за свою грязную деятельность. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.09.2019, 22:23 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
Тут многие интересовались у автора, в чём глубокий смысл его творения. Не готов обсуждать степень новизны, просто попробую пофантазировать на тему применимости... Фактически мы имеем 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, но с указанными выше достоинствами. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.09.2019, 22:52 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
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.
И она работает! Ещё можно добавить отдельно связи с разными параметрами. Хотя и так связи можно выразить через значения атрибутов-связей. Тут всё понятно, всё семантически разложено и даже поддерживается СУБД. Например, вы не можете указать вместо типа сущности, тип атрибута, или вместо сущности сослаться на тип, СУБД не даст. Такое можно сопровождать, и даже запросы будут проще, чем у вас. Тут ваши зубодробительные квинтеты можно разложить по таблицам нормальным и понятным образом. Конечно это всё равно хуже нормализованной БД по ряду причин, но со своими плюсами (динамика), однако на порядки лучше ваших квинтетов, которые без каких-либо видимых причин вносят непомерную сложность. Вы сами видите, до сих пор народ не может въехать толком как ваша байда должна работать. Ну и нафига это всё? До сих пор непонятно, уже какая страница пошла, а вы всё ответить не можете, для чего такой овер-инжениринг был нужен? Какую цель это решает? Ну зачем это всё? Может вы недостаточно всё усложнили? Может 5 полей -- это много? Давайте как-нибудь в 3 уместим? В идеале конечно, всё в одно поле одной таблицы всё засунуть, давайте идти до конца. Ну зачем эти глупые полумеры? :)Хм, EAV и 5 таблиц. Кажется Хвост решил успеть на подножку уходящего квинтетного паровоза =) Данные же могут храниться точно так же. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.09.2019, 23:10 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
Одни пишут, другие критикуют. Хорошо, когда за это кто то им платит :) ... |
|||
:
Нравится:
Не нравится:
|
|||
10.09.2019, 01:17 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
Gerros следующими достоинствами: Высокая степень оперативной готовности - изменение набора полей класса не требует изменения схемы БД, следовательно миграции не нужны. Все изменения можно накатывать на лету. Скорость разработки код ORM будет простым. Меньше кода - меньше шансов на ошибку разработчиков ORM. Ну т.е. некое чисто разработчицкое средство быстрого прототипирования MDM-платформ? :) Т.е. некое ООО "Корпоративные справочники", куда приходят корп.заказчики, и говорят "а сварганьте мне справочник материалов живенько ... а какой набор атрибутов? ... а хз (и далее крупными мазками, пальцами в воздухе) ... а вот пожалста нате". Если к этому прикрутить кнопку-визард "сгенерировать продуктивную MDM-платформу", которая из EAV развернёт в нормальную структуру БД, со связязми и индексами, - то наверное взлетит. А если оно будет уметь корректно и безопасно "догенерять" изменения на лету на уже ранее сгенерённую MDMу (особенно набитую продутивными данными), то совсем взлетит. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.09.2019, 07:04 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
GerrosТут многие интересовались у автора, в чём глубокий смысл его творения. Не готов обсуждать степень новизны, просто попробую пофантазировать на тему применимости... Фактически мы имеем ORM, у которой под капотом EAV. По-моему, эта комбинация лучше чем EAV без ORM или ORM без EAV. Вопрос не в этом, обсуждается не конструктор и формошлепство. А выбранный способ организации данных, вся бд в одной таблице из 5 полей. И пусть это только прототип, уже этом этапе вызывает большие вопросы какие преимущества это даёт. Я не вижу никаких преимуществ перед хранением той же структуры данных с мета данными, но разбитой на несколько таблиц. Зато виду очевидное усложнение на ровном месте и кучу недостатков Учитывая, что срок разработки прототипа тянется с 2006 года, складываются большие сомнения правильную ли сферу деятельности выбрал автор Глядя на его промо сайт я утверждают во мнении, что перед нами обыкновенный бездарный мошенник. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.09.2019, 09:35 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
GerrosВ ORM, под которой обычные широкие таблицы (не EAV), каждое изменение набора атрибутов класса, отображённого на эти таблицы, требует изменения схемы БД. Для этого приходится делать громоздкие "миграции", которые могут требовать временного вывода системы из эксплуатации. При этом ORM, как правило, работают с одиночными объектами, а не с большмим датасетами (коллекциями объектов). При такой работе однострочными INSERT\UPDATE широкие таблицы особой выгоды по сравнению с EAV не дают. . В ядерную часть логики и объектов сложной и объемной системы изменения вносятся редко, очень редко или почти никогда - после вызревания системы. Поэтому делать на EAV ядро я резона не вижу. Приложить его сбоку для настроек и кастомизаций системы в том или ином виде можно. Равно как и ==свой новый язык программирования, который намного лучше тех, что уже есть в изобилии== - профит несет редко. И то что оно есть в 1С - так, 1С любят не за это. и SAP - не за ABAP. особого профита от того, что в EAV ==можно легко добавить атрибут не делая alter table add ... == добавить легко. А вот с проапдейтить и проиндексировать - сразу интереснее. поэтому, по сути- баш на баш как минимум. То что атрибуты добавляются на ==живой, работающей системе и ничего! == - так с ними должен работать код, для встраивания коего в общий контур все же придется нажать стоп-кран. поэтому тоже.... профит сомнительный. в целом. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.09.2019, 09:41 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
Vladimir Baskakovи SAP - не за ABAP ABAP это наследие Гитлера ) ... |
|||
:
Нравится:
Не нравится:
|
|||
10.09.2019, 10:06 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
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 и предъявите сюда ваши картинки. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.09.2019, 16:00 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
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 и предъявите сюда ваши картинки. Нет нужды, в интернете всё гуглится, есть книги, статьи, масштабные исследования. А у вас чё, три картинки и нарисованные в пейнте графики. И вы опять не смогли пояснить в чём профит от квинтетов. Одни и те же картинки постите, которые вообще ничего не говорят о преимуществах квинтетов, как о способе организации данных. Ничего. Вы либо к разработке ПО имеете такое же отношение, как ёжик к балерине, либо просто бездарный неуч, который не может ответить на простейший вопрос. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.09.2019, 18:58 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
drynnyИспользование памяти можете посмотреть здесь: habr.com/ru/company/neoflex/blog/451218/#tests Блог компании Неофлекс, компания Неофлекс впаривает такую дичь клиентам? ... |
|||
:
Нравится:
Не нравится:
|
|||
10.09.2019, 19:05 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
iOracleDevdrynnyИспользование памяти можете посмотреть здесь: habr.com/ru/company/neoflex/blog/451218/#tests Блог компании Неофлекс, компания Неофлекс впаривает такую дичь клиентам? Да это писец. Стоит сразу давать ссылку на эти квинтеты тем, кто захочет с неофлексом связаться, чтоб даже близко не подходили. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.09.2019, 19:07 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
drynny2) Ядро для работы с квинтетной моделью состоит из 2300 строк кода и будет только сокращаться при написании нового ядра СУБД. Оно занимает пару мегабайт в оперативной памяти, оставляя много места под данные, кэш индексов и прочие полезные вещи. Использование памяти можете посмотреть здесь: habr.com/ru/company/neoflex/blog/451218/#tests (там в среднем 32 запроса в секунду занимают суммарно менее 100МБ памяти) Сравните с вашими мелкосервисами на Java и предъявите сюда ваши картинки. Я вот этот пассаж про ядро вообще не понял. Ни строки кода ни 100 Мб не имеют никакого значения для оценки качества среднего бизнес-продукта данного уровня. Вы не не прошивку к роутеру делаете верно? Зачем выпячивать строки кода? ... |
|||
:
Нравится:
Не нравится:
|
|||
10.09.2019, 19:48 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
maytonЯ вот этот пассаж про ядро вообще не понял. Ни строки кода ни 100 Мб не имеют никакого значения для оценки качества среднего бизнес-продукта данного уровня. Ну почему же не имеют. Они показывают, что наш друг опять ярко лопухнулся - у него одна строка воплощается почти что в килобайт нагенерённого кода. Видимо, он пишет оооочень длинные строки. А сейчас побежит придумывать, что "пара мегабайт" - это не код, а данные, и объяснять, какие такие данные хранятся в этом ядре. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.09.2019, 19:59 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
mayton, softwarer, хоть я и любитель оценить потребление ресурсов, но во-первых мерять нужно с умом, как и весь бенчмаркинг впрочем. И 100Мб может оказаться и хорошим и плохим результатом, в зависимости от дальнейшей функции от нагрузки во-вторых мне больше не понравилось по ссылке Тем не менее, при 20-25 запросах в секунду (пиковая нагрузка при работе 20 пользователей), сервер укладывается в требования по производительности — 1 секунда на отклик. В целом ресурсы его недогружены, хотя это самый бюджетный вариант: 1 ядро 2.4 ГГц при 1 ГБ оперативной памяти.25RPS это какой то трэш вне зависимости от задачи собственно, может там задача на расчет 100 биткойнов, но сомневаюсь и не вникал ... |
|||
:
Нравится:
Не нравится:
|
|||
10.09.2019, 22:45 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
Тем не менее, при 20-25 запросах в секунду (пиковая нагрузка при работе 20 пользователей), сервер укладывается в требования по производительности — 1 секунда на отклик. Вот это требования к производительности, так требования: 1 секунда на отклик сервера. Сильно. У нас за прошедшие сутки в среднем 152,5 запроса в секунду, отклик сервера - 94,4 миллисекунды. Не, квинтеты точно не для нас :) ... |
|||
:
Нравится:
Не нравится:
|
|||
11.09.2019, 10:51 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
авторЧто-то накал обсуждения ослаб. Подкину немного. у меня интерес ненадолго проснется при выкладывании документации по системе (статьи на хабре это не она) тексте соглашения по использованию, с тем что по чем стоит, и общедоступным в песочнице примером ..... требующим сравнительно сложного скручивания и работы с данными, ..... ну там агрегация на пять 6 табличек чего нибудь, при проверке условия наличия чего то где то в другом месте. ну и там чтобы получались отчеты типа пять лучших по показателю А из сотни проигравших по показателю Б. ну что то такое, что на просто БД собирается малой пакостности запросом с парой EXISTS и аналитическими функциями. Не запредельно сложно, а так. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.09.2019, 14:02 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
Дмитрий МухВот это требования к производительности, так требования: 1 секунда на отклик сервера. Сильно. Нужно понимать, что там запросы максимально примитивные с точки зрения модели данных. Простейшие запросы генерируют увесистые тяжёлые джойны и условия выборок, которые на 99% технические, нежели бизнесовые. Будь там что по-сложнее, из реального мира, будет уже не 1 секунда, а больше, местами на порядки. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.09.2019, 14:19 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
Давайте я немножко сделаю шаг назад. Я уже спрашивал Архитектора про API. На основании индексной информации я сделал набросок к квинтетному интерфейсу. Код: javascript 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11.
Я включил базовый набор поисковых атрибутов с учотом индексов. Они расположены таким образом чтобы обеспечивать быстрый доступ к множествам квинтетов. Все прочие проекции которые можно придумать по идее должны покрываться этим API. Дополнительные фильтры по прочим полям я пока не включил. Их можно отфильтровать позже. Исключение - метод quintetChainStartWith(). Его задача - выборка поддеревьев по id корня. drynny - прошу вас дать комментарии по этому API. Чего в нем еще не хватает для полноценной работы? ... |
|||
:
Нравится:
Не нравится:
|
|||
11.09.2019, 14:19 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
Siemarglmayton, softwarer, хоть я и любитель оценить потребление ресурсов, но во-первых мерять нужно с умом, как и весь бенчмаркинг впрочем. И 100Мб может оказаться и хорошим и плохим результатом, в зависимости от дальнейшей функции от нагрузки во-вторых мне больше не понравилось по ссылке Тем не менее, при 20-25 запросах в секунду (пиковая нагрузка при работе 20 пользователей), сервер укладывается в требования по производительности — 1 секунда на отклик. В целом ресурсы его недогружены, хотя это самый бюджетный вариант: 1 ядро 2.4 ГГц при 1 ГБ оперативной памяти.25RPS это какой то трэш вне зависимости от задачи собственно, может там задача на расчет 100 биткойнов, но сомневаюсь и не вникал Там к заметке приложен тест-скрипт, в котором перечисленны запросы к разным диапазонам дат, сущностям, условиям и прочему. То есть на каждый запрос делается: 1) проверка токена авторизации и прав пользователя 2) выбирается и разбирается нужный шаблон рабочего места 3) собираются метаданные запрошенных объектов 4) делается выборка из нескольких таблиц (фильтр, агрегаты, сортировка) 5) шаблон заполняется данными и готовая страница возвращается пользователю Пункт 4 занимает основное время, остальное — миллисекунды. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.09.2019, 15:29 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
maytonДавайте я немножко сделаю шаг назад. Я уже спрашивал Архитектора про API. На основании индексной информации я сделал набросок к квинтетному интерфейсу. Код: javascript 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11.
Я включил базовый набор поисковых атрибутов с учотом индексов. Они расположены таким образом чтобы обеспечивать быстрый доступ к множествам квинтетов. Все прочие проекции которые можно придумать по идее должны покрываться этим 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 отчетаДанные выполненного запроса (отчета), параметры, команда на выполнение изменений ... |
|||
:
Нравится:
Не нравится:
|
|||
11.09.2019, 15:37 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
drynny, вы продаете описание интерфейса вот в таком виде? Дружище - это несеръезно! Здесь нет типа возвращаемого параметра. Тоесть я щас должен глядя на это просто догадаться что мне вернут и будет ли это коллекция или атом? Почему у вас нет описания хотя-бы на SOAP/GraphQL или в крайнем случае на Swagger? Вы проделали тонну работ с 2006 года но у вас отсутствует элементарное! Почему? ... |
|||
:
Нравится:
Не нравится:
|
|||
11.09.2019, 18:41 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
maytondrynny, вы продаете описание интерфейса вот в таком виде? Дружище - это несеръезно! Здесь нет типа возвращаемого параметра. Тоесть я щас должен глядя на это просто догадаться что мне вернут и будет ли это коллекция или атом? Почему у вас нет описания хотя-бы на SOAP/GraphQL или в крайнем случае на Swagger? Вы проделали тонну работ с 2006 года но у вас отсутствует элементарное! Почему? Я не пилю ядро с 2006 года, а делал перерывы (например, с 2008 по 2014 развития ядра не было). API вообще появилось в конце прошлого года и ещё не устоялось. В таблицу не смог скопировать ячейки описания из экселя, а файлы тут никто не скачивает (прилагаю) и по ссылкам не ходит, где всё есть. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.09.2019, 20:28 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
Спасибо. Эксцель файл более плотный хотя все таки не достаточный. В вашей конторе... эээ "Интеграл" (?) есть техно-писатель который верстает документацию? Вообще кто у вас есть? Есть вы. Сколько еще примерно людей участвуют в разработке? ... |
|||
:
Нравится:
Не нравится:
|
|||
11.09.2019, 20:48 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
maytonСпасибо. Эксцель файл более плотный хотя все таки не достаточный. В вашей конторе... эээ "Интеграл" (?) есть техно-писатель который верстает документацию? Вообще кто у вас есть? Есть вы. Сколько еще примерно людей участвуют в разработке? Ядро писал я один, но мне помогал друг, как специалист по безопасности, искал дыры и давал советы. Он же иногда советовал как реализовать некоторые моменты. Еще я обращаюсь к различным дизайнерам при необходимости. Все остальные материалы, на которые здесь даны ссылки, созданы мной. Прикладные разработчики про квинтеты ничего вообще не знают. Им это не нужно. API у меня попросили, я сделал. Если вам интересно, то можете присоединиться, кстати. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.09.2019, 21:12 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
mayton, не могу после заявленных утверждений пройти мимо, несколько цитат с сайта этой скромной системы :) Выберите свой формат, способ и продолжительность обучения из 5 вариантов Бесплатно. Все необходимые материалы предоставляются. 3-дневный курс. Стоимость: 8900 руб. (в группе), 28900 руб. (индивидуально). 5-дневный курс. Стоимость: 12900 руб. 8, 16, 24 или 40-часовой курс. Стоимость: 1000 руб./час. Ответы на вопросы, помощь, программирование. Любая длительность. 1500 руб./час. — Вы научитесь программировать простые веб-приложения: проектировать базу данных, организовывать бизнес-логику, создавать запросы SQL (как в MySQL, Posgre, ...) и экранные формы, используя HTML, CSS, Javascript. (Posgre -- чё? ) — Работе в Интеграле вас можем научить только мы . Все вложения окупятся с первого же заказа, на который с нашей платформой вы потратите минимум времени, а результат будет достаточно эффектным, чтобы продавать потом ваши услуги. — Даже опытные программисты часто сталкиваются с тем, что не могут понятно объяснить то, как решается задача на практике, заказчику. Интеграл максимально упрощает процесс как разработки, так и общения с клиентами. Дополнительный инструментарий в вашем портфеле — плюс к вашей деятельности и имиджу. (интеграл вообще всё делает сам и даже заказчиков находит) и.. любой сайт лохотронов-разводил Доходы на практике — 90% наших слушателей начинают зарабатывать уже на практических занятиях. Наши коучи вам в помощь Прибыльно и проверено — Проверенные стратегии сводят на минимум потери и увеличивают процент успешных сделок до 80% ... |
|||
:
Нравится:
Не нравится:
|
|||
11.09.2019, 21:31 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
drynnyЯ не пилю ядро с 2006 года, а делал перерывы (например, с 2008 по 2014 развития ядра не было) А с 2006 по 2008 и с 2014 по 2019-й оно таки развивалось? Мне просто любопытно, сколько Вам понадобилось времени на то, чтобы написать и отладить 2300 строк кода. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.09.2019, 22:12 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
hVosttРаботе в Интеграле вас можем научить только мы Как там было у классиков... "Любая деятельность, учить которой выгоднее, нежели заниматься ей самому - лохотрон"? ... |
|||
:
Нравится:
Не нравится:
|
|||
11.09.2019, 22:14 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
Я вот в 90х задумал написать комьютерную сетевую игру на сокетах. Танчики. И кирпичики. До сих пор - в статусе тех задания. Я уже 20 раз технологию поменял. Сначала это был MS-DOS в VGA mode. Потом Windows 98/OpenGL... Вобщем ... когда буду на пенсии... Короче некоторые проекты нельзя закончить. Их можно только прекратить. Но с нашим топиком мне кажется что рост системы шел не от идеи квинтетов а от улучшений уже работающей системы документооборота. Ядро или приложение? Яйцо или курица? ... |
|||
:
Нравится:
Не нравится:
|
|||
11.09.2019, 22:19 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
softwarerdrynnyЯ не пилю ядро с 2006 года, а делал перерывы (например, с 2008 по 2014 развития ядра не было) А с 2006 по 2008 и с 2014 по 2019-й оно таки развивалось? Мне просто любопытно, сколько Вам понадобилось времени на то, чтобы написать и отладить 2300 строк кода. Товарищ готов говорить про всё, что угодно. Про количество строк, по какие-то 100 мб в вакууме. Но не готов ответить какую задачу решают квинтеты, и почему именно они решают её эффективнее, чем классический EAV -- раз уж выбран был именно такая основа архитектуры. Забиваю гвозди пассатижами. Выяснилось, что остальные инструменты не нужны, вредны и избыточны. А я уже 10 собачих будок так построил, заказчики довольны! Сколько сэкономили. Потрачено не больше 100 гвоздей на будку. А вас сколько гвоздей уходит, а? Ну-ка приведите свои графики. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.09.2019, 23:31 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
maytonЯ вот в 90х задумал написать комьютерную сетевую игру на сокетах. Танчики. И кирпичики. До сих пор - в статусе тех задания. Я уже 20 раз технологию поменял. Сначала это был MS-DOS в VGA mode. Потом Windows 98/OpenGL... Вобщем ... когда буду на пенсии... Короче некоторые проекты нельзя закончить. Их можно только прекратить. Но с нашим топиком мне кажется что рост системы шел не от идеи квинтетов а от улучшений уже работающей системы документооборота. Ядро или приложение? Яйцо или курица? Ну, такое тоже было (1994 год, ZX Spectrum, ходилка-стрелялка на ассемблере), но тут не тот случай. В 2003 я с нуля делал систему управления контентом на EAV в филиале сотовой компании. Ну, тормозила, но как-то работала (года три). То был конструктор, и мне понравилось. Хотя остальное я фигачил на PL/SQL и всяких PHP в обычных базах Oracle, MySQL и MSSQL. А потом мне нужно было навести порядок в планово-экономическом отделе компании, где всё было в бумажных журналах (я был типа управляющего). Днем я методом кнута и пряника пересаживал бабушек в эксель (смотрите, сумма прописью тут сама пишется!), а потом в систему на квинтетах (чтобы набрать счет вы просто тычете в товары из списка). А вечерами опять с нуля продумывал и писал эту самую систему, а на ней немедленно делал приложение. Ядро таки было первым. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.09.2019, 23:44 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
hVosttТоварищ готов говорить про всё, что угодно. ... Но не готов ответить какую задачу решают квинтеты, и почему именно они решают её эффективнее, чем классический EAV Это изначально было очевидно. В детстве я читал книжку про инженерное мышление, и там на первых страницах было сказано: большинство людей, думая, как решить задачу, хватаются за первый попавшийся способ и начинают работать, не думая об альтернативах. Именно в этом месте чаще всего упускается оптимальное решение, да и сколько-нибудь вменяемое решение вообще. Ровно тот случай. Квинтеты ничего эффективнее не решают, просто они попались первыми. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.09.2019, 23:59 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
softwarerЭто изначально было очевидно. В детстве я читал книжку про инженерное мышление, и там на первых страницах было сказано: большинство людей, думая, как решить задачу, хватаются за первый попавшийся способ и начинают работать, не думая об альтернативах. Именно в этом месте чаще всего упускается оптимальное решение, да и сколько-нибудь вменяемое решение вообще. Ровно тот случай. Квинтеты ничего эффективнее не решают, просто они попались первыми. Сильно переусложнённые решения часто признак джуна, например, упаковывать несколько простых инструкций в одну строчку, которую невозможно сходу понять и прочесть, делать нелепые нагромождения из архитектуры, экономия на спичках и прочее. Здесь прям какой-то ярчайший пример джуна-переростка. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.09.2019, 00:27 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
softwarerКвинтеты ничего эффективнее не решают Ладно бы просто не решали. Они значительно усугубляют. Забудем про производительность и эффективность. Тут банальная надёжность ниже плинтуса. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.09.2019, 00:30 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
[quot drynny]maytonВ 2003 я с нуля делал систему управления контентом на EAV в филиале сотовой компании. Ну, тормозила, но как-то работала (года три). То был конструктор, и мне понравилось. Хотя остальное я фигачил на PL/SQL и всяких PHP в обычных базах Oracle, MySQL и MSSQL. А потом мне нужно было навести порядок в планово-экономическом отделе компании, где всё было в бумажных журналах (я был типа управляющего). Днем я методом кнута и пряника пересаживал бабушек в эксель (смотрите, сумма прописью тут сама пишется!), а потом в систему на квинтетах (чтобы набрать счет вы просто тычете в товары из списка). А вечерами опять с нуля продумывал и писал эту самую систему, а на ней немедленно делал приложение. Ядро таки было первым. а как пришла идея ядрить на квинтетах, а не на, просто как в Руби-он-Раилс на табличках? В ПЭД сколько данных было? мне тоже довелось поработать в таком подразделении .... в банке .... как представлю что все счета, проводки, обороты, лифо и фифо заквинтечены, так и удивлюсь..... впрочем, если до времени хватало бумаги - не особо наверное много. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.09.2019, 10:53 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
softwarerhVosttТоварищ готов говорить про всё, что угодно. ... Но не готов ответить какую задачу решают квинтеты, и почему именно они решают её эффективнее, чем классический EAV Это изначально было очевидно. В детстве я читал книжку про инженерное мышление, и там на первых страницах было сказано: большинство людей, думая, как решить задачу, хватаются за первый попавшийся способ и начинают работать, не думая об альтернативах. Именно в этом месте чаще всего упускается оптимальное решение, да и сколько-нибудь вменяемое решение вообще. Ровно тот случай. Квинтеты ничего эффективнее не решают, просто они попались первыми. а что за книга? ... |
|||
:
Нравится:
Не нравится:
|
|||
12.09.2019, 10:54 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
Vladimir Baskakovа что за книга? Ох. Затруднюсь точно назвать. Помню, что автор американский. Дома пороюсь, если найду в архивах - скажу точные данные, она того стоит. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.09.2019, 11:13 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
Vladimir Baskakovа как пришла идея ядрить на квинтетах, а не на, просто как в Руби-он-Раилс на табличках? Не было времени верстать формы и админить таблички в базе. Создал тип, добавил реквизиты и связи — уже готова форма для редактирования всего этого. Накликал отчет, написал инструкцию — пользователь пошел работать. Vladimir BaskakovВ ПЭД сколько данных было? мне тоже довелось поработать в таком подразделении .... в банке .... как представлю что все счета, проводки, обороты, лифо и фифо заквинтечены, так и удивлюсь..... впрочем, если до времени хватало бумаги - не особо наверное много. Дались вам эти квинтеты. Вот, покликайте здесь демку: bkint.ru/index.php?db=demo Там партионный учет, фифо, оборотная ведомость, отчеты рентабельности по типам и товарам. Придет ли вам в голову, что там всё на квинтетах? Спорю, что нет. Данных в ПЭО было столько: - 10-12 сотрудников - сотни договоров (с этапами, ответственными, счетами, калькуляциями) - тысячи клиентов - тысячи счетов - сотни товаров - десятки событий в день - десятки отчетов При таких объемах приложение живет больше 13 лет и бед не знает ни с надежностью, ни производительностью. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.09.2019, 11:54 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
автор- сотни договоров (с этапами, ответственными, счетами, калькуляциями) - тысячи клиентов - тысячи счетов ПЭД группы ВТБ. Немного больше клиентов, договоров, счетов, отчетности и сотрудников. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.09.2019, 12:26 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
softwarerVladimir Baskakovа что за книга? Ох. Затруднюсь точно назвать. Помню, что автор американский. Дома пороюсь, если найду в архивах - скажу точные данные, она того стоит. мерси ... |
|||
:
Нравится:
Не нравится:
|
|||
12.09.2019, 12:30 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
hVosttsoftwarerКвинтеты ничего эффективнее не решают Ладно бы просто не решали. Они значительно усугубляют. Забудем про производительность и эффективность. Тут банальная надёжность ниже плинтуса. Я увидел пока только 1 поинт. Если проектировать CQRS или EventStore то лента событий имеет очень простую спецификацию. 5 атомов на каждую запись + таймстамп + тип евента (команды). Создание записи или удаление или апдейт. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.09.2019, 15:10 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
Давайте рассмотрим мои concerns. 1) Остался КМК без ответа мой вопрос касательно иерархической таблицы. В первых двух строках происходит регистрация примитивных типов. Рутовый элемент. На псевдо-языке Код: javascript 1.
Здесь мне непонятно почему древовидная структура имеет петли. Рутовый элемент имеет родителя тоже root. Немного сбивает с толку сквозная нумерация всех атрибутов. Я-бы предпочел добавить +1000 хотя-бы к sequence чтоб не "рубила" так похожесть по глазам. И вообще КМК хорошая практика разделять неоднозначные применнеия сиквенсов на дипазоны. Хотя-бы на положительные и отрицательные. К примеру примитивные типы + энтити = отрицательные. 2) И тип SHORT. Код: javascript 1.
Вобщем непонятно почему архитектор не ввел 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.
3) Непонятно почему сущность Гость имеет тип SHORT (3) ? Это-ж ерунда. Сущность должна иметь тип сущность! Хотелось-бы услышать камент dryny. Понимаешь. Все эти исключения. Рулы. Касаемо 0 и 1 и NULL они очень важны. Они определяют чистоту технологии. Как например язык Lisp один раз определяет семантику списка списков с очень простыми рулами. И дальше идет просто лавинообразное наращивание смыслов. Причем гладкое и красивое. Без внутренних противоречий. С твоей технологией я признаюсь что я - буксую. Я буксую потому что эти все исключения напрягают и заставляют меня искать другие смыслы которых скорее всего нет. Просто есть какая-то оплошность или опечатка. Вобщем проясни. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.09.2019, 15:45 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
maytonДавайте рассмотрим мои concerns. 1) Остался КМК без ответа мой вопрос касательно иерархической таблицы. В первых двух строках происходит регистрация примитивных типов. Здесь мне непонятно почему древовидная структура имеет петли. Рутовый элемент имеет родителя тоже root. Немного сбивает с толку сквозная нумерация всех атрибутов. Я-бы предпочел добавить +1000 хотя-бы к sequence чтоб не "рубила" так похожесть по глазам. И вообще КМК хорошая практика разделять неоднозначные применнеия сиквенсов на дипазоны. Хотя-бы на положительные и отрицательные. К примеру примитивные типы + энтити = отрицательные. 2) И тип SHORT. Код: javascript 1.
Вобщем непонятно почему архитектор не ввел NULL как признак отсутствия родителя. Непонятно почему для SHORT парентовый элемент не петля как в случае с рут. А некий нулевой элемент. Как-то нужно их различать — метаданные и данные. Здесь принято так, что метаданные подчинены несуществующему элементу с ID=0, а данные подчинены корневому элементу с ID=1. Это сделано из удобства обращения ядра с квинтетными данными (например, если нужно дать доступ к данным от корня и ниже, то даем доступ к id=1) и не противоречит квинтетной модели. Вы можете сделать по-своему, и я не претендую на безупречность исполнения ядра и самой модели. Отрицательные энтити я бы сделал, но выдавал бы их по очереди: +,-,+,-,... только для того, чтобы значительно реже балансировать индексы. mayton3) Непонятно почему сущность Гость имеет тип SHORT (3) ? Это-ж ерунда. Сущность должна иметь тип сущность! Хотелось-бы услышать камент dryny. Понимаешь. Все эти исключения. Рулы. Касаемо 0 и 1 и NULL они очень важны. Они определяют чистоту технологии. Как например язык Lisp один раз определяет семантику списка списков с очень простыми рулами. И дальше идет просто лавинообразное наращивание смыслов. Причем гладкое и красивое. Без внутренних противоречий. С твоей технологией я признаюсь что я - буксую. Я буксую потому что эти все исключения напрягают и заставляют меня искать другие смыслы которых скорее всего нет. Просто есть какая-то оплошность или опечатка. Вобщем проясни. Гость имеет тип SHORT потому что это — строка (имя гостя, например). Если что-то непонятно, значит, вероятно, это не важно и ни на что не влияет. Нужно помнить одну вещь: нет никакой таблицы. Таблица СУБД используется в прототипе как временное решение, и не важно, NULL там или 0. Да, с эстетической точки зрения это важно, но это разовая задача, и вылизывание таких моментов даст 0 денег, и силы лучше потратить на продажу того, что есть, торговцу помидорами. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.09.2019, 18:56 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
drynnyКак-то нужно их различать — метаданные и данные. Если Ваш конструктор начнёт приближаться к промышленному решению, Вы обнаружите ещё несколько важных требований. 1. Метаданные должны лежать отдельно от данных. Просто потому, что вне детских проектов с ними работают разные люди на нескольких серверах, и им нужно обмениваться метаданными, таскать изменения, решать конфликты, и всё это - без данных. Помимо прочего, метаданные нужно ещё и класть в version control, причём в том формате, в котором человек легко глазами разберётся в изменениях, и одновременно в том формате, который без проблем подхватит сервер. 2. Сервер должен уметь работать с несколькими метамоделями и несколькими источниками данных одновременно. При этом функционал должен по максимуму их пересекать, то есть разруливать права одних и тех же пользователей на доступ ко всем источникам данных, строить выборки вперехлёст из данных разных источников и т. д. Применений множество, начиная от модульности разработки. 3. Нужна "метамодель метамодели", то есть возможность искать, вводить и редактировать метаданные, пользуясь теми возможностями сервера, которые предоставляются для поиска, ввода и редактирования данных. Как минимум, это вдвое сокращает работы по кодированию интерфейса (отдельно - админский, отдельно - пользовательский), но куда важнее то, что это является своеобразной гарантией полноценности каждого из них. 4. Решение должно иметь возможность легко, лучше всего прямо на демонстрации подхватить существующие данные заказчика. Ничто не производит на него такого впечатления как "давайте введём коннтект к базе, нажмём кнопку... о, вот видите, ваши данные, узнаёте? А вот мы их покрутим, сделаем вот такой отчёт, а теперь давайте в два клика создадим форму ввода, вот, можно сразу испробовать её в деле..." Это из личного опыта. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.09.2019, 19:27 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
softwarerЕсли Ваш конструктор начнёт приближаться к промышленному решению, Вы обнаружите ещё несколько важных требований. Это всё не нужно ... |
|||
:
Нравится:
Не нравится:
|
|||
13.09.2019, 19:31 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
maytonЯ увидел пока только 1 поинт. Если проектировать CQRS или EventStore то лента событий имеет очень простую спецификацию. 5 атомов на каждую запись + таймстамп + тип евента (команды). Создание записи или удаление или апдейт. Если говорить об CQRS/EventSource, нет не достаточно. Во-первых, квинтет ничего не описывает, вообще. Такое event в потоке не нужен. Кроме того, нужна ревизия агрегата. В контексте квинтетов нельзя описать такие понятия как агрегат, объект-значения. Ну конечно, о таких вещах, как ограниченный контекст, сага, тут говорить вообще не приходится. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.09.2019, 19:35 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
Расскажите, что нового произошло-появилось за прошедшие 2 года? Как развивается подход? Куда он уже дошёл или зашёл? ... |
|||
:
Нравится:
Не нравится:
|
|||
02.12.2021, 18:45 |
|
Как назвать эту структуру и подход, основанные на EAV?
|
|||
---|---|---|---|
#18+
SQL*Plus Расскажите, что нового произошло-появилось за прошедшие 2 года? Как развивается подход? Куда он уже дошёл или зашёл? Много всякого было. Часть инфы в соседней ветке выкладывал. Зарубались с одинэсовцами намутить учетную систему по их ТЗ. Взбодрился, сделал, записал ролики ( https://www.youtube.com/watch?v=K7RpGL35k_4 ... |
|||
:
Нравится:
Не нравится:
|
|||
12.01.2022, 23:40 |
|
|
start [/forum/topic.php?all=1&fid=32&tid=1539762]: |
0ms |
get settings: |
11ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
409ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
346ms |
get tp. blocked users: |
2ms |
others: | 241ms |
total: | 1045ms |
0 / 0 |