|
|
|
XML в RDBMS: есть ли смысл?
|
|||
|---|---|---|---|
|
#18+
Возникла необходимость реализовать функциональность, которая позволила бы хранить в БД информацию об объекте с меняющимся числом атрибутов. Классический подход не устраивает (т.к. при добавлении атрибута приходится добавлять поля в таблицы и изменять хранимые процедуры). Есть подозрение, что эту задачу можно решить при помощи XML, но я не работал с этой технологией и прошу совета. Мои опасения: 1. Если хранить все XML документы в больших полях (‘просто текcтом’), то невозможно поддерживать целостность данных на уровне БД 2. Если хранить все XML документы в больших полях (‘просто текcтом’), то скорость поиска данных по таким полям мала, т.к. использование индексов затруднено 3. Если реализовать гибридную схему (кстати, какие тут существуют варианты?), то все равно останутся проблемы с производительностью поиска. 4. XML данные лучше хранить в XML-ориентированных БД, специально заточенных на это 5. Усложниться отладка кода, так как добавляется еще один уровень логики. Что думает уважаемая публика? P.S. В качестве иллюстрации могу привести такой пример: любой зарегистрированный в SQL.RU пользователь может добавить поля (атрибуты) в свой профиль и эти поля заполнять, поля же эти становятся видны всем при нажатии на соответствующую ссылку. Все это сделано так, что изменения схемы БД и процедур при добавлении атрибутов не происходит. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.07.2002, 12:40:36 |
|
||
|
XML в RDBMS: есть ли смысл?
|
|||
|---|---|---|---|
|
#18+
Классический подход не устраивает (т.к. при добавлении атрибута приходится добавлять поля в таблицы и изменять хранимые процедуры). Мне всегда казалось, что классический метод - это вертикальное расширение таблицы, а не горизонтальное Т.е. AttributeID, AttributeValue и все Либо для более сложных случаев, когда атрибут является еще и контейнером, то AttributeID, ParentAttributeID, AttributeValue ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.07.2002, 17:11:25 |
|
||
|
XML в RDBMS: есть ли смысл?
|
|||
|---|---|---|---|
|
#18+
Я думал над вертикальным вариантом - как быть с поиском для разных типов данных? Использовать sql_variant не хочется, разносить по столбцам разного типа - тогда усложниться код выборки и, соответственно, простота работы... Кстати, почему классический способ вертикальный - тогда бы все таблицы можно было создавать в формате AttrName, AttrValue. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.07.2002, 17:44:44 |
|
||
|
XML в RDBMS: есть ли смысл?
|
|||
|---|---|---|---|
|
#18+
> Использовать sql_variant не хочется, разносить по столбцам разного типа - тогда усложниться код выборки и, соответственно, простота работы... А по XML будет лучше искаться? Не понимаю. P.S. Если на такой простой вопрос не ответили, то на мой про Сущности и Атрибуты тоже вряд ли ответят... :( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.07.2002, 17:54:29 |
|
||
|
XML в RDBMS: есть ли смысл?
|
|||
|---|---|---|---|
|
#18+
Я не знаю как подерживает целостность Glory(я уверен у него все О.К.,я даже в етом больше чем уверен!!!),но мне для реализации вертикальной модели пришлось делать прослойку ХП и вней реализовывать все возможные решения проблем.Если Glory знает как решать подобную задачу без ХП( у меня только основных получилось 6*table,а еще куча вспомогательных ),то огромная просьба(если найдется минутка)-поделитесь опытом. Спасибо ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.07.2002, 18:20:19 |
|
||
|
XML в RDBMS: есть ли смысл?
|
|||
|---|---|---|---|
|
#18+
2Glory: также забыл упомянуть о том, что в решении AttrName, AttrValue обеспечение целостности будет возложено на Приложение… А по XML будет лучше искаться? Не понимаю. Я, собственно, об этом и спрашиваю - будет ли решение с использованием XML, лучше (если да, то почему и как оно должно быть реализовано - примерно, конечно). Вопрос, на мой взгляд, отнюдь не простой. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.07.2002, 18:20:51 |
|
||
|
XML в RDBMS: есть ли смысл?
|
|||
|---|---|---|---|
|
#18+
Я думал над вертикальным вариантом - как быть с поиском для разных типов данных? Использовать 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. также забыл упомянуть о том, что в решении AttrName, AttrValue обеспечение целостности будет возложено на Приложение… Я же говорю про AttributeID который связан через FK с таблицей - перечнем всех возможных атрибутов. Или что вы имели ввиду под обеспечением целостности. Я опирался на приведенный вами в первом сообщении пример. тогда бы все таблицы можно было создавать в формате AttrName, AttrValue. Это 2 обязательных поля. Глядя опять же на ваш пример, может быть поле AttrStatus, которое определяет, например, что аттрибут e-mail скрыт/открыт. Или еще что-то в этом роде, например, то же описание оригинального типа данных. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.07.2002, 18:51:56 |
|
||
|
XML в RDBMS: есть ли смысл?
|
|||
|---|---|---|---|
|
#18+
2Glory и снова спасибо,я нашел свой недочет(век живи век учись) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.07.2002, 19:03:57 |
|
||
|
XML в RDBMS: есть ли смысл?
|
|||
|---|---|---|---|
|
#18+
По поводу sql_variant - я так понимаю, основной минус в размере, отводимом под хранение данного типа. По поводу целостности: если я создам атрибут, который может принимать только определенные значения (проще говоря, тот, что в горизонтальной схеме был бы FK), то проверять это придется Приложению. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.07.2002, 19:04:55 |
|
||
|
XML в RDBMS: есть ли смысл?
|
|||
|---|---|---|---|
|
#18+
По поводу sql_variant - я так понимаю, основной минус в размере, отводимом под хранение данного типа. Ну varchar(8000) вас же не смущает ? если я создам атрибут, который может принимать только определенные значения (проще говоря, тот, что в горизонтальной схеме был бы FK), то проверять это придется Приложению А если в таблице-списке атрибутов имеется какой-то гипотетический признак(и), тогда,ориентируясь на него(них), можно организовать логику на триггерах, а не в приложении. IMHO в любом случае объем кода для такой задачи (исходя из возможностей MS SQL) при разных вариантах будет одинаков. Можно только "сдвинуть" его либо в сторону приложения (это меньше забот для DBA), либо в сторону сервера (это меньше забот разработчикам). 2Maxx Да я еще даже не обдумывал свой ответ вам ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.07.2002, 19:28:32 |
|
||
|
XML в RDBMS: есть ли смысл?
|
|||
|---|---|---|---|
|
#18+
2Glory Ето я за подсазку полученную в вашем коде:),просто у меня тут голова пухла -не ложилась структура,а тут глянув аж полегчало - сразу срослось. Просто я потерял один "уровень" данных,а исходя из приведенного Вами примера (если его расскрутить "вверх"),я его нашел ЗЫ но если найдется время с удовольствием послушаю Вашу идею ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.07.2002, 19:37:09 |
|
||
|
XML в RDBMS: есть ли смысл?
|
|||
|---|---|---|---|
|
#18+
Конечно же, varchar(8000) тоже не лучший вариант. Запросы будут и на поиск по временному диапазону (*date*), и по подстроке (*char), и по количеству (int и т.п.). Тут sql_variant, безусловно, лучше varchar с конверсией. Касательно триггеров - я это и имел ввиду под словом Приложение, то есть невозможно будет использовать встроенные в СУБД механизмы поддержки целостности. Спасибо за проявленный интерес к вопросу. Буду думать... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.07.2002, 23:46:58 |
|
||
|
XML в RDBMS: есть ли смысл?
|
|||
|---|---|---|---|
|
#18+
можно попытаться использовать описанное в http://www.compress.ru/Article.asp?id=2006 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.07.2002, 15:53:14 |
|
||
|
XML в RDBMS: есть ли смысл?
|
|||
|---|---|---|---|
|
#18+
2 Alexander Kapustin На основе этой технологии пробовали сделать ОО-сервер http://foxserver.nsvisual.com (к сожалению уже третий день проблемы с хостом и сейчас ссылка недоступна, но рекомендую посетить, как "поднимут" сервер). Что-то даже уже работало, но производительность НА ПОРЯДОК ниже чем в классической реляции. Теперь концепция FoxServer изменилась и используется более привычная схема хранения: попробовали отойти от устоев - хватит :0) Заманчиво, конечно, иметь БД постоянной структуры, но слишком дорого это обойдется, т.к. речь здесь идет не о базе данных, а, по сути, о метабазе , где хранятся описания сущностей и их атрибуты. Такая структура данных начисто отрицает оптимизацию, DRI и т.д. (Собственно о том jimmers и говорит в отношении XML). Только я уже попробовал эту схему и не рекомендую (разве что в виде опыта) ее использовать. 2 jimmers Увы, я не великий знаток XML, но XML "прикручивается" к БД, как средство обмена/управления данными (шлюз своего рода), а не как структура хранения . ИМХО, конечно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.07.2002, 17:46:06 |
|
||
|
XML в RDBMS: есть ли смысл?
|
|||
|---|---|---|---|
|
#18+
Вот я и боюсь, что за XML “стоит” удобное средство для: Обмена данными между разнородными системами Создания различного представления данных (наподобие транспонирования таблиц, сортировки, сменяя дизайна и т.п. на “клиенте”) А вот с точки зрения хранения – тут, мне кажется, только XML-ориентированные СУБД могу помочь. Всем огромное спасибо за проявленное участие. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.07.2002, 18:03:00 |
|
||
|
XML в RDBMS: есть ли смысл?
|
|||
|---|---|---|---|
|
#18+
Jimmy, что подразумевается под словом ЭТУ? "Только я уже попробовал эту схему и не рекомендую (разве что в виде опыта) ее использовать." Так вы рекомендуете или не рекомендуете использовать структуры, подобные описанным в http://foxserver.nsvisual.com/ Поясните, пожалуйста. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.09.2002, 13:51:37 |
|
||
|
|

start [/forum/topic.php?fid=46&msg=32038617&tid=1820431]: |
0ms |
get settings: |
7ms |
get forum list: |
20ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
58ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
67ms |
get tp. blocked users: |
2ms |
| others: | 206ms |
| total: | 379ms |

| 0 / 0 |
