国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > 綜合 > 正文

一種軟件多數據庫支持實現方式介紹

2024-07-21 02:23:48
字體:
來源:轉載
供稿:網友
當我們以一個項目的方式來完成軟件設計開發時,通常開發的具體環境已經確定,采用的數據庫也已經確定,因此不存在支持多數據庫方面的需求。但是,如果一個軟件以產品的方式出現,需要以同一產品適應不同企業的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就可;

該方案將支持多數據庫的復雜性與具體軟件隔離開來,將復雜性由通常的分布于軟件各處變更為于一點集中處理,可使維護更容易、編碼量大大降低,系統可靠性更高;


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 饶阳县| 和龙市| 聊城市| 望奎县| 青龙| 临高县| 阳新县| 新余市| 嘉峪关市| 淳安县| 许昌市| 体育| 香河县| 常州市| 蒙自县| 东乡族自治县| 宜川县| 建平县| 英超| 襄樊市| 河南省| 泰宁县| 四平市| 霍城县| 阳江市| 涞水县| 绥芬河市| 潞西市| 太仆寺旗| 文昌市| 长沙市| 资兴市| 龙里县| 礼泉县| 鲜城| 遵义市| 龙海市| 屏南县| 忻城县| 山阳县| 晋宁县|