Migrating Database Stored Procedures--A Case Study
【摘要】:日新月异的科技发展和全球化的商业趋势使得很多现有系统都不能满足商业需求的不断变化,系统的移植和升级成为近年来IT行业一大热门话题。这其中一个关键部分就是后段数据库的移植,尤其是存储过程移植。不同开发商提供的产品的巨大差异性,造成了很多目前市场上的工具仍无法解决的问题,本文己浙江大学道富技术中心一个实际案例为样本来研究SQL SERVER 2000到DB2 UDB 8存储过程移植的具体问题,并试图从三个角度予以阐述。代码转换方面,针对由于系统规范不同,如语言语法和XML生成问题;操作系统支持差异,如SQL Server支持并集成COM技术;DBMS差异,如系统表不同;内嵌函数的差异等原因引起的存储过程移植问题,本文都提出了相应的解决方案,如用Java存储过程模拟解决特有技术不同造成的问题(如模拟Windows的COM技术);利用编译技术和系统特性和JDBC技术解决XML生成问题等。同时本文提出的源码到源码级转换的解决方案极大的提供了灵活性和正确性。从转换后期的测试角度来讲,人工给存储过程生成测试用例是一项非常繁重而耗时的任务。无论对于提高测试效率,缩短软件开发周期,还是降低软件开发成本,这都是一个大障碍。虽然已经有很多方法被提出来为泛型应用程序自动生成测试用例,但是这些方法都不是针对基于数据库存储过程的。本文提出了一种为存储过程自动生成测试用例的方法。该方法基于代码、面向路径,它采用SQL查询把存储过程和数据库里的数据绑定在一起来生成测试用例。该方法主要针对基于数据库的遗留系统移植项目中。并在该方法的基础上,做了一个存储过程测试用例生成工具的尝试性实现。最后,从项目实践的角度出发,大型数据移植项目在计划制定,人员安排和转换策略上具有一定的特殊性,本文提供了具体的项目实施数据为后人提供参考。虽然本文主要解决从SQL Server 2000到IBM DB2的移植问题,但其理论和方案有很多共性,对其他数据库产品移植也有一定参考价值。