游客:
注册
|
登录
|
帮助
网友俱乐部
»
网络技术
» 正确设计关系数据库中保存大量XML文档的解决办法
网友生活网
|
网友学堂
如何获得金币?
诚招斑竹
IP归属地查询 PR查询 收录查询 whois查询
免费超短2级域名,your.jpy.cc
传世私服
|
传奇世界私服
注册亚洲交友中心,找个人来同居吧!
免费存储空间,免费网络硬盘
‹‹ 上一主题
|
下一主题 ››
投票
交易
悬赏
活动
打印
|
推荐
|
订阅
|
收藏
标题: 正确设计关系数据库中保存大量XML文档的解决办法
ty
荣誉会员
UID 9897
精华 0
积分 1868
帖子 901
威望 901
金币 892
热心 9
阅读权限 50
注册 2006-3-22
状态 离线
#1
使用道具
发表于 2006-4-2 18:54
资料
个人空间
短消息
加为好友
正确设计关系数据库中保存大量XML文档的解决办法
在关系数据库中存储大量XML文档会导致很多问题。解决这些问题的首要步骤是深刻理解XML文档中的参数。然后正确设计合适的解决方法。解决方法可以包括:一系列的结构表将XML文档分割为小块,或者直接捆绑到数据库中的BLOB域。
大量文档的潜在问题
当在关系数据库中保存XML文档,尤其是保存大量的XML文档时,由于采用方法的原因,可能会产生很多问题。有什么可能使得一个XML文档变得非常巨大呢?经过测试发现,一个XML文档变得很大的迹象是文档不能正常启动。这可能是因为以下潜在问题造成的。
首先是原始空间(raw space)的问题。出现的问题与XML文档的使用频率和存放空间相关,并不是因为文档大于通常情况下的状态,而是由于频繁地使用它们造成的问题。使用者必须有一个适当大小的数据分区或数据库来存放这些文档。
在关系数据库中保存大量XML文档的解决办法
其次,运行数据库可能会产生错误。有时候XML文档会分成多个部分,存放在代表XML文档结构的不连续的表中。但通常情况下,XML文档存放在BLOB域、文本域或者VARCHAR域中。
除了在数据库设计上的缺欠之外,使用者还有可能碰到与数据库通信的界面方面的问题。例如,绝大多数SQL执行都限制数据为4096字节——这就意味着,当使用SQL向数据库发送10KB文档的时候,该文档将会遇到问题。在数据库存储程序中也存在类似的限制。如果没有意识到这些限制以及文档是否超出范围的,使用者在使用过程中难免会碰到这些问题。
数据库设计
开发人员和数据库管理人员必须清楚地理解XML文档中将要产生的操作,这样才有可能正确地设计数据库。理解将如何使用数据库也同样是相当重要的。
如果以整块方式存储整个文档,这时有多种选择。对于非连续数据,使用者应该设计出代表XML结构的表,并将数据分开存放到独立的表中。将数据分开存放的优点是在于可索引性和可查询性,以后进行查询操作时不需要再对整个文档进行操作。
BLOB(Binary Large Objects,大型二进制对象)域被用于存储大型的二进制格式的数据。例如,加密文件通常都用于BLOB域。BLOB域非常适合存放XML文件。不过,BLOB域不具备可索引性和可查询性,而且它不能通过标准的SQL与BLOB交换大量的数据。
两种解决方法
一个解决SQL限制的方法是将XML文档分割成为4KB或更小的块,这些小块再存放在表中,然后使用ID域将这些小块联系起来。
在存储这些文档时,使用者应该将它们分割成为小块并存放在表中。当返回文档时,使用者通过特定的ID选择所有的块,然后以合适的顺序对它们进行集合。虽然比较麻烦,但这一方法对于多数据库非常有用。
使用BLOB域可以在不分割的情况下存放大量XML文档,但是BLOB域的问题在于不能使用SQL存储和获得数据。近年来,数据库厂商都有了自己的存储和获得大型对象的方法。
为了在一个BLOB域中存储大量的XML文档,使用者必须使用捆绑(binding)。捆绑是将程序代码中的数据与数据库中的域相互联系的过程。使用这一方法后,当改变数据库的时候,会有可能影响数据库的其他功能。
[广告]
免费域名(Free Subdomain)
免费空间(Free hosting)
PR查询(Google Pagerank)
投票
交易
悬赏
活动
控制面板首页
编辑个人资料
积分交易
公众用户组
好友列表
个人空间管理
基本概况
流量统计
客户软件
发帖量记录
论坛排行
主题排行
发帖排行
积分排行
在线时间
管理团队
管理统计
当前时区 GMT+8, 现在时间是 2008-10-8 02:11
信产部ICP备案:
京ICP备05066424号
北京市公安局网监备案:1101050648号
Powered by
Discuz!
5.5.0
TOP
清除 Cookies
-
联系我们
-
网友俱乐部
-
Archiver
-
WAP