陳 光
(江蘇自動(dòng)化研究所,江蘇 連云港 222006)
基于中標(biāo)麒麟平臺(tái)對(duì)達(dá)夢(mèng)數(shù)據(jù)庫(kù)訪問(wèn)技術(shù)研究
陳 光
(江蘇自動(dòng)化研究所,江蘇 連云港 222006)
中標(biāo)麒麟操作系統(tǒng)是基于Linux內(nèi)核開(kāi)發(fā)出來(lái)的具有較高安全性的國(guó)產(chǎn)化操作系統(tǒng),需要一套獨(dú)立的數(shù)據(jù)訪問(wèn)機(jī)制支持對(duì)達(dá)夢(mèng)數(shù)據(jù)庫(kù)的訪問(wèn),并能夠保證數(shù)據(jù)應(yīng)用的安全可靠?;谙到y(tǒng)底層UnixODBC驅(qū)動(dòng)封裝的ODBC數(shù)據(jù)訪問(wèn)接口提供了對(duì)達(dá)夢(mèng)數(shù)據(jù)庫(kù)最全面的訪問(wèn)應(yīng)用,支持Blob類型數(shù)據(jù)存儲(chǔ)和操作,并保證數(shù)據(jù)讀取和操作響應(yīng)時(shí)間較短,從而滿足指揮信息系統(tǒng)應(yīng)用中對(duì)大對(duì)象數(shù)據(jù)的實(shí)時(shí)訪問(wèn)要求。該接口實(shí)現(xiàn)了數(shù)據(jù)庫(kù)服務(wù)器端與客戶端之間的數(shù)據(jù)共享與同步功能,滿足了應(yīng)用端對(duì)達(dá)夢(mèng)數(shù)據(jù)庫(kù)實(shí)時(shí)存儲(chǔ)、增加、修改、刪除和查詢等要求,減輕了軟件開(kāi)發(fā)人員跨平臺(tái)遠(yuǎn)程訪問(wèn)數(shù)據(jù)庫(kù)的復(fù)雜度和工作量,實(shí)現(xiàn)了國(guó)產(chǎn)化平臺(tái)訪問(wèn)數(shù)據(jù)庫(kù)的最優(yōu)、最科學(xué)應(yīng)用,保證試驗(yàn)人員快速獲取實(shí)時(shí)可靠的應(yīng)用數(shù)據(jù)。
ODBC驅(qū)動(dòng);數(shù)據(jù)共享;數(shù)據(jù)操作;數(shù)據(jù)查詢
基于中標(biāo)麒麟平臺(tái)的數(shù)據(jù)庫(kù)訪問(wèn)技術(shù)是為了適應(yīng)新時(shí)期我軍艦艇指控裝備信息化的要求,為海軍裝備發(fā)展宏觀規(guī)劃計(jì)劃、裝備發(fā)展體系建設(shè)應(yīng)運(yùn)而生的。針對(duì)海軍指揮信息系統(tǒng)未來(lái)的國(guó)產(chǎn)化需求,通過(guò)基于國(guó)產(chǎn)化軟硬平臺(tái)的典型指揮信息系統(tǒng)的軟件開(kāi)發(fā)、測(cè)試、運(yùn)行,切實(shí)了解國(guó)產(chǎn)軟硬平臺(tái)的適配性、可靠性、可用性,以及在海軍指揮信息系統(tǒng)推進(jìn)國(guó)產(chǎn)化中存在的弱項(xiàng)和解決措施,掌握國(guó)產(chǎn)化軟硬平臺(tái)技術(shù)狀態(tài)及其信息系統(tǒng)適配和優(yōu)化技術(shù)。
傳統(tǒng)Windows操作系統(tǒng)對(duì)Oracle數(shù)據(jù)庫(kù)訪問(wèn)技術(shù)存在一定的安全隱患,需要一套獨(dú)立的數(shù)據(jù)訪問(wèn)機(jī)制實(shí)現(xiàn)對(duì)達(dá)夢(mèng)數(shù)據(jù)庫(kù)的遠(yuǎn)程訪問(wèn)。基于操作系統(tǒng)UnixODBC驅(qū)動(dòng)可以有效解決遠(yuǎn)程數(shù)據(jù)同步和共享問(wèn)題,保證試驗(yàn)人員能夠快速獲取實(shí)時(shí)可靠的應(yīng)用數(shù)據(jù),減輕了軟件開(kāi)發(fā)人員跨平臺(tái)遠(yuǎn)程訪問(wèn)數(shù)據(jù)庫(kù)的復(fù)雜度及工作量,實(shí)現(xiàn)了國(guó)產(chǎn)化平臺(tái)訪問(wèn)數(shù)據(jù)庫(kù)的最優(yōu)、最科學(xué)應(yīng)用。
中標(biāo)麒麟操作系統(tǒng)是在國(guó)家“863”計(jì)劃重大專項(xiàng)、“核高基”科技重大專項(xiàng)和國(guó)家發(fā)改委產(chǎn)業(yè)化專項(xiàng)的推動(dòng)下,開(kāi)發(fā)的高安全、高可用、高性能、全自主的國(guó)產(chǎn)操作系統(tǒng)。該操作系統(tǒng)以國(guó)防科技大學(xué)操作系統(tǒng)研發(fā)團(tuán)隊(duì)為技術(shù)后盾,與中標(biāo)Linux操作系統(tǒng)強(qiáng)強(qiáng)聯(lián)合。中標(biāo)麒麟操作系統(tǒng)兼容Linux系統(tǒng),達(dá)到國(guó)內(nèi)外主流Linux產(chǎn)品同等技術(shù)水平,系統(tǒng)支持主流軟硬件平臺(tái)和應(yīng)用軟件,目前已服務(wù)于國(guó)防、政府、能源、交通、航天、電信、金融、郵政、教育等眾多領(lǐng)域,成功實(shí)現(xiàn)了規(guī)?;瘧?yīng)用。
中標(biāo)麒麟安全操作系統(tǒng)是中標(biāo)麒麟操作系統(tǒng)的安全版本,主要面向服務(wù)器安全需求市場(chǎng),為用戶提供高安全、高可用、高性能的服務(wù)器安全操作系統(tǒng)。中標(biāo)麒麟安全操作系統(tǒng)先后通過(guò)了公安部信息安全產(chǎn)品檢測(cè)中心、中國(guó)信息安全產(chǎn)品測(cè)評(píng)中心和解放軍信息安全測(cè)評(píng)認(rèn)證中心三家權(quán)威認(rèn)證機(jī)構(gòu)的檢測(cè)和安全認(rèn)證,達(dá)到了結(jié)構(gòu)化保護(hù)級(jí)(四級(jí))安全要求,是目前國(guó)內(nèi)通過(guò)認(rèn)證的安全等級(jí)最高的操作系統(tǒng)。
DM7是達(dá)夢(mèng)數(shù)據(jù)庫(kù)有限公司推出的具有完全自主知識(shí)產(chǎn)權(quán)的大型通用關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng),是達(dá)夢(mèng)公司在總結(jié)DM系列產(chǎn)品研發(fā)與應(yīng)用經(jīng)驗(yàn)的基礎(chǔ)上,吸收主流數(shù)據(jù)庫(kù)產(chǎn)品的優(yōu)點(diǎn),采用類Java的虛擬機(jī)技術(shù)設(shè)計(jì)的新一代數(shù)據(jù)庫(kù)產(chǎn)品。
DM7采用全新的體系架構(gòu),在保證大型通用的基礎(chǔ)上,針對(duì)可靠性、高性能、海量數(shù)據(jù)處理和安全性做了大量的研發(fā)和改進(jìn)工作,極大提升了達(dá)夢(mèng)數(shù)據(jù)庫(kù)產(chǎn)品的性能、語(yǔ)言豐富性、可擴(kuò)展性,能同時(shí)兼顧OLTP和OLAP請(qǐng)求,從根本上提升DM7產(chǎn)品的品質(zhì)。
該技術(shù)實(shí)現(xiàn)的基礎(chǔ)運(yùn)行環(huán)境主要由以下幾部分組成:
(1)主題數(shù)據(jù)應(yīng)用端安裝中標(biāo)麒麟操作系統(tǒng);
(2)服務(wù)端是兼容達(dá)夢(mèng)數(shù)據(jù)庫(kù)系統(tǒng)平臺(tái),包括Windows或中標(biāo)麒麟操作系統(tǒng)。
基于中標(biāo)麒麟平臺(tái)對(duì)達(dá)夢(mèng)數(shù)據(jù)庫(kù)訪問(wèn)技術(shù)的主要實(shí)現(xiàn)步驟如圖1所示。
應(yīng)用程序使用ODBC訪問(wèn)數(shù)據(jù)源,可以按照以下幾個(gè)基本步驟進(jìn)行[1-3]:
(1)調(diào)用函數(shù)SQLAllocHandle申請(qǐng)環(huán)境、連接句柄,調(diào)用函數(shù)SQLSetEnvAttr設(shè)置環(huán)境句柄屬性,調(diào)用函數(shù)SQLSetConnectAttr設(shè)置連接句柄屬性,調(diào)用連接函數(shù)SQLConnect、SQLDriverConnect或SQLBrowseConnect連接相關(guān)的數(shù)據(jù)源;
(2)調(diào)用函數(shù)SQLAllocHandle申請(qǐng)語(yǔ)句句柄,通過(guò)語(yǔ)句句柄應(yīng)用程序可以執(zhí)行SQL語(yǔ)句進(jìn)行相關(guān)的SQL操作。調(diào)用函數(shù)SQLPrepare對(duì)SQL語(yǔ)句和操作進(jìn)行準(zhǔn)備,調(diào)用SQLDescribeParam等函數(shù)取得相關(guān)的描述信息,依據(jù)描述信息調(diào)用SQLBindCol、SQLBindParam等函數(shù)綁定相關(guān)的列和參數(shù),然后調(diào)用SQLExecute執(zhí)行SQL語(yǔ)句,實(shí)現(xiàn)相關(guān)的SQL操作。應(yīng)用程序也可以調(diào)用函數(shù)SQLExecDirect直接執(zhí)行SQL語(yǔ)句進(jìn)行相關(guān)的SQL操作;
圖1 DM數(shù)據(jù)庫(kù)訪問(wèn)技術(shù)架構(gòu)
(3)應(yīng)用程序可以通過(guò)調(diào)用ODBC編目函數(shù)SQLTables、SQLColumns、SQLStatistics等取得數(shù)據(jù)源相關(guān)的字典信息;
(4)如果連接屬性自動(dòng)提交選項(xiàng)設(shè)置為手動(dòng)提交狀態(tài),應(yīng)用程序可以調(diào)用函數(shù)SQLEndTran來(lái)提交或回滾事務(wù),進(jìn)行相關(guān)的事務(wù)處理;
(5)調(diào)用函數(shù)SQLFreeHandle來(lái)釋放申請(qǐng)的語(yǔ)句句柄;
(6)調(diào)用函數(shù)SQLDisconnect來(lái)斷開(kāi)應(yīng)用程序與數(shù)據(jù)源之間的連接;
(7)調(diào)用函數(shù)SQLFreeHandle來(lái)釋放申請(qǐng)的連接、環(huán)境句柄。
ODBC提供訪問(wèn)不同類型的數(shù)據(jù)庫(kù)的途徑。結(jié)構(gòu)化查詢語(yǔ)言SQL是一種用來(lái)訪問(wèn)數(shù)據(jù)庫(kù)的語(yǔ)言。通過(guò)使用ODBC,應(yīng)用程序能夠使用相同的源代碼與各種各樣的數(shù)據(jù)庫(kù)進(jìn)行交互。這使得開(kāi)發(fā)者不需要以特殊的數(shù)據(jù)庫(kù)管理系統(tǒng)DBMS為目標(biāo),或者了解不同支撐背景的數(shù)據(jù)庫(kù)的詳細(xì)細(xì)節(jié),就能夠開(kāi)發(fā)和發(fā)布客戶/服務(wù)器應(yīng)用程序[4]。
基于ODBC驅(qū)動(dòng)封裝的數(shù)據(jù)訪問(wèn)接口,實(shí)現(xiàn)達(dá)夢(mèng)數(shù)據(jù)庫(kù)遠(yuǎn)程訪問(wèn)功能。完成對(duì)數(shù)據(jù)庫(kù)數(shù)據(jù)的查詢、增加、修改和刪除操作,同時(shí)支持對(duì)Blob等大數(shù)據(jù)的讀取和更新?;谥袠?biāo)麒麟操作系統(tǒng)平臺(tái)對(duì)達(dá)夢(mèng)數(shù)據(jù)庫(kù)訪問(wèn)的數(shù)據(jù)流圖如圖2所示。
圖2 數(shù)據(jù)訪問(wèn)的數(shù)據(jù)流圖
基于ODBC驅(qū)動(dòng)對(duì)達(dá)夢(mèng)數(shù)據(jù)庫(kù)訪問(wèn)主要實(shí)現(xiàn)以下功能:
(1)數(shù)據(jù)查詢功能。
申請(qǐng)環(huán)境和連接句柄,并設(shè)置環(huán)境和連接句柄屬性,從而連接相應(yīng)的數(shù)據(jù)源;在綁定條件查詢變量形成標(biāo)準(zhǔn)Sql語(yǔ)句后對(duì)Sql語(yǔ)句執(zhí)行相應(yīng)查詢操作,并將查詢結(jié)果通過(guò)循環(huán)方式按一條一條記錄返回結(jié)果集中。最后執(zhí)行斷開(kāi)連接操作并釋放句柄。數(shù)據(jù)查詢流程如圖3所示。
圖3 數(shù)據(jù)查詢流程
(2)數(shù)據(jù)操作功能。
申請(qǐng)環(huán)境和連接句柄,并設(shè)置環(huán)境和連接句柄屬性,連接相應(yīng)的數(shù)據(jù)源;在綁定變量形成標(biāo)準(zhǔn)Sql語(yǔ)句后對(duì)Sql語(yǔ)句執(zhí)行相應(yīng)的增加、刪除和修改操作,并進(jìn)行事務(wù)提交保存數(shù)據(jù)至數(shù)據(jù)庫(kù)中。最后執(zhí)行斷開(kāi)連接操作并釋放句柄。數(shù)據(jù)操作流程如圖4所示。
圖4 數(shù)據(jù)操作流程
(3)Blob數(shù)據(jù)查詢功能。
應(yīng)用軟件對(duì)數(shù)據(jù)庫(kù)操作過(guò)程中,Blob數(shù)據(jù)是用戶經(jīng)常涉及并廣泛使用的數(shù)據(jù)類型,可以存儲(chǔ)文件、圖片等大對(duì)象數(shù)據(jù)[5]。在訪問(wèn)包含Blob字段庫(kù)表時(shí),首先申請(qǐng)環(huán)境和連接句柄,并設(shè)置環(huán)境和連接句柄屬性,連接相應(yīng)的數(shù)據(jù)源,分配Lob定位符和語(yǔ)句句柄并讀取相應(yīng)數(shù)據(jù),最后釋放環(huán)境句柄并斷開(kāi)相應(yīng)會(huì)話。Blob數(shù)據(jù)查詢流程如圖5所示。
圖5 Blob數(shù)據(jù)查詢流程
(4)Blob數(shù)據(jù)更新功能。
對(duì)Blob數(shù)據(jù)進(jìn)行更新時(shí)的操作流程與查詢操作步驟基本相似。在編寫(xiě)B(tài)lob字段數(shù)據(jù)更新和查詢語(yǔ)句時(shí),必須符合SQL語(yǔ)句標(biāo)準(zhǔn)設(shè)計(jì)規(guī)范,否則無(wú)法完成相應(yīng)數(shù)據(jù)查詢和存儲(chǔ)功能。Blob數(shù)據(jù)更新流程如圖6所示。
圖6 Blob數(shù)據(jù)更新流程
基于OTL模板封裝的ODBC數(shù)據(jù)庫(kù)訪問(wèn)驅(qū)動(dòng),主要用于在中標(biāo)麒麟環(huán)境下完成用軟件對(duì)達(dá)夢(mèng)數(shù)據(jù)庫(kù)的增加、修改、刪除和查詢操作,為應(yīng)用層提供高效、便捷的數(shù)據(jù)庫(kù)訪問(wèn)中間件,并以動(dòng)態(tài)庫(kù)的形式提供給開(kāi)發(fā)人員使用。使用基于UnixODBC訪問(wèn)接口實(shí)現(xiàn)中標(biāo)麒麟平臺(tái)下應(yīng)用軟件對(duì)達(dá)夢(mèng)數(shù)據(jù)庫(kù)的存儲(chǔ)訪問(wèn),滿足指揮信息系統(tǒng)在復(fù)雜環(huán)境條件下實(shí)時(shí)高效地完成數(shù)據(jù)服務(wù)和作戰(zhàn)指揮要求[6-7]。
ODBC數(shù)據(jù)訪問(wèn)模式通過(guò)調(diào)用中標(biāo)麒麟系統(tǒng)底層UnixODBC數(shù)據(jù)庫(kù)驅(qū)動(dòng)實(shí)現(xiàn)對(duì)達(dá)夢(mèng)數(shù)據(jù)庫(kù)的數(shù)據(jù)操作。該訪問(wèn)接口具有C、C++過(guò)程性的優(yōu)點(diǎn),同時(shí)還具有SQL語(yǔ)言的擴(kuò)展特點(diǎn),程序具有高度靈活性。當(dāng)應(yīng)用程序開(kāi)發(fā)人員面向達(dá)夢(mèng)數(shù)據(jù)庫(kù)強(qiáng)大接口時(shí),通過(guò)調(diào)用ODBC驅(qū)動(dòng)實(shí)現(xiàn)數(shù)據(jù)訪問(wèn)[8-10]。該接口提供對(duì)達(dá)夢(mèng)數(shù)據(jù)庫(kù)最全面的訪問(wèn)應(yīng)用,支持Blob類型數(shù)據(jù)存儲(chǔ)和操作,并保證數(shù)據(jù)讀取和操作響應(yīng)時(shí)間較短,從而滿足指揮信息系統(tǒng)應(yīng)用中對(duì)大對(duì)象數(shù)據(jù)的實(shí)時(shí)訪問(wèn)要求。同時(shí)兼容在中標(biāo)麒麟平臺(tái)下對(duì)Oracle數(shù)據(jù)庫(kù)訪問(wèn)功能,在數(shù)據(jù)庫(kù)應(yīng)用方面具有一定的可擴(kuò)展性。
ODBC數(shù)據(jù)訪問(wèn)接口可以有效解決遠(yuǎn)程數(shù)據(jù)同步和共享問(wèn)題,保證操作人員能快速高效地獲取實(shí)時(shí)可靠的大批量應(yīng)用數(shù)據(jù),為數(shù)據(jù)分析和可視化提供有效支撐,減輕了軟件開(kāi)發(fā)人員跨平臺(tái)遠(yuǎn)程訪問(wèn)數(shù)據(jù)庫(kù)的復(fù)雜度和工作量[11-12],實(shí)現(xiàn)了國(guó)產(chǎn)化平臺(tái)訪問(wèn)數(shù)據(jù)庫(kù)的最優(yōu)、最科學(xué)應(yīng)用。數(shù)據(jù)庫(kù)訪問(wèn)接口作為共性軟件開(kāi)發(fā)設(shè)計(jì),在支撐軟件與應(yīng)用軟件開(kāi)發(fā)人員解耦、數(shù)據(jù)訪問(wèn)效率提高等方面,較以前開(kāi)發(fā)模式有突出改進(jìn)[13-14]。
[1] 宋 濤,席傳裕.基于三層模式的數(shù)據(jù)庫(kù)連接模型的設(shè)計(jì)[J].信息與電子工程,2005,3(1):44-46.
[2] 馬 勇.直升機(jī)基礎(chǔ)數(shù)據(jù)庫(kù)設(shè)計(jì)與應(yīng)用系統(tǒng)實(shí)現(xiàn)[D].南京:南京航空航天大學(xué),2009.
[3] 王 赟.基于OCI技術(shù)實(shí)現(xiàn)快速數(shù)據(jù)格式轉(zhuǎn)換[D].呼和浩特:內(nèi)蒙古大學(xué),2006.
[4] 周計(jì)成,章 立,劉曉林.VC++中連接Oracle數(shù)據(jù)庫(kù)的幾種方法[J].電腦編程技巧與維護(hù),2010(20):60-61.
[5] 楊 暉,彭天昊.大型Oracle數(shù)據(jù)庫(kù)遷移優(yōu)化方法[J].電子技術(shù)與軟件工程,2016(21):172.
[6] 劉宏志.SAP架構(gòu)下Oracle數(shù)據(jù)庫(kù)的性能優(yōu)化研究[J].無(wú)線互聯(lián)科技,2016(22):37-38.
[7] 鄭玉峰,裴建宇,范超宇.Visual Basic與Oracle數(shù)據(jù)庫(kù)在生態(tài)與農(nóng)牧業(yè)氣象中的應(yīng)用[J].中國(guó)管理信息化,2016,19(24):155-156.
[8] 夏小翔.數(shù)據(jù)庫(kù)連接技術(shù)的設(shè)計(jì)[J].電子技術(shù)與軟件工程,2014(1):223.
[9] WATSON T J.The Data Encryption Standard (DES) and its strength against attacks[J].IBM Journal of Research and Development,2010,38(3):243-250.
[10] ANTONIOLETTI M,KRAUSE A,PATON N W,et al.The WS-DAI family of specifications for web service data access and integration[J].ACM SIGMOD Record,2006,35(1):48-55.
[11] 張 金,付國(guó)良,李 霞.國(guó)產(chǎn)數(shù)據(jù)庫(kù)應(yīng)用開(kāi)發(fā)平臺(tái)的研究與實(shí)現(xiàn)[J].計(jì)算機(jī)工程與應(yīng)用,2004,40(9):180-183.
[12] 孔 哲,孟麗榮,孫筱雯.數(shù)據(jù)庫(kù)連接策略優(yōu)化方法[J].山東大學(xué)學(xué)報(bào):工學(xué)版,2003,33(6):652-657.
[13] LIN Y J.ADO.NET database access technology[J].Applied Mechanics and Materials,2015,713-715:2217-2220.
[14] ZHANG X D,TENG Z M,ZHAO D W.Research of the database access technology under .NET framework[J].Applied Mechanics and Materials,2014,644-650:3077-3080.
ResearchonAccessTechnologyofDMDatabaseBasedonNeOKylin
CHEN Guang
(Jiangsu Automation Research Institute,Lianyungang 222006,China)
The NeOKylin is an operating system of domestic production based on the Kylin Linux kernel development with high security and requires a set of independent data access mechanism to reach the access of Dream Database,and to ensure the safe and reliable data applications.The ODBC data access interface based on the underlying UnixODBC driver encapsulation provides the most comprehensive access to Dream Database,supports data storage and operation of Blob,and ensures data reading and shorter operational response time,thereby meeting the real-time access requirements of large object in command information system applications.The interface realizes the data sharing and synchronization between the database server and client,meets the requirements such as real-time storage,addition,modification,deletion and query of the database by the application end,reduces the complexity and workload of database accessing in cross-platform for software development staffs,and achieves the best and most scientific applications of database accessing with platform of domestic production,so as to ensure that test personnel can quickly access to real-time and reliable application data.
ODBC driver;data sharing;data operation;data query
TP311
A
1673-629X(2017)12-0201-04
10.3969/j.issn.1673-629X.2017.12.043
2016-12-23
2017-04-27 < class="emphasis_bold">網(wǎng)絡(luò)出版時(shí)間
時(shí)間:2017-09-27
國(guó)家自然科學(xué)基金資助項(xiàng)目(61273262)
陳 光(1985-),男,碩士研究生,研究方向?yàn)閿?shù)據(jù)庫(kù)應(yīng)用。
http://kns.cnki.net/kcms/detail/61.1450.TP.20170927.0958.034.html