提前感谢。 Tanmoy
如果您的应用程序需要在企业间传输数据,那么XML是一个很好的解决方案。XML使您可以通过使用标准HTTP协议在互联网和防火墙之间发送数据。如果您的应用程序需要在硬件或软件平台(操作系统)之间传输数据,那么XML也是一个不错的选择。 XML不会受到机器或操作系统的限制。最后,如果您只是想确保应用程序或数据源即使数据模式发生变化也能够强大,那么XML是一个不错的选择。由于您可以通过使用元素和属性名称而不是偏移量来访问XML格式的数据,因此XML使您的应用程序具有可扩展性。请注意,在XML中使用元素和属性名称访问数据类似于在SQL Server表中按名称访问字段。如果您具有其中一个或多个应用程序要求,则XML是一个不错的解决方案。
接下来,您需要确定在应用程序内生成或消耗XML的最佳位置,这是一个重要的决策,因为使用XML会产生处理开销。这种开销表现出不同的方式,具体取决于您是消费还是生成XML。对于XML消费者,您至少需要一种方法来解析XML。您可能还需要一个对象模型来访问解析的数据。对于XML生产者,将本地数据格式转换为XML会产生开销。在中间层,处理开销至关重要。如果您的中间层程序对数据进行操作、计算或重新格式化,并且您的数据库在防火墙内部,则XML不应该是您的首选。在这种情况下,从数据库请求正常结果集,并使用传统的数据访问方法执行应用程序处理将更有效。处理完成后,中间层应用程序可以生成XML输出。使用传统的数据访问方法可以避免在数据库中生成XML所带来的开销以及在中间层上解析XML和构建对象模型所带来的开销。在中间层上生成XML的唯一潜在好处是您可以松散耦合中间层应用程序和数据库,但成本相当高。
现在,让我们将这些使用指南应用于您在问题中描述的情况。您似乎没有要求在企业之间、通过互联网或防火墙传输数据。因此,除非您想使您的应用程序更具可扩展性,否则XML不是您场景的好选择。传统的数据访问技术可以满足您的需求。但是,为了展示XML的价值,假设您需要使您的应用程序具有可扩展性。您可以升级到SQL Server 2000并使用其集成的XML支持。这是您最好的选择,因为它提供了最大的灵活性。如果您必须从SQL Server 7.0或6.5访问您的数据,则请查看SQL Server XML技术预览版:http://msdn.microsoft.com/downloads/samples/internet/xml/sqlxml/default.asp。此预览版提供类似于SQL Server 2000中的XML支持的功能,但该预览版适用于SQL Server 7.0和6.5。(有关SQL Server 2000的XML集成和Microsoft的XML技术预览之间差异的信息,请参见Bob Beauchemin,“The XML Files”,2000年9月。)只要数据集相对较小,使用XML作为数据库是可以正常工作的。这意味着它可以全部存储在内存中并且舒适地保留在那里。一旦数据增长到无法全部存储在内存中的程度,您可能会开始看到严重的性能下降。
实际上,XML文档已经是数据库了,无论你使用DOM、SAX、Pull还是VTD-XML,存储在数据库中后仍然需要进行操作... 在我看来,这更多地是一种视角的转变。
我认为这还取决于您查询的复杂性。如果您相当熟悉编写XPath查询,那么即使您必须跨一些“维度”查询数据,您仍然会得到相当不可怕的XPath代码。
然而,如果您正在谈论需要在SQL中跨3或4个表进行联接的数据模型,则您可能已经接近XPath停止良好扩展的点。我无法确切地说其他查询语言(如XQuery或XLinq)的效果如何——也许权衡在不同的地方。