我遇到了一个名为GetSimple的CMS。它使用XML来存储其所有内部数据。在某种程度上,它使用XML作为数据库。现在任何人都可以解释我的优点和优点使用XML作为数据库的缺点。
先谢谢。 Tanmoy
答案 0 :(得分:7)
Some information, Quoted from this site:
如果您的应用需要在企业之间移动数据,那么XML是一个很好的解决方案。 XML允许您使用标准HTTP协议通过Internet和防火墙发送数据。如果您的应用程序需要在硬件或软件平台(OS)之间移动数据,那么XML也是一个不错的选择。 XML不是机器或操作系统特定的。最后,如果您只是想确保您的应用程序或数据源是健壮的,即使数据架构发生了变化,XML也是一个很好的选择。 XML使您的应用程序可扩展,因为您使用元素和属性名称而不是结构化编程语言使用的偏移来访问XML格式的数据。请注意,使用元素和属性名称访问XML中的数据类似于在SQL Server表中按名称访问字段。如果您有一个或多个这些应用程序要求,那么XML对您来说是一个很好的解决方案。
接下来,您需要确定在应用程序中生成或使用XML的最佳位置,这是一个重要的决定因为使用XML会导致处理开销。这种开销以不同的方式表现出来,具体取决于您是在使用XML还是生成XML。对于XML使用者,您需要使用minimuma方法来解析XML。您可能还需要一个对象模型来访问已解析的数据。对于XML生成器,将本机数据格式转换为XML会产生开销。在中间层,处理开销至关重要。 如果您的中间层程序操作,执行计算或重新格式化数据,并且您的数据库位于防火墙内,则XML不应该是您的首选。在这种情况下,从数据库请求正常结果集并使用传统数据访问方法来执行应用程序处理将更有效。处理完成后,中间层应用程序可以生成XML输出。使用传统的数据访问方法可以避免在数据库中生成XML的开销,以及解析XML和在中间层上构建对象模型的开销。 在中间层生成XML的唯一潜在好处是,您可以将中间层应用程序与数据库松散耦合,但成本非常高。
现在,让我们将这些使用指南应用于您在问题中描述的方案。您似乎无需在企业之间,Internet上或通过防火墙移动数据。 因此,除非您尝试使应用程序更具可扩展性,否则XML不适合您的方案。传统的数据访问技术将满足您的需求。但为了演示XML的价值,我们假设您需要使您的应用程序可扩展。您可以升级到SQL Server 2000并使用其集成的XML支持。这是您的最佳选择,因为它提供了最大的灵活性。如果必须从SQL Server 7.0或6.5访问数据,请查看http://msdn.microsoft.com/downloads/samples/internet/xml/sqlxml/default.asp处的SQL Server XML技术预览。此预览提供与SQL Server 2000中的XML支持类似的功能,但预览适用于SQL Server 7.0和6.5。 (有关SQL Server 2000的XML集成与Microsoft的XML技术预览之间差异的信息,请参阅Bob Beauchemin,“XML文件”,2000年9月。)
答案 1 :(得分:2)
只要数据集保持相对较小,使用XML作为数据库就可以正常工作。 Meaining,它可以适合记忆并舒适地呆在那里。一旦您的数据增长到不能完全适合内存的程度,您可能会开始看到严重的性能下降。
答案 2 :(得分:0)
简要介绍网络this article on XML.com
领先者是:'在最近关于如何为XML应用程序选择最合适的数据库的XML-DEV讨论之后,XML-Deviant会捕获有助于让您更接近决策的指标。
文章讨论了“数据”和“文档”的区别。
答案 3 :(得分:0)
实际上,XML文档已经是数据库了,无论你使用DOM,SAX,Pull还是VTD-XML,在存储到数据库之后你仍然需要做...它在我的视图中或多或少是透视变化< / p>
答案 4 :(得分:0)
我认为这还取决于查询的复杂程度。如果您在编写XPath查询时相当舒服,那么即使您必须跨越几个“维度”查询数据,您仍然会留下相当不可怕的XPath代码。
但是,如果你在谈论一个需要在SQL中连接3或4个表的数据模型,那么你可能已经接近XPath停止扩展的那一点了。我不能说这与其他查询语言(如XQuery或XLinq)的效果如何 - 可能会在不同的地方进行权衡。
答案 5 :(得分:0)
另外,请参阅http://www.joelonsoftware.com/articles/fog0000000319.html,了解为什么“当您的数据以XML格式存储时,您无法快速实现SQL语句SELECT author FROM books。”
(“快”是这里的关键词)