我几年来一直致力于数据库驱动的Web应用程序,并且最近开展了一个涉及支持XML的CMS的项目.这使我开始考虑XML/XSLT的使用,以及在什么情况下它比我一直使用的方法更有用,它将我的所有数据存储在(My)SQL数据库中,然后使用PHP/Python的/等.根据需要在网上使用它.
显然我在这里没有"得到"......有人能给我一些应用程序示例,其中将数据存储在XML文件而不是数据库中会更好吗?
引用本书(有效的XML:50种改进XML的具体方法):
"XML不是数据库.它从来就不是一个数据库.它永远不会是一个数据库.关系数据库是经过验证的技术,具有20多年的实施经验.它们是坚固,稳定,实用的产品.它们不会消失.XML是一种非常有用的技术,用于在不同数据库之间或数据库与其他程序之间移动数据.但是,它本身并不是一个数据库.不要像那样使用它."
如果有点直言,我认为这总结了一下.XML是一种数据交换格式.可以使用XML解析库来查询带有XPath表达式的DOM,但这与DBMS不同.您可以使用DOM/XPath接口构建DBMS,但要获得ACID属性或扩展到大型数据集,您需要实现DBMS引擎和带有索引,日志记录和DBMS的其他工件的数据格式 - (根据定义)它不是XML的东西.
使用XML创建需要发送到其他应用程序的文件.XML更适合作为数据交换格式而不是数据存储格式.
使用XML时可以描述以下链接:我为什么要使用XML?
SQL是很好的表格数据 - 很容易适合行和列的数据.XML适用于分层数据 - 具有多个不同大小级别的数据.
SQL适用于存储和搜索.XML适用于传输和格式化.
1)当您必须与他人交换数据时.XML是Web 的" 通用语言 " - 与数据库文件不同,几乎每个人都可以阅读和解释它.
2)当您的数据量很小并且您不必对其进行复杂查询时.XML文件适用于存储配置或文档模板等内容.
3)当你没有很多作家试图访问相同的数据时.SQL数据库涉及为您提供幕后工作的并发机制.SQL数据库可以支持快速检索大数据集信息的索引......
我使用XML的东西:
持久化对象层次结构.
将数据从一个进程或机器移动到另一个进程
数据变化很少,如果有的话; 配置设置等.
作为XSLT转换的输入:一般来说,如果我的一个程序发出HTML,它就是使用XSLT来完成它,因此源数据将在某些表示为XML
文字标记.(我们不要忘记!)
这些用例与数据库的用例之间没有很多重叠.一些,但不多.
具有讽刺意味的是,我目前正在最大限度地使用XML的是一个桌面应用程序,它构建了一个内存中的ADO DataSet,并使用DataSet的WriteXml和ReadXml方法来持久化和检索它.我正在使用ADO,因为使用ADO动态构建由元信息定义的数据模型要比为任务实现我自己的对象模型要容易得多.
所以这是一个看起来我正在使用XML作为数据库的情况.但我真的不是.我使用的对象模型恰好实现了许多类似数据库的功能,而我正在使用XML作为其持久性格式.