麻豆精品无码国产在线播放,国产亚洲精品成人AA片新蒲金,国模无码大尺度一区二区三区,神马免费午夜福利剧场

一種面向切面的云存儲引擎構造方法

文檔序號:6438759閱讀:276來源:國知局
專利名稱:一種面向切面的云存儲引擎構造方法
技術領域
本發明屬于網絡存儲技術領域,尤其涉及一種云存儲引擎的構造方法。
背景技術
在現代計算技術、軟硬件技術、網絡技術的發展下,計算機系統通過集群應用、網格計算技術或分布式文件系統等技術,將網絡中大量各種不同類型的存儲設備通過應用軟件集合起來協同工作,共同對外提供數據存儲和業務訪問功能。我們把這種系統稱之為云計算機系統。在這樣的云計算系統中,系統的核心是大量數據的存儲和管理,而針對這種情況,云計算系統中需要配置大量的存儲設備,這些存儲設備存儲的數據及數據本身的管理方法,就衍生、轉變成為一個云存儲系統(簡稱云存儲);與傳統的存儲設備相比,云存儲系統不僅僅是一個硬件,而是一個網絡設備、存儲設備、服務器、應用軟件、公用訪問接口、 接入網、和客戶端程序等多個部分組成的復雜系統,在這個系統中,各部分以存儲設備為核心,通過應用軟件來對外提供數據存儲和業務訪問服務。存儲引擎是數據庫系統中,一種將數據集中存儲管理的方式,現有的存儲引擎,主要針對關系型數據庫,這種存儲引擎將關系型數據庫中的數據表按照存儲方法、索引類型以及鎖定水平分類,并將分類后的數據表加載到內存中。但是現有的存儲引擎并沒有解除數據之間高度耦合的關系,沒有改變數據的存儲方法,使得用戶在檢索數據和進行數據管理時,花費大量的時間進行查找、比對,而且現有的存儲引擎沒有支持非關系型數據庫。因此,現有的存儲引擎在面對異構的云存儲分布方式時,難以適應數據變化大、數據并發量高等新特點。

發明內容
本發明的目的是解決現有的存儲引擎在面對異構的云存儲分布方式時,難以適應數據變化大、數據并發量高的不足,提出一種面向切面的云存儲引擎構造方法,該方法利用面向切面的思想,抽象出對數據的操作,屏蔽對底層關系型數據庫和非關系型數據的差異, 統一對數據的管理和訪問控制。本發明的技術方案是一種面向切面的云存儲引擎構造方法,包括如下步驟步驟1 設計人員根據所采用的數據庫類型構建數據訪問層;步驟2 設計人員對數據庫中的數據進行切面;步驟3 設計人員分析業務請求,對數據操作切面得到切面數據;步驟4 設計人員在步驟3中構建好的切面數據的基礎上,構建云存儲引擎。上述步驟1中構建數據訪問層的具體過程如下確定使用數據存儲方式為關系型數據庫或非關系型數據庫,分別對關系型數據庫和非關系型數據庫建立數據訪問層。上述步驟2中對關系型數據庫切面的過程包括如下步驟遍歷數據庫所有的原始數據表,對每張表進行編號,保證編號不重復;將上一步中的表編號單獨存儲在另一張表中;對原始數據表的數據,逐列(一列一屬性)提取,將提取的數據單獨存放在新的數據表中,再將新的數據表中的數據編號,所有從原始數據表逐列提取的數據,在所有的新的數據表中對應的編號一致,這個編號可以是原始數據表中的主鍵,也可以用其他方式生成, 但要保證新的數據表中的所有數據編號不重復。上述步驟2中對非關系數據庫切面的過程包括如下步驟非關系數據庫中,數據是用鍵值對的形式存儲的,每一條數據都會有數據鍵和對應的數據值,所以在對非關系型數據庫切面的時候,只需要將數據的數據鍵存儲在一張表中,數據鍵對應的數據值存儲在另一張表中,得到兩個新的數據表。本發明的有益效果是本發明與傳統技術相比較,在現有的云存儲架構中,新加入數據訪問層的概念,該數據訪問層使用面向切面編程的思想將數據切面處理,大幅提高了數據檢索和數據管理的效率,簡化了關系型數據和非關系型數據處理過程中數據異構的復雜性問題。


圖1是本發明所涉及的云存儲系統整體架構示意圖。圖2為本發明的面向切面管理模型圖。
具體實施例方式下面結合附圖和具體的實施方式對本發明作進一步的闡述。為了對本發明的具體實施例做說明,有必要先確定一些本發明的專用的概念和理論。1.云存儲架構云存儲架構,通過添加標準硬件和共享標準網絡(公共互聯網或私有的企業內部網)提供對數據的訪問,云容量和性能具有良好的可擴性。數百臺云存儲服務器對外提供服務,邏輯上是一個單一的、大型的存儲池設備。本發明所涉及的云存儲系統,其結構模型自下而上由以下五層組成,如圖1所示, 其中第一層(存儲層)、第三層(基礎管理層)、第四層(訪問層)、第五層(應用接口層) 為標準的云存儲結構模型,第二層是本發明為了構建新的云存儲引擎,而新引入的數據訪問層,該數據訪問層的構建使用了面向切面編程的思想。下面對各層做進一步的介紹11.存儲層存儲層是云存儲最基礎的部分。存儲設備可以是FC光纖通道存儲設備,可以是 NAS和iSCSI等IP存儲設備,也可以是SCSI或SAS等DAS存儲設備。云存儲中的存儲設備往往數量龐大且分布多不同地域,彼此之間通過廣域網、互聯網或者FC光纖通道網絡連接在一起。存儲層可以包含存儲引擎,存儲引擎是一種將數據用各種不同的技術存儲在文件 (或者內存)中的方法。根據各種不同技術中采用的對數據存儲方式、索引技巧、鎖定水平的不同分類后,最終提供廣泛的功能。12.數據訪問層數據訪問層是使用面向切面編程思想實現的對關系型和非關系型數據庫的數據操作。數據訪問層向上封裝成為具體的程序調用,表現為相同的程序名稱,向下實現了對不同類型數據庫的訪問,將相同的程序名稱映射為對不同數據庫的具體操作。13.基礎管理層
基礎管理層是云存儲最核心的部分。基礎管理層通過集群、分布式文件系統和網格計算等技術,實現云存儲中多個存儲設備之間的協同工作,使多個的存儲設備可以對外提供同一種服務,并提供更大更強更好的數據訪問性能。
身份認證技術、數據加密技術保證云存儲中的數據不會被未授權的用戶所訪問, 同時,通過各種數據備份和容災技術和措施可以保證云存儲中的數據不會丟失,保證云存儲自身的安全和穩定。
14.訪問層
任何一個授權用戶都可以通過標準的公用應用接口來登錄云存儲系統,享受云存儲服務。云存儲運營單位不同,云存儲提供的訪問類型和訪問手段也不同。
15.應用接口層
云存儲最靈活的部分。不同的云存儲運營單位可以根據實際業務類型,開發不同的應用服務接口,提供不同的應用服務。
2.簡單對象訪問協議(SOAP, Simple Object Access Protocol)
簡單對象訪問協議是一種標準化的通訊規范,簡化了網頁服務器從數據庫提取數據的過程,使得網頁服務器無需再花大量時間格式化數據,并能夠讓不同應用程序之間透過HTTP通訊協定,以XML格式互相交換彼此的數據,使得數據的傳輸與具體的編程語言、平臺和硬件無關。
3.(Aspect Oriented Programming, A0P)白勺:j>@。
面向切面編程主要實現的目的是針對業務處理過程中的切面進行提取,它所面對的是處理過程中的某個步驟或階段,以獲得邏輯過程中各部分之間低耦合性的隔離效果。
下面介紹本發明中需要用到的面向切面編程的一些基本概念
接入點(join point):是程序執行中的一個精確執行點,例如程序的一個方法。接入點是一個抽象的概念,在實現面向切面編程時,并不需要刻意去定義一個連接點。
切點(point cut)本質上是一個捕獲接入點的結構。通常定義一個切點,來捕獲程序中相關方法的調用。
切面(aspect)切點和連接點結合起來就是切面,是針對具體程序中的一個程序模塊,這個程序模塊包含了執行切面的具體方法。
通知(advide)切點的執行代碼,是切面中包含的執行具體程序的代碼。
目標對象(target)切面作用的具體對象。
代理對象(proxy)切面通過操作代理對象,間接操作具體對象。
織入(weaving)是指切面使用代理對象的過程。
在充分理解上述本發明相關的專用的概念和理論后,下面進一步的介紹本發明的具體實施過程一種面向切面的云存儲引擎構造方法,如圖1所示,包括步驟
步驟1 設計人員根據所采用的數據庫類型構建數據訪問層。
構建數據訪問層的具體過程如下
步驟11 確定使用數據存儲方式為關系型數據庫或非關系型數據庫,分別對關系型數據庫和非關系型數據庫建立數據訪問層;具體設計如下
a.關系型數據庫可使用的訪問方式包括
ODBC (Open Database Connectivity)開放數據庫互連,
JDBC (Java Database Connectivity) :java
ADO (ActiveX Data Objects) :ActiveX 數據對象,
OLEDB (Object Linking and Embedding Database):對象鏈接嵌入數據庫;
b.非關系型數據庫可使用的訪問方式包括
Key-Value 基于鍵值對的存儲方式;
由于上述提及的訪問方式均為本領域的現有技術,因此未對其詳細展開描述。
步驟2 設計人員對數據庫中的數據進行切面。
步驟21 在關系型數據庫中,數據是用表的形式存儲的,表的每一行就是一條數據,表的每一列就是數據所擁有的屬性,由于關系型數據庫只針對數據本身,而沒有針對數據的屬性,所以可以對數據的屬性進行切面。
關系型數據庫切面的過程如下
遍歷數據庫所有的原始數據表,對每張表進行編號,保證編號不重復;
將上一步中的表編號單獨存儲在另一張表中;
對原始數據表的數據,逐列(一列一屬性)提取,將提取的數據單獨存放在新的數據表中,再將新的數據表中的數據編號,所有從原始數據表逐列提取的數據,在所有的新的數據表中對應的編號一致,這個編號可以是原始數據表中的主鍵,也可以用其他方式生成, 但要保證新的數據表中的所有數據編號不重復。
步驟22 在非關系數據庫中,數據是用鍵值對的形式存儲的,每一條數據都會有數據鍵和對應的數據值,所以在對非關系型數據庫切面的時候,只需要將數據的數據鍵存儲在一張表中,數據鍵對應的數據值存儲在另一張表中,得到兩個新的數據表。
以上用新的數據表存儲的數據就是切面數據。
步驟3 設計人員分析業務請求,對數據操作切面得到切面數據。如圖2所示,切面操作可以是一種抽象行為,如數據的操作可抽象為查詢、新增、修改、刪除、日志等,每一種操作即可作為一個切面操作;
在數據庫系統中,設計人員首先提取數據操作的切面,這種數據操作對應具體的數據庫操作步驟,具體的數據庫操作步驟又需要具體的數據庫訪問方式,設計人員將具體的數據庫訪問方式封裝成一個程序,這個程序可以訪問關系型數據庫,也可訪問非關系型數據庫,這個程序作為通知。
應用接口層會向服務器發出請求,發出請求的程序是接入點,請求從接入點發出后,切面操作截獲服務請求,捕獲接入點的程序作為切點,通過切點捕獲到的請求,將由切點判斷請求的有效性,如果為無效請求則攔截,如果是有效請求就將請求交給通知進行處理,通知針對具體的請求會轉向具體的數據庫對象。
具體的數據庫對象已經通過第一步變為切面數據,這時,切面數據就是目標對象, 如果目標對象本身是對數據的封裝,這些封裝只是包含了對真實數據的操作,則把包含了對真實數據操作的數據對象稱為代理對象,當切面操作要處理切面數據時,就會先處理代理對象,然后通過代理對象,實現對切面數據的操作。
上述切面操作通過操作代理對象而間接操作切面數據的過程稱為織入。
步驟4 設計人員在步驟3中構建好的切面數據的基礎上,構建云存儲引擎。
由于數據的存儲本身仍然需要依賴關系型數據庫和非關系型數據庫,但由于兩者結構差異大,數據交換時容易導致訪問出錯,因此在搭建云存儲引擎的過程中,使用步驟1 構建的數據訪問方式來分別訪問數據庫。以此減少由于數據庫的差異帶來的影響。
步驟41 關系型數據庫存儲引擎的構造過程包括如下步驟
a.將數據的刪除、更新及插入操作混合,這樣使得數據操作對數據的尺寸產生更少的存儲碎片;通過合并相鄰被刪除的存儲塊,以及若一個存儲塊被刪除,就擴展到下一存儲塊的方式可以提高存儲的效率。
b.設定每個表的最大索引數。設定每個索引最大的列數是64個。最大的鍵長度是IOM字節。對于鍵長度超過250字節的情況,使用一個超過IOM字節的的鍵塊。
c.如果數據表中間的表沒有合適大小的塊,則新增一張表來輔助存儲。
d.索引文件里設定一個標志,它表明表是否被正確關閉。
e.建立鎖機制。在訪問數據時加鎖,檢測死鎖的進程在系統中產生死鎖之后的很短時間內就檢測到死鎖的存在。一旦檢測到系統中產生了死鎖,就通過判斷申請數據的時間來選擇產生死鎖的兩個操作,讓先申請的操作先執行。若申請的時間相同,則使用超時機制釋放鎖,兩個操作都不執行。
步驟42 非關系型數據庫構造存儲引擎構造過程包括如下步驟
a.選擇可用的鍵值數據結構
Lists (列表),
Sets (集合),
Sorted Sets (有序集合),
Hashes (哈希表),
鍵值的數據類型決定了該鍵值支持的操作,如列表、集合或有序集合的交集、并集、查集等高級原子操作。
b.將數據鍵先存儲高字節,以允許一個更高地址的索引壓縮,當記錄以排好序的順序插入,索引樹被重構,以便高字節僅包含一個鍵。以改善鍵值數據結構的存儲效率。
c.將數據值先存儲低字節,再存儲高字節,以降低數據值和數據值所運行的數據庫環境的依賴性,運行數據庫的服務器使用補碼和浮點格式來表示數據值,數據行中的字節一般是未聯合的,從一個方向讀未聯合的字節,這樣可以使得服務器在獲取列值時有更高的效率。
d.主從同步非關系型數據庫的存儲介質會部署在異構的系統中,所以存儲在異構系統數據庫中的數據需要同步,以保證數據的一致性。
異構的系統通過網絡連接起來,在網絡中,每個異構系統就是一個存儲節點,存儲節點中的數據需要同步,需就要一個全局定時方式,使得網絡中的存儲節點在一定的時間內進行數據同步,同步方式可以有主存儲節點定時和從存儲節點定時兩種。主定時工作方式是以本節點時鐘源作為定時的工作方式。從定時工作方式是以某一參考基準時間為標準,對本節點時鐘源進行鎖定后再定時的工作方式。
完成上述步驟1到步驟4后,切面操作完成,使用SOAP協議將處理過后的切面數據轉化為XML格式,并根據請求的需要返回給應用接口層相應的數據。
下面結合一個實施例對本發明的技術方案做進一步的描述假設某大學需要組建一支籃球隊,需要從身高、體重、年齡、興趣、健康情況三個方面選擇適合的同學參加篩選。現在使用面向切面編程的云存儲引擎來處理篩選請求。
步驟1 構建數據訪問層。由于所有的同學不在同一個學院,每個學院的學生資料都存儲在不同的服務器上,且學院服務器上只存儲了身高、體重、年齡、興趣的資料,而健康情況存儲在校醫院的服務器上,且服務器上使用的數據庫是不同廠商的數據庫軟件,所以要針對這種異構數據存儲,需要對所有的不同數據庫建立一套訪問數據的機制。
步驟2 對數據進行切面。在建立好訪問各個學院的數據庫數據和校醫院數據庫的機制后,將所有學生的信息進行切面處理將不同數據庫中的基本數據從表中讀取,將身高、體重、年齡、興趣、健康情況等學生所有的屬性單獨抽取建表,并用學號關聯。身高、體重、年齡、興趣、健康情況表中的數據即為切面數據,切面數據就是目標對象。
步驟3 對數據操作進行切面。對可能的操作進行切面,雖然現在只有篩選一種功能,但是篩選后,可能還有記錄、通知、排序等數據操作等,所以對涉及到的操作進行切面, 篩選本身就是一個切面,而發出篩選等操作請求的程序就是接入點,接收篩選并判斷篩選是否有效的程序就是切點,切點在獲取到有效的篩選請求后,將請求分發到不同的處理程序中,這些處理程序就是通知,通知存有不同學院和醫院數據庫訪問的方式,通知會對篩選請求查詢切面數據,凡是符合條件的切面數據,就會返回。如果切面數據本身不包含請求數據,如請求年齡時,只有出生日期信息,那么改變出生日期,年齡就會相應的改變,則出生日期是一個代理對象。通知處理代理對象的過程就是織入。
步驟4:將所有需要的數據按照篩選條件獲取完后,將分散的切面數據重新組成關聯的獨立信息,呈現在篩選請求者的面前的,是組合完整的學生數據。
本領域的普通技術人員將會意識到,這里所述的實施例是為了幫助讀者理解本發明的原理,應被理解為本發明的保護范圍并不局限于這樣的特別陳述和實施例。本領域的普通技術人員可以根據本發明公開的這些技術啟示做出各種不脫離本發明實質的其它各種具體變形和組合,這些變形和組合仍然在本發明的保護范圍內。
權利要求
1.一種面向切面的云存儲引擎構造方法,包括如下步驟步驟1 設計人員根據所采用的數據庫類型構建數據訪問層;步驟2 設計人員對數據庫中的數據進行切面;步驟3 設計人員分析業務請求,對數據操作切面得到切面數據;步驟4 設計人員在步驟3中構建好的切面數據的基礎上,構建云存儲引擎。
2.根據權利要求1所述的一種面向切面的云存儲引擎構造方法,其特征在于,所述步驟1中構建數據訪問層的具體過程如下確定使用數據存儲方式為關系型數據庫或非關系型數據庫,分別對關系型數據庫和非關系型數據庫建立數據訪問層。
3.根據權利要求1所述的一種面向切面的云存儲引擎構造方法,其特征在于,所述步驟2中對關系型數據庫切面的過程包括如下步驟遍歷數據庫所有的原始數據表,對每張表進行編號,保證編號不重復;將上一步中的表編號單獨存儲在另一張表中;對原始數據表的數據,逐列(一列一屬性)提取,將提取的數據單獨存放在新的數據表中,再將新的數據表中的數據編號,所有從原始數據表逐列提取的數據,在所有的新的數據表中對應的編號一致,這個編號可以是原始數據表中的主鍵,也可以用其他方式生成,但要保證新的數據表中的所有數據編號不重復。
4.根據權利要求1所述的一種面向切面的云存儲引擎構造方法,其特征在于,所述步驟2中對非關系數據庫切面的過程包括如下步驟非關系數據庫中,數據是用鍵值對的形式存儲的,每一條數據都會有數據鍵和對應的數據值,所以在對非關系型數據庫切面的時候,只需要將數據的數據鍵存儲在一張表中,數據鍵對應的數據值存儲在另一張表中,得到兩個新的數據表。
5.根據權利要求1所述的一種面向切面的云存儲引擎構造方法,其特征在于,所述步驟3中對數據操作切面的具體過程包括如下步驟在數據庫系統中,設計人員首先提取數據操作的切面,這種數據操作對應具體的數據庫操作步驟,具體的數據庫操作步驟又需要具體的數據庫訪問方式,設計人員將具體的數據庫訪問方式封裝成一個程序,這個程序可以訪問關系型數據庫,也可訪問非關系型數據庫,這個程序作為通知;應用接口層會向服務器發出請求,發出請求的程序是接入點,請求從接入點發出后,切面操作截獲服務請求,捕獲接入點的程序作為切點,通過切點捕獲到的請求,將由切點判斷請求的有效性,如果為無效請求則攔截,如果是有效請求就將請求交給通知進行處理,通知針對具體的請求會轉向具體的數據庫對象;具體的數據庫對象已經通過第一步變為切面數據,這時,切面數據就是目標對象,如果目標對象本身是對數據的封裝,這些封裝只是包含了對真實數據的操作,則把包含了對真實數據操作的數據對象稱為代理對象,當切面操作要處理切面數據時,就會先處理代理對象,然后通過代理對象,實現對切面數據的操作。
6.根據權利要求1所述的一種面向切面的云存儲引擎構造方法,其特征在于,步驟4中關系型數據庫存儲引擎的構造過程包括如下步驟a.將數據的刪除、更新及插入操作混合,這樣使得數據操作對數據的尺寸產生更少的存儲碎片;通過合并相鄰被刪除的存儲塊,以及若一個存儲塊被刪除,就擴展到下一存儲塊的方式可以提高存儲的效率;b.設定每個表的最大索引數;c.如果數據表中間的表沒有合適大小的塊,則新增一張表來輔助存儲;d.索引文件里設定一個標志,它表明表是否被正確關閉;e.建立鎖機制。
7.根據權利要求1所述的一種面向切面的云存儲引擎構造方法,其特征在于,步驟4中非關系型數據庫構造存儲引擎的構造過程包括如下步驟a.選擇可用的鍵值數據結構 Lists (列表),Sets (集合),Sorted Sets (有序集合),Hashes (哈希表),鍵值的數據類型決定了該鍵值支持的操作,如列表、集合或有序集合的交集、并集、查集等高級原子操作;b.將數據鍵先存儲高字節,以允許一個更高地址的索引壓縮,當記錄以排好序的順序插入,索引樹被重構,以便高字節僅包含一個鍵,以改善鍵值數據結構的存儲效率;c.將數據值先存儲低字節,再存儲高字節,以降低數據值和數據值所運行的數據庫環境的依賴性,運行數據庫的服務器使用補碼和浮點格式來表示數據值,數據行中的字節一般是未聯合的,從一個方向讀未聯合的字節,這樣可以使得服務器在獲取列值時有更高的效率;d.主從同步非關系型數據庫的存儲介質會部署在異構的系統中,所以存儲在異構系統數據庫中的數據需要同步,以保證數據的一致性。
全文摘要
本發明涉及一種面向切面的云存儲引擎構造方法,包括步驟步驟1設計人員根據所采用的數據庫類型構建數據訪問層;步驟2設計人員對數據庫中的數據進行切面;步驟3設計人員分析業務請求,對數據操作切面得到切面數據;步驟4設計人員在步驟3中構建好的切面數據的基礎上,構建云存儲引擎。本發明的有益效果是本發明與傳統技術相比較,在現有的云存儲架構中,新加入數據訪問層的概念,該數據訪問層使用面向切面編程的思想將數據切面處理,大幅提高了數據檢索和數據管理的效率,簡化了關系型數據和非關系型數據處理過程中數據異構的復雜性問題。
文檔編號G06F17/30GK102495853SQ20111036719
公開日2012年6月13日 申請日期2011年11月17日 優先權日2011年11月17日
發明者唐雪飛, 汪海良, 石礫 申請人:成都康賽電子科大信息技術有限責任公司
網友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
主站蜘蛛池模板: 商洛市| 台北市| 黎平县| 浙江省| 体育| 宝鸡市| 报价| 三穗县| 依兰县| 江城| 高陵县| 邵阳市| 铁岭市| 固原市| 永泰县| 剑河县| 京山县| 苗栗县| 新津县| 太仆寺旗| 光泽县| 盐源县| 家居| 朔州市| 武宁县| 三台县| 河北省| 育儿| 隆回县| 于田县| 凌源市| 贺兰县| 登封市| 吕梁市| 牙克石市| 东源县| 彰化市| 竹山县| 洞口县| 平阳县| 秦安县|