999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

一種通用數據訪問服務的構造和設計*

2015-03-14 09:23:31張海濤
艦船電子工程 2015年2期
關鍵詞:數據庫服務

張海濤

(金陵科技學院軟件工程學院 南京 211169)

?

一種通用數據訪問服務的構造和設計*

張海濤

(金陵科技學院軟件工程學院 南京 211169)

為了解決當前各類業務應用系統(軟件)中數據庫連接訪問中存在的問題,結合當前軟件服務化的概念,提出一種通用數據訪問服務的架構和設計方案。通用數據訪問服務能有效地實現數據持久化,提供以面向對象的方式來訪問關系型數據庫,實現多數據源和異構數據庫的統一注冊和管理,以及多數據源和異構數據庫的統一事務管理,有效提高業務系統性能。

數據訪問; 服務化; 持久化; JTA; 對象關系映射

Class Number TP311.5

1 引言

隨著信息化建設的不斷深入,各類企業與組織大多建立了適合自身的各種業務管理系統。由于這些系統是在不同階段開發的,采用的技術手段不同,每個系統都有自己的運行環境和數據存儲方式,這些數據的格式不統一,各個應用系統彼此封閉,數據難以交換和共享;同時,在使用時間較久的業務系統軟件中,往往每一業務系統有很多構件組成,這些構件之間大多單獨采用數據庫連接手段,導致數據訪問效率低下,對系統性能影響很大,又難以改進[1]。隨著技術的發展,軟件逐漸從構件化向服務化發展,對數據訪問進行服務化封裝技術逐漸成熟,采用同一技術手段對數據訪問功能實現并封裝,提供統一的表達方式和統一的數據訪問,能有效地解決存在的問題。利用數據訪問服務技術集成各種異構數據時,不用改變原始數據的存儲和管理方式,可集中為異構數據源提供一個統一的高層檢索服務,是實現異構數據集成的理想解決方案。

2 數據訪問技術的現狀

在信息管理系統領域,最初采用C/S架構模式,在Windows開發環境下,多采用ODBC,ADO,OLE DB,OCI等數據庫連接技術,此種技術連接采用永久性連接,每一個應用通過一個連接,連接到數據庫服務器上。開放數據庫互聯(ODBC)是微軟公司開放服務結構中有關數據庫的一個組成部分,它建立了一組規范,并提供了一組對數據庫訪問的標準API,通過允許開發者制作一個在大多數關系數據庫中可運行的簡單的API調用,簡化了從Windows(以及其他一些操作系統)到數據庫的訪問[2]。使用ODBC等數據訪問的程序在大量應用構件同時啟動的情況下,數據庫連接數過多,一些應用往往未執行數據訪問操作,卻一直占用數據庫的連接,長期占有又不釋放,造成數據訪問效率低下,降低了系統的使用性能。其數據訪問方式如圖1所示。

圖1 C/S模式數據訪問示意圖

隨著B/S架構的發展,JAVA技術得到大量應用,使得應用服務器和數據庫服務器得到分離,機器性能跟隨硬件發展有了較大提升。但開發者大多仍只采用JDBC等簡單的數據庫連接方式,隨著大量B/S系統的上線運行,管理人員需要維護各類業務系統的數據庫,對開發人員,需要了解數據庫的位置,連接方式等內容才能正確訪問數據庫,否則軟件難以正常運行;對管理者來說,軟件數據庫各不相同,有些甚至不能部署在同一臺機器上,管理維護備份十分困難;對實際用戶來說,各類數據庫的機器繁多,投入代價大,性能低下。技術人員一直考慮如何解決這個問題,隨著分布式計算技術(如CORBA、XML等)的迅猛發展,使得原來的系統可以通過它們進行封裝,隱藏數據的內部結構,采用公共數據模型將局部共享數據進行封裝,對外提供公共訪問接口[3~6]。但這些封裝后的公共訪問接口都不是通用和完備的,在某些業務系統和軟件中無法直接使用.但在SOA軟件服務化概念和架構提出之后,對于數據訪問服務和軟件設計理念上,就產生了很多新的思路和途徑。

3 軟件服務化

面向服務構架(Service-Oriented Architecture,SOA)是GartnerGroup于1996年最早提出,它是一種進行系統開發的體系架構,在對象構件計算模型的基礎上,將不同的功能單元通過預先定義好的接口和契約聯系起來,實現程序和服務的重復利用。其最初應用并不是為了業務軟件系統,但是由于Web Service的廣泛應用,SOA企業化應用的趨勢明顯加強,盡管Web Service并不一定需要SOA,SOA也并不都以Web Service為基礎,但是這兩種技術所代表的方向與趨勢是一致的。Web Service將SOA帶向主流用戶,同時SOA的最佳實踐也將使Web Service獲得最初的成功[7]。本質上說,SOA是一種面向接口的軟件構架,以接口定義為基礎,開始構建整個應用拓撲,將其實施為一個接口拓撲、接口實現和接口請求[8]。SOA是服務和服務用戶之間的一種聯系,通過一個充分的軟件模型來代替和實現一個商務功能,通過一個接口來實現軟件模型就是服務。

通用的數據訪問服務軟件的主要能力是:針對各種類型的數據訪問,這些數據可能來自于多個數據源,也可能來自于不同類型的數據庫,通用數據訪問軟件設計實現一種架構,對各類數據訪問接口進行統一封裝,對外提供了一種統一、高效、安全的數據訪問方式,支持開發者以面向對象編程的方式實現數據庫的訪問,支持對多數據庫或者異構數據庫的連接和連接的管理,支持聲明式的事務控制。解決了傳統的數據訪問存在的問題,比如其編程方式是基于標準SQL進行的,數據訪問時的事務控制也非常困難,對開發者的技術水平提出了比較高的要求,而且代碼的質量依賴于開發者個人的經驗、能力、狀態等因素等問題。

4 通用的數據訪問軟件的體系結構

通用數據訪問服務軟件在數據庫和業務(系統)軟件之間,提供一種統一、高效、安全的數據庫訪問連接方式。如圖2所示。

圖2 通用數據訪問體系結構圖

持久化對象[9]是通用數據訪問軟件體系結構中的關鍵節點,它描述的是業務系統(軟件)中的實體對象,持久化對象可以被業務系統(軟件)訪問,同時也可以被數據訪問服務使用,完成和數據庫、業務軟件或者其他非結構化數據庫之間的映射關系。所謂數據持久化就是讓對象投影到關系數據庫中,然后實施持久化。

具體實現方式:建立對象到關系數據庫的映射。

例如:建立UserInfo類到數據庫的映射。

一個簡單的類UserInfo:

public class UserInfo{

private string id;

private String name;

}

UserInfo類對應的數據庫表USERINFOR:

表1 數據庫表USERINFOR

當進行持久化時,需要把對象的兩個屬性的值保存到數據庫存的USERINFOR中,如果使用JDBC的話,需要自己寫SQL,并獲取對象兩個屬性的值作為參數來進行持久化。業務系統(軟件)直接操作持久化對象就可以完成對數據的訪問,不需要考慮數據是否來自于多個數據源或者是異構數據庫;業務系統(軟件)使用數據訪問服務中的分布式事務管理,可以實現針對多個數據源進行數據訪問的事務處理。

4.1 數據訪問服務結構設計

數據訪問服務實現關系型數據庫、非結構數據和持久化數據對象之間的映射關系,并且提供的統一連接、聲明式事務能力,如圖3所示。

圖3 數據訪問服務組成圖

數據訪問服務由對象關系映射、統一數據連接、聲明式事務三部分組成。對象關系映射實現關系型數據庫、非結構數據和持久化數據對象之間的映射關系,對象關系映射使用統一數據連接中提供的連接和數據庫進行交互,使用聲明式事務實現多數據庫訪問時的事務管理;統一數據連接實現了和多數據庫、異構數據庫之間的統一連接方式,并且對數據連接進行統一的管理,幫助開發者統一的管理數據庫的連接;聲明式事務提供分布式事務處理的能力,而且支持聲明式的事務開發模式,不需要開發者編寫任何事務處理的代碼。

4.1.1 對象關系映射

對象關系映射實現對象和關系型數據庫之間的映射關系,主要包括兩方面的內容:對象關系映射、對象查詢語言。

· 對象關系映射(ORM)[10]:用于描述對象和關系型數據庫之間的映射關系,包括描述對象屬性和數據庫表字段之間的映射關系,將對象和對象之間的繼承、聚合等關系描述成數據庫表之間的一對一、一對多等關系。對象關系映射實現了對象和關系型數據庫之間的映射,因此開發者只需要操作對象即可實現關系型數據庫的操作,降低了對開發者的技術要求。

· 對象訪問語言(OSQL):對象訪問語言是一種面向對象的類SQL語言,支持針對對象的各種操作,包括對象的查詢、增加、修改、刪除。對象訪問語言幫助開發者能夠基于對象訪問語言直接對持久化數據對象進行操作,因此無需了解任何特定數據庫提供的SQL語言,開發出來的業務軟件也可以在異構數據庫之間實現無縫的移植。

4.1.2 統一數據連接

統一數據連接實現了和多數據源、異構數據庫之間的統一連接和管理,幫助開發者采用一種統一、簡單的方式實現和數據庫的連接,并且能夠更好地管理數據庫連接,提升數據訪問的效率。統一數據連接由統一命名服務、數據庫連接池、數據庫連接和數據連接適配器四部分組成。

· 統一命名服務(Java Naming and Directory Interface,Java命名和目錄接口):統一命名服務提供統一的、基于命名方式訪問資源的服務能力,可以將數據庫連接池注冊到統一命名服務器上,開發者可以基于標準的訪問接口訪問數據庫連接池。統一命名服務能夠幫助我們為開發者提供統一的、標準的數據庫連接獲取接口,通過這套接口獲取對多數據源或者異種數據庫的連接。

· 數據庫連接池(DataSource):采用J2EE中提供的標準數據庫連接池技術實現數據庫連接的注冊、分配、管理和釋放,數據庫連接池允許應用程序重復使用一個現有的數據庫連接,而不是每次訪問數據庫的時候都重新建立一個數據庫連接。數據庫連接池能夠幫助開發者統一地注冊多數據源,并且能夠設置各種策略去分配、管理和釋放這些數據庫連接,而且由于數據庫連接池采用了緩存策略,因此數據庫連接的獲取時間比單獨連接數據庫要快很多,能明顯提高數據庫訪問的性能。

數據庫連接池的主要操作過程:

1) 創建數據庫連接池對象;

2) 按照配置好的參數創建初始數量的數據庫連接(即:空閑連接數);

3) 對于任一數據庫訪問請求,直接從連接池中得到一個連接。如果數據庫連接池對象中無空閑連接,且連接數沒有達到最大活躍連接數,則創建一個新的數據庫連接;

4) 根據業務需要進行存取數據庫操作;

5) 關閉數據庫,釋放所有數據庫連接(此時的關閉數據庫連接,并非真正關閉,而是將其放入空閑隊列中。如實際空閑連接數大于初始空閑連接數則釋放連接);

6) 釋放數據庫連接池對象(釋放數據庫連接池對象,并釋放所有連接)。

數據庫連接(JDBC):數據庫連接是直接和數據庫交互的部分,采用J2EE中標準的JDBC來實現數據庫連接和訪問,JDBC提供了一套統一、標準的接口,這套接口可以適用于連接各種不同類型的數據庫。JDBC能夠幫助開發者屏蔽多個數據源和異構數據庫帶來的差異性,是統一數據連接的重要組成部分。

數據庫連接適配器(Adapter):適配器技術是J2EE架構中提供的一種標準的擴展技術,用于擴展那些J2EE架構中還沒有實現的業務功能。對于那些無法采用JDBC訪問的數據庫或者非結構化數據,我們需要采用自定義適配器的方式實現數據庫的連接,這些適配器應該實現標準數據庫連接的相關標準、規范和接口。

4.1.3 聲明式事務

聲明式事務能夠幫助開發者采用聲明而不是編碼的方式實現數據庫訪問的事務管理,不需要開發者考慮訪問的是什么數據庫、數據庫部署在什么位置等。事務是訪問多數據源時需要重要考慮的內容,也是比較難于實現的功能,在通用數據訪問服務軟件中,設計一種聲明式事務處理方式,開發人員只需要在使用事務的代碼前后采用某種聲明,后臺語句通過相應的XML配置信息,可以實現事務管理的能力。

聲明式事務中使用JTA(Java Transaction API)[11]作為分布式事務的底層實現機制,JTA是標準的分布式事務管理機制,是一種高層的、與實現和協議無關的分布式事務服務,用于實現多數據源的分布式事務處理。

5 運用模式

數據訪問服務提供的基本能力:

1) 使用通用數據訪問服務軟件的接口,實現ORM(對象關系映射),即關系型數據庫表向對象型轉換,方便開發人員以面向對象方式訪問數據庫。

2) 標準SQL模式:對于特定開發人員來說,有些數據結構是動態的,用對象關系映射方式訪問數據庫表往往不夠靈活,因此,提供以標準SQL來訪問關系型數據庫表的能力。

數據訪問服務在SOA系統中有較多應用。例如在設計一個人力資源管理SOA系統中,通過服務化設計理念,可以使用通用數據訪問服務軟件。其架構如圖4所示。

圖4 常規SOA系統中數據訪問服務的使用

通用數據訪問服務遵循SOA系統中的SDO[12]標準,能與ESB(企業服務總線)、服務平臺、流程引擎等相互協作使用,能有效提高系統整體的數據訪問性能。

6 結語

為了解決各類業務應用系統(軟件)中數據庫連接訪問中存在的問題,結合當前軟件服務化的概念,提出一種通用數據訪問服務的架構和設計方案。該方案支持開發者以一種統一的、標準的數據訪問方式,實現以面向對象的方式來訪問關系型數據庫,同時還實現多數據源和異構數據庫的統一注冊和管理,以及多數據源和異構數據庫的統一事務管理,簡化了對多數據源和異構數據庫訪問時的開發工作。其采用了大量標準的技術實現,屏蔽了數據庫連接、SQL語言和事務管理方面的工作;數據庫連接池技術的運用能夠更加有效地管理數據庫連接,在對象關系映射部分也采用了優化的策略,相對于傳統數據應用開發環境下由開發者來編寫數據訪問代碼而言,能夠有效地提升業務軟件的性能,使用數據訪問服務軟件的調用接口能使業務軟件在數據訪問技術上的質量上不再受到開發者的技術、經驗和狀態的影響,能夠有效地保障系統(軟件)的質量。

[1] 廖湘琳,張宏軍,趙振南,等.數據訪問中間件系統設計與實現[J].計算機工程,2006,32(7):86-88.

[2] 張子石,金義富.一種數據庫訪問中間件模型的構造方法[J].測控技術,2010,29(8):87-90.

[3] 伍科松,劉連忠.Web信息系統數據訪問層的設計與實現[J].計算機工程與設計,2006,27(23):4399-4401.

[4] 徐青翠,李雯.基于J2EE和XML的SOA服務層數據模型研究及實現[J].電腦知識與技術,1014-1016.

[5] 劉波,郭少輝,陳暉,等.數據統一訪問中訪問控制機制的研究[J].軍事通信技術,2013,34(3):40-47.

[6] 熊建,周春妮.一種數據訪問中間件系統的設計與實現[J].成都電子機械高等??茖W校學報,2008(3):29-32.

[7] Yefim V.Natis.Service-oriented architecture scenario[EBPOL].Gartner Group,2003-08-12.

[8] [美]Thomas Erl.SOA概念、技術與設計[M].王滿紅,陳榮華,譯.北京:機械工業出版社,2006,10.

[9] 苗曉輝.基于J2EE的數據持久化的研究與實現[J].計算機工程,2007,33(5):272-274.

[10] 吳衛平,王麗芳,蔣澤軍.基于ORM的數據持久層框架研究[J].微電子學與計算機,2008(7):188-193.

[11] 李汝光,徐駿.基于JTA的跨數據庫分布式事務的實現[J].常州工學院學報,2012,25(4):33-36.

[12] 謝虹,張冉,徐忠富.SDO實現技術研究[J].軟件,2012,33(6):48-53.

Construction and Design of Universal Data Access Service Software

ZHANG Haitao

(School of Software Engineering,Jinling Institute of Technology,Nanjing 211169)

In order to solve the current all kinds of business application system(software) access problems in database connection,based on the concept of the software as a service,the architecture and design of a kind of universal data access service is proposed.Universal data access service can effectively realize the persistent data,provides the object-oriented way to access relational database,and unifies registration and management of multi source and heterogeneous database,as well as the unified management of multiple data sources and heterogeneous database,effectively improve the service performance of the system.

data access,service,persistence,java transaction API,ORM

2014年8月11日,

2014年9月29日

張海濤,男,高級工程師,碩士,研究方向:指揮信息系統、管理信息系統、數據分析研究等。

TP311.5

10.3969/j.issn1672-9730.2015.02.031

猜你喜歡
數據庫服務
服務在身邊 健康每一天
今日農業(2019年14期)2019-09-18 01:21:54
服務在身邊 健康每一天
今日農業(2019年12期)2019-08-15 00:56:32
服務在身邊 健康每一天
今日農業(2019年10期)2019-01-04 04:28:15
服務在身邊 健康每一天
今日農業(2019年15期)2019-01-03 12:11:33
服務在身邊 健康每一天
今日農業(2019年16期)2019-01-03 11:39:20
招行30年:從“滿意服務”到“感動服務”
商周刊(2017年9期)2017-08-22 02:57:56
數據庫
財經(2017年15期)2017-07-03 22:40:49
數據庫
財經(2017年2期)2017-03-10 14:35:35
數據庫
財經(2016年15期)2016-06-03 07:38:02
數據庫
財經(2016年3期)2016-03-07 07:44:46
主站蜘蛛池模板: 久久窝窝国产精品午夜看片| 成人国产精品网站在线看| 亚洲成a人片在线观看88| 成人午夜免费观看| 成年人视频一区二区| 777国产精品永久免费观看| 国产视频a| 香蕉国产精品视频| 亚洲欧美日韩中文字幕一区二区三区| 欧美日韩一区二区在线免费观看| 999精品色在线观看| 欧美在线一级片| 国产福利影院在线观看| 国产毛片不卡| 色老二精品视频在线观看| 国产激情无码一区二区免费| 一级爆乳无码av| 色婷婷电影网| 国产一在线观看| 国产成人夜色91| 精品一区二区无码av| 免费在线播放毛片| 欧美高清三区| 国产精品手机在线观看你懂的| 一区二区自拍| www欧美在线观看| 91色国产在线| 伊人成人在线视频| 欧美a网站| 欲色天天综合网| 国产青青草视频| 精品少妇人妻av无码久久| 中文字幕永久在线观看| 97精品国产高清久久久久蜜芽 | 久久中文字幕不卡一二区| 国产成人无码综合亚洲日韩不卡| 国产免费好大好硬视频| 亚洲天堂视频在线播放| 2020最新国产精品视频| www.99在线观看| 午夜综合网| 免费99精品国产自在现线| 国产成人欧美| 国产成人精品男人的天堂| 久久香蕉国产线| 精品国产成人a在线观看| 爱色欧美亚洲综合图区| 国产传媒一区二区三区四区五区| 在线高清亚洲精品二区| av在线无码浏览| 一本大道香蕉高清久久| 国产欧美日韩视频怡春院| 亚洲成人在线网| 久久福利片| 美女无遮挡被啪啪到高潮免费| 69国产精品视频免费| 久久网综合| 色丁丁毛片在线观看| 日本福利视频网站| 91麻豆国产精品91久久久| 99热精品久久| 小说区 亚洲 自拍 另类| 88av在线| 国产精品网址你懂的| 狠狠色狠狠综合久久| 日韩 欧美 国产 精品 综合| 亚洲欧洲天堂色AV| 嫩草影院在线观看精品视频| 99精品高清在线播放| 91免费国产在线观看尤物| 一级爆乳无码av| 91麻豆精品视频| 成人毛片免费在线观看| 国内精品九九久久久精品| 欧美成人综合在线| 无码'专区第一页| 人人爱天天做夜夜爽| 久久精品亚洲专区| 中文字幕天无码久久精品视频免费 | 99精品热视频这里只有精品7| 国产在线97| 91麻豆久久久|