我已经从事面向数据库的Web应用程序开发几年了,最近接手了一个CMS项目,该项目支持XML。这让我开始思考XML/XSLT在一般情况下和在什么情况下会比我一直使用的方法更加有用,我的方法是将所有数据存储在(My)SQL数据库中,然后在需要时使用PHP/Python等语言进行Web访问。
很明显,有些地方我还没真正理解... 请问有没有例子可以说明,在哪些应用程序中使用XML文件而不是数据库存储数据会更好?
我已经从事面向数据库的Web应用程序开发几年了,最近接手了一个CMS项目,该项目支持XML。这让我开始思考XML/XSLT在一般情况下和在什么情况下会比我一直使用的方法更加有用,我的方法是将所有数据存储在(My)SQL数据库中,然后在需要时使用PHP/Python等语言进行Web访问。
很明显,有些地方我还没真正理解... 请问有没有例子可以说明,在哪些应用程序中使用XML文件而不是数据库存储数据会更好?
引用这本书 (Effective XML: 50 Specific Ways to Improve Your XML) 的话:
"XML不是数据库。它从来没有被设计成一个数据库,也永远不会成为数据库。关系型数据库是经过20多年实现经验证明的技术。它们是坚实、稳定、有用的产品。它们不会被淘汰。XML是在不同数据库之间或数据库和其他程序之间移动数据的非常有用的技术。但是,它本身不是数据库。不要像使用数据库一样使用它。"
我认为这句话概括了问题,虽然有点直白。XML是一种数据交换格式。可以使用XML解析库查询DOM并使用XPath表达式,但这与DBMS并不相同。您可以使用DOM/XPath接口构建DBMS,但要实现ACID属性或扩展到大型数据集,则需要实现DBMS引擎和具有索引、日志记录和其他DBMS特性的数据格式——这使它成为除XML之外的其他内容。
使用XML来创建需要发送到其他应用程序的文件。相比于数据存储格式,XML更适合作为数据交换格式。
当使用XML时,下面的链接描述得不错:为什么应该使用XML?
SQL适合存储和搜索表格数据,这些数据很容易放入行和列中。 XML适合层级数据,这些数据有多个不同大小的层级。
SQL适合存储和搜索数据。 XML适合传输和格式化数据。
1) 当你需要与他人交换数据时,XML是Web的“lingua franca”,几乎每个人都可以读取和解释它,而不像数据库文件。
2) 当你的数据量很小,而且不用对其进行复杂的查询时,XML文件非常适合存储配置或文档模板等内容。
3) 当你没有许多作者试图访问同一组数据时,SQL数据库具有涉及并发机制的内置功能,可以支持索引快速检索大型数据集中的信息...
我使用XML的事项:
在这些用例和数据库的用例之间没有太多重叠。有一些,但不多。
具有讽刺意味的是,我目前在桌面应用中最频繁使用XML的地方是构建内存中的ADO DataSet,并使用DataSet的WriteXml和ReadXml方法进行持久化和检索。我使用ADO是因为使用ADO动态构建由元信息定义的数据模型要比实现自己的对象模型容易得多。
所以这里有一个看起来像是我在使用XML作为数据库的情况。但实际上并不是这样。我正在使用一个实现了很多类似数据库功能的对象模型,并使用XML作为其持久性格式。
如果您没有数据库(比如单用户应用程序)或需要一种非常轻量级的存储格式,那么可以使用它。
正如之前的帖子提到的那样,它也是一种交换格式。
如果我的主机上有限制的mysql数据库,那么我会考虑使用XML作为数据存储库。