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

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

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

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

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

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

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

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

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

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

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

Вопрос, на мой взгляд, отнюдь не простой.
...
Рейтинг: 0 / 0
24.07.2002, 18:51:56
    #32038599
Glory
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
XML в RDBMS: есть ли смысл?
Я думал над вертикальным вариантом - как быть с поиском для разных типов данных? Использовать 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
24.07.2002, 19:03:57
    #32038608
Maxx
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
XML в RDBMS: есть ли смысл?
2Glory
и снова спасибо,я нашел свой недочет(век живи век учись)
...
Рейтинг: 0 / 0
24.07.2002, 19:04:55
    #32038609
jimmers
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
XML в RDBMS: есть ли смысл?
По поводу sql_variant - я так понимаю, основной минус в размере, отводимом под хранение данного типа.

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

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

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

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

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



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

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

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

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

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

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

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

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

2 jimmers

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

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

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

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

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

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

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

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


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