|
|
|
EAV vs SQL Server Sparse columns
|
|||
|---|---|---|---|
|
#18+
Есть схема и приложение написанное по принципу EAV. Надоело писать join'ы при выколупывании значений колонок строк. Хочется вывернуть EAV в строки + подрихтовать существующие метаданные под новую схему. Строки будут состоять из sparse columns + column set. Попробовал уже вывернуть в строки. Поигрался с типичными запросами, которые вертятся в системе, для EAV и для row+Sparse Columns случая. Те же яйца только в профиль по производительности (копейки). Как считаете стоит ли заморачиваться с переехдом? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.01.2014, 19:13 |
|
||
|
EAV vs SQL Server Sparse columns
|
|||
|---|---|---|---|
|
#18+
Проще будет научится писать запросы для EAV без излишних джоинов. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.01.2014, 20:09 |
|
||
|
EAV vs SQL Server Sparse columns
|
|||
|---|---|---|---|
|
#18+
мимокрокодил0001Надоело писать join'ы при выколупывании значений колонок строк. Напишите вьюху мимокрокодил0001 Те же яйца только в профиль по производительностиТо бишь достать одну строку, стоит ровно столько сколько собрать ту же строку из нескольких колонок. Ну так добавьте тестовых данных побольше. мимокрокодил0001Как считаете стоит ли заморачиваться с переехдом? Производительность не единственное больное место у EAV. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.01.2014, 20:12 |
|
||
|
EAV vs SQL Server Sparse columns
|
|||
|---|---|---|---|
|
#18+
SERG1257, Вьюху... Для чего-то написано, для чего-то нет. Там структура такая таблица строк древовидная, строка - узел дерева, структура каждого узла разная, колонки значений в другой. На этом планируют строить документооборот с версионностью. У меня от этого муражки по ж... коже. SERG 1257. по поводу добавить больше тестовых данных. тестировал пока только типовой запрос - достать строки: 1) row_table join value_table 2) row_table join LOOKUP row_table разница по логическим чтениям не существенна была. 2-й случай спомощью include можно свести к очень мизерному количеству логичечских чтений. да и первый точно также, так как надо получить в данном запросе только значения колонок строки. ps. берет печаль, от документооборота. уже есть с чем сравнить - дата документа в поле value, шапка в поле value, табличная часть тамже. выколупать по дате документ или составить отчет за период времени - одно удовольствие. система досталась по наследству. с EAV в первые. целка порвана в щи. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.01.2014, 20:58 |
|
||
|
EAV vs SQL Server Sparse columns
|
|||
|---|---|---|---|
|
#18+
Если уж жизнь не мила без колоночного представления данных, открой для себя PIVOT (если он там в MS есть конечно же). Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.01.2014, 21:14 |
|
||
|
EAV vs SQL Server Sparse columns
|
|||
|---|---|---|---|
|
#18+
Dimitry Sibiryakov, :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.01.2014, 21:16 |
|
||
|
EAV vs SQL Server Sparse columns
|
|||
|---|---|---|---|
|
#18+
вбрасываю инфу для сочувствующих. вангую запросы вида: (col1 > '5' or col10 < 78) and col100 like 'xxx%' and ... я еще понимаю когда заиндексировать для одной сущности. но когда в одну таблицу свалены все сущности (не важно одна колонка value или 100) и эти колонки используются по разному, это же ж%па. как с этим боритесь вы? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.01.2014, 21:21 |
|
||
|
EAV vs SQL Server Sparse columns
|
|||
|---|---|---|---|
|
#18+
мимокрокодил0001тестировал пока только типовой запрос - достать строки:Ну одну строку по айди действительно достать быстро где угодно. мимокрокодил0001вангую запросы вида: (col1 > '5' or col10 < 78) and col100 like 'xxx%' and ...Теперь ты узнаешь что такое боль И это не лечится ничем кроме параллельной структуры Второй недостаток в том что при eav никак не получится навесить на СУБД скучные проверки типа название поля, таблицы, тип поля, ссылочную целостность и т.д. т.п. То бишь там где в традиционной структуре ты получишь ошибку СУБД, в eav это будет обязанность программиста. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.01.2014, 21:29 |
|
||
|
EAV vs SQL Server Sparse columns
|
|||
|---|---|---|---|
|
#18+
мимокрокодил0001запросы вида: (col1 > '5' or col10 < 78) and col100 like 'xxx%' and ... В условиях EAV они превращаются в запросы вида Код: sql 1. 2. 3. По-моему индексирование таблицы для таких запросов очевидно. Вам нет?.. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.01.2014, 21:30 |
|
||
|
EAV vs SQL Server Sparse columns
|
|||
|---|---|---|---|
|
#18+
SERG1257мимокрокодил0001вангую запросы вида: (col1 > '5' or col10 < 78) and col100 like 'xxx%' and ...Теперь ты узнаешь что такое боль И это не лечится ничем кроме параллельной структуры имеете ввиду рядом дополнительно к eav для сущностей создавать таблицы, физическая структура которых отражает логическую структуру сущностей, а эти таблицы уже индексировать и писать custom код для этого больного места? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.01.2014, 21:36 |
|
||
|
EAV vs SQL Server Sparse columns
|
|||
|---|---|---|---|
|
#18+
Dimitry Sibiryakovмимокрокодил0001запросы вида: (col1 > '5' or col10 < 78) and col100 like 'xxx%' and ... В условиях EAV они превращаются в запросы вида Код: sql 1. 2. 3. По-моему индексирование таблицы для таких запросов очевидно. Вам нет?.. а мне нет (мы друг друга не поняли?). но такое есть create index (id_client, id_grp, id_row, id_attr, value_checksum) include(value), где value nvarchar(max) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.01.2014, 21:40 |
|
||
|
EAV vs SQL Server Sparse columns
|
|||
|---|---|---|---|
|
#18+
Именно так ибо вот этот конкретный запрос надо ускорять, а переписывать всю систему слишком дорого. В итоге эта супергибкая система существует только рядом с совсем не гибкими костылями. У EAV есть своя ниша определяемых пользователям дополнительных свойств, в которой недостатки незаметны, а преимущества неоспоримы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.01.2014, 21:43 |
|
||
|
EAV vs SQL Server Sparse columns
|
|||
|---|---|---|---|
|
#18+
SERG1257Именно так ибо вот этот конкретный запрос надо ускорять, а переписывать всю систему слишком дорого. В итоге эта супергибкая система существует только рядом с совсем не гибкими костылями. У EAV есть своя ниша определяемых пользователям дополнительных свойств, в которой недостатки незаметны, а преимущества неоспоримы. спасибо вам, добрый человек. пойду погружусь в небытие. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.01.2014, 21:46 |
|
||
|
EAV vs SQL Server Sparse columns
|
|||
|---|---|---|---|
|
#18+
> У EAV есть своя ниша Две ниши. Основная - временный коллектор. Менее очевидная - хранение конфигов. Никаких "определяемых пользователями дополнительных свойств" в базе данных по определению быть не должно. Метки - сколько угодно, но это не свойства. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.01.2014, 22:17 |
|
||
|
EAV vs SQL Server Sparse columns
|
|||
|---|---|---|---|
|
#18+
guest_20040621 Основная - временный коллектор.В целях уменьшения взаимонепонимания, добавьте пару строчек поясняющих этот термин. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.01.2014, 22:23 |
|
||
|
EAV vs SQL Server Sparse columns
|
|||
|---|---|---|---|
|
#18+
> пару строчек Штатная процедура, примерный регламент которой вы и описали. Есть некая сущность, представления о которой с течением времени расширяются. Для накопления статистики предпочтительного описания свойств этой сущности и используется структура типа атрибут - значение. Достаточно очевидно это работает в случае, если характеристика принимает семантические значение. Менее очевидно, если численные или связанные. Накопили варианты - преобразовали в обычные свойства, подчистили таблицу атрибутов - значений. Это не пользовательские данные в том смысле, что пользователи имеют возможность влиять на них очень небольшой промежуток времени, гораздо меньший, чем жизненный цикл сущности. Временный коллектор. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.01.2014, 22:51 |
|
||
|
EAV vs SQL Server Sparse columns
|
|||
|---|---|---|---|
|
#18+
Да, это именно то, что я подразумевал как "определяемые пользователями дополнительные свойста" - времянка, заплатка, "сопля", но которая здесь и сейчас и ввод которой точно не задевает другие части системы (в отличие от новой версии от вендора) С конфигами согласен. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.01.2014, 22:58 |
|
||
|
EAV vs SQL Server Sparse columns
|
|||
|---|---|---|---|
|
#18+
guest_20040621Накопили варианты - преобразовали в обычные свойства, подчистили таблицу атрибутов - значений А зачем? Только чтобы уложить картину в привычный квадратно-гнездовой метод набора фиксированных кортежей? Мыслить в терминах множеств это ведь так трудно с непривычки... Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.01.2014, 23:04 |
|
||
|
EAV vs SQL Server Sparse columns
|
|||
|---|---|---|---|
|
#18+
Dimitry Sibiryakov А зачем?Чтобы добавить производительности и целостности. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.01.2014, 23:08 |
|
||
|
EAV vs SQL Server Sparse columns
|
|||
|---|---|---|---|
|
#18+
> А зачем? Затем, что сложно проектировать и поддерживать логически безупречные структуры. Затем, что существуют альтернативные корректные модели, которые можно совмещать или на которые можно забить. Энергопотребление бытового устройства вы можете указать числом или классом. Государство вы можете поделить административно-территориально, экономически, этнически, климатически и пр. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.01.2014, 23:22 |
|
||
|
EAV vs SQL Server Sparse columns
|
|||
|---|---|---|---|
|
#18+
guest_20040621Накопили варианты - преобразовали в обычные свойства, подчистили таблицу атрибутов - значений. Некому преобразовывать - система отчуждена и находится на сопровождении конечного пользователя. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.01.2014, 09:32 |
|
||
|
EAV vs SQL Server Sparse columns
|
|||
|---|---|---|---|
|
#18+
> Некому преобразовывать - система отчуждена и находится на сопровождении конечного пользователя. Варианты трансформации базы данных в мусорную кучу не интересны. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.01.2014, 10:46 |
|
||
|
EAV vs SQL Server Sparse columns
|
|||
|---|---|---|---|
|
#18+
guest_20040621Варианты трансформации базы данных в мусорную кучу не интересны. ЕАV изначально мусорная куча. Но в процессе ее эксплуатации она не становится более мусорной. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.01.2014, 12:14 |
|
||
|
EAV vs SQL Server Sparse columns
|
|||
|---|---|---|---|
|
#18+
> в процессе ее эксплуатации она не становится более мусорной Становится. Более того, это типичный путь деградации базы данных. Дело даже не в скорости обработки кучи мусора, память и процессоры уже неприлично дёшевы, а в отсутствии эволюции представлений о внешнем мире. Фишка в том, что вы почти всегда вынуждены пользоваться упрощениями. Вчера вы полагали нечто функционально законченным и обладающим некоторыми признаками. Сегодня вы научились различать его структурные компоненты уже со своими признаками, которые не обязательно линейно связаны с предыдущим представлением. В общем случае ваша аналитика будет ограничена текущими представлениями, ваша работа до вчерашнего дня - коту под хвост. И чем больше изменений, тем хуже качество данных. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.01.2014, 13:12 |
|
||
|
EAV vs SQL Server Sparse columns
|
|||
|---|---|---|---|
|
#18+
Надоело писать join'ы при выколупывании значений колонок строкМожно сделать функцию, кот. по набору параметров-ключей вернёт нужное значение. Запросы упростятся раз в 10. На больших выборках немного упадет производительность. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.01.2014, 14:08 |
|
||
|
EAV vs SQL Server Sparse columns
|
|||
|---|---|---|---|
|
#18+
guest_20040621 И чем больше изменений, тем хуже качество данных. Не согласен. Особенностью EAV является неухудшение качества (хуже некуда) при изменениях. Ведь сам контейнер не меняется, меняется только начинка. Обычная рел. БД при изменениях становится хуже и требуется периодический реинженииринг. зы ессно новое заменяет старое , но это не зависит от EAV. В EAV даже можно как-то сохранить старую структуру. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.01.2014, 14:14 |
|
||
|
EAV vs SQL Server Sparse columns
|
|||
|---|---|---|---|
|
#18+
> сам контейнер не меняется, меняется только начинка Именно. И чем дальше, тем сильнее представление может отставать от реальности. > Обычная рел. БД при изменениях становится хуже и требуется периодический реинженииринг. Она не становится хуже, это естественный процесс, так и должно быть. Разница в том, что вы имеете штатную регулярную процедуру изменения структуры данных. Контролируемую. С предсказуемыми результатами. > это не зависит от EAV У меня нет необходимости убеждать вас в очевидных для меня вещах. Хотите ходить по граблям - на здоровье, меня это не беспокоит. Вы описываете достаточно широко распространённый подход, камуфлирующий криворукость разработчиков. Криворукость следует не маскировать, а выявлять и заставлять платить за неё баблом и/или репутацией. Никак иначе. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.01.2014, 14:43 |
|
||
|
EAV vs SQL Server Sparse columns
|
|||
|---|---|---|---|
|
#18+
guest_20040621Именно. И чем дальше, тем сильнее представление может отставать от реальности. Оно не может отставать по определению - оно всегда соотв. текущим потребностям пользователя. guest_20040621Она не становится хуже, это естественный процесс, так и должно быть. А совместимость со старыми программами ? Процесс деградации БД - это действительно естественный процесс. guest_20040621Вы описываете достаточно широко распространённый подход, камуфлирующий криворукость разработчиков. Не очень уж распространенный. Для себя да, делают многие, а для конечного пользователя - нет. Для этого надо иметь очень прямые руки. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.01.2014, 16:35 |
|
||
|
EAV vs SQL Server Sparse columns
|
|||
|---|---|---|---|
|
#18+
guest_20040621> сам контейнер не меняется, меняется только начинка Именно. И чем дальше, тем сильнее представление может отставать от реальности. > Обычная рел. БД при изменениях становится хуже и требуется периодический реинженииринг. Она не становится хуже, это естественный процесс, так и должно быть. Разница в том, что вы имеете штатную регулярную процедуру изменения структуры данных. Контролируемую. С предсказуемыми результатами. > это не зависит от EAV У меня нет необходимости убеждать вас в очевидных для меня вещах. Хотите ходить по граблям - на здоровье, меня это не беспокоит. Вы описываете достаточно широко распространённый подход, камуфлирующий криворукость разработчиков. Криворукость следует не маскировать, а выявлять и заставлять платить за неё баблом и/или репутацией. Никак иначе. Какой Вы, батенька, ... суровый. Только так, и никак иначе! Задачи разные бывают. И говорить, что EAV - это черное, а sparse columns - белое, неправильно. Есть масса оттенков. Взять систему АСУТП и Industrial SQL. На мой взгляд, чистое EAV. Все данные в одной таблице с колонками: - тэг (это одновременно идентификатор объекта и его конкретного атрибута); - время; - значение. И ничего, задачи АСУТП решаются быстро и красиво. А вот "штатная регулярная процедура изменения структуры данных" меня удивила. Я с таким не сталкивался. Интересно, для каких задач такой жизненный цикл применяется? к ТС: Ценность Вашего индекса авторcreate index (id_client, id_grp, id_row, id_attr, value_checksum) include(value), где value nvarchar(max) трудно оценить не зная, что означает id_client, id_grp, id_row. Может быть индекс авторcreate index (id_attr, value).... ускорит Ваши запросы, а может нет. Вам советовали использовать функцию типа Function GetValue(id_client, id_grp, id_row, id_attr) ... return value. Она действительно облегчит написание запросов, но только, если на value не накладывается условий. Т.е. select GetValue(1,2,3,4) as field1, GetValue(5,12,4,11) as field2, .... и т.д. Но не where GetValue(1,2,3,4) >100 and .... Хотел посоветовать написать генератор запросов :), но сам предпочитаю копи-паст в такой ситуации. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.01.2014, 21:29 |
|
||
|
EAV vs SQL Server Sparse columns
|
|||
|---|---|---|---|
|
#18+
Видите ли, DirksDR, в чём дело: у _мод была репутация, которая не позволила более определённо квалифицировать его точку зрения. Для того, чтобы иметь возможность изредка тупить, эту репутацию вам нужно сначала заработать. Про разные задачи вы будете рассказывать тем, кому это интересно. В данном случае - "...EAV - это черное, а sparse columns..." - вы даже не поняли предмета обсуждения. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.01.2014, 00:25 |
|
||
|
EAV vs SQL Server Sparse columns
|
|||
|---|---|---|---|
|
#18+
авторУ EAV есть своя ниша определяемых пользователям дополнительных свойств, в которой недостатки незаметны, а преимущества неоспоримы. Про АСУТП не зря припомнили. В точку. Все при деле, но АСУ сама по себе, а ТП, нередко даже без документации, само по себе. И все на зарплате и прибыль даже есть чтобы с банком рассчитаться и взять новый кредит. Ни при каких обстоятельствах пользователь не может добавить атрибут без согласования с инженером, а инженер не может добавить атрибут без согласования с начальством. Это в том числе входит в культуру пользования базами данных. Если каждая творческая единица начнет свои атрибуты плодить, инженер начнет вешаться на каждой осине по дороге на службу. Это вам не природа с четырьмя кислыми буквами. У нас столько времени нет чтобы миллиард лет забивать четыре столбца хламом в надежде что они когда-нибудь заговорят по-русски. Другими словами если вы хотите успешно скрывать от начальства свою бесполезность - EAV наилучшее решение. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.01.2014, 12:10 |
|
||
|
EAV vs SQL Server Sparse columns
|
|||
|---|---|---|---|
|
#18+
deblogger Ваши аргументы могут относиться к самым разным системам, EAV тут не виновато. EAV не предполагает, что "каждая творческая единица начнет свои атрибуты плодить", естественно, это делается централизовано службой сопровождения ИС. Так же, как и в любой другой ИС. Просто, в случае EAV это делается легче и быстрее. Об этом много говорилось на этом форуме, нет смысла повторяться. guest_20040621 Вы считаете, что Ваша черно-белая классификация есть истина в последней инстанции? Не вижу смысла спорить. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.01.2014, 21:29 |
|
||
|
EAV vs SQL Server Sparse columns
|
|||
|---|---|---|---|
|
#18+
DDirks, EAV предполагает что не придется проектировать БД. Ради чего собственно весь сыр-бор. Кого вы хотите обмануть? Вы же все программисты. Вам в стопицот раз проще написать туеву хучу процедур чем ломать голову над отношениями. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.01.2014, 01:38 |
|
||
|
EAV vs SQL Server Sparse columns
|
|||
|---|---|---|---|
|
#18+
debloggerDDirks, EAV предполагает что не придется проектировать БД. Ради чего собственно весь сыр-бор. Кого вы хотите обмануть? ... Ну, почему не придется проектировать? Просто метаданные описываются не средствами СУБД, а в таблице(ах) базы ИС. Это так, к слову. Я не рассматриваю EAV как альтернативу традиционной структуре БД, а как дополнение. В нашей службе техподдержки производственных задач на обслуживании несколько программных комплексов, в каждом несколько сотен обычных таблиц и по 2-3, построенных по принципу EAV. Кроме того занимаюсь сбором информации с серверов АСУТП в единую базу диспетчерской системы. Системы АСУТП (около 40 шт) самые разные, но большинство построено по принципу EAV, потому что здесь это оправдано. Сотни разнообразных технолгических объектов, у каждого десятки атрибутов - эта задача как раз для EAV. Я никого не хочу обмануть, однако считаю, что уместное применение EAV полезно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.01.2014, 19:30 |
|
||
|
EAV vs SQL Server Sparse columns
|
|||
|---|---|---|---|
|
#18+
debloggerDDirks, EAV предполагает что не придется проектировать БД. Ради чего собственно весь сыр-бор. Кого вы хотите обмануть? ... Ну, почему не придется проектировать? Просто метаданные описываются не средствами СУБД, а в таблице(ах) базы ИС. Это так, к слову. Я не рассматриваю EAV как альтернативу традиционной структуре БД, а как дополнение. В нашей службе техподдержки производственных задач на обслуживании несколько программных комплексов, в каждом несколько сотен обычных таблиц и по 2-3, построенных по принципу EAV. Кроме того занимаюсь сбором информации с серверов АСУТП в единую базу диспетчерской системы. Системы АСУТП (около 40 шт) самые разные, но большинство построено по принципу EAV, потому что здесь это оправдано. Сотни разнообразных технолгических объектов, у каждого десятки атрибутов - эта задача как раз для EAV. Я никого не хочу обмануть, однако считаю, что уместное применение EAV полезно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.01.2014, 19:34 |
|
||
|
|

start [/forum/topic.php?all=1&fid=32&tid=1541005]: |
0ms |
get settings: |
13ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
57ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
62ms |
get tp. blocked users: |
1ms |
| others: | 12ms |
| total: | 175ms |

| 0 / 0 |

Извините, этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
... ля, ля, ля ...