国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      一種面向虛擬實驗的非結(jié)構(gòu)化數(shù)據(jù)訪問方法

      文檔序號:6356680閱讀:270來源:國知局
      專利名稱:一種面向虛擬實驗的非結(jié)構(gòu)化數(shù)據(jù)訪問方法
      技術(shù)領(lǐng)域
      本發(fā)明屬于計算機(jī)應(yīng)用領(lǐng)域,具體涉及一種面向虛擬實驗的非結(jié)構(gòu)化數(shù)據(jù)訪問方 法,該方法適合于對虛擬實驗中存在海量非結(jié)構(gòu)化數(shù)據(jù)的復(fù)雜查詢,并提供簡單、統(tǒng)一、安 全和高效的訪問接口。
      背景技術(shù)
      隨著信息化程度的提高,數(shù)據(jù)已超出它原始的范疇,它包含各種業(yè)務(wù)操作數(shù)據(jù)、報 表統(tǒng)計數(shù)據(jù)、辦公文檔、電子郵件、超文本、表格、報告以及圖片、音視頻等各種數(shù)據(jù)信息。人 們用海量數(shù)據(jù)來形容巨大的、空前浩瀚的、還在不斷增長的數(shù)據(jù)。根據(jù)業(yè)界分析報告,非結(jié) 構(gòu)化數(shù)據(jù)占有整個信息量的85%以上,數(shù)據(jù)量極其龐大,是信息資源管理的核心。作為傳統(tǒng)實驗教學(xué)的一種有效的補(bǔ)充,虛擬實驗教學(xué)已經(jīng)成為加強(qiáng)實踐教學(xué)、提 高教學(xué)質(zhì)量的重要手段,它不僅可以在一定程度上代替?zhèn)鹘y(tǒng)的實驗教學(xué),而且可以克服傳 統(tǒng)實驗的各種制約和弊端,從而有效地解決目前實驗教學(xué)中迫切需要解決的規(guī)模與質(zhì)量、 實驗資源不均衡等問題,達(dá)到優(yōu)化教育資源、提高教學(xué)質(zhì)量的目的。在對虛擬實驗中元元器件、實驗場景等數(shù)據(jù)的統(tǒng)一建模、整合已有的虛擬實驗資 源并開發(fā)新的實驗的過程中,包含了多種多樣的文本、圖片、flash、語音、視頻等非結(jié)構(gòu)化 數(shù)據(jù)。非結(jié)構(gòu)化數(shù)據(jù)是指不具有或者具有一定結(jié)構(gòu)但語義不確定的數(shù)據(jù),一般為文本、圖像 文件。在進(jìn)行虛擬實驗的過程中90%以上的數(shù)據(jù)請求都是這些非結(jié)構(gòu)化數(shù)據(jù),對它們的請 求頻率遠(yuǎn)高于對用戶信息、用戶權(quán)限等傳統(tǒng)關(guān)系型數(shù)據(jù),這類數(shù)據(jù)是進(jìn)行虛擬實驗的核心 數(shù)據(jù)。因此,如何有效地組織管理非結(jié)構(gòu)化數(shù)據(jù)、為上層應(yīng)用程序數(shù)據(jù)訪問提供支撐,依然 是一個有待解決的問題。非結(jié)構(gòu)化數(shù)據(jù)包括文本、圖像、音頻、視頻、PDF、電子表格等。非結(jié)構(gòu)化數(shù)據(jù)存儲通 常有兩種方式,但各自在存儲非結(jié)構(gòu)化數(shù)據(jù)方面存在一些缺點(diǎn)將非結(jié)構(gòu)化數(shù)據(jù)以文件的方式存儲在文件系統(tǒng)中,同時將指向文件的鏈接或路徑 存儲在數(shù)據(jù)庫表中。這種方式數(shù)據(jù)讀寫的速度較快,但數(shù)據(jù)管理會存在問題,無法實現(xiàn)文件 的事務(wù)性訪問,需要額外考慮事務(wù)處理的一致性和數(shù)據(jù)的安全性。將非結(jié)構(gòu)化數(shù)據(jù)存儲在傳統(tǒng)數(shù)據(jù)庫表的二進(jìn)制大對象字段(BLOB,Binary Large Object)中。這種方式充分利用數(shù)據(jù)庫的事務(wù)、管理和安全特性,但在數(shù)據(jù)查詢和讀寫性能 不高,并且用戶優(yōu)化空間比較小。近年來,為了滿足非結(jié)構(gòu)化數(shù)據(jù)的高效存儲訪問、高可用和高可擴(kuò)展性,非關(guān) 系型數(shù)據(jù)庫技術(shù)的受到廣泛關(guān)注。非關(guān)系型數(shù)據(jù)庫打破了長久以來關(guān)系型數(shù)據(jù)庫對 ACID (AtomicityConsistency、Isolation 以及 Durability)理論的依賴需求,數(shù)據(jù)存儲不 需要固定的表結(jié)構(gòu),通常也不存在連接操作。非關(guān)系型數(shù)據(jù)庫在大數(shù)據(jù)存取操作上具備關(guān) 系型數(shù)據(jù)庫無法比擬的性能優(yōu)勢。目前實施的案例大多是面向Web 2.0應(yīng)用,針對*吐2.0 的具體應(yīng)用場景進(jìn)行特定的改進(jìn),非結(jié)構(gòu)化數(shù)據(jù)的存儲與檢索技術(shù)不具有普適性。改進(jìn)和 優(yōu)化非結(jié)構(gòu)化數(shù)據(jù)的存儲與檢索方法還處在研究與探索之中。

      發(fā)明內(nèi)容
      本發(fā)明的目的在于提供一種面向虛擬實驗的非結(jié)構(gòu)化數(shù)據(jù)訪問方法,該方法可以 針對形式各異的海量非結(jié)構(gòu)化數(shù)據(jù)建立索引、快速定位查找并提供統(tǒng)一訪問接口,為虛擬 實驗的正確、穩(wěn)定、高效運(yùn)行提供存儲支撐環(huán)境,同時提供了復(fù)雜查詢方法以滿足不同層次 的需求。本發(fā)明提供的一種面向虛擬實驗的非結(jié)構(gòu)化數(shù)據(jù)訪問方法,其特征在于,其步驟 包括(1)用戶訪問相應(yīng)資源的URI,數(shù)據(jù)請求方法如果為POST,則進(jìn)入步驟(2)執(zhí)行 POST請求;數(shù)據(jù)請求方法如果為GET,則進(jìn)入步驟( 執(zhí)行GET請求;數(shù)據(jù)請求方法如果為 DELETE,則進(jìn)入步驟(4)執(zhí)行DELETE請求;(2) POST數(shù)據(jù)請求處理(2. 1)進(jìn)行安全認(rèn)證,校驗請求URI是否合法,如果不合法則結(jié)束該次請求;否則, 對傳入的數(shù)據(jù)進(jìn)行哈希運(yùn)算得到其鍵值,讀取該類型數(shù)據(jù)對應(yīng)的模式,進(jìn)行數(shù)據(jù)提取,然后 進(jìn)入步驟(2. 2);(2.2)在文檔數(shù)據(jù)庫中匹配是否存在相同鍵值的數(shù)據(jù),如果存在則進(jìn)入步驟 (2. 3),否則進(jìn)入步驟(2.4);(2. 3)更新文檔數(shù)據(jù)庫中信息,進(jìn)行數(shù)據(jù)緩存,返回該鍵值;并結(jié)束該次請求;(2. 4)在文檔數(shù)據(jù)庫中添加該數(shù)據(jù),進(jìn)行數(shù)據(jù)緩存,返回該鍵值并結(jié)束該次請求;(3) GET數(shù)據(jù)請求處理流程包括對數(shù)據(jù)本身的GET請求以及對數(shù)據(jù)索引的GET請求 兩個部分(3. 1)數(shù)據(jù) GET 請求:(3. 1. 1)進(jìn)行安全認(rèn)證,校驗請求URI是否合法,如果不合法則結(jié)束該次請求;否 則,進(jìn)入步驟(3. 1.2);(3. 1. 2)按照請求URI提供的鍵值,從系統(tǒng)緩存中獲取其對應(yīng)的數(shù)據(jù),數(shù)據(jù)不為空 則返回該數(shù)據(jù),結(jié)束該次請求;否則,進(jìn)入步驟(3. 1. 3);(3. 1. 3)按照請求URI提供的鍵值,從文檔數(shù)據(jù)庫獲取器對應(yīng)的數(shù)據(jù),如果不為空 則進(jìn)入步驟(3. 1. 4);否則,直接返回空數(shù)據(jù)結(jié)束該次請求;(3. 1. 4)返回數(shù)據(jù),進(jìn)行數(shù)據(jù)緩存,結(jié)束該次請求;(3. 2)列表GET數(shù)據(jù)請求處理(3. 2. 1)進(jìn)行復(fù)雜查詢,獲取滿足查詢語句的最終結(jié)果集;根據(jù)用戶在URI中的設(shè) 定,設(shè)置返回列表數(shù)據(jù)格式(支持XML、JS0N);(3. 2. 2)返回列表數(shù)據(jù),然后對該請求URI進(jìn)行哈希,進(jìn)行數(shù)據(jù)緩存,結(jié)束該次請 求;(4) DELETE數(shù)據(jù)請求處理(4. 1)進(jìn)行安全認(rèn)證,校驗請求URI是否合法,如果不合法則結(jié)束該次請求;否則, 進(jìn)入步驟(4. 2);(4. 2)按照請求URI提供的鍵值,從文檔數(shù)據(jù)庫將該鍵值對應(yīng)的數(shù)據(jù)標(biāo)記為不可 用,進(jìn)入步驟(4.3);
      (4. 3)刪除系統(tǒng)緩存中該鍵值對應(yīng)的數(shù)據(jù),并返回該鍵值、結(jié)束該次請求。本發(fā)明為了解決非結(jié)構(gòu)化數(shù)據(jù)中存儲組織形式、檢索方法與檢索效率中存在的問 題,針對非結(jié)構(gòu)化數(shù)據(jù)的特點(diǎn)并綜合考慮現(xiàn)有成熟技術(shù),設(shè)計了一種基于文檔數(shù)據(jù)的非結(jié) 構(gòu)化數(shù)據(jù)存儲檢索方法,本發(fā)明具有以下幾個特點(diǎn)(1)高可用與可擴(kuò)展性。為了防止數(shù)據(jù)丟失或數(shù)據(jù)失效即保證數(shù)據(jù)的高可用性,將 所有數(shù)據(jù)按照工業(yè)界的經(jīng)驗標(biāo)準(zhǔn)在不同的物理機(jī)上保留三個備份,同時采用異步寫入策略 以防止降低寫入效率,為了保證在異步寫入時能讀取到正確的數(shù)據(jù),采用NWR模型,N代表N 個設(shè)備,W代表要寫入至少W份才認(rèn)為成功,R表示至少讀取R個備份,要求W+R > N實現(xiàn)每次 讀取至少一個最新版本。在文檔數(shù)據(jù)庫系統(tǒng)上構(gòu)建master-slave結(jié)構(gòu),通過不斷增減slave 節(jié)點(diǎn)實現(xiàn)擴(kuò)展,并采用一致性哈希將數(shù)據(jù)散列分配,盡量減少由節(jié)點(diǎn)增刪引起的數(shù)據(jù)移動。(2)透明性。通過 REST (REpresentational State Transfer)架構(gòu)抽象所有非結(jié) 構(gòu)化數(shù)據(jù)為資源,映射到URI (Uniform Resource Identifier)上唯一對應(yīng),對所有資源實 現(xiàn)CRUD (Create、Read、Update以及Delete)操作,降低了基于該系統(tǒng)接口二次開發(fā)的復(fù)雜 性。暴露給用戶的僅僅是URI,用戶不必關(guān)心存儲系統(tǒng)內(nèi)部數(shù)據(jù)的組織形式、存儲方式、容錯 處理以及處理方法,只需調(diào)用URI指向所需資源并附帶動作命令GET、POST或DELETE執(zhí)行 對應(yīng)的CRUD操作。(3)安全性。在REST架構(gòu)中,所有操作都是無狀態(tài)的,在請求過程中不會帶有 Session和Cookie,即不會保存與會話相關(guān)的任何信息?;谶@一特點(diǎn),可以按照HTTP請 求的方式以及鏈接對數(shù)據(jù)請求進(jìn)行過濾,并采用數(shù)據(jù)摘要式安全認(rèn)證杜絕非法訪問。(3)查詢方式。結(jié)合現(xiàn)有的SQL語法以及對非結(jié)構(gòu)化數(shù)據(jù)的查詢需求,采用 key-value的形式對SQL查詢語法進(jìn)行轉(zhuǎn)換,通過WHERE、SKIP、LIMIT和SORT子句進(jìn)行代 數(shù)關(guān)系運(yùn)算、集合運(yùn)算,并實現(xiàn)基于正則表達(dá)式的模糊查詢。


      圖1是本發(fā)明的系統(tǒng)結(jié)構(gòu)圖2是本發(fā)明的RESTful接口設(shè)計原則示意圖
      圖3是本發(fā)明方法的數(shù)據(jù)請求交互流程圖4是本發(fā)明的寫入(更新)數(shù)據(jù)流程圖5是本發(fā)明的讀取數(shù)據(jù)流程圖6是本發(fā)明的刪除數(shù)據(jù)流程圖7是本發(fā)明的數(shù)據(jù)列表訪問流程圖8是本發(fā)明的數(shù)據(jù)提取層設(shè)計示意圖9是本發(fā)明的級聯(lián)緩存機(jī)制示意圖10是本發(fā)明的數(shù)字簽名生成示意圖11是本發(fā)明的接口認(rèn)證流程圖12是本發(fā)明的復(fù)雜查詢實現(xiàn)流程圖。
      具體實施例方式
      本發(fā)明根據(jù)非結(jié)構(gòu)化數(shù)據(jù)的特點(diǎn),引入了一種基于REST架構(gòu)的安全數(shù)據(jù)訪問方法,可以優(yōu)化非結(jié)構(gòu)化數(shù)據(jù)存儲、索引的構(gòu)建以及檢索的效率,并保證數(shù)據(jù)的安全性。在本 發(fā)明的系統(tǒng)中,非結(jié)構(gòu)化數(shù)據(jù)具有如下特點(diǎn)(1)文件大小相對較小,全都是小于1MB的文件;(2)文件總數(shù)達(dá)到十萬數(shù)量級,虛擬實驗學(xué)科眾多,每一學(xué)科也有很多具體實驗, 每一個具體實驗中會對應(yīng)很多不同種類的實驗元器件;(3)文件一旦寫入就基本不會進(jìn)行更改,改動頻率低,數(shù)據(jù)讀取操作占到了訪問量 的95%以上;(4)文件類型、格式不一,數(shù)據(jù)格式很難預(yù)先確定;(3. 2.)文件之間有一定的學(xué)科相關(guān)性、具體實驗相關(guān)性;(6)訪問這些數(shù)據(jù)的客戶端也多種多樣,具有平臺差異(LiniDuWindows操作系統(tǒng) 等)和語言差異(C、C++、Java、Python等)。下面針對這些特點(diǎn)結(jié)合附圖對本發(fā)明做出詳細(xì)說明1為了避免大量小文件訪問的磁盤10、提高吞吐量,將對應(yīng)于一個具體實驗元器 件的全部文件(包括邏輯運(yùn)算文件、圖形可視化文件)視為一個實驗元器件對象,以該對象 作為數(shù)據(jù)訪問的最小單元,并采用數(shù)據(jù)緩存;2數(shù)據(jù)更新(寫入、更新與刪除)操作所占比重較低,因此采用消息隊列執(zhí)行此類 操作,數(shù)據(jù)修改操作異步執(zhí)行,將應(yīng)用與數(shù)據(jù)解耦,同時也解決了數(shù)據(jù)并發(fā)寫入時的合并問 題;3由于實驗文件類型、格式不一,每一類數(shù)據(jù)都有其對應(yīng)的解析模式,在進(jìn)行數(shù)據(jù) 解析時動態(tài)綁定相對應(yīng)的模式;4根據(jù)虛擬實驗中數(shù)據(jù)的學(xué)科相關(guān)性與具體實驗相關(guān)性,預(yù)先加載熱點(diǎn)訪問數(shù)據(jù) 所在學(xué)科或具體實驗中定義的所有數(shù)據(jù),與此同時,采用級聯(lián)緩存結(jié)構(gòu),自頂向下緩存粒度 逐漸加大,上層為下層緩存數(shù)據(jù)的子集;5為了獨(dú)立于平臺與語言,采用基于HTTP協(xié)議的REST架構(gòu),針對用戶數(shù)據(jù)需求提 供多種類型的RESTful接口,并提供基于URI的安全認(rèn)證機(jī)制與復(fù)雜查詢方法。如圖1所示,本發(fā)明方法所基于的基本組成部分包括數(shù)據(jù)訪問層采用REST架構(gòu),將數(shù)據(jù)訪問抽象為簡單、統(tǒng)一的接口,并提供復(fù)雜查 詢功能。使用數(shù)字簽名的形式進(jìn)行權(quán)限認(rèn)證;數(shù)據(jù)提取層為每一類非結(jié)構(gòu)化數(shù)據(jù)提供模式提取文件的屬性以及數(shù)據(jù)。對于沒 有模式的非結(jié)構(gòu)化數(shù)據(jù)則提取其元數(shù)據(jù)屬性及其屬性值。寫入時采用消息隊列,將應(yīng)用與 邏輯分離,降低系統(tǒng)延遲與寫入丟失。對于數(shù)據(jù)的多個寫入版本,以最后一次寫入為準(zhǔn),單 點(diǎn)寫入,弱化一致性方面的開發(fā)難度;索引同步層在內(nèi)存中以鍵值對的形式,保存所有非結(jié)構(gòu)化數(shù)據(jù)索引信息以及熱 點(diǎn)訪問數(shù)據(jù)。在對非結(jié)構(gòu)化數(shù)據(jù)執(zhí)行更新、添加或刪除操作的同時,更新內(nèi)存中的索引信 息,盡量減少磁盤IO次數(shù);文件存儲層負(fù)責(zé)保證數(shù)據(jù)文件的高可靠性與高可用性,同時為防止單個文件目 錄過大、熱點(diǎn)數(shù)據(jù)過于集中,需要將進(jìn)行目錄切分、數(shù)據(jù)移動,并更新索引表。當(dāng)數(shù)據(jù)文件達(dá) 到規(guī)定大小時將其進(jìn)行歸檔、設(shè)置為只讀。本發(fā)明方法利用RESTful接口對所有數(shù)據(jù)資源提供POST (增加/更新)、GET (獲取)、DELTE(刪除)三種方法,這三種方法的訪問都需要進(jìn)行安全認(rèn)證,并另外針對列表訪 問接口提供了復(fù)雜查詢功能。結(jié)構(gòu)如圖2所示。用戶訪問本系統(tǒng)(下文如無特別說明,均指按照本發(fā)明方法實現(xiàn)的系統(tǒng))數(shù)據(jù)時, 系統(tǒng)需要做出相應(yīng)的處理,具體請求處理流程如圖3所示,其中,POST數(shù)據(jù)請求處理流程如 圖4所示,數(shù)據(jù)GET請求如圖5所示,列表GET數(shù)據(jù)請求處理流程如圖7所示,DELETE數(shù)據(jù) 請求處理流程如圖6所示。在上述過程中,涉及到數(shù)據(jù)提取、數(shù)據(jù)緩存、安全認(rèn)證和復(fù)雜查詢過程,下面舉例 具體說明其實現(xiàn)方式。(A)數(shù)據(jù)提取過程數(shù)據(jù)提取層采用“可插拔”的設(shè)計,每一模式(schema)都可與一個或多個非結(jié)構(gòu) 化數(shù)據(jù)類型進(jìn)行綁定以及取消綁定,即實現(xiàn)非結(jié)構(gòu)化數(shù)據(jù)類型的注冊/注銷,針對其注冊 的類型提取模式中定義的關(guān)鍵字及其所對應(yīng)的數(shù)據(jù),如圖8所示,按如下步驟實施(Al)數(shù)據(jù)提取層接收輸入的數(shù)據(jù),提取數(shù)據(jù)元數(shù)據(jù)信息或其在模式中定義的關(guān)鍵 字及其所對應(yīng)的數(shù)據(jù);(A2)將元數(shù)據(jù)信息與其所包含的模式類型進(jìn)行匹配,并返回匹配成功之后的 第一個對應(yīng)模式,這樣同時也解決了同一類型定義了多個模式的問題,其中返回結(jié)果為 {key lvalue}形式的鍵值對;如果匹配失敗,否則僅提取其元數(shù)據(jù);(A3)將解析的最終數(shù)據(jù)進(jìn)行數(shù)據(jù)整合輸出,結(jié)束該次請求。(B)數(shù)據(jù)緩存過程為了提高系統(tǒng)的吞吐率和降低延遲,采用多級緩存機(jī)制。熱點(diǎn)數(shù)據(jù)緩存、數(shù)據(jù)庫緩 存、文件系統(tǒng)緩存,讓數(shù)據(jù)更加靠近用戶,并逐漸增大緩存的粒度。同時,根據(jù)數(shù)據(jù)本身的相 關(guān)性,預(yù)取一部分?jǐn)?shù)據(jù)到緩存,用一部分命中率來換取數(shù)據(jù)訪問的效率,如圖9所示,其中, 數(shù)據(jù)庫文件包緩存含了全部的實驗元器件對象(簡稱實驗對象)數(shù)據(jù),學(xué)科數(shù)據(jù)緩存包含 了一個學(xué)科的全部實驗對象數(shù)據(jù),實驗對象緩存中是部分來自數(shù)據(jù)庫文件緩存和學(xué)科數(shù)據(jù) 緩存的實驗對象數(shù)據(jù),列表數(shù)據(jù)緩存中存儲的是部分實驗對象的索引(Bi)將最近使用的數(shù)據(jù)庫文件從分布式文件系統(tǒng)緩存到本地文件系統(tǒng),避免數(shù)據(jù) 庫文件網(wǎng)絡(luò)傳輸,同時提高了數(shù)據(jù)的可用性;(B2)實驗對象為系統(tǒng)處理的基本數(shù)據(jù)單元,根據(jù)當(dāng)前實驗對象數(shù)據(jù)訪問的熱點(diǎn) (熱點(diǎn)指訪問量最大的實驗對象),設(shè)置學(xué)科數(shù)據(jù)緩存,將熱點(diǎn)數(shù)據(jù)所在的學(xué)科全部元器件 一次性加載到內(nèi)存。當(dāng)前實驗對象的熱點(diǎn)改變時,再作廢當(dāng)前緩存數(shù)據(jù)重新載入新的學(xué)科 數(shù)據(jù);(B4)列表數(shù)據(jù)一直都是系統(tǒng)中的熱點(diǎn)數(shù)據(jù),按照查詢URI的哈希值作為鍵值緩存列 表數(shù)據(jù)。(C)安全認(rèn)證過程為了獨(dú)立于平臺與語言,針對用戶數(shù)據(jù)需求提供多種類型的RESTful接口,并提 供基于URI的安全認(rèn)證機(jī)制與復(fù)雜查詢方法本系統(tǒng)采用數(shù)字簽名的方式,對請求URI進(jìn)行認(rèn)證,流程如圖10所示。其中,用戶 密鑰系統(tǒng)與用戶約定的加密密文,保證該用戶為認(rèn)證用戶;加密算法系統(tǒng)與用戶約定的 加密算法;令牌通過令牌數(shù)據(jù)庫生成,僅用于標(biāo)識一次請求,之后作廢。系統(tǒng)與系統(tǒng)用戶 之間約定(或者定期變更)密鑰,采用MD5進(jìn)行加密,密鑰用于驗證用戶是否為系統(tǒng)認(rèn)證用戶;在系統(tǒng)用戶執(zhí)行每一次請求時,需向系統(tǒng)請求令牌,用于標(biāo)識用戶的該次請求,用戶執(zhí) 行完該次請求之后,該令牌作廢。通過兩次密鑰請求的方式杜絕非法訪問。具體步驟如下 (如圖11所示)(Cl)系統(tǒng)用戶通過與系統(tǒng)約定的方式獲取密鑰;(C2)系統(tǒng)用戶每執(zhí)行一次數(shù)據(jù)請求,均需生成此次數(shù)據(jù)請求的URI,通過URI標(biāo)識 此次請求的數(shù)據(jù)類別和鍵值;(C3)系統(tǒng)用戶向系統(tǒng)請求令牌,將該令牌與數(shù)據(jù)類別、鍵值等信息以及密鑰作為 加密字符串,獲取數(shù)字簽名,執(zhí)行請求;(C4)系統(tǒng)獲取該次請求URI及數(shù)字簽名,從請求URI中標(biāo)識此次請求的數(shù)據(jù)類別、 鍵值和令牌,判斷數(shù)據(jù)庫中是否存在該令牌,如果存在進(jìn)入步驟(C5),否則返回空值并結(jié)束 該次請求;(C5)系統(tǒng)采用與系統(tǒng)用戶約定的密鑰,使用相同的方法生成數(shù)據(jù)簽名,與請求 URI中的數(shù)字簽名進(jìn)行比對,如果匹配則返回其鍵值,進(jìn)入步驟(C6),否則返回空值,進(jìn)入 步驟(C6);(C6)刪除該次請求中所使用的令牌,結(jié)束該次請求。(D)復(fù)雜查詢過程在本系統(tǒng)中,復(fù)雜查詢功能支持查詢關(guān)鍵字Where、Skip、limit、SOrt,分別對應(yīng)于 查詢條件、偏移量(數(shù)字,跳過多少條記錄)、記錄數(shù)(數(shù)字,取多少條記錄)以及排序。這 四個查詢關(guān)鍵字可任意組合。用符號“&”進(jìn)行連接,故在查詢的字段和字段值中不允許帶 有特殊字符“&”、“? ”、“ = ”。查詢不區(qū)分大小寫。系統(tǒng)收到用戶的URI請求,對其進(jìn)行解析 轉(zhuǎn)換為對應(yīng)的數(shù)據(jù)查詢語句。轉(zhuǎn)換流程如圖12所示。具體步驟如下(Dl)解析查詢字符串中的關(guān)鍵字,將關(guān)鍵字為Where、Skip、limit或sort的字符 串及其所對應(yīng)的值轉(zhuǎn)換為{key:ValUe}的鍵值對形式;(D2)如果存在關(guān)鍵字where,則解析其所對應(yīng)的值是否形如{字段操作符條 件},詳細(xì)定義如表1所示。如果是,則按照該篩選條件從文檔數(shù)據(jù)庫中取出滿足條件的數(shù) 據(jù),進(jìn)入步驟(D3);否則返回空列表數(shù)據(jù),并結(jié)束該次請求;表1 where查詢語句
      權(quán)利要求
      1.一種面向虛擬實驗的非結(jié)構(gòu)化數(shù)據(jù)訪問方法,其特征在于,其步驟包括(1)用戶訪問相應(yīng)資源的URI,數(shù)據(jù)請求方法如果為POST,則進(jìn)入步驟⑵執(zhí)行POST請 求;數(shù)據(jù)請求方法如果為GET,則進(jìn)入步驟(3)執(zhí)行GET請求;數(shù)據(jù)請求方法如果為DELETE, 則進(jìn)入步驟(4)執(zhí)行DELETE請求;(2)POST數(shù)據(jù)請求處理(2. 1)進(jìn)行安全認(rèn)證,校驗請求URI是否合法,如果不合法則結(jié)束該次請求;否則,對傳 入的數(shù)據(jù)進(jìn)行哈希運(yùn)算得到其鍵值,讀取該類型數(shù)據(jù)對應(yīng)的模式,進(jìn)行數(shù)據(jù)提取,然后進(jìn)入 步驟(2. 2);(2. 2)在文檔數(shù)據(jù)庫中匹配是否存在相同鍵值的數(shù)據(jù),如果存在則進(jìn)入步驟(2. 3),否 則進(jìn)入步驟(2. 4);(2. 3)更新文檔數(shù)據(jù)庫中信息,進(jìn)行數(shù)據(jù)緩存,返回該鍵值;并結(jié)束該次請求;(2. 4)在文檔數(shù)據(jù)庫中添加該數(shù)據(jù),進(jìn)行數(shù)據(jù)緩存,返回該鍵值并結(jié)束該次請求;(3)GET數(shù)據(jù)請求處理流程包括對數(shù)據(jù)本身的GET請求以及對數(shù)據(jù)索引的GET請求兩個 部分(3. 1)數(shù)據(jù)GET請求(3. 1. 1)進(jìn)行安全認(rèn)證,校驗請求URI是否合法,如果不合法則結(jié)束該次請求;否則,進(jìn) 入步驟(3. 1. 2);(3. 1. 2)按照請求URI提供的鍵值,從系統(tǒng)緩存中獲取其對應(yīng)的數(shù)據(jù),數(shù)據(jù)不為空則返 回該數(shù)據(jù),結(jié)束該次請求;否則,進(jìn)入步驟(3. 1. 3);(3. 1. 3)按照請求URI提供的鍵值,從文檔數(shù)據(jù)庫獲取器對應(yīng)的數(shù)據(jù),如果不為空則進(jìn) 入步驟(3. 1. 4);否則,直接返回空數(shù)據(jù)結(jié)束該次請求;(3. 1. 4)返回數(shù)據(jù),進(jìn)行數(shù)據(jù)緩存,結(jié)束該次請求;(3. 2)列表GET數(shù)據(jù)請求處理(3. 2. 1)進(jìn)行復(fù)雜查詢,獲取滿足查詢語句的最終結(jié)果集;根據(jù)用戶在URI中的設(shè)定, 設(shè)置返回列表數(shù)據(jù)格式;(3. 2. 2)返回列表數(shù)據(jù),然后對該請求URI進(jìn)行哈希,進(jìn)行數(shù)據(jù)緩存,結(jié)束該次請求;(4)DELETE數(shù)據(jù)請求處理(4. 1)進(jìn)行安全認(rèn)證,校驗請求URI是否合法,如果不合法則結(jié)束該次請求;否則,進(jìn)入 步驟(4. 2);(4. 2)按照請求URI提供的鍵值,從文檔數(shù)據(jù)庫將該鍵值對應(yīng)的數(shù)據(jù)標(biāo)記為不可用,進(jìn) 入步驟(4. 3);(4. 3)刪除系統(tǒng)緩存中該鍵值對應(yīng)的數(shù)據(jù),并返回該鍵值、結(jié)束該次請求。
      2.根據(jù)權(quán)利要求1所述的非結(jié)構(gòu)化數(shù)據(jù)訪問方法,其特征在于,所述數(shù)據(jù)提取的過程 如下(Al)數(shù)據(jù)提取層接收輸入的數(shù)據(jù),提取數(shù)據(jù)元數(shù)據(jù)信息或其在模式中定義的關(guān)鍵字及 其所對應(yīng)的數(shù)據(jù);(A2)將元數(shù)據(jù)信息與其所包含的模式類型進(jìn)行匹配,并返回匹配成功之后的第一個對 應(yīng)模式;(A3)將解析的最終數(shù)據(jù)進(jìn)行數(shù)據(jù)整合輸出,結(jié)束該次請求。
      3.根據(jù)權(quán)利要求1所述的非結(jié)構(gòu)化數(shù)據(jù)訪問方法,其特征在于,所述數(shù)據(jù)緩存的過程 如下(Bi)將最近使用的數(shù)據(jù)庫文件從分布式文件系統(tǒng)緩存到本地文件系統(tǒng); (B2)實驗對象為系統(tǒng)處理的基本數(shù)據(jù)單元,根據(jù)當(dāng)前實驗對象數(shù)據(jù)訪問的熱點(diǎn),設(shè)置 學(xué)科數(shù)據(jù)緩存,將熱點(diǎn)數(shù)據(jù)所在的學(xué)科全部元器件一次性加載到內(nèi)存;當(dāng)前實驗對象的熱 點(diǎn)改變時,再作廢當(dāng)前緩存數(shù)據(jù)重新載入新的學(xué)科數(shù)據(jù);(B4)列表數(shù)據(jù)一直都是系統(tǒng)中的熱點(diǎn)數(shù)據(jù),按照查詢URI的哈希值作為鍵值緩存列表 數(shù)據(jù)。
      4.根據(jù)權(quán)利要求1所述的非結(jié)構(gòu)化數(shù)據(jù)訪問方法,其特征在于,所述安全認(rèn)證的過程 如下(Cl)系統(tǒng)用戶通過與系統(tǒng)約定的方式獲取密鑰;(C2)系統(tǒng)用戶每執(zhí)行一次數(shù)據(jù)請求,均需生成此次數(shù)據(jù)請求的URI,通過URI標(biāo)識此次 請求的數(shù)據(jù)類別和鍵值;(C3)系統(tǒng)用戶向系統(tǒng)請求令牌,將該令牌與數(shù)據(jù)類別、鍵值等信息以及密鑰作為加密 字符串,獲取數(shù)字簽名,執(zhí)行請求;(C4)系統(tǒng)獲取該次請求URI及數(shù)字簽名,從請求URI中標(biāo)識此次請求的數(shù)據(jù)類別、鍵值 和令牌,判斷數(shù)據(jù)庫中是否存在該令牌,如果存在進(jìn)入步驟(C5),否則返回空值并結(jié)束該次 請求;(C5)系統(tǒng)采用與系統(tǒng)用戶約定的密鑰,使用相同的方法生成數(shù)據(jù)簽名,與請求URI中 的數(shù)字簽名進(jìn)行比對,如果匹配則返回其鍵值,進(jìn)入步驟(C6),否則返回空值,進(jìn)入步驟 (C6);(C6)刪除該次請求中所使用的令牌,結(jié)束該次請求。
      5.根據(jù)權(quán)利要求1所述的非結(jié)構(gòu)化數(shù)據(jù)訪問方法,其特征在于,所述復(fù)雜查詢的過程 如下(Dl)解析查詢字符串中的關(guān)鍵字,將關(guān)鍵字為Where、Skip、limit或sort的字符串及 其所對應(yīng)的值轉(zhuǎn)換為{key:ValUe}的鍵值對形式;(D2)如果存在關(guān)鍵字where,則解析其所對應(yīng)的值是否形如{字段操作符條件}, 如果是,則按照該篩選條件從文檔數(shù)據(jù)庫中取出滿足條件的數(shù)據(jù),進(jìn)入步驟(D3);否則返 回空列表數(shù)據(jù),并結(jié)束該次請求;(D3)如果存在關(guān)鍵字sort,則解析其所對應(yīng)的值是否形如{字段升序/降序},如果 是,則按照指定字段進(jìn)行升序或降序排序,進(jìn)入步驟04);否則返回空列表數(shù)據(jù),并結(jié)束該 次請求;(D4)如果存在關(guān)鍵字limit,則判斷其值是否為正整數(shù)N,如果是,則返回結(jié)果集的前N 條記錄;否則返回空列表數(shù)據(jù),并結(jié)束該次請求(D5)如果存在關(guān)鍵字skip,判斷其值是否為正整數(shù)M,如果是,則在返回結(jié)果集中剔除 前M條記錄;否則返回空列表數(shù)據(jù),結(jié)束該次請求;(D6)返回滿足查詢語句的最終結(jié)果集, 結(jié)束該次請求。
      全文摘要
      本發(fā)明公開了一種面向虛擬實驗的非結(jié)構(gòu)化數(shù)據(jù)訪問方法,步驟為①為了避免大量小文件訪問的磁盤IO、提高吞吐量,將對應(yīng)于一個具體實驗元器件的全部文件視為一個實驗元器件對象,以該對象作為數(shù)據(jù)訪問的最小單元;②數(shù)據(jù)更新操作所占比重較低,采用消息隊列執(zhí)行此類操作,數(shù)據(jù)修改操作異步執(zhí)行,將應(yīng)用與數(shù)據(jù)解耦,同時也解決了數(shù)據(jù)并發(fā)寫入時的合并問題;③由于實驗文件類型、格式不一,每一類數(shù)據(jù)都有其對應(yīng)的解析模式,在進(jìn)行數(shù)據(jù)解析時動態(tài)綁定相對應(yīng)的模式;④根據(jù)虛擬實驗中數(shù)據(jù)的學(xué)科相關(guān)性與具體實驗相關(guān)性,預(yù)先加載熱點(diǎn)訪問數(shù)據(jù)所在學(xué)科或具體實驗中定義的所有數(shù)據(jù),與此同時,采用級聯(lián)緩存結(jié)構(gòu),自頂向下緩存粒度逐漸加大,上層為下層緩存數(shù)據(jù)的子集;⑤為了獨(dú)立于平臺與語言,采用基于HTTP協(xié)議的REST架構(gòu),針對用戶數(shù)據(jù)需求提供多種類型的RESTful接口,并提供基于URI的安全認(rèn)證機(jī)制與復(fù)雜查詢方法。
      文檔編號G06F17/30GK102129469SQ20111007114
      公開日2011年7月20日 申請日期2011年3月23日 優(yōu)先權(quán)日2011年3月23日
      發(fā)明者劉超, 張磊, 李 浩, 蔣文斌, 金海 申請人:華中科技大學(xué)
      網(wǎng)友詢問留言 已有0條留言
      • 還沒有人留言評論。精彩留言會獲得點(diǎn)贊!
      1