powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / XML в RDBMS: есть ли смысл?
16 сообщений из 16, страница 1 из 1
XML в RDBMS: есть ли смысл?
    #32038207
Фотография jimmers
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Возникла необходимость реализовать функциональность, которая позволила бы хранить в БД информацию об объекте с меняющимся числом атрибутов. Классический подход не устраивает (т.к. при добавлении атрибута приходится добавлять поля в таблицы и изменять хранимые процедуры).
Есть подозрение, что эту задачу можно решить при помощи XML, но я не работал с этой технологией и прошу совета. Мои опасения:

1. Если хранить все XML документы в больших полях (‘просто текcтом’), то невозможно поддерживать целостность данных на уровне БД
2. Если хранить все XML документы в больших полях (‘просто текcтом’), то скорость поиска данных по таким полям мала, т.к. использование индексов затруднено
3. Если реализовать гибридную схему (кстати, какие тут существуют варианты?), то все равно останутся проблемы с производительностью поиска.
4. XML данные лучше хранить в XML-ориентированных БД, специально заточенных на это
5. Усложниться отладка кода, так как добавляется еще один уровень логики.

Что думает уважаемая публика?

P.S. В качестве иллюстрации могу привести такой пример: любой зарегистрированный в SQL.RU пользователь может добавить поля (атрибуты) в свой профиль и эти поля заполнять, поля же эти становятся видны всем при нажатии на соответствующую ссылку. Все это сделано так, что изменения схемы БД и процедур при добавлении атрибутов не происходит.
...
Рейтинг: 0 / 0
XML в RDBMS: есть ли смысл?
    #32038562
Glory
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Классический подход не устраивает (т.к. при добавлении атрибута приходится добавлять поля в таблицы и изменять хранимые процедуры).

Мне всегда казалось, что классический метод - это вертикальное расширение таблицы, а не горизонтальное
Т.е.
AttributeID, AttributeValue
и все

Либо для более сложных случаев, когда атрибут является еще и контейнером, то

AttributeID, ParentAttributeID, AttributeValue
...
Рейтинг: 0 / 0
XML в RDBMS: есть ли смысл?
    #32038578
Фотография jimmers
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я думал над вертикальным вариантом - как быть с поиском для разных типов данных? Использовать sql_variant не хочется, разносить по столбцам разного типа - тогда усложниться код выборки и, соответственно, простота работы...

Кстати, почему классический способ вертикальный - тогда бы все таблицы можно было создавать в формате AttrName, AttrValue.
...
Рейтинг: 0 / 0
XML в RDBMS: есть ли смысл?
    #32038579
Фотография ТиБиБи
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
> Использовать sql_variant не хочется, разносить по столбцам разного типа - тогда усложниться код выборки и, соответственно, простота работы...

А по XML будет лучше искаться? Не понимаю.

P.S. Если на такой простой вопрос не ответили, то на мой про Сущности и Атрибуты тоже вряд ли ответят... :(
...
Рейтинг: 0 / 0
XML в RDBMS: есть ли смысл?
    #32038582
Фотография Maxx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я не знаю как подерживает целостность Glory(я уверен у него все О.К.,я даже в етом больше чем уверен!!!),но мне для реализации вертикальной модели пришлось делать прослойку ХП и вней реализовывать все возможные решения проблем.Если Glory знает как решать подобную задачу без ХП( у меня только основных получилось 6*table,а еще куча вспомогательных ),то огромная просьба(если найдется минутка)-поделитесь опытом.
Спасибо
...
Рейтинг: 0 / 0
XML в RDBMS: есть ли смысл?
    #32038583
Фотография jimmers
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2Glory: также забыл упомянуть о том, что в решении AttrName, AttrValue обеспечение целостности будет возложено на Приложение…

А по XML будет лучше искаться? Не понимаю.
Я, собственно, об этом и спрашиваю - будет ли решение с использованием XML, лучше (если да, то почему и как оно должно быть реализовано - примерно, конечно).

Вопрос, на мой взгляд, отнюдь не простой.
...
Рейтинг: 0 / 0
XML в RDBMS: есть ли смысл?
    #32038599
Glory
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я думал над вертикальным вариантом - как быть с поиском для разных типов данных? Использовать sql_variant не хочется, разносить по столбцам разного типа - тогда усложниться код выборки и, соответственно, простота работы...

Если все-таки решится на использование sql_variant, то разве так сложно ?
Код: plaintext
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.
declare @attribute table (attributeid int, attribute_value sql_variant)

insert @attribute values( 1 , 'aaaa')
insert @attribute values( 2 , getdate())
insert @attribute values( 3 ,  111 )
insert @attribute values( 4 , PI())
insert @attribute values( 5 , 0xEACD)
insert @attribute values( 5 , '111')

insert @attribute values( 11 , 'bab')
insert @attribute values( 12 , getdate()- 10 )
insert @attribute values( 13 , - 57 )
insert @attribute values( 14 , -PI())

declare @srch sql_variant

set @srch = 'bab'
select * from @attribute where attribute_value = @srch

set @srch = getdate()
select * from @attribute where attribute_value = @srch

set @srch = -PI()
select * from @attribute where attribute_value = @srch

set @srch = 0xEACD
select * from @attribute where attribute_value = @srch

set @srch =  111 
select * from @attribute where attribute_value = @srch


также забыл упомянуть о том, что в решении AttrName, AttrValue обеспечение целостности будет возложено на Приложение…

Я же говорю про AttributeID который связан через FK с таблицей - перечнем всех возможных атрибутов. Или что вы имели ввиду под обеспечением целостности. Я опирался на приведенный вами в первом сообщении пример.

тогда бы все таблицы можно было создавать в формате AttrName, AttrValue.
Это 2 обязательных поля. Глядя опять же на ваш пример, может быть поле AttrStatus, которое определяет, например, что аттрибут e-mail скрыт/открыт. Или еще что-то в этом роде, например, то же описание оригинального типа данных.
...
Рейтинг: 0 / 0
XML в RDBMS: есть ли смысл?
    #32038608
Фотография Maxx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2Glory
и снова спасибо,я нашел свой недочет(век живи век учись)
...
Рейтинг: 0 / 0
XML в RDBMS: есть ли смысл?
    #32038609
Фотография jimmers
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
По поводу sql_variant - я так понимаю, основной минус в размере, отводимом под хранение данного типа.

По поводу целостности: если я создам атрибут, который может принимать только определенные значения (проще говоря, тот, что в горизонтальной схеме был бы FK), то проверять это придется Приложению.
...
Рейтинг: 0 / 0
XML в RDBMS: есть ли смысл?
    #32038617
Glory
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
По поводу sql_variant - я так понимаю, основной минус в размере, отводимом под хранение данного типа.

Ну varchar(8000) вас же не смущает ?

если я создам атрибут, который может принимать только определенные значения (проще говоря, тот, что в горизонтальной схеме был бы FK), то проверять это придется Приложению

А если в таблице-списке атрибутов имеется какой-то гипотетический признак(и), тогда,ориентируясь на него(них), можно организовать логику на триггерах, а не в приложении.

IMHO в любом случае объем кода для такой задачи (исходя из возможностей MS SQL) при разных вариантах будет одинаков. Можно только "сдвинуть" его либо в сторону приложения (это меньше забот для DBA), либо в сторону сервера (это меньше забот разработчикам).



2Maxx
Да я еще даже не обдумывал свой ответ вам
...
Рейтинг: 0 / 0
XML в RDBMS: есть ли смысл?
    #32038621
Фотография Maxx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2Glory
Ето я за подсазку полученную в вашем коде:),просто у меня тут голова пухла -не ложилась структура,а тут глянув
аж полегчало - сразу срослось.
Просто я потерял один "уровень" данных,а исходя из приведенного Вами примера (если его расскрутить "вверх"),я его нашел
ЗЫ
но если найдется время с удовольствием послушаю Вашу идею
...
Рейтинг: 0 / 0
XML в RDBMS: есть ли смысл?
    #32038643
Фотография jimmers
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Конечно же, varchar(8000) тоже не лучший вариант. Запросы будут и на поиск по временному диапазону (*date*),
и по подстроке (*char), и по количеству (int и т.п.). Тут sql_variant, безусловно, лучше varchar с конверсией.

Касательно триггеров - я это и имел ввиду под словом Приложение, то есть невозможно будет использовать встроенные
в СУБД механизмы поддержки целостности.

Спасибо за проявленный интерес к вопросу.

Буду думать...
...
Рейтинг: 0 / 0
XML в RDBMS: есть ли смысл?
    #32038809
Alexandr Kapustin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
можно попытаться использовать описанное в
http://www.compress.ru/Article.asp?id=2006
...
Рейтинг: 0 / 0
XML в RDBMS: есть ли смысл?
    #32038849
Фотография Jimmy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Alexander Kapustin

На основе этой технологии пробовали сделать ОО-сервер http://foxserver.nsvisual.com (к сожалению уже третий день проблемы с хостом и сейчас ссылка недоступна, но рекомендую посетить, как "поднимут" сервер).

Что-то даже уже работало, но производительность НА ПОРЯДОК ниже чем в классической реляции.
Теперь концепция FoxServer изменилась и используется более привычная схема хранения: попробовали отойти от устоев - хватит :0)

Заманчиво, конечно, иметь БД постоянной структуры, но слишком дорого это обойдется, т.к. речь здесь идет не о базе данных, а, по сути, о метабазе , где хранятся описания сущностей и их атрибуты. Такая структура данных начисто отрицает оптимизацию, DRI и т.д. (Собственно о том jimmers и говорит в отношении XML).

Только я уже попробовал эту схему и не рекомендую (разве что в виде опыта) ее использовать.

2 jimmers

Увы, я не великий знаток XML, но XML "прикручивается" к БД, как средство обмена/управления данными (шлюз своего рода), а не как структура хранения .

ИМХО, конечно.
...
Рейтинг: 0 / 0
XML в RDBMS: есть ли смысл?
    #32038860
Фотография jimmers
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот я и боюсь, что за XML “стоит” удобное средство для:

Обмена данными между разнородными системами

Создания различного представления данных (наподобие транспонирования таблиц, сортировки, сменяя дизайна и т.п. на “клиенте”)

А вот с точки зрения хранения – тут, мне кажется, только XML-ориентированные СУБД могу помочь.

Всем огромное спасибо за проявленное участие.
...
Рейтинг: 0 / 0
XML в RDBMS: есть ли смысл?
    #32049686
?
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
?
Гость
Jimmy, что подразумевается под словом ЭТУ?

"Только я уже попробовал эту схему и не рекомендую (разве что в виде опыта) ее использовать."

Так вы рекомендуете или не рекомендуете использовать структуры, подобные описанным в
http://foxserver.nsvisual.com/
Поясните, пожалуйста.
...
Рейтинг: 0 / 0
16 сообщений из 16, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / XML в RDBMS: есть ли смысл?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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