用户ID: 密码: 验证:

登 录

注 册 取回密码

中山教育

中山国际网

中国教育在线

时代财富科技公司 FortuneAge Technology Co., Ltd. 校园博客客服网站(新)

我的资料

zyxxhwqin

博客信息

积分:193
等级:2级 lv 2
日志总数:46
发表评论总数:0 ( 查看)
获得评论总数:4
发表留言总数:1
所属学校:竹苑小
收藏本站:

最新公告

暂无公告

最新相册

我的日历

最新评论

推荐几个最好的(www.kubike.cn )(www.y...
--游客
3、4点已经被证实是谣传;5点如果是智能手机就有可能,非智...
原来是这样的啊!我一直都不知道呢!谢谢你!
--游客
nice to meet you,以后有坚野多多show下...

最新留言

[全部留言] [发表留言]
黄老师,真羡慕你们有时间有闲情写博客啊!我是市一中高中部的...
--高超

RSS


首页 -> 教学研究->XML文档生成[主题][图]
XML文档生成[主题][图]

文章转载自:http://

正确设计关系数据库中保存大量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)。捆绑是将程序代码中的数据与数据库中的域相互联系的过程。使用这一方法后,当改变数据库的时候,会有可能影响数据库的其他功能。 

 

在关系数据中保存大量XML文档的解决办法

网友评论

共 0 页,0 条记录  

用户名:
密码:
您的评论:
正在载入编辑器...
请输入验证码:


发 表 评 论

黄伟勤-中山教师家园