|
|
|
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 |
|
||
|
|

start [/forum/topic.php?fid=32&msg=38525420&tid=1541005]: |
0ms |
get settings: |
9ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
171ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
58ms |
get tp. blocked users: |
1ms |
| others: | 14ms |
| total: | 282ms |

| 0 / 0 |

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