XML及其在数据库中的用法

时间:2010-08-26 01:36:51

标签: xml

什么是XML以及它如何在数据库中使用?如果这看起来像是家庭作业,那就是。

6 个答案:

答案 0 :(得分:2)

数据库通常用于为不希望将其序列化为实际数据库模式的应用程序存储XML块。但一般来说,XML不用于数据库。

这是隐含的,因为数据库是关于存储数据的,因为XML实际上是以不可知的方式传输数据。

(简化)通常情况是应用程序A将数据库A中的数据转换为XML流,然后传输到应用程序B.应用程序B然后将XML转换为一系列在数据库B中创建记录的SQL语句。

还有很多其他场景,但这会给你一个大致的想法。

答案 1 :(得分:1)

Xml(可扩展标记语言)是机器可读格式的编码文档的标记语言,强调互联网的灵活性,简单性和可用性

与其他编码相比,它的主要优点是互操作性 - 许多编程环境都具有读取和解析xml的能力,并且它具有人类可读性的优势。因此,xml通常用于传输或传输数据(例如在互联网上)。

Wikipedia page on xml有更多具体信息,但xml的各种用法的一些例子是:

  • RSS,一种用于发布频繁更新内容的供稿的协议。
  • XHTML,HTML的扩展
  • SOAP(简单对象访问协议),一种常用于在Web服务中构建信息的协议

相反,xml的冗长和灵活的结构是以相对昂贵的读取(在计算能力方面)为代价的,因此xml通常不用作面向性能的应用程序(如数据库)中的存储编码。 p>

就数据库中xml 的使用方式而言 - 数据库可能选择以xml格式向其客户端公开数据,或者以xml格式接受来自客户端的数据。数据库也可能用于将xml数据的“Blob”存储为表中的记录,但这是以很难根据该xml的内容查询数据库为代价的。

答案 2 :(得分:1)

Derek,在Sane和Kragen的帖子中都是正确的,但我想更进一步。

由于XML本身使用模式(模式来定义标记所代表的内容),因此XML本身可以被视为类似于任何其他数据库概念的数据库。

您可以为XML(XSD)定义自己的架构,然后以您选择的XML格式保留数据。

是的,您可以选择将一堆XML填充到SQL数据库的文本字段中,但您也可以将XML全部用作数据库,因为数据库只不过是在设计的模式中保存数据保存这些数据。这里有一个灰色区域,如果您编写了一个程序来存储和访问CSV格式的数据,那么即使是一个简单的逗号分隔文本文件也可以被视为数据库。

无论如何,使用XML,已经为定义了如何定义模式的标准(XSD标准)和解析器的构建符合这些标准,因此您可以将数据放入和读取数据超出XML格式的文档,符合命名模式(XSD)。

所以我想当你问一下如何在数据库中使用XML时,我想我的第一个问题是“数据库”究竟是什么意思?

您是指SQL数据库的特定供应商实现吗?或者“数据库”作为一个逻辑概念?或者也许如何使用XML来增强与特定类型数据库的交互?

到目前为止的答案中,我认为我们都在回答“数据库”的含义。

例如,XQUERY可以标准化的方式用于在一组XML文件中“查询”数据,或者在完全不同的上下文中使用XML可以轻松地将数据传入和传出Oracle或SQL Server,因为Microsoft和Oracle提供符合XML标准的接口。

答案 3 :(得分:0)

一般来说,德里克答案的大多数要点都适用。

在数据库中使用XML之前,我肯定会考虑两次。

大多数应用程序通常使用关系数据库。 但是,有时,系统中的信息本质上更加分层。在RDBMS结构中存储层次结构肯定是可能的,但是在检索它时需要进行大量操作才能使其恢复到所需的结构(例如SQL Server中的递归CTE使得此任务更容易但不一定更快)

因此,如果您遇到类似于必须存储n级文件夹层次结构或组织层次结构的问题,这两者本质上都是分层的,有时最好将其存储为XML。数据库通常是常见的存储机制,因为它可以更容易地同步更改,因此这些数据存储在DB中,尽管它也可能存储为平面文件。

现在,大多数关系数据库都提供了大量的XML支持,您可以使用T-SQL查询数据/更新所选节点等。

Re:什么是XML - 对于初学者来说here

答案 4 :(得分:0)

好的,当我说“数据库”时,我通常指的是由Oracle,SQL Server等关系引擎创建和访问的数据库。

是的,您当然可以使用XML文件作为存储数据的方法。它通常用于非常小且简单的数据量。但这是一个架构决策,通常由开发人员实施关系数据库与读取和写入XML文件和/或未来数据使用所需的努力量所驱动。有时候使用XML文件会更容易,有时则不然。

答案 5 :(得分:0)

从关系数据生成XML相对容易。示例:从关系数据生成Atom订阅源。示例:http://h2database.googlecode.com/svn/trunk/h2/src/test/org/h2/samples/newsfeed.sql

XML或HTML文档(或片段)通常按原样(无处理)存储在数据库中。