2009年8月19日,针对网友对用友U9SOA架构中使用存储过程的质疑,用友副总裁、CTO兼U9产品本部总经理黄涛表示:在U9目前版本的产品里面已经有了三千多张数据表,整个代码有一千万行以上,其中存储过程的代码量只占U9总代码量百分之一、二不到。U9的核心逻辑里面,包括网友举例的MRP计算里面,有些的确是用存储过程来实现的。 

  据黄涛介绍,在U9SOA架构里面,软件的设计和发布以及部署的头等要素是服务,我们的软件是由一个一个服务来组成的,以服务的组合来完成应用。在这样一个架构的应用系统中,存储过程只是服务内部业务逻辑实现手段之一。存储过程计算的技术模式是有使用场景的,我们可以根据计算的本质、CPU资源占用、IO资源占用等,来决定这个计算逻辑,究竟是放在应用服务器端合适,还是放在数据库服务器端合适,还是放在前端、放在WEB服务器上,甚至在浏览器客户端做控制更合适,我们要做这样的分析,这个计算逻辑应该分布在合适的位置上面去。 

  根据这种设计方式,U9把一部分的代码是放到存储过程里面实现的,但这并不违背SOA架构原则。 

  同时,黄涛表示,因为像这样ERP复杂的企业计算,性能要求是非常高的,在我们要满足客户应用的众多IT要求中,性能要求是排在首位的问题。把一些计算放在存储过程里面肯定有权衡,例如一致性和差异。但为了一致性的技术目标而忽略了性能目标,肯定不是一个合适的架构设计选择,所以我们用了数据库一些特有的技术提升了我们的性能。对一致性的影响,我们强调必须是可控的,存储过程使用是经过了严格的选择,对我们产品一致性影响是不大的,同时我们更好地发挥了平台厂商产品的优势。此外,通过简单的修改存储过程代码,目前U9也支持了Oracle数据库,说明存储过程的方式并不影响到数据库的选择。 

  “关于U9的性能问题,在INTEL实验室我们用五台普通服务器上就支撑了八千个并发测试,而平均响应时间只有0.18秒,这个速度是非常快的”,黄涛说道。