降低多数据库支持成本的技术

目前主流的企业应用大多数是基于以下的数据库开发的,Microsoft SQL Server、IBM DB 2、Oracle、Sybase。作为软件开发商,其软件需要支持不同的数据库,但是公司缺乏精通 多种数据库的人才。就算有精通不同数据库的人才,开发不同的Data Access模块业导致工 作量增加,程序难以维护。 但是你到sourceforge.net上,你会发现其实很多项目的做法,是只用了非常非常有限的工作,只用了这些数据库之间的公共功能的子集。当然也有的项目为不同的数据库编写不同的DAL(数据库访问层) 我的一种解决方案是提供一套自定义的SQL文法,在开发应用程序的时候,翻译为不同的数据的SQL。 使用“递归下降”的文法分析技术,并且经过针对性的优化处理,效率极高,普通的SQL通常在0.1~0.2毫秒就能翻译完成。在使用的过程中,可以完全忽略其所占用的执行时间。 如果对此技术感兴趣,可以致信:c_sql@163.net ,索要试用版本和相关文档。 下面是例子: 例一 翻译如下的SQL语句: select top 10 * from t where a>b order by a, b asc, c desc 测试结果是: Oracle : SELECT * FROM (SELECT * FROM t WHERE (a > b) ORDER BY a ASC, b ASC, c DESC) WH ERE ROWNUM <= 10 翻译1000次共耗时 : 120 (毫秒), 平均每次0.12(毫秒) MS SQL Server : SELECT TOP 10 * FROM t WHERE (a > b) ORDER BY a ASC, b ASC, c DESC 翻译1000次共耗时 : 140 (毫秒), 平均每次0.14(毫秒) DB2 : SELECT * FROM t WHERE (a > b) ORDER BY a ASC, b ASC, c DESC FETCH FIRST 10 ROW S ONLY 翻译1000次共耗时 : 130 (毫秒), 平均每次0.13(毫秒) Sybase : SELECT TOP 10 * FROM t WHERE (a > b) ORDER BY a ASC, b ASC, c DESC 翻译1000次共耗时 : 151 (毫秒), 平均每次0.151(毫秒) 例二 翻译如下的SQL语句 Oracle : SELECT * FROM T1 A, T2 B WHERE A.FId = B.FId 翻译1000次共耗时 : 80 (毫秒), 平均每次0.08(毫秒) select * from T1 A inner join T2 B on A.FId = B.Fid MS SQL Server : SELECT * FROM T1 A INNER JOIN T2 B ON A.FId = B.FId 翻译1000次共耗时 : 90 (毫秒), 平均每次0.09(毫秒) DB2 : SELECT * FROM T1 A INNER JOIN T2 B ON A.FId = B.FId 翻译1000次共耗时 : 90 (毫秒), 平均每次0.09(毫秒) Sybase : SELECT * FROM T1 A INNER JOIN T2 B ON A.FId = B.FId 翻译1000次共耗时 : 100 (毫秒), 平均每次0.1(毫秒) <淘宝热门商品:
 

¥:38.00 

[郭氏鞋坊旗下]四季兜外贸童鞋店

185黑黄 库存外贸 DISNEY/迪斯尼Tigger&pooh童休闲运动鞋 带闪灯

 

 

靓之彩数码影像:柯达数码冲印 刷照片冲印 水晶版画相册 冲洗彩扩


来源:程序员网

小小豆叮

0 Responses to "降低多数据库支持成本的技术"

发表评论