我已经看到一些关系数据库,其中XML直接反映了SQL,我想知道是否有人能够让我了解为什么人们使用XML而不是其他选项。我的印象是,这更像是个人偏好,但同学告诉我,XML被认为“更好”,即在某些情况下效率更高。所以我想向大家提出这个问题,因为坦白说我想要第二个意见。
问题:您何时使用XML而不是ColdFusion或PHP(或其他替代方案)?有哪些固有优势可以使其成为更理想的选择?
例如,这可能是XML的样子:
<data>
<dataObject name="Test">
<primaryKey>Num</primaryKey>
<foreignKey dataObject="Test" key="Num"/>
<datums>
<datum type="integer" key="itemRecnum" label="Item Recnum" data="required"/>
<datum type="string" key="status" label="Status" data="required"/>
<datum type="integer" key="idnumber" label="ID Number" data="required"/>
</datums>
<constraints/>
</dataObject>
</data>
因此在SQL服务器中,每个都有1-1对应关系,每个数据类型都是一列。
有人可以解释一下使用XML从数据库中提取的优点是什么?究竟发生了什么,为什么它用于CF或PHP?它是如何从数据库推送和拉出的?
如果你把两者混合怎么办?也许有人会使用coldfusion进行插入,而xml只是用于视图?
答案 0 :(得分:0)
XML的目的是将数据存储在平面文件中, 人类可读(XML在实体的文本命名中有巨大的开销。它也不是人类可读的,它是一种传输介质),易于访问的形式。访问XML的方法 数据“商店”非常强大并且一直在不断发展,包括一个 Microsoft提出的“XQL”提案 - 一种旨在实现的SQL等价物 操纵XML数据存储。 XML非常简单,它本身可以用作数据库 - 实际上非常灵活:您的XML实现可以通过标记和不同的库数组进行无限定制。另外,如果您的数据库损坏了,您可以在几乎任何文本编辑器中打开它 - 毕竟它是一个文本文件。但是,XML有一个主要缺点:它在处理数据时比SQL慢,并且需要更多资源才能运行。
关于ColdFusion&amp;您可以阅读XML HERE
答案 1 :(得分:0)
如果您获得了分散在20个表中的业务对象(假设是酒店)的数据,并且您希望将数据发送给将数据组织得非常不同的16个具有不同结构的表,那么XML胜出的地方就是如此。 XML允许您在一条消息中捕获有关对象的所有信息,这些信息独立于数据库的设计,并且可能符合某些行业标准(如OTA),并将其加载到具有完全不同设计的不同数据库中。
另一方面,如果您的XML与SQL数据库设计的表和列密切相关,那么您从中获得的价值并不高。
答案 2 :(得分:0)
我A / B使用缓存的XML产品文件测试了一个非常繁忙的站点,缓存了一个非常大的查询,缓存了较小的单个查询,到目前为止,XML每次都执行得最差。读取文件所花费的时间查找特定记录然后解析数据会使服务器瘫痪。如果您手边有一个数据库并且正在寻找构建数据密集型网站的话,我强烈建议避免使用XML,除非您出于某种目的在数据库中存储XML。
如果您真的在寻找一个网站的平面文件系统,我会查看NoSQL数据库,例如MongoDB或CouchDB,有一些Coldfusion驱动程序和CFC已被编写用于这些系统。
答案 3 :(得分:0)
XML是一种数据存储机制。 ColdFusion和PHP是数据处理语言。 XML不会从数据库中提取数据。人们在XML中存储数据的原因有很多。这里讨论了一些原因:Why would I ever choose to store and manipulate XML in a relational database?
PHP和XML与XML一起使用,ColdFusion也是如此。如果您希望将XML转换为最终用户的某些内容,您可能需要考虑XSLT。