freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

基于json的異構(gòu)數(shù)據(jù)庫(kù)整合研究畢業(yè)論文(編輯修改稿)

2025-07-19 01:35 本頁(yè)面
 

【文章內(nèi)容簡(jiǎn)介】 異構(gòu)數(shù)據(jù)庫(kù)整合常用方式現(xiàn)在,主流的數(shù)據(jù)整合方式有以下幾種:數(shù)據(jù)倉(cāng)庫(kù)(即Data Warehouse)、聯(lián)邦數(shù)據(jù)庫(kù)(即Federated Database)、中間件(即Middleware)[12]等。1) 數(shù)據(jù)倉(cāng)庫(kù)。建立一個(gè)數(shù)據(jù)庫(kù)系統(tǒng),將這個(gè)數(shù)據(jù)庫(kù)作為數(shù)據(jù)倉(cāng)庫(kù),通過(guò)ETL(即Extract Transformand Load)工具手動(dòng)或自動(dòng)的多個(gè)異構(gòu)數(shù)據(jù)庫(kù)系統(tǒng)讀取數(shù)據(jù)并過(guò)濾,并將需要更新的數(shù)據(jù)寫(xiě)到數(shù)據(jù)倉(cāng)庫(kù),如圖23所示,它展示了一個(gè)整合了2個(gè)異構(gòu)數(shù)據(jù)庫(kù)的數(shù)據(jù)倉(cāng)庫(kù)。與一般普通的數(shù)據(jù)庫(kù)系統(tǒng)不同的是:數(shù)據(jù)倉(cāng)庫(kù)中存儲(chǔ)的主要是匯總數(shù)據(jù)和歷史數(shù)據(jù)。它的定位是為企業(yè)高級(jí)管理人員提供數(shù)據(jù)分析和決策支持[13]。圖23 數(shù)據(jù)倉(cāng)庫(kù)示意圖2) 聯(lián)邦數(shù)據(jù)庫(kù)。聯(lián)邦數(shù)據(jù)庫(kù)是異構(gòu)數(shù)據(jù)庫(kù)整合方法中的比較最簡(jiǎn)單方式。它的實(shí)現(xiàn)方法是將所有組成異構(gòu)數(shù)據(jù)庫(kù)做一對(duì)一的相互連通,如圖24所示。這樣就會(huì)出現(xiàn)如下的情況:如果需要整合n個(gè)異構(gòu)數(shù)據(jù)庫(kù),那么n個(gè)數(shù)據(jù)庫(kù)中的任何一個(gè)都需要訪問(wèn)其他的(n一1)個(gè)數(shù)據(jù)庫(kù),那么這意味開(kāi)發(fā)者需要編寫(xiě)n(n一1)段代碼以實(shí)現(xiàn)兩兩之間的相互訪問(wèn)。可看到這種方法弱點(diǎn)比較明顯,即維護(hù)、升級(jí)代價(jià)太高。圖24 聯(lián)邦數(shù)據(jù)庫(kù)3)中間件(Middleware)。中間件是種獨(dú)立的應(yīng)用服務(wù)程序和系統(tǒng)軟件,分布式應(yīng)用程序借助這種軟件在異構(gòu)的技術(shù)之間實(shí)現(xiàn)資源共享。中間件位于操作系統(tǒng)之上,通過(guò)計(jì)算機(jī)網(wǎng)絡(luò)通信,實(shí)現(xiàn)數(shù)據(jù)交流。它是連接兩個(gè)獨(dú)立系統(tǒng)和獨(dú)立應(yīng)用程序的軟件。與中間件相連接的系統(tǒng),盡管它們可能具有不同的接口,但是他們通過(guò)中間件互連之后就能進(jìn)行數(shù)據(jù)信息交換。數(shù)據(jù)庫(kù)中間件是中間件的特定一種,它分別連接這用戶(hù)和數(shù)據(jù)庫(kù),數(shù)據(jù)庫(kù)中間件負(fù)責(zé)完成所有的數(shù)據(jù)邏輯處理(比如數(shù)據(jù)統(tǒng)計(jì),數(shù)據(jù)排行,數(shù)據(jù)轉(zhuǎn)換等),為客戶(hù)端提供了統(tǒng)一的訪問(wèn)接口,起著用戶(hù)和服務(wù)器機(jī)器之間的橋梁作用,中間件在收到用戶(hù)的請(qǐng)求后,它會(huì)根據(jù)請(qǐng)求的內(nèi)容找到不同的數(shù)據(jù)庫(kù)并對(duì)相應(yīng)的數(shù)據(jù)去請(qǐng)求數(shù)據(jù),中間件在使用SQL語(yǔ)句將數(shù)據(jù)庫(kù)中的相應(yīng)數(shù)據(jù)取出后,再在中間件層中進(jìn)行各種邏輯操作,在處理完成后再返回給客戶(hù)端。如圖25所示,數(shù)據(jù)庫(kù)中間件的工作原理圖。數(shù)據(jù)庫(kù)中間件具有以下特點(diǎn):移植性好、集成方便、易于擴(kuò)充、使用簡(jiǎn)單、安全級(jí)別高。圖25 數(shù)據(jù)庫(kù)中間件示意圖 異構(gòu)數(shù)據(jù)庫(kù)數(shù)據(jù)整合重難點(diǎn)要實(shí)現(xiàn)異構(gòu)數(shù)據(jù)庫(kù)系統(tǒng)的整合需要做的以下幾點(diǎn):1) 首先需要選取一種通用的數(shù)據(jù)交換格式;2) 通用數(shù)據(jù)交換格式轉(zhuǎn)化成關(guān)系型數(shù)據(jù)庫(kù)的數(shù)據(jù);3) 關(guān)系型數(shù)據(jù)庫(kù)的數(shù)據(jù)轉(zhuǎn)換成通用數(shù)據(jù)格式;4) 通用數(shù)據(jù)交換格式表達(dá)ORM模型的關(guān)系;本文在接下來(lái)的工作都是圍繞這幾點(diǎn)來(lái)進(jìn)行研究的。 本章小結(jié)本章介紹了數(shù)據(jù)庫(kù)的發(fā)展過(guò)程,其過(guò)程具有比較強(qiáng)的時(shí)代特征,特定的時(shí)代流行特定的數(shù)據(jù)庫(kù)系統(tǒng)。也介紹了異構(gòu)數(shù)據(jù)庫(kù),闡述了異構(gòu)數(shù)據(jù)庫(kù)系統(tǒng)的現(xiàn)狀及其形成原因等。最后講解了異構(gòu)數(shù)據(jù)庫(kù)系統(tǒng)整合的目標(biāo)、方法、重難點(diǎn)。第3章 JSON與POJO之間的映射研究第3章 JSON與POJO之間的映射研究POJO在Java里指的是除了getter方法、setter方法和構(gòu)造方法之外再無(wú)其他方法的最普通的JavaBean,POJO在ORM模型里就是與數(shù)據(jù)庫(kù)的數(shù)據(jù)表相對(duì)應(yīng)的Java類(lèi)。JSON在JavaScript運(yùn)行時(shí)環(huán)境中指的是JavaScript對(duì)象[14],在網(wǎng)絡(luò)上傳輸時(shí)指的是JSON文本序列化后的結(jié)果。本文的異構(gòu)數(shù)據(jù)庫(kù)整合方式的數(shù)據(jù)流向是這樣的數(shù)據(jù)庫(kù)記錄—POJO對(duì)象—JSON對(duì)象,如圖31所示:圖31 JSON對(duì)象、POJO對(duì)象和數(shù)據(jù)庫(kù)記錄數(shù)據(jù)流向示意圖數(shù)據(jù)庫(kù)的數(shù)據(jù)記錄與POJO對(duì)象之間的相互轉(zhuǎn)換由ORM模型實(shí)現(xiàn)。POJO對(duì)象與JSON對(duì)象之間的相互轉(zhuǎn)化是本章的研究重點(diǎn),因?yàn)橹挥型瓿闪薖OJO對(duì)象與JSON之間的轉(zhuǎn)換,才能讓圖31所示的數(shù)據(jù)流暢運(yùn)行。 JSON的解碼JSON,也就是JavaScript Object Notation三個(gè)字母的縮寫(xiě)。它是種基于純文本的輕量級(jí)數(shù)據(jù)交換格式。它對(duì)于人類(lèi)來(lái)說(shuō)可讀性強(qiáng),對(duì)于計(jì)算機(jī)語(yǔ)言來(lái)說(shuō)符合主流計(jì)算機(jī)語(yǔ)言風(fēng)格。這使得JSON既能跨語(yǔ)言、跨平臺(tái)作為公共數(shù)據(jù)交換格式,并且也使得廣大程序開(kāi)發(fā)者用起來(lái)順手,這一切使得JSON成為最為最理想的通用數(shù)據(jù)交換格式[15]。一般來(lái)講JSON有如下兩種結(jié)構(gòu):1)由“名稱(chēng)/值”組成的對(duì)的集合(即A collection of name/value pairs)。在不同的編程語(yǔ)言中,它分別被理解為對(duì)象(object),結(jié)構(gòu)(struct),紀(jì)錄(record),哈希表(hash table),字典(dictionary),有鍵列表(keyed list),或者關(guān)聯(lián)數(shù)組(即Associative Array)[16]。2)值的有序列表(An ordered list of values)。在絕大多數(shù)現(xiàn)代計(jì)算機(jī)語(yǔ)言中,它被看成是數(shù)組(Array)[17]。這兩種結(jié)構(gòu)都是使用頻率很高的數(shù)據(jù)結(jié)構(gòu),主流現(xiàn)代計(jì)算機(jī)語(yǔ)言都會(huì)用某種形式去支持這兩種數(shù)據(jù)結(jié)構(gòu)?;谶@個(gè)特點(diǎn),JSON作為一種通用數(shù)據(jù)交換格式在各種現(xiàn)代計(jì)算機(jī)語(yǔ)言之間去交換數(shù)據(jù)成為一種可能。JSON一般具有如下五種形式:1)對(duì)象是一個(gè)集合,這個(gè)集合由“‘名稱(chēng)/值’對(duì)”無(wú)序的組成。一個(gè)對(duì)象的開(kāi)始標(biāo)記為“{”(左括號(hào))開(kāi)始,結(jié)束標(biāo)記為“}”(右括號(hào))。每個(gè)“名稱(chēng)”后緊跟著跟一個(gè)“:”(冒號(hào));“‘名稱(chēng)/值’ 組成的對(duì)”之間使用“,”(逗號(hào))加以分隔。圖32 JSON中對(duì)象示意圖2) 數(shù)組是一個(gè)集合,它是由是值(value)組成有序集合。一個(gè)數(shù)組以“[”(左中括號(hào))作為開(kāi)始標(biāo)記,以“]”(右中括號(hào))作為結(jié)束標(biāo)記。值之間使用“,”(逗號(hào))加以分隔。圖33 JSON中數(shù)組示意圖3) 值(value)由雙引號(hào)括起來(lái)的字符串(string)、數(shù)值(number)、true、false、 null、對(duì)象(object)或者數(shù)組(array)表示。而且這些結(jié)構(gòu)可以進(jìn)行多層嵌套。圖34 JSON中值示意圖4)字符串(string)是一個(gè)集合,它是由雙引號(hào)圍起來(lái)的的任意數(shù)量Unicode字符構(gòu)成的集合,它使用反斜杠“\”表示轉(zhuǎn)義。其中比較特殊的情況是單個(gè)字符(character)即由一個(gè)字符構(gòu)成的字符串(character string)。字符串(string)與C語(yǔ)言和Java語(yǔ)言里的字符串非常相似。圖35 JSON中字符串示意圖5)數(shù)值(number)也與C語(yǔ)言或者Java語(yǔ)言里的的數(shù)值比較類(lèi)似。它去除不常使用的八進(jìn)制與十六進(jìn)制格式。圖36 JSON中數(shù)值示意圖 JSON與XML的比較XML,完整名稱(chēng)中文叫做可擴(kuò)展標(biāo)記性語(yǔ)言[18],是Extensible Markup Language的首字母構(gòu)成的縮寫(xiě)。它是一種經(jīng)常被用來(lái)標(biāo)記電子文件數(shù)據(jù)而使其具有結(jié)構(gòu)性的標(biāo)記性語(yǔ)言,同時(shí)XML也可以用來(lái)標(biāo)記自定義數(shù)據(jù)類(lèi)型、數(shù)據(jù),XML是種可以由用戶(hù)對(duì)自己的標(biāo)記語(yǔ)言進(jìn)行自定義的源語(yǔ)言。作為標(biāo)準(zhǔn)通用標(biāo)記語(yǔ)言(SGML)的一個(gè)子集,XML特別適用于Web的數(shù)據(jù)格式交換。XML作為一種標(biāo)準(zhǔn),它在應(yīng)用程序之間提供一種確定的標(biāo)準(zhǔn)來(lái)描述與應(yīng)用程序無(wú)關(guān)的結(jié)構(gòu)化數(shù)據(jù)。這個(gè)應(yīng)用程序間統(tǒng)一確定的標(biāo)準(zhǔn)怎么來(lái)確定呢?XML提供了一個(gè)輔助工具DTD。DTD即Document Type Definition的首字母的縮寫(xiě),是一套關(guān)于標(biāo)記符的語(yǔ)法規(guī)則[19],DTD類(lèi)似與Schema,不同的是Schema通常不是由用戶(hù)自己定義,而DTD則是由用戶(hù)自己定義的。像一把雙刃劍,可以一自定義有好的一面也有不好的一面,這一點(diǎn)既使得XML具有很強(qiáng)的通用性,同時(shí)也使得XML變得很繁瑣,因?yàn)樵谑褂玫絏ML的地方就要用到相應(yīng)的DTD。JSON與XML相比,他們都是基于純文本數(shù)據(jù)交換格式,XML使用了開(kāi)發(fā)人員可以自定義的DTD,而JSON使用了約定俗成的固定的DTD,也是就是說(shuō)JSON的格式是固定,所有的開(kāi)發(fā)者都知道其格式,而這個(gè)格式正是基于面向?qū)ο蟮腏avaScript語(yǔ)言。但這個(gè)格式卻是非常具有通用性,JSON與Ajax構(gòu)成了黃金搭檔,為Web刮起了異步旋風(fēng)?,F(xiàn)代Web開(kāi)發(fā)者在Web應(yīng)用里面大量使用JSON,不僅可以簡(jiǎn)化表達(dá)式簡(jiǎn)單,而且更重要的是不再需要針對(duì)每種應(yīng)用去寫(xiě)特定的DOM解析器了。因?yàn)橹灰谋痉螶avaScript語(yǔ)言的語(yǔ)法規(guī)范(也就是JSON的語(yǔ)法規(guī)范),JavaScrip的解釋器會(huì)隱性的自動(dòng)幫你完成解析,將它轉(zhuǎn)換成JavaScript運(yùn)行時(shí)的對(duì)象。在Web應(yīng)用里使用Ajax技術(shù)的過(guò)程是:首先Browser端向Server端發(fā)起Ajax請(qǐng)求;接著B(niǎo)rowser端收到服務(wù)端發(fā)送的Ajax響應(yīng);最后JavaScript解釋器使用eval方法來(lái)將響應(yīng)中的JSON文本轉(zhuǎn)化為JavaScript運(yùn)行時(shí)的對(duì)象。在Web應(yīng)用中使用JSON取代XML,不但避免了解釋器解釋XML解析帶來(lái)的性能缺陷和解釋器兼容性的問(wèn)題,并且對(duì)于JavaScript解釋器來(lái)講很容易使用,它可以快速的通過(guò)訪問(wèn)對(duì)象屬性以及遍歷數(shù)組來(lái)獲取數(shù)據(jù),其可讀性對(duì)人類(lèi)來(lái)說(shuō)非常好,完全具備了結(jié)構(gòu)化數(shù)據(jù)的特點(diǎn)。XML與JSON在各方面綜合比較起來(lái),有以下5點(diǎn)區(qū)別:1)可讀性。在實(shí)現(xiàn)了解釋器的前提下,對(duì)計(jì)算機(jī)語(yǔ)言而言,它們的可讀性沒(méi)有什么差異。但對(duì)于人類(lèi)來(lái)講,在構(gòu)造JSON和XML的時(shí)候,顯然JSON更加清晰明了。在可讀性上,JSON強(qiáng)于XML。2)可擴(kuò)展性。XML因其自定義功能,所以它與生俱來(lái)就有完美的擴(kuò)展性。同樣JSON里包含了主要數(shù)據(jù)類(lèi)型,且沒(méi)有的數(shù)據(jù)類(lèi)型可以通過(guò)轉(zhuǎn)換得到,且JSON可以任意嵌套。所以在可擴(kuò)展性上,JSON與XML旗鼓相當(dāng)。3)編碼難度。兩者都有不少成熟的編碼工具,XML方面有Dom4j、JDom等工具,、。相比之下XML的編碼顯然要比JSON難很多,同樣是用手工編碼的方式去構(gòu)造JSON或XML,即使不借助工具也能寫(xiě)出JSON的文本,但要手工寫(xiě)出XML就比較困難了。所以在編碼難度上JSON教XML有優(yōu)勢(shì)。4)解碼難度。解析XML的時(shí)候需要考慮父子節(jié)點(diǎn)之間的層次關(guān)系,而JSON直接是嵌套層次關(guān)系。在解碼難度上,JSON較XML要容易。5)流行程度。XML早已經(jīng)在計(jì)算機(jī)里被熟悉和使用,而JSON只是在Web里應(yīng)用較多。就Ajax應(yīng)用而言,JSON相比XML具有壓倒性?xún)?yōu)勢(shì)。在流行程度而言,JSON具有很大上升空間。在本的研究中,需要網(wǎng)絡(luò)上傳輸?shù)臄?shù)據(jù)主要是數(shù)據(jù)庫(kù)里的數(shù)據(jù)。而且本文里要研究的數(shù)據(jù)庫(kù)是關(guān)系型數(shù)據(jù)庫(kù),關(guān)系型數(shù)據(jù)庫(kù)里面數(shù)據(jù)都是以數(shù)據(jù)表和字段來(lái)表示數(shù)據(jù)。這與JSON中的key/value不謀而合,我們可以使用JSON里面的key來(lái)表示表名,使用value來(lái)表示該表的某條記錄。而這個(gè)value又是一個(gè)JOSN對(duì)象,它的key是表的字段名稱(chēng),value是該記錄在該字段的值。這樣關(guān)系數(shù)據(jù)庫(kù)里面的每條記錄可以輕松的用JOSN表示出來(lái),而且解析也方便。所以本采用JOSN作為數(shù)據(jù)傳輸格式。 JSON與POJO的相互轉(zhuǎn)化JSON是JavaScript語(yǔ)言中對(duì)對(duì)象的一種文本表示,可以說(shuō)JSON代表著JavaScript中的對(duì)象。而POJO是Java語(yǔ)言中數(shù)據(jù)持久層的普通對(duì)象。同樣一個(gè)對(duì)象,使用Java表示與使用JSON(JavaScript)表示會(huì)有什么樣的異同呢? POJO的序列化與反序列化當(dāng)不同操作系統(tǒng)中兩個(gè)Java進(jìn)程在進(jìn)行遠(yuǎn)程通信時(shí),這兩個(gè)進(jìn)程可以通過(guò)計(jì)算機(jī)網(wǎng)絡(luò)相互傳送各種類(lèi)型的數(shù)據(jù)。在傳輸?shù)臅r(shí)候與數(shù)據(jù)類(lèi)型無(wú)關(guān),它們都是以二進(jìn)制序列的形式在計(jì)算機(jī)網(wǎng)絡(luò)上傳輸。在發(fā)送接收過(guò)程中,發(fā)送方會(huì)把這個(gè)Java對(duì)象(POJO類(lèi)的對(duì)象)轉(zhuǎn)化為字節(jié)序列,以便于在計(jì)算機(jī)網(wǎng)絡(luò)上傳輸;接收方在收到發(fā)送方的數(shù)據(jù)以后,會(huì)把字節(jié)序列再轉(zhuǎn)換成Java對(duì)象(POJO類(lèi)的對(duì)象)。把Java對(duì)象轉(zhuǎn)換成字節(jié)序列的過(guò)程稱(chēng)為對(duì)象的序列化。把字節(jié)序列轉(zhuǎn)換成Java對(duì)象的過(guò)程稱(chēng)為反序列化。對(duì)象的序列化過(guò)程主要有以下兩種用途:1)把對(duì)象的字節(jié)序列二進(jìn)制數(shù)據(jù)永久地存儲(chǔ)在硬盤(pán)上,也叫對(duì)象持久化,通常保存在數(shù)據(jù)庫(kù)中。2)在網(wǎng)絡(luò)上傳輸對(duì)象的字節(jié)序列二進(jìn)制數(shù)據(jù)。POJO作為特殊的類(lèi),它的對(duì)象與數(shù)據(jù)庫(kù)的記錄一一對(duì)應(yīng)。POJO對(duì)象序列化以后,就意味著可以將序列化后的結(jié)果在網(wǎng)絡(luò)上傳輸,這個(gè)過(guò)程對(duì)象變成了數(shù)據(jù)。這個(gè)過(guò)程相反,在接收到了POJO對(duì)象的數(shù)據(jù)后,程序需要對(duì)該數(shù)據(jù)作反序列化操作,這個(gè)過(guò)程就把數(shù)據(jù)轉(zhuǎn)換成對(duì)象了[20]。Java序列話過(guò)程如下:1) 創(chuàng)建文件FileOutputStream類(lèi)型的文件fos;2) 創(chuàng)建ObjectOutputStream類(lèi)型的對(duì)象oos = new ObjectOutputStream(fos);3) 獲得對(duì)象obj;4) 向oos里持久化obj,(obj);5) 關(guān)閉oos;其中4)步驟的過(guò)程就是將POJO類(lèi)對(duì)象的主要屬性(不包含方法)寫(xiě)入到文件中。其代碼實(shí)現(xiàn)過(guò)程如下:import .*。public class Student { private int number。 private String name。 public void setNumber(int number) { = number。 } public void setName(String name) { = name。 } public static void main(String[] arr) { Student stu = new Student()。 (30907740)。 (MadGecko)。 try { FileOutputStream fos = new FileOutputStream()。 ObjectOutputStream oos = new ObjectOutputStream(fos)。 (stu)。 ()。 } catch (Exception exc)
點(diǎn)擊復(fù)制文檔內(nèi)容
黨政相關(guān)相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖片鄂ICP備17016276號(hào)-1