我们系统的开发是基于MSSQL XML的,在开发和维护中,一直对这个框架感到很多疑问,今天这些问题和微软的一个数据库专家聊了聊,总结如下:
一、MSSQL XML的设计是为了在Intranet上方便的存取数据。其中一个使用场景:在异构环境下,即不同系统进行数据库调用时使用。
二、如果把所有的操作都依赖XML,会有挺大的问题。至少在MSSQL2000中是这样。
三、从SQL服务器,返回数据比返回XML快。
四、如果需要返回XML,可以通过DataSetàXML的方式。
五、通过业务曾把数据转化成XML,可以分散负荷,并且效率会高些。系统伸缩性好。
六、用MSSQL处理并返回XML的消耗比较大。(理论上是,但未测试)
七、自己的项目中从没用过,都是基于DataSet的。
八、在同一个系统内,基本不需要通过SQL XML进行调用。
九、如果非要通过SQL XML调用,则应该注意:返回的XML应尽量和地称数据库设计无关,更多的用来表达业务信息。所以更适合有一个业务适配层,但是这个适配层如果放在数据库里做,则灵活性不好。除非是很简单的应用场景。这就是不用SQL XML的原因。
十、处理XML还是放在业务层里比较好。无论从架构还是编程角度来说,都是比较好的方法。
十一、 对SQL XML定位在应用层就会比较痛苦。
十二、 在系统内部,使用DataSet方式很好,使用简单,功能强大。
十三、 建立连接时所有成本里是最高的,pooling减少了connection的成本。
十四、 围绕着SQL XML进行查询,使查询的成本增加,使原来小的查询做的工作,必须用复杂查询来完成,使得数据库资源利用率下降。表现在锁的粒度加大,查询优化器优化放案不佳。