数据库的xml
1. 有XML数据库么
以前有,大概3、4年前吧,
当时Xml刚刚兴起,大家都在用,
不过Xml不能很好地管理数据,
所以现在只限用于前台页与前台数据的分离,
或是把从数据库读出来的数据存在XML中以备使用,
Xml现在已经不用于存储大量数据了。。
2. 什么是xml数据库
开始讨论XML和数据库之前,我们先回答许多人都遇到过的问题:“XML是数据库吗?”
如果仅按数据库这个术语的本质来看,XML文件就是数据库,它是数据的集合。在许多方面看起来它和其他文件没什么区别 -- 无论如何,每个文件都含有某种类型的数据。作为一种“数据库”格式,XML有一些优势:例如,它是自描述的(所用的标记描述了数据的结构和类型,尽管缺乏语义),可交换的(portable)(Unicode),能够以树型或图形结构描述数据。同样它也有缺点,例如,它显得有些繁琐,由于要对它进行解析和文本转换,所以数据访问速度较慢。
一个更有用的问题就是在较为宽松的意义上,XML及其周边技术是否可以算作“数据库” -- 数据库管理系统(DBMS)。答案是“在某种程度上是(sort of)”。从正面来说,XML提供了许多数据库所具备的东西:存储(XML文档), 模式(DTD, XML schema,RElAX NG 等等), 查询语言(XQuery, XPath, XQL, XML-QL, QUILT等等),编程接口(SAX, DOM,JDOM)等等。从反面来说,它缺少一些作为实用的数据库所应具备的特性:高效的存储,索引,安全,事务和数据一致性,多用户访问,触发器,在查询多个文件等等。
因此,尽管在数据量小、用户少和性能要求不太高的环境下,可以将XML文档用作数据库,但是却不适用于用户量大、数据集成度高以及性能要求高的作业环境。
XML适合于用作所谓“数据库”的一个好例子就是 .ini文件 -- 它包含应用程序的配置信息。与其写一个处理以逗号分隔(comma-delimited)的文件的解析器,开发一种小型的XML语言并写一个解释它的 SAX程序要容易的多。此外,XML允许使用嵌套的实体,而逗号分隔的文件(comma-delimited files)很难做到这点。然而,说它就是数据库还很勉强,因为它是线性读写的,而且仅用在程序开始和结束时。
比较适合于XML数据库的一些复杂的数据集就是个人通讯录(名字,电话号码,地址等),或用于描述浏览器书签以及用Napster偷来的MP3。然而,由于dBase和Access之类的数据库物美价廉,即使在这种情况下似乎也没有多少理由把XML文件作为数据库使用。XML的唯一真正好处就是数据的可交换性(portable),由于有越来越多的工具可以用来对数据库进行XML序列化(serializing),这一点好处似乎也要打些折扣。
3. 关系数据库中如何存储xml数据
XML文档的一个普通存在的问题是如何持久保存(Persist) XML文档。在一个关系数据库中存储XML文档是一个非常常用的方法,因为当前关系数据库的使用非常广泛。
将XML文档插入到数据库中不是简单的方法,这其中需要很多其它额外的考虑。现在我提供了一些技巧,你可以使用这些技巧在关系数据库中存储XML文档。
1、文档表:
一个最简单和容易的方法是,在一个具有单一文本域的数据库中建立一个表,由此你可以在表中存储XML数据。由于这些特定数据库和特定XML文档,这一文本域可以是一个二进制大型对象(BLOB,binary large object)。有些数据库需要存储的是大量的BLOB数据而不是文本。
这一方法的优点是,将数据存入表中变得相当简单,而且重新获得也同样很容易。这种文档表的管理也很方便。
这种方法的缺点在于你将可能无法进行一些有用的文本搜索,并且在放置特定文档时也会碰到困难,因为没有任何方法来识别表中的文档;
2、主键表:
下一个比较复杂的方法是使用一个主键表(keyed table)。这种方法与文档表非常相似,但此时你的表中包含两个域:一个唯一的主键和XML文档。使用这种方法,你既可以具有存储和获得整个XML文档的简洁性,也可以使用一些管理这些唯一主键的复杂操作;
建立主键的一种通用方法是使用XML文档中的MD5求和检验。请记住如果你想在表中包括多份XML文档,这一方法远不足够。在这种情况下,你可以添加额外的key fields标识键列。
与文档表一样,主键表很容易执行,它可以在表中查找特定的文档。然而,与文档表一样,你仍然不能执行任何文本查询;
3、有限离散表:
这一方法更加复杂,但它给你带来更多的灵活性。使用有限离散表,你可以建立用于存储有限分散的XML信息的表,这是什么意思?请看以下的例子:
假设你具有一个顺序文档。在文档的根部(Root)有一个Order元素,这一元素包括CustomerInfo, ItemInfo, 以及hippingInfo元素。在数据库中,你可以建立一个OrderDoc表,表中包含一个ID域,一个CustomerInfoId域,一个ItemInfoId域,一个ShippingInfoId域。然而,你还可以建立一个CustomerInfoId表,一个ItemInfoId表,一个ShippingInfoId表。这些表都包含很多信息相关的各自的ID域,这些信息包括用户,选项,邮寄信息。在这一表中,还包含着其它额外的等级。比如,CustomerInfo表包含AddressInfo域,即从AddressInfo表中引用的入口。
这种方法的优点是,允许你更紧密地建立XML数据的模型。这种方法使得你进行数据的一些成熟的查询。它也使得数据的使用性更强,因为你不再需要XML分析器来读取数据。
不足之处是这种方法需要更多的精力来开发和维护。这意味着每一文档都需要解析成分离的部分,然后存储在数据库中。如果这一过程没有得以很好管理,有可能会丢失一些数据。而且,这也意味着,当从一个数据库中获得一个XML文档时,你不得不连接这些分散的部分。
4. 数据库中的xml
关系数据库是2维的,它表示数据的方式与XML表示数据的方法一至
5. 数据库中保存的xml与xml文件
在数据库中保存:
sqlserver可以在sql语句中,对字段中的xml进行xpath检索。
如:select * from xxx where xpath(xxx.xmlfield, "/book/title") = "abc";
函数名我记不清了,大意就是这样了。
可以统一备份方案。
方便查找。
大量记录时,性能很高。
大小有限制,4G
xml文件:
优点:与数据库比想不出什么优点。
编程时要读数据库,知道文件名,再去打开文件IO,解读。还要记得关掉。
大量的文件,性能很差。一个目录里有几万个文件,基本就完蛋了。非常慢。
备份时要另外设计文件备份方案。
大体上就这些。
6. XML和数据库的区别
数据库操作的话,毕竟是比较慢的,相对于xml来说,是有点复杂一些。如果是复杂多的数据的话,你就可以使用数据库。但如果是很少的数据交互就使用xml
7. 从数据库中读取数据,创建xml文件
如果是Sql2005以上版本就简单了
SELECT TOP 10 * FROM dbo.UserInfo
FOR XML PATH('UserInfo'),ROOT ('UserList')
就会生成以下XML
PATH里面的字符串生成行标签
ROOT生成根标签
<UserList>
<UserInfo>
<UserName>administrator</UserName>
<Age>21</Age>
<NickName>小张</NickName>
......
</UserInfo>
<UserInfo>
<UserName>administrator</UserName>
<Age>21</Age>
<NickName>小张</NickName>
......
</UserInfo>
<UserInfo>
<UserName>administrator</UserName>
<Age>21</Age>
<NickName>小张</NickName>
......
</UserInfo>
......
</UserList>
8. 如何把数据库的表弄成xml格式
方法:
点击Excel左上角来按钮,在弹源出的选项中,点击“另存为”
或者直接在Excel中按下快捷键F12
2、选择最后一项:其他格式。
3、接下来,重命名一下文件名,并选择文件类型为:
XML数据(*.xml)
4、点击“保存”按钮,会出现如下错误警告:
因为工作簿不包含任何XML映射,所以无法保存任何XML数据。
单击“帮助”以获取详细信息。
5、这个原因是我们的工作簿只是普通的Excel数据,的确没有做过XML映射,或者Excel数据也不是从XML文件导入的。
这时,我们尝试另存为另一种文件类型:
XML电子表格2003(*.xml)
6、点击保存按钮。
7、这时会弹出一个兼容性对话框,问你是否保持工作簿的这种格式。
8、点击“是”,即可将Excel保存为XML格式的文档了。
我们使用软件打开这个XML文档(例如通过Chrome浏览器),发现格式正常,Excel数据也全在里面。
9. 数据库文件是什么格式 xml么
XML有以下几个优点:
•
数据是自说明的
•
数据可用标准工回具加以处理
•
数据可用标准工具查答看
•
用样式单可容易地生成同样数据的不同视图
XML格式的第一条主要好处是数据是自描述的。每个数字的意义是清楚的,且不会错误
10. 通过XML和数据库存储的区别
这是风牛马不相及的两个概念,他们的结构,应用范围是完全不同的内,目前的数据库基本上容都是关系型数据库,以sql与oracle为代表,都是非常大型的,可以进行数据的海量存储;而xml主要解决的是数据在网上传输标准的问题,把原来各种各样的数据孤岛可以通过xml这座桥梁连接起来,所以打个比方,数据库就好比是盛数据的桶,而xml则是数据传输转换的桥梁,所以数据库是数据库,xml是xml,二者是截然不同的,当然二者也存在非常紧密的联系,毕竟都是处理数据的工具,就是很多其他的数据格式可以通过xml输入到数据库中,数据库中的关系型数据也可以通过xml转化成其他的数据格式