powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / EAV vs SQL Server Sparse columns
25 сообщений из 35, страница 1 из 2
EAV vs SQL Server Sparse columns
    #38524946
Есть схема и приложение написанное по принципу EAV. Надоело писать join'ы при выколупывании значений колонок строк. Хочется вывернуть EAV в строки + подрихтовать существующие метаданные под новую схему. Строки будут состоять из sparse columns + column set.

Попробовал уже вывернуть в строки. Поигрался с типичными запросами, которые вертятся в системе, для EAV и для row+Sparse Columns случая. Те же яйца только в профиль по производительности (копейки).

Как считаете стоит ли заморачиваться с переехдом?
...
Рейтинг: 0 / 0
EAV vs SQL Server Sparse columns
    #38524990
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Проще будет научится писать запросы для EAV без излишних джоинов.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
EAV vs SQL Server Sparse columns
    #38524994
SERG1257
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
мимокрокодил0001Надоело писать join'ы при выколупывании значений колонок строк. Напишите вьюху
мимокрокодил0001 Те же яйца только в профиль по производительностиТо бишь достать одну строку, стоит ровно столько сколько собрать ту же строку из нескольких колонок. Ну так добавьте тестовых данных побольше.
мимокрокодил0001Как считаете стоит ли заморачиваться с переехдом? Производительность не единственное больное место у EAV.
...
Рейтинг: 0 / 0
EAV vs SQL Server Sparse columns
    #38525014
SERG1257,

Вьюху... Для чего-то написано, для чего-то нет.

Там структура такая таблица строк древовидная, строка - узел дерева, структура каждого узла разная, колонки значений в другой. На этом планируют строить документооборот с версионностью. У меня от этого муражки по ж... коже.

SERG 1257. по поводу добавить больше тестовых данных. тестировал пока только типовой запрос - достать строки:

1) row_table join value_table
2) row_table join LOOKUP row_table

разница по логическим чтениям не существенна была.

2-й случай спомощью include можно свести к очень мизерному количеству логичечских чтений. да и первый точно также, так как надо получить в данном запросе только значения колонок строки.

ps. берет печаль, от документооборота. уже есть с чем сравнить - дата документа в поле value, шапка в поле value, табличная часть тамже. выколупать по дате документ или составить отчет за период времени - одно удовольствие.

система досталась по наследству. с EAV в первые. целка порвана в щи.
...
Рейтинг: 0 / 0
EAV vs SQL Server Sparse columns
    #38525021
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если уж жизнь не мила без колоночного представления данных, открой для себя PIVOT (если он
там в MS есть конечно же).
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
EAV vs SQL Server Sparse columns
    #38525022
Dimitry Sibiryakov,

:)
...
Рейтинг: 0 / 0
EAV vs SQL Server Sparse columns
    #38525023
вбрасываю инфу для сочувствующих.

вангую запросы вида:

(col1 > '5' or col10 < 78) and col100 like 'xxx%' and ...

я еще понимаю когда заиндексировать для одной сущности.

но когда в одну таблицу свалены все сущности (не важно одна колонка value или 100) и эти колонки используются по разному, это же ж%па. как с этим боритесь вы?
...
Рейтинг: 0 / 0
EAV vs SQL Server Sparse columns
    #38525030
SERG1257
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
мимокрокодил0001тестировал пока только типовой запрос - достать строки:Ну одну строку по айди действительно достать быстро где угодно.

мимокрокодил0001вангую запросы вида:
(col1 > '5' or col10 < 78) and col100 like 'xxx%' and ...Теперь ты узнаешь что такое боль
И это не лечится ничем кроме параллельной структуры

Второй недостаток в том что при eav никак не получится навесить на СУБД скучные проверки типа название поля, таблицы, тип поля, ссылочную целостность и т.д. т.п. То бишь там где в традиционной структуре ты получишь ошибку СУБД, в eav это будет обязанность программиста.
...
Рейтинг: 0 / 0
EAV vs SQL Server Sparse columns
    #38525031
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
мимокрокодил0001запросы вида:

(col1 > '5' or col10 < 78) and col100 like 'xxx%' and ...
В условиях EAV они превращаются в запросы вида
Код: sql
1.
2.
3.
(Attr = 'Col1' and IntVal > 5) or
(Attr = 'Col10' and IntVal < 78) or
(Attr = 'Col100' and StrVal like 'xxx%') or ...


По-моему индексирование таблицы для таких запросов очевидно. Вам нет?..
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
EAV vs SQL Server Sparse columns
    #38525035
SERG1257мимокрокодил0001вангую запросы вида:

(col1 > '5' or col10 < 78) and col100 like 'xxx%' and ...Теперь ты узнаешь что такое боль
И это не лечится ничем кроме параллельной структуры



имеете ввиду рядом дополнительно к eav для сущностей создавать таблицы, физическая структура которых отражает логическую структуру сущностей, а эти таблицы уже индексировать и писать custom код для этого больного места?
...
Рейтинг: 0 / 0
EAV vs SQL Server Sparse columns
    #38525036
Dimitry Sibiryakovмимокрокодил0001запросы вида:

(col1 > '5' or col10 < 78) and col100 like 'xxx%' and ...
В условиях EAV они превращаются в запросы вида
Код: sql
1.
2.
3.
(Attr = 'Col1' and IntVal > 5) or
(Attr = 'Col10' and IntVal < 78) or
(Attr = 'Col100' and StrVal like 'xxx%') or ...


По-моему индексирование таблицы для таких запросов очевидно. Вам нет?..


а мне нет (мы друг друга не поняли?).

но такое есть

create index (id_client, id_grp, id_row, id_attr, value_checksum) include(value), где value nvarchar(max)
...
Рейтинг: 0 / 0
EAV vs SQL Server Sparse columns
    #38525038
SERG1257
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Именно так ибо вот этот конкретный запрос надо ускорять, а переписывать всю систему слишком дорого.
В итоге эта супергибкая система существует только рядом с совсем не гибкими костылями.

У EAV есть своя ниша определяемых пользователям дополнительных свойств, в которой недостатки незаметны, а преимущества неоспоримы.
...
Рейтинг: 0 / 0
EAV vs SQL Server Sparse columns
    #38525041
SERG1257Именно так ибо вот этот конкретный запрос надо ускорять, а переписывать всю систему слишком дорого.
В итоге эта супергибкая система существует только рядом с совсем не гибкими костылями.

У EAV есть своя ниша определяемых пользователям дополнительных свойств, в которой недостатки незаметны, а преимущества неоспоримы.

спасибо вам, добрый человек. пойду погружусь в небытие.
...
Рейтинг: 0 / 0
EAV vs SQL Server Sparse columns
    #38525053
guest_20040621
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
> У EAV есть своя ниша

Две ниши. Основная - временный коллектор. Менее очевидная - хранение конфигов. Никаких "определяемых пользователями дополнительных свойств" в базе данных по определению быть не должно. Метки - сколько угодно, но это не свойства.
...
Рейтинг: 0 / 0
EAV vs SQL Server Sparse columns
    #38525054
SERG1257
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
guest_20040621 Основная - временный коллектор.В целях уменьшения взаимонепонимания, добавьте пару строчек поясняющих этот термин.
...
Рейтинг: 0 / 0
EAV vs SQL Server Sparse columns
    #38525064
guest_20040621
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
> пару строчек

Штатная процедура, примерный регламент которой вы и описали. Есть некая сущность, представления о которой с течением времени расширяются. Для накопления статистики предпочтительного описания свойств этой сущности и используется структура типа атрибут - значение. Достаточно очевидно это работает в случае, если характеристика принимает семантические значение. Менее очевидно, если численные или связанные. Накопили варианты - преобразовали в обычные свойства, подчистили таблицу атрибутов - значений. Это не пользовательские данные в том смысле, что пользователи имеют возможность влиять на них очень небольшой промежуток времени, гораздо меньший, чем жизненный цикл сущности. Временный коллектор.
...
Рейтинг: 0 / 0
EAV vs SQL Server Sparse columns
    #38525068
SERG1257
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да, это именно то, что я подразумевал как "определяемые пользователями дополнительные свойста" - времянка, заплатка, "сопля", но которая здесь и сейчас и ввод которой точно не задевает другие части системы (в отличие от новой версии от вендора)
С конфигами согласен.
...
Рейтинг: 0 / 0
EAV vs SQL Server Sparse columns
    #38525072
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
guest_20040621Накопили варианты - преобразовали в обычные свойства, подчистили
таблицу атрибутов - значений
А зачем? Только чтобы уложить картину в привычный квадратно-гнездовой метод набора
фиксированных кортежей? Мыслить в терминах множеств это ведь так трудно с непривычки...
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
EAV vs SQL Server Sparse columns
    #38525075
SERG1257
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov А зачем?Чтобы добавить производительности и целостности.
...
Рейтинг: 0 / 0
EAV vs SQL Server Sparse columns
    #38525077
guest_20040621
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
> А зачем?

Затем, что сложно проектировать и поддерживать логически безупречные структуры. Затем, что существуют альтернативные корректные модели, которые можно совмещать или на которые можно забить. Энергопотребление бытового устройства вы можете указать числом или классом. Государство вы можете поделить административно-территориально, экономически, этнически, климатически и пр.
...
Рейтинг: 0 / 0
EAV vs SQL Server Sparse columns
    #38525218
_мод
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
guest_20040621Накопили варианты - преобразовали в обычные свойства, подчистили таблицу атрибутов - значений.
Некому преобразовывать - система отчуждена и находится на сопровождении конечного пользователя.
...
Рейтинг: 0 / 0
EAV vs SQL Server Sparse columns
    #38525288
guest_20040621
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
> Некому преобразовывать - система отчуждена и находится на сопровождении конечного пользователя.

Варианты трансформации базы данных в мусорную кучу не интересны.
...
Рейтинг: 0 / 0
EAV vs SQL Server Sparse columns
    #38525420
_мод
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
guest_20040621Варианты трансформации базы данных в мусорную кучу не интересны.
ЕАV изначально мусорная куча. Но в процессе ее эксплуатации она не становится более мусорной.
...
Рейтинг: 0 / 0
EAV vs SQL Server Sparse columns
    #38525504
guest_20040621
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
> в процессе ее эксплуатации она не становится более мусорной

Становится. Более того, это типичный путь деградации базы данных.

Дело даже не в скорости обработки кучи мусора, память и процессоры уже неприлично дёшевы, а в отсутствии эволюции представлений о внешнем мире. Фишка в том, что вы почти всегда вынуждены пользоваться упрощениями. Вчера вы полагали нечто функционально законченным и обладающим некоторыми признаками. Сегодня вы научились различать его структурные компоненты уже со своими признаками, которые не обязательно линейно связаны с предыдущим представлением. В общем случае ваша аналитика будет ограничена текущими представлениями, ваша работа до вчерашнего дня - коту под хвост. И чем больше изменений, тем хуже качество данных.
...
Рейтинг: 0 / 0
EAV vs SQL Server Sparse columns
    #38525593
LSV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Надоело писать join'ы при выколупывании значений колонок строкМожно сделать функцию, кот. по набору параметров-ключей вернёт нужное значение.

Запросы упростятся раз в 10. На больших выборках немного упадет производительность.
...
Рейтинг: 0 / 0
25 сообщений из 35, страница 1 из 2
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / EAV vs SQL Server Sparse columns
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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