分享
 
 
 

一种软件多数据库支持实现方式介绍

王朝other·作者佚名  2006-01-08
窄屏简体版  字體: |||超大  

当我们以一个项目的方式来完成软件设计开发时,通常开发的具体环境已经确定,采用的数据库也已经确定,因此不存在支持多数据库方面的需求。但是,如果一个软件以产品的方式出现,需要以同一产品适应不同企业的IT环境时,多数据库支持将是一个非常重要的需求;如何实现多数据库支持,将直接关系到产品的质量及实施和维护成本,关系到产品推广的范围和最终的成败;本文将就当前常用的多数据库实现方式做一简要介绍,并以笔者所在公司开发的某软件中采用的多数据库支持实现技术做一介绍。

实现了多数据库支持的软件产品通常采用以下几种方式:

1.统采用分层结构,为每种数据库实现一套数据访问层。该方案具有实现简单、结构清晰的优点,但也具有很多问题。软件中的某功能点修改可能牵涉到多套数据访问层的修改,同时,也会给测试带来成倍增长的工作量;由于实现同样数据访问功能需要对不同数据库编码,所以肯定会带来更大的编码量、引入更多的Bug,影响软件质量。

2.系统采用的SQL语句置于系统外部,SQL语句分为多套,每种数据库维护一套SQL语句。该实现方式可以在部分情况下达到不修改代码而调整系统的目的、设置在简单的情况下可达到不修改代码而增加一种新数据库支持的目的。但该实现方式存在调试困难、维护易出错的缺陷。同时,如果系统较复杂的情况下,难以体现出其优点,实用性不高。

3.采用标准SQL语句实现多数据库支持。该方法是谈论较多的方法,但真正采用该方法实现了多数据库支持的软件系统的厂商并不多。原因在于各数据库厂商对标准SQL的支持是不完全的,而且,对系统开发者而言,要求其能准确区分出那些是标准SQL,那些是特定数据库SQL,这本身并不现实;而一旦采用了特定数据库SQL而测试又不是非常充分的话,就会埋下很多定时炸弹。

笔者所在公司在实现eHR软件多数据库支持功能前,提出以下要求:

1.能很方便的实现对新数据库的支持,最好能达到不修改采用该方法实现的系统的代码就能增加对新数据库支持。

2.系统修改、维护容易,编码工作量最好与支持的数据库种类多少无关。

针对以上的一些,我们提出了以下的多数据库支持的实现方案:

解决方案由三部分构成:SQL实体描述对象、SQL语句生成器、SQL实体执行器;这些部分构成一个介于数据访问层与数据库间的新的软件层(Data I/O Controler),供数据访问层调用;

与通常的多层体系结构软件比较起来,该方案不同之处在于数据访问层访问数据库方法并不是直接执行SQL语句,而是以SQL实体对象的方式描述出对应SQL语句的语意;然后调用SQL实体执行器对SQL实体描述对象处理,生成对应的数据类型的SQL语句,并执行。在SQL执行器中,为了能支持多数据库,需要对没种数据库实现一个以独立DLL方式存在的Adapter,该Adapter接收传入的SQL实体对象,并能根据SQL实体对象描述的语意,生成符合对应数据库语法的SQL语句。Adapter需要实现一系列预先定义好的接口,以方便SQL实体执行器的调用;SQL实体执行器在运行期间才与具体Adapter关联,不必事先知道由何种Adapter处理SQL实体对象;当需要增加对新数据库的支持时,不必修改任何原有软件,只需要实现一个新的Adapter就可;

该方案将支持多数据库的复杂性与具体软件隔离开来,将复杂性由通常的分布于软件各处变更为于一点集中处理,可使维护更容易、编码量大大降低,系统可靠性更高;

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有