• 
    

    
    

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

      面向?qū)ο驝ache的數(shù)據(jù)庫的對(duì)象創(chuàng)建存取

      2017-07-14 15:03:11俞海
      電腦知識(shí)與技術(shù) 2017年17期
      關(guān)鍵詞:面向?qū)ο?/a>

      俞海

      摘要:該文重點(diǎn)介紹面向?qū)ο驝ache數(shù)據(jù)庫的面向?qū)ο蠡靖拍?,并利用Cach6數(shù)據(jù)庫的面向?qū)ο蟮莫?dú)特結(jié)構(gòu)定義類(class)和方法(methods),并介紹了其具體的定義方法,并解釋Cache數(shù)據(jù)庫高性能的結(jié)構(gòu)特性,進(jìn)行簡單應(yīng)用設(shè)計(jì)的分析,對(duì)面向?qū)ο箝_發(fā)的有較好的引導(dǎo)作用。

      關(guān)鍵詞:Cache;面向?qū)ο?;class;methods;table;property

      中圖分類號(hào):TP311 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1009-3044(2017)17-0001-03

      Cach6數(shù)據(jù)庫是一款面向?qū)ο髷?shù)據(jù)庫,通過使用用戶定義的數(shù)據(jù)模型,并利用面向?qū)ο蟮腃ache數(shù)據(jù)庫進(jìn)行應(yīng)用的開發(fā),Cache是美國Intersystems公司產(chǎn)品,被稱為后關(guān)系型數(shù)據(jù)庫(Post Relational database)中的領(lǐng)導(dǎo)者。Cache數(shù)據(jù)庫作為面向?qū)ο蟮腃ache,使用比較主流的領(lǐng)域主要是美國和歐洲的HIS系統(tǒng)(醫(yī)療衛(wèi)生管理信息系統(tǒng)),Cache數(shù)據(jù)庫所占的比例是最大,被醫(yī)療界公認(rèn)為首選數(shù)據(jù)庫。

      官方數(shù)據(jù)顯示,CACHE數(shù)據(jù)庫的數(shù)據(jù)查詢速度約為oracle的7~20倍,支持關(guān)系型數(shù)據(jù)和面向?qū)ο笮偷臄?shù)據(jù)庫。

      Cache數(shù)據(jù)庫的主要特點(diǎn)如下:

      1)速度快。Cache數(shù)據(jù)庫在同等條件下查詢相同數(shù)據(jù)比Oracle等普通數(shù)據(jù)庫要快。

      2)使用簡單。Cache數(shù)據(jù)庫支持標(biāo)準(zhǔn)SQL語句。

      3)接口容易。Cache數(shù)據(jù)庫支持ODBC標(biāo)準(zhǔn)接口。

      4)支持3層結(jié)構(gòu)。Cache數(shù)據(jù)庫能夠真正意義上實(shí)現(xiàn)3層結(jié)構(gòu),實(shí)現(xiàn)真正的分布式服務(wù)。

      升級(jí)擴(kuò)容方便。正因?yàn)橛缮鲜龇植际?層結(jié)構(gòu),所以當(dāng)醫(yī)院需要增加客戶端PC或醫(yī)院進(jìn)行擴(kuò)大規(guī)模時(shí),其靈活的伸縮性可幫助用戶節(jié)約資金減少重復(fù)投資。

      5)對(duì)象型編輯。Cache數(shù)據(jù)庫是真正的面向?qū)ο笮蛿?shù)據(jù)庫,開發(fā)時(shí)用戶可直接用數(shù)據(jù)庫定義特定的對(duì)象,然后再在其它開發(fā)工具中調(diào)用該對(duì)象的方法(method)和屬性(attributes)即可完成開發(fā)工作,非常方便。

      Cache數(shù)據(jù)庫支持遠(yuǎn)程映射(mapping)和鏡像(mirror)。

      6)能快速進(jìn)行WEB開發(fā)。Cache數(shù)據(jù)庫提供自帶的Web開發(fā)工具,使用維護(hù)非常方便。

      7)價(jià)格便宜。Cache數(shù)據(jù)庫的價(jià)格比Oracle要便宜許多。那么Cache數(shù)據(jù)庫應(yīng)用開發(fā)醫(yī)院信息管理系統(tǒng)或其他行業(yè)的面向?qū)ο蟮臄?shù)據(jù)庫應(yīng)用是有現(xiàn)實(shí)意義的。

      1 Cache數(shù)據(jù)庫類(class)定義操作方法

      1.1通過Cache的GUI方式創(chuàng)建數(shù)據(jù)操作

      Cach6是一款面向?qū)ο蟮年P(guān)系型數(shù)據(jù)庫,可通過其自帶的GUI(Graphic User Interface)建類(Class Definition),在Cache中把類(Class)和表(table)聯(lián)系在一起,建立類就是建表(Create Ta-ble)。

      Cach6 GUI界面如下:

      點(diǎn)擊Cach6 class Definition(類定義模塊)可輸人用戶包和類名,類名為Person;

      可選擇持久類(Choose Persistent Class),也可以選擇其他類(Class Type)類型。也可輸人用戶的表名,如圖2所示輸入對(duì)應(yīng)SQL中的表名t_person:

      在Cache數(shù)據(jù)庫中,建立了類就相當(dāng)于建立了表對(duì)象,而表對(duì)象中就需要定義表的屬性(Attributes),一個(gè)屬性(Attribute)就是表的一列(Column),下面是屬性名(Name of Property)就對(duì)應(yīng)于表中的列(column)。屬性(Property)的類型即列或字段的類型:

      此處name字段定義為串類型(%String),在oracle或其他關(guān)系數(shù)據(jù)庫(RDBMS)中可使用Char(n),或varchar(n)來定義固定長度n個(gè)字符或可變長度為n的字符串。

      同時(shí)在創(chuàng)建類(class)時(shí),可選擇表的列名或字段的值要求,如姓名能否為空,Name是否唯一(unique),是否要建索引(indexed)或計(jì)算時(shí)該列是否存儲(chǔ)在內(nèi)存中。

      這樣可通過定義類的方法和步驟,使用Cach6面向?qū)ο髷?shù)據(jù)庫自帶的Studio可視化來創(chuàng)建,也可寫下如下的代碼來實(shí)現(xiàn)。

      1.2用代碼定義

      以上的類寫好后,通過編譯(compile)創(chuàng)建好以上的類(class)對(duì)象,就要進(jìn)行編譯,選擇Studio中的compile,如圖3所示:

      如果類(class)定義有錯(cuò)(errors),則需修改其中的錯(cuò)誤,再次編譯,如果成功了,則由該類自動(dòng)創(chuàng)建一個(gè)數(shù)據(jù)庫對(duì)應(yīng)的表,并且可以通過SQL來插入(insert),修改(update)或刪除(delete)該對(duì)象中的數(shù)據(jù)(data).另外還創(chuàng)建一個(gè)例程routine,這個(gè)就是利用cache創(chuàng)建CACHE applications的高效的原因所在,比其他傳統(tǒng)數(shù)據(jù)庫快的重要原因。

      這樣就可在Cach6System Management Portal(相當(dāng)于數(shù)據(jù)庫查詢分析器)中選擇sql→Execute SQL Query,在左側(cè)選擇自己的命名空間,并輸入查詢的sql語句可以看到自己建的表的結(jié)構(gòu)和數(shù)據(jù)了。

      以上是使用面向?qū)ο髷?shù)據(jù)庫CACHE來創(chuàng)建類和相應(yīng)的數(shù)據(jù)庫的表(即創(chuàng)建了持久(persistent)類,系統(tǒng)也就隱含了創(chuàng)建了數(shù)據(jù)庫的對(duì)象表table)同時(shí)也可在類(class)中加入方法(method),如下程序代碼就包含了通過Person類來擴(kuò)展定義一個(gè)新類,即Employee類(即表Employee),并創(chuàng)建顯示某個(gè)員工的姓名和職位情況。

      Class Ueser.Employee Extends t Person

      以上在類中定義了方法(method),這個(gè)方法是可重寫Per-son類中的相同方法。

      這是面向?qū)ο蟮奶匦?,其含義是如果在子類中定義某方法與其父類有相同的名稱和參數(shù),我們說該方法被重寫(Overrid-ing)。子類的對(duì)象使用這個(gè)方法時(shí),將調(diào)用子類中的定義,對(duì)其而言,父類中的定義如同被“屏蔽”了。

      這樣在定義類(class)時(shí)也把常用的數(shù)據(jù)庫操作用方法來調(diào)用該方法的請(qǐng)求來使用,本例中就是將員工信息打印出來。

      這樣就極大地?cái)U(kuò)展了數(shù)據(jù)庫操作的靈活性和編程性,對(duì)數(shù)據(jù)庫應(yīng)用的開發(fā)提供了新的存取路徑和方法。同時(shí),也可進(jìn)行用戶自定義的數(shù)據(jù)類型,能使用面向?qū)ο蟮姆椒ǎ╩ethods)和繼承性(inheritance)和多態(tài)性(polymorphism),通過面向關(guān)系的SQL或面向?qū)ο筮^程的方法method的結(jié)合來取得各自的性能和平衡。

      Cache用戶既可使用系統(tǒng)類(system classes),也可采用自定義用戶的類對(duì)象(user classes)。

      所以在類的定義中,可以包含屬性(相當(dāng)于表的字段或列),也可定義方法,以及參數(shù),也可在類中使用如觸發(fā)器,查詢或索引等定義。

      2 Cace數(shù)據(jù)庫的物理特性

      Cache是一款高性能的面向?qū)ο蟮臄?shù)據(jù)庫,其主要原因就是使用類對(duì)象代替了關(guān)系數(shù)據(jù)庫中的表對(duì)象.同時(shí)存儲(chǔ)的數(shù)據(jù)完全以globals全局變量結(jié)構(gòu)進(jìn)行存儲(chǔ)和處理,這是其速度快速的內(nèi)因。面向?qū)ο蟮哪J揭约懊嫦虼a的直接全局(Globals)變量結(jié)構(gòu),使應(yīng)用程序和系統(tǒng)在使用Cache引擎中,數(shù)據(jù)庫數(shù)據(jù)的存取通過全局變量結(jié)構(gòu)這一物理內(nèi)存結(jié)構(gòu)來實(shí)現(xiàn)的,甚至程序的代碼也存儲(chǔ)在該內(nèi)存結(jié)構(gòu)中,可通過命令的方式或內(nèi)嵌的函數(shù)或方法實(shí)現(xiàn)調(diào)用。當(dāng)創(chuàng)建好一個(gè)持久(persistent)的數(shù)據(jù)庫類(class)對(duì)象時(shí)(即傳統(tǒng)數(shù)據(jù)庫的表table),數(shù)據(jù)的增刪改操作可用Cache SQL來操作,更可以通過類定義時(shí)繼承的%New(),%Save(),%Open(),and%Delete()的方法(methods)來實(shí)現(xiàn)增刪改操作(Data manipulation),這就是該數(shù)據(jù)庫是面向?qū)ο蟮臄?shù)據(jù)庫,和傳統(tǒng)的數(shù)據(jù)庫相比,其查詢速度很快的原因之一。

      3使用Globals結(jié)構(gòu)變量

      Globals結(jié)構(gòu)變量是一個(gè)高度調(diào)優(yōu)的一塊物理內(nèi)存結(jié)構(gòu),而Cach6中的代碼運(yùn)行時(shí)則獨(dú)立使用該結(jié)構(gòu)變量,這些優(yōu)化的結(jié)構(gòu)確保了其高的并發(fā)性和高的吞吐率,使內(nèi)存的使用更高效,并且持續(xù)運(yùn)行時(shí)數(shù)據(jù)庫的器性能不需進(jìn)行索引的重建或系統(tǒng)的重建(rebuilding)或合并文件、清除刪除、過期、多余版本的數(shù)據(jù),提高讀寫數(shù)據(jù)的效率,而且其物理結(jié)構(gòu)是完全封裝好的,開發(fā)使用時(shí)不需考慮其物理的數(shù)據(jù)結(jié)構(gòu)。并且其存儲(chǔ)空間是稀疏的,意即只有結(jié)點(diǎn)有數(shù)據(jù)值才存儲(chǔ)在數(shù)據(jù)庫中,因此Cache常常所需的內(nèi)存空間比傳統(tǒng)的關(guān)系數(shù)據(jù)庫要少一半的空間。稀疏的本質(zhì)是新字段可以添加而無需重構(gòu)原數(shù)據(jù)庫所需的開銷(overhead),而H.Cache的全局變量結(jié)構(gòu)比傳統(tǒng)數(shù)據(jù)庫中的表存儲(chǔ)的表信息更接近現(xiàn)實(shí)的數(shù)據(jù)模型,這樣把相關(guān)的信息存儲(chǔ)在該物理內(nèi)存中比通過I/O存取的數(shù)據(jù)效率要高很多。

      同時(shí)Cach6面向?qū)ο髷?shù)據(jù)庫支持SQL,即Cach6動(dòng)態(tài)SQL,可采用如下二種方式進(jìn)行存取數(shù)據(jù)庫:%SQL.Statement和%SQL.StatementResuh類來存取,下面就是從員工表(employee)中取出年齡最小的5名員工的姓名和所在城市:

      先定義查詢SQL語句變量myquery:

      SET myquery=”select top 5 name,city from HR.employee or-der by age”

      再通過%SQL.Statement類屬性%New()來創(chuàng)建一個(gè)動(dòng)態(tài)SQL語句并采用

      %Prepare(myquery)加載并最后執(zhí)行%Execute().以上的動(dòng)態(tài)查詢執(zhí)行可寫成如下語句:

      SET myquery=”select top 5 name,ciIy from HR.employee or-der bv age”

      SET tStatement=##class(%SQL.Statement).%New()

      SET tStatus=tStatement.%Prepare(myquery)

      SET resuh_emp=tStatement.%Execute()∥執(zhí)行SQL

      DO resuh_emp.%Display()∥顯示name,city信息

      也可以采用嵌入SQL(Embedded SQL),例如:

      &sql(select count(*)into:coutvar from HR.employee)

      所以,利用Cach6數(shù)據(jù)庫進(jìn)行編程或SQL使用非常簡潔、靈活、高效。

      4創(chuàng)建高效的Web應(yīng)用開發(fā)程序(building Web appli-cations)

      Cache數(shù)據(jù)庫的面向?qū)ο蟮奶攸c(diǎn)不僅表現(xiàn)在數(shù)據(jù)庫的表對(duì)象類(class)來實(shí)現(xiàn),在開發(fā)web applications的應(yīng)用中,也比較深刻體現(xiàn)出WEB設(shè)計(jì)應(yīng)用中的面向?qū)ο蟮奶匦浴?/p>

      Cache web application在創(chuàng)建的web頁面采用CSP(Cacheservlet page)嵌入式語言,類似于JSP(java servlet page),在創(chuàng)建CSP文件后,要進(jìn)行編譯(compile),其過程就是通過CSP Engine要把CSP對(duì)應(yīng)的頁面文件轉(zhuǎn)化為類(class)的定義。另外使用類編譯時(shí)采用了類定義的方式并且生成中間代碼(INT)CODE,CacheMVBasic code代碼,以及Cache Basic code,這就要看你在定義類的方法時(shí)使用的哪種語言了。中間代碼存取數(shù)據(jù)通過Globals結(jié)構(gòu)高效處理。

      通過使用CacheObjectScript腳本語言,Cache SQL語言或者CacheMVBasic,macros,class definitions,routines等等,Cache不直接使用你寫的以上代碼,而是當(dāng)你完成編譯后(compile)而生成產(chǎn)生的OBJ代碼,通過Cache的虛擬機(jī)運(yùn)行。

      5 Cache數(shù)據(jù)庫在行業(yè)使用

      Cache數(shù)據(jù)庫具有高性能、龐大的可擴(kuò)展性以及扎實(shí)的可靠性等優(yōu)勢(shì),是一種可提供多種數(shù)據(jù)存取模式的新一代數(shù)據(jù)庫技術(shù),比傳統(tǒng)的關(guān)系型數(shù)據(jù)庫有更高的使用效率。使用比較多的行業(yè)是醫(yī)院信息管理系統(tǒng)(HIS),InterSystems公司的Cache數(shù)據(jù)庫在北美和歐洲有龐大的高等級(jí)醫(yī)院已被開發(fā)部署。隨著時(shí)間的推移,相信Cache數(shù)據(jù)庫必定會(huì)拓展到其他行業(yè)。Cache將強(qiáng)大的對(duì)象數(shù)據(jù)庫與健壯的SQL技術(shù)融為一體,為復(fù)雜應(yīng)用提供了快速開發(fā)環(huán)境以及快速多維引擎。Cache安全可靠,目前已成為全球臨床醫(yī)療應(yīng)用系統(tǒng)的首選數(shù)據(jù)庫。

      6結(jié)論

      通過傳統(tǒng)關(guān)系數(shù)據(jù)庫的應(yīng)用,人們發(fā)現(xiàn)關(guān)系數(shù)據(jù)系統(tǒng)雖然技術(shù)很成熟,但其局限性也是顯而易見:它能很好地處理所謂的“表格型數(shù)據(jù)”,卻對(duì)越來越多復(fù)雜類型的數(shù)據(jù)無能為力?!懊嫦?qū)ο蟮臄?shù)據(jù)庫”(Obiect—Oriented Database)涉及面向?qū)ο蠹夹g(shù)。面向?qū)ο蟮臄?shù)據(jù)庫系統(tǒng)的推廣有一定的難度,其主要原因在于,設(shè)計(jì)思路和以前傳統(tǒng)的數(shù)據(jù)庫概念有較大區(qū)別,采用面向?qū)ο蟮母拍睿喝珙悾–lass)、方法(Method)、繼承、封裝等面向?qū)ο蟮男g(shù)語來設(shè)計(jì)數(shù)據(jù)庫對(duì)象表、屬性、函數(shù)等,用新型數(shù)據(jù)庫系統(tǒng)概念來取代現(xiàn)有的數(shù)據(jù)庫系統(tǒng)概念。這對(duì)許多已經(jīng)運(yùn)用傳統(tǒng)關(guān)系數(shù)據(jù)庫系統(tǒng)并積累了大量工作數(shù)據(jù)的客戶,尤其是大客戶來說,無法承受新舊數(shù)據(jù)間的轉(zhuǎn)換而帶來的巨大工作量及巨額開支。另外,面向?qū)ο蟮年P(guān)系型數(shù)據(jù)庫系統(tǒng)使查詢語言變得復(fù)雜,從而使得無論是數(shù)據(jù)庫的開發(fā)商家還是應(yīng)用客戶都視其復(fù)雜的面向?qū)ο蟮膽?yīng)用技術(shù)為畏途。

      面向?qū)ο竽P褪敲嫦驅(qū)ο蟾拍钆c數(shù)據(jù)庫技術(shù)相結(jié)合的產(chǎn)物。它的基本目標(biāo)是以更接近人類思維的方式描述客觀世界的事物及其聯(lián)系,且使描述問題的問題空間和解決問題的方法空間在結(jié)構(gòu)上盡可能一致,以便對(duì)客觀實(shí)體進(jìn)行結(jié)構(gòu)模擬和行為模擬。相信未來的數(shù)據(jù)庫發(fā)展一定有一片空間屬于面向?qū)ο蟮臄?shù)據(jù)庫技術(shù),會(huì)有越來越多的客戶選擇諸如Cache面向?qū)ο蟮臄?shù)據(jù)庫。

      猜你喜歡
      面向?qū)ο?/a>
      面向?qū)ο蠓椒ㄔ谒罾銹LC編程中應(yīng)用分析
      電子制作(2019年7期)2019-04-25 13:18:00
      電子測(cè)試(2018年22期)2018-12-19 05:12:28
      面向?qū)ο蟮挠?jì)算機(jī)網(wǎng)絡(luò)設(shè)計(jì)軟件系統(tǒng)的開發(fā)
      面向?qū)ο蟮臄?shù)據(jù)交換協(xié)議研究與應(yīng)用
      面向?qū)ο骔eb開發(fā)編程語言的的評(píng)估方法
      基于面向?qū)ο蟮腛ffice評(píng)測(cè)系統(tǒng)的分析
      峰叢洼地農(nóng)作物面向?qū)ο笮畔⑻崛∫?guī)則集
      遙感信息(2015年3期)2015-12-13 07:26:54
      基于E-cognition的面向?qū)ο蟮母叻直媛蔬b感圖像分類研究
      基于面向?qū)ο蟮能囕v管理軟件的研制與開發(fā)
      面向?qū)ο蟮腟oS體系結(jié)構(gòu)建模方法及應(yīng)用
      浙江省| 阳山县| 阿拉尔市| 平原县| 福州市| 贵阳市| 武冈市| 陆川县| 水城县| 阜新| 崇礼县| 涿州市| 周宁县| 陇西县| 沅江市| 共和县| 修水县| 观塘区| 石泉县| 扎赉特旗| 三门县| 平远县| 武平县| 同江市| 平阳县| 恭城| 轮台县| 莆田市| 汾西县| 德保县| 宣恩县| 忻州市| 高台县| 万宁市| 汝南县| 安图县| 类乌齐县| 灯塔市| 尚志市| 霍州市| 海丰县|