• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      Caché數(shù)據(jù)庫建表方法的研究與分析

      2022-07-29 14:12:24李成亮
      計算機時代 2022年7期
      關鍵詞:關系數(shù)據(jù)庫面向對象腳本

      李成亮

      (揚中市人民醫(yī)院信息科,江蘇 鎮(zhèn)江 212200)

      0 引言

      InterSystems 公司研發(fā)的高性能Caché 數(shù)據(jù)庫不僅速度快、接口全面、升級擴容方便,而且還是功能齊全的關系型數(shù)據(jù)庫。Caché 數(shù)據(jù)庫可以將存儲的多維數(shù)據(jù)映射為二維表,提供的接口支持許多基于SQL的訪問工具,讓開發(fā)者使用標準的SQL 語句進行增加、刪除、修改、查詢。

      Caché 數(shù)據(jù)庫是面向對象的“后關系型”數(shù)據(jù)庫,可以直接用面向對象的方法進行建表,也可以利用關系型數(shù)據(jù)庫的方法進行建表。本文詳述了Caché數(shù)據(jù)庫建表的五種方法,并從存儲結構、表結構、應用場景方面詳細分析,為Caché數(shù)據(jù)庫的開發(fā)提供了參考。

      1 Caché數(shù)據(jù)庫建表的方法

      Caché 數(shù)據(jù)庫的類可以映射為對應的表,其映射關系如表1所示。

      表1 對象數(shù)據(jù)庫與關系數(shù)據(jù)庫之間的映射關系

      Caché數(shù)據(jù)庫建表的方法分為兩大類:一類是利用面向對象的方法,另外一類是基于數(shù)據(jù)庫語言的方法。

      1.1 利用對象的方法建表

      Caché 數(shù)據(jù)庫的持久類(%Persistent)用來存儲數(shù)據(jù),我們自己定義的類一定繼承于持久類,定義類的方法為:

      當編譯持久類的時候,Caché 數(shù)據(jù)庫會自動將類映射為表。

      1.2 基于數(shù)據(jù)庫語言的方法建表

      Caché數(shù)據(jù)庫提供了多種接口讓開發(fā)者調用,基于數(shù)據(jù)庫語言的建表方法主要是采用SQL 語言,具體可以分為四種方法,如表2所示。

      表2 基于數(shù)據(jù)庫語言的建表方法

      在Caché 數(shù)據(jù)庫中通過SQL 語言建表,是一個高級別的操作,必須有管理員的權限。Caché 數(shù)據(jù)庫會自動創(chuàng)建相應的持久類,同時映射為相應的表。

      2 建表的實現(xiàn)過程

      本文舉例的表名為:Test.Student,字段名分別為:字符型Name、字符型Sex、日期型DateOfBirth。

      2.1 方法一:利用面向對象的方法

      在相應地命名空間下,可以根據(jù)向導一步一步地創(chuàng)建類,也可以直接在Studio中寫代碼完成。

      2.2 方法二:嵌入使用DDL靜態(tài)建表

      在類方法中嵌入使用DDL 語句,在建表前先用管理員的權限登錄。

      在terminal 中執(zhí)行此類方法,當建表成功,SQLCODE返回值為0,否則建表失敗。

      2.3 方法三:通過DDL字符串動態(tài)建表

      首先用管理員的權限登錄,其次準備好建表的SQL字符串,最后執(zhí)行語句。

      在terminal 中執(zhí)行此類方法,當建表成功,rset返回值為0,否則建表失敗。

      2.4 方法四:導入SQL腳本建表

      Caché 數(shù)據(jù)庫提供了抽象類%SYSTEM.SQL,該類提供了一套管理SQL 的接口,其中包含107 個類方法。本文主要用DDLImport 類方法來導入SQL腳本,其語法為$SYSTEM.SQL.DDLImport(DDLMode,SQLUser,infile,outfile,nosup,nosupfile,deos,errpause)。

      各參數(shù)含義如下。

      DDLMode:數(shù)據(jù)庫類型,必填。

      SQLUser:Caché SQL用戶名,必填。

      infile:帶路徑的文件名,必填。

      outfile:程序執(zhí)行過程中的錯誤日志,非必填。

      nosup:當Caché 數(shù)據(jù)庫不支持腳本文件中的語句時,決定是否記錄到文件中,非必填。

      nosupfile:當nosup 為true 時,用于記錄不支持的執(zhí)行語句,非必填。

      deos:語句結束的分隔符,非必填。

      errpause:當錯誤發(fā)生時程序暫停執(zhí)行的時間,默認為5秒,非必填。

      本文用SQL Server語句創(chuàng)建SQL腳本,其語句為:

      創(chuàng)建完腳本后將其保存在D 盤,文件名為SQLServer.sql。

      導入腳本過程為:①在terminal 中切換到相應的命名空間;②執(zhí)行命令Do $SYSTEM.SQL.DDLImport("MSSQLServer","_system","D:SQLServer.sql");③在相應的命名空間下可以看到Test.Student類。

      2.5 方法五:通過SQL GateWay建表

      SQL GateWay 將第三方關系數(shù)據(jù)庫中的表結構導入到Caché 數(shù)據(jù)庫持久類中,并且將第三方數(shù)據(jù)庫表中的數(shù)據(jù)映射到Caché數(shù)據(jù)庫中。

      SQL GateWay 由四部分組成,分別為連接管理、SQL GateWay 接口、外部表查詢器、SQL 存儲類。通過SQL GateWay建表的方法就是利用這四部分。

      第一:建立數(shù)據(jù)源,通過ODBC 數(shù)據(jù)源管理器建立好數(shù)據(jù)源,如圖1所示。

      圖1 建立ODBC數(shù)據(jù)源

      第 二:在System Management Portal 中,通 過SQL GateWay 建立外部數(shù)據(jù)庫連接。具體方法為:在[Home]>[Configuration]>[SQL Gateway Connections]中找到Create New Connection,根據(jù)向導填入相應的連接名、數(shù)據(jù)源、用戶名、密碼,然后保存,如圖2所示。

      圖2 建立外部數(shù)據(jù)庫連接

      第三:使用外部數(shù)據(jù)庫連接建表。具體方法為:在[Home]>[SQL]>[Link Table Wizard]中根據(jù)向導選擇相應的表、字段及主鍵。

      3 建表方法的分析

      3.1 存儲結構的分析

      Caché 數(shù)據(jù)庫提供了兩種存儲類,即%Library.CacheStorage、% Library.CacheSQLStorage,其 中,%Library.CacheStorage是系統(tǒng)默認的存儲類,采用列表編碼的形式存儲多維數(shù)據(jù);%Library.CacheSQLStorage比%Library.CacheStorage 有局限性,采用字符分隔符的形式存儲多維數(shù)據(jù)。

      方法一~方法四均采用系統(tǒng)默認的存儲方式,數(shù)據(jù)存儲在^Test.StudentD()、索引存儲在^Test.StudentI(),Global 節(jié)點形如:^Test.StudentD=ID,^Test.StudentD(ID)=$listbuild("",value1,value2,……),其 中^Test.StudentD為計數(shù)節(jié)點,ID為主索引,是自增型計數(shù)變量,^Test.StudentD(i)為數(shù)據(jù)節(jié)點,$listbuild()中第一位用于存儲子類的類名,若無則為空,其余為節(jié)點值。

      方法五采用%Library.CacheSQLStorage,將對象映射為原來的數(shù)據(jù)結構,比如對象中的屬性直接映射為表中的字段。Caché 數(shù)據(jù)庫通過SQL GateWay 隨第三方數(shù)據(jù)庫的變化而變化,第三方數(shù)據(jù)庫也會隨Caché數(shù)據(jù)庫中的變化而變化,但是默認情況下Caché數(shù)據(jù)庫并不存儲第三方數(shù)據(jù)庫的數(shù)據(jù)。

      %Library.CacheStorage 存儲結構中主索引ID 為單一的變量,缺乏一定的靈活性,適用于單表。而%Library.CacheSQLStorage 可通過SqlIdExpression 關鍵字擴展主索引ID,結合SQL storage map,一方面讓ID 形成樹形結構的存儲,提高檢索速度;另一方面可以與其他表的ID 形成關聯(lián),比如父子表,提高表之間的檢索效率。

      3.2 表結構的分析

      Caché 數(shù)據(jù)庫默認以ID 為主索引,也可以重命名主索引,各種方法映射表的區(qū)別如表3所示。

      表3 各種方法映射表的區(qū)別

      每種方法映射的表字段雖然略有差異,但可以根據(jù)實際情況通過關鍵字SqlRowIdPrivate 對ID 顯示或隱 藏,當SqlRowIdPrivate 為True 時,表結構中ID 隱藏;當SqlRowIdPrivate 為False 時,表結構中ID 顯示。SqlRowIdPrivate不會影響Global的存儲結構。

      3.3 應用場景的分析

      方法一是Caché 數(shù)據(jù)庫常規(guī)的建表方法,既可以用面向對象的方法進行增加、刪除、修改、查詢,也可以用SQL語句,應用場景十分廣泛。

      方法二直接把Caché 數(shù)據(jù)庫當作關系數(shù)據(jù)庫使用,嵌入SQL語句簡潔、直觀。

      方法三在程序運行的過程中動態(tài)建表,適合于充當臨時表以縮減原始數(shù)據(jù)量,也常配合Web Service接口使用。

      方法四導入第三方數(shù)據(jù)庫的SQL 腳本建表,適合于做第三方數(shù)據(jù)的遷移。

      方法五中SQL GateWay 充當“橋梁”作用,可以直接在Caché數(shù)據(jù)庫處理第三方數(shù)據(jù)庫的數(shù)據(jù),方便、快捷。

      4 結論

      本文詳細介紹了Caché 數(shù)據(jù)庫的五種建表方法,并對每種方法從存儲結構、表結構、應用場景三個角度進行了分析,可以得出以下結論:

      ⑴Caché數(shù)據(jù)庫兼容關系數(shù)據(jù)庫,方法二~方法五最終都會生成方法一中面向對象的建表代碼;

      ⑵在復雜的情形下,結合具體的應用場景,可以對每種方法靈活修改,并且可以混合運用。

      猜你喜歡
      關系數(shù)據(jù)庫面向對象腳本
      酒駕
      關系數(shù)據(jù)庫在高爐數(shù)據(jù)采集系統(tǒng)中的應用
      山東冶金(2022年2期)2022-08-08 01:51:30
      安奇奇與小cool 龍(第二回)
      數(shù)據(jù)庫系統(tǒng)shell腳本應用
      電子測試(2018年14期)2018-09-26 06:04:24
      面向對象的計算機網絡設計軟件系統(tǒng)的開發(fā)
      電子測試(2018年15期)2018-09-26 06:01:34
      面向對象的數(shù)據(jù)交換協(xié)議研究與應用
      快樂假期
      中學生(2017年19期)2017-09-03 10:39:07
      面向對象Web開發(fā)編程語言的的評估方法
      基于索引結構的關系數(shù)據(jù)庫關鍵詞檢索
      面向對象信息提取中影像分割參數(shù)的選擇
      河南科技(2014年10期)2014-02-27 14:09:03
      瓮安县| 关岭| 和林格尔县| 洞头县| 阿巴嘎旗| 理塘县| 娱乐| 广宁县| 临清市| 宁远县| 沁水县| 永泰县| 封开县| 阿坝| 定州市| 嘉祥县| 康定县| 喀喇| 吉隆县| 始兴县| 玉山县| 徐闻县| 乌拉特中旗| 宁德市| 休宁县| 讷河市| 绥德县| 安丘市| 襄垣县| 阳东县| 衢州市| 锡林郭勒盟| 铜川市| 仙居县| 托克逊县| 文成县| 张家界市| 宽甸| 乾安县| 永城市| 南阳市|