存儲模型轉換方法和裝置的制造方法
【專利摘要】本發(fā)明實施例提供存儲模型轉換方法和裝置,應用于服務器,所述服務器包括原始數(shù)據(jù)庫和臨時數(shù)據(jù)庫,所述原始數(shù)據(jù)庫的存儲模型包括嵌套存儲模型,所述臨時數(shù)據(jù)庫的存儲模型包括二維表存儲模型。可以將非關系型數(shù)據(jù)庫中存儲的數(shù)據(jù)轉換成用戶可直接使用的關系型存儲模型下的數(shù)據(jù),還可以將用戶需要存儲的關系型數(shù)據(jù)庫存儲模型下的數(shù)據(jù)轉換成非關系型存儲模型下的數(shù)據(jù)存儲,在利用非關系型存儲優(yōu)勢的同時實現(xiàn)方便訪問和存儲。
【專利說明】
存儲模型轉換方法和裝置
技術領域
[0001]本發(fā)明涉及數(shù)據(jù)庫領域,具體而言,涉及一種存儲模型轉換方法和裝置。
【背景技術】
[0002]隨著云計算、社交網(wǎng)絡等互聯(lián)網(wǎng)技術的快速發(fā)展,網(wǎng)絡數(shù)據(jù)量正在以極快的速度增長,數(shù)據(jù)靈活多變,數(shù)據(jù)類型呈多樣化。為了分析和利用這些龐大的數(shù)據(jù)資源,必須依賴有效的數(shù)據(jù)管理技術。傳統(tǒng)的關系型數(shù)據(jù)庫技術在數(shù)據(jù)處理、系統(tǒng)擴展性等方面遇到了巨大的障礙,無法勝任大規(guī)模數(shù)據(jù)存儲的任務。與此同時,非關系型數(shù)據(jù)庫NoSQUNot OnlySQL)技術迅速發(fā)展,因其具有非關系型、分布式、開源及水平擴展等特性,是有效解決大數(shù)據(jù)存儲和分析的有效途徑。
[0003]大數(shù)據(jù)的出現(xiàn)給信息技術領域帶來了新的挑戰(zhàn),非關系型數(shù)據(jù)庫相比傳統(tǒng)的關系型數(shù)據(jù)庫更適合大數(shù)據(jù)量的信息的存儲。但是不同的非關系型數(shù)據(jù)的數(shù)據(jù)存儲模型不同,數(shù)據(jù)訪問方式不一致,構建多元異構的大數(shù)據(jù)存儲系統(tǒng)變得十分復雜。因此,如何解決非關系型數(shù)據(jù)庫存儲模型到關系數(shù)據(jù)庫存儲模型的轉換問題是目前面臨的一大課題。
【發(fā)明內(nèi)容】
[0004]有鑒于此,本發(fā)明實施例的目的在于提供一種存儲模型轉換方法和裝置。
[0005]本發(fā)明實施例提供的一種非關系型數(shù)據(jù)庫存儲模型到關系型數(shù)據(jù)庫存儲模型的轉換方法,應用于服務器,所述服務器包括原始數(shù)據(jù)庫和臨時數(shù)據(jù)庫,所述原始數(shù)據(jù)庫包含嵌套存儲模型的非關系型數(shù)據(jù)庫,所述臨時數(shù)據(jù)庫包含二維表存儲模型的關系型數(shù)據(jù)庫,所述方法包括:在所述原始數(shù)據(jù)庫中查找待轉換數(shù)據(jù),所述待轉換數(shù)據(jù)為需要進行存儲模型由嵌套存儲模型到二維表存儲模型轉換的數(shù)據(jù);將所述待轉換數(shù)據(jù)劃分成多個行片段,所述行片段為包括至少一個行鍵的數(shù)據(jù)片段;獲取每個所述行片段的原始參數(shù),所述原始參數(shù)包括行鍵、列組、列標識符和數(shù)值;將每個行片段的所述行鍵存儲在所述臨時數(shù)據(jù)庫的行存儲空間,將每個所述行片段的所述列組和所述列標識符存儲在所述臨時數(shù)據(jù)庫的列存儲空間,將每個所述行片段的所述數(shù)值存儲在所述臨時數(shù)據(jù)庫的數(shù)值存儲空間。
[0006]優(yōu)選地,所述臨時數(shù)據(jù)庫的所述行存儲空間包括行存儲表,所述列存儲空間包括列存儲表,所述數(shù)值存儲空間包括數(shù)值存儲表,所述將每個行片段的所述行鍵存儲在所述臨時數(shù)據(jù)庫的行存儲空間,將每個所述行片段的所述列組和所述列標識符存儲在所述臨時數(shù)據(jù)庫的列存儲空間,將每個所述行片段的所述數(shù)值存儲在所述臨時數(shù)據(jù)庫的數(shù)值存儲空間,具體包括:將每個行片段的所述列組和所述行鍵的外鍵插入所述臨時數(shù)據(jù)庫的所述行存儲表;將每個行片段的所述列標識符和所述列組的外鍵插入所述臨時數(shù)據(jù)庫的所述列存儲表;將每個行片段的所述數(shù)值和所述列標識符的外鍵插入所述臨時數(shù)據(jù)庫的所述數(shù)值存儲表。
[0007]優(yōu)選地,所述的將每個所述行片段的所述行鍵、列組、列標識符和數(shù)值存儲在臨時數(shù)據(jù)庫之前,所述方法還包括:在所述臨時數(shù)據(jù)庫中檢驗需要插入的所述列組和所述列標識符是否存在,若不存在,則執(zhí)行插入操作。
[0008]優(yōu)選地,所述服務器并行獲取多個所述行片段的所述原始參數(shù),所述服務器并行將多個行片段的所述行鍵存儲在所述臨時數(shù)據(jù)庫的行存儲空間,并行將多個所述行片段的所述列組和所述列標識符存儲在所述臨時數(shù)據(jù)庫的所述列存儲空間,并行將多個所述行片段的所述數(shù)值存儲在所述臨時數(shù)據(jù)庫的所述數(shù)值存儲空間。
[0009]本發(fā)明實施例提供的一種關系型數(shù)據(jù)庫存儲模型到非關系型數(shù)據(jù)庫存儲模型的轉換方法,應用于服務器,所述服務器包括原始數(shù)據(jù)庫和臨時數(shù)據(jù)庫,所述原始數(shù)據(jù)庫包含嵌套存儲模型的非關系型數(shù)據(jù)庫,所述臨時數(shù)據(jù)庫包含二維表存儲模型的關系型數(shù)據(jù)庫,所述方法包括:接收本地終端發(fā)送的待轉換數(shù)據(jù),所述待轉換數(shù)據(jù)為需要進行存儲模型由二維表存儲模型到嵌套存儲模型轉換的數(shù)據(jù);將所述待轉換數(shù)據(jù)劃分成多個數(shù)據(jù)段,所述數(shù)據(jù)段包括至少一套完整的存儲結構,所述存儲結構的臨時屬性包括行存儲表、列存儲表和數(shù)值存儲表;獲取每個所述數(shù)據(jù)段的所述臨時屬性;將每個所述數(shù)據(jù)段的所述行存儲表存儲為所述原始數(shù)據(jù)庫的行鍵,將每個所述數(shù)據(jù)段的所述列存儲表存儲為所述原始數(shù)據(jù)庫的列組和列標識符,將每個所述數(shù)據(jù)段的所述數(shù)值存儲表存儲為所述原始數(shù)據(jù)庫的實體值。
[0010]優(yōu)選地,所述服務器并行獲取多個數(shù)據(jù)段的所述臨時屬性,并行將多個所述數(shù)據(jù)段的所述行存儲表存儲為所述原始數(shù)據(jù)庫的列組和列標識符,并行將多個所述數(shù)據(jù)段的所述數(shù)值存儲表存儲為所述原始數(shù)據(jù)庫的實體值。
[0011]本發(fā)明實施例提供的一種應用于服務器,所述服務器包括原始數(shù)據(jù)庫和臨時數(shù)據(jù)庫,所述原始數(shù)據(jù)庫包含嵌套存儲模型的非關系型數(shù)據(jù)庫,所述臨時數(shù)據(jù)庫包含二維表存儲模型的關系型數(shù)據(jù)庫,所述裝置包括:待轉換數(shù)據(jù)查找單元,用于在所述原始數(shù)據(jù)庫中查找待轉換數(shù)據(jù),所述待轉換數(shù)據(jù)為需要進行存儲模型由嵌套存儲模型到二維表存儲模型轉換的數(shù)據(jù);行片段劃分單元,用于將所述待轉換數(shù)據(jù)劃分成多個行片段,所述行片段為包括至少一個行鍵的數(shù)據(jù)片段;行片段處理單元,用于獲取每個所述行片段的原始參數(shù),所述原始參數(shù)包括行鍵、列組、列標識符和數(shù)值;存儲單元,用于將每個行片段的所述行鍵存儲在所述臨時數(shù)據(jù)庫的行存儲空間,將每個所述行片段的所述列組和所述列標識符存儲在所述臨時數(shù)據(jù)庫的列存儲空間,將每個所述行片段的所述數(shù)值存儲在所述臨時數(shù)據(jù)庫的數(shù)值存儲空間。
[0012]優(yōu)選地,所述臨時數(shù)據(jù)庫的所述行存儲空間包括行存儲表,所述列存儲空間包括列存儲表,所述數(shù)值存儲空間包括數(shù)值存儲表,所述存儲單元具體包括:列組插入子單元,用于將每個行片段的所述列組和所述行鍵的外鍵插入所述臨時數(shù)據(jù)庫的所述行存儲表;列標識符插入子單元,用于將每個行片段的所述列標識符和所述列組的外鍵插入所述臨時數(shù)據(jù)庫的所述列存儲表;數(shù)值插入子單元,用于將每個行片段的所述數(shù)值和所述列標識符的外鍵插入所述臨時數(shù)據(jù)庫的所述數(shù)值存儲表。
[0013]優(yōu)選地,所述裝置還包括:驗證單元,在所述臨時數(shù)據(jù)庫中檢驗需要插入的所述列組和所述列標識符是否存在,若不存在,則執(zhí)行插入操作。
[0014]本發(fā)明實施例提供的一種關系型數(shù)據(jù)庫存儲模型到非關系型數(shù)據(jù)庫存儲模型的轉換裝置,應用于服務器,所述服務器包括原始數(shù)據(jù)庫和臨時數(shù)據(jù)庫,所述原始數(shù)據(jù)庫包含嵌套存儲模型的非關系型數(shù)據(jù)庫,所述臨時數(shù)據(jù)庫包含二維表存儲模型的關系型數(shù)據(jù)庫,所述裝置包括:待轉換數(shù)據(jù)接收單元,用于接收本地終端發(fā)送的待轉換數(shù)據(jù),所述待轉換數(shù)據(jù)為需要進行存儲模型由二維表存儲模型到嵌套存儲模型轉換的數(shù)據(jù);數(shù)據(jù)段劃分單元,用于將所述待轉換數(shù)據(jù)劃分成多個數(shù)據(jù)段,所述數(shù)據(jù)段包括至少一套完整的存儲結構,所述存儲結構的臨時屬性包括行存儲表、列存儲表和數(shù)值存儲表;臨時屬性獲取單元,用于獲取每個所述數(shù)據(jù)段的所述臨時屬性;存儲單元,用于將每個所述數(shù)據(jù)段的所述行存儲表存儲為所述原始數(shù)據(jù)庫的行鍵,將每個所述數(shù)據(jù)段的所述列存儲表存儲為所述原始數(shù)據(jù)庫的列組和列標識符,將每個所述數(shù)據(jù)段的所述數(shù)值存儲表存儲為所述原始數(shù)據(jù)庫的實體值。
[0015]與現(xiàn)有技術相比,本發(fā)明的存儲模型轉換方法和裝置,應用于服務器,所述服務器包括原始數(shù)據(jù)庫和臨時數(shù)據(jù)庫,所述原始數(shù)據(jù)庫的存儲模型包括嵌套存儲模型,所述臨時數(shù)據(jù)庫的存儲模型包括二維表存儲模型。將欲轉換數(shù)據(jù)劃分成多個行片段,獲取每個所述行片段的行鍵、列組、列標識符和數(shù)值等,將每個所述行片段的所述行鍵、列組、列標識符和數(shù)值等按照關系型存儲模型存儲到二維表存儲模型下的臨時數(shù)據(jù)庫中,即可實現(xiàn)非關系型數(shù)據(jù)庫的存儲模型到關系型數(shù)據(jù)庫存儲模型的轉換。
[0016]相應地,將欲實現(xiàn)關系型存儲模型到非關系型存儲模型轉換的待轉換數(shù)據(jù)劃分成多個數(shù)據(jù)段,獲取每個所述數(shù)據(jù)段的行鍵、列組、列標識符和數(shù)值,將每個所述數(shù)據(jù)段的所述行鍵、列組、列標識符和數(shù)值按照非關系型數(shù)據(jù)庫存儲模型存儲在原始數(shù)據(jù)庫,即可實現(xiàn)了關系型數(shù)據(jù)庫到非關系型數(shù)據(jù)庫的轉換。本發(fā)明實施例提供的存儲模型轉換方法和裝置,可以將非關系型數(shù)據(jù)庫中存儲的數(shù)據(jù)轉換成用戶可直接使用的關系型存儲模型下的數(shù)據(jù),還可以將用戶需要存儲的關系型數(shù)據(jù)庫存儲模型下的數(shù)據(jù)轉換成非關系型存儲模型下的數(shù)據(jù)存儲,在利用非關系型存儲優(yōu)勢的同時實現(xiàn)方便訪問和存儲。
[0017]為使本發(fā)明的上述目的、特征和優(yōu)點能更明顯易懂,下文特舉較佳實施例,并配合所附附圖,作詳細說明如下。
【附圖說明】
[0018]為了更清楚地說明本發(fā)明實施例的技術方案,下面將對實施例中所需要使用的附圖作簡單地介紹,應當理解,以下附圖僅示出了本發(fā)明的某些實施例,因此不應被看作是對范圍的限定,對于本領域普通技術人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根據(jù)這些附圖獲得其他相關的附圖。
[0019]圖1為本發(fā)明較佳實施例提供的服務器與本地終端進行交互的示意圖。
[0020]圖2為本發(fā)明較佳實施例提供的服務器的方框示意圖。
[0021]圖3本發(fā)明較佳實施例提供的非關系型數(shù)據(jù)庫存儲模型到關系型數(shù)據(jù)庫存儲模型的轉換方法的流程圖。
[0022]圖4是本發(fā)明較佳實施例提供的非關系型數(shù)據(jù)庫存儲模型到關系型數(shù)據(jù)庫存儲模型的轉換方法的示意圖。
[0023]圖5是本發(fā)明較佳實施例提供的非關系型數(shù)據(jù)庫存儲模型到關系型數(shù)據(jù)庫存儲模型的轉換方法的流程圖。
[0024]圖6本發(fā)明較佳實施例提供的關系型數(shù)據(jù)庫存儲模型到非關系型數(shù)據(jù)庫存儲模型的轉換方法的流程圖。
[0025]圖7本發(fā)明較佳實施例提供的關系型數(shù)據(jù)庫存儲模型到非關系型數(shù)據(jù)庫存儲模型的轉換方法的示意圖。
[0026]圖8為本發(fā)明較佳實施例提供的非關系型數(shù)據(jù)庫存儲模型到關系型數(shù)據(jù)庫存儲模型的轉換裝置的模塊示意圖。
[0027]圖9為本發(fā)明較佳實施例提供的非關系型數(shù)據(jù)庫存儲模型到關系型數(shù)據(jù)庫存儲模型的轉換裝置的存儲單元的模塊示意圖。
[0028]圖10為發(fā)明較佳實施例提供的關系型數(shù)據(jù)庫存儲模型到非關系型數(shù)據(jù)庫存儲模型的轉換裝置的模塊示意圖。
【具體實施方式】
[0029]下面將結合本發(fā)明實施例中附圖,對本發(fā)明實施例中的技術方案進行清楚、完整地描述,顯然,所描述的實施例僅僅是本發(fā)明一部分實施例,而不是全部的實施例。通常在此處附圖中描述和示出的本發(fā)明實施例的組件可以以各種不同的配置來布置和設計。因此,以下對在附圖中提供的本發(fā)明的實施例的詳細描述并非旨在限制要求保護的本發(fā)明的范圍,而是僅僅表示本發(fā)明的選定實施例?;诒景l(fā)明的實施例,本領域技術人員在沒有做出創(chuàng)造性勞動的前提下所獲得的所有其他實施例,都屬于本發(fā)明保護的范圍。
[0030]實施例1
[0031]如圖1所示,是本發(fā)明較佳實施例提供的服務器101與本地終端102進行交互的示意圖。所述本地終端102可以是個人電腦(personal computer,PC)、平板電腦、智能手機、個人數(shù)字助理(personal digital assistant,PDA)等。
[0032]所述服務器101通過網(wǎng)絡與一個或多個本地終端102進行通信連接,以進行數(shù)據(jù)通信或交互。所述服務器101可以是網(wǎng)絡服務器101、數(shù)據(jù)庫服務器101等。本實施例所提供的服務器101可以優(yōu)選為多個數(shù)據(jù)庫服務器101集成系統(tǒng),所述服務器101可以包括外設接口和內(nèi)設數(shù)據(jù)庫,所述外設接口可以為統(tǒng)一訪問接口,所述內(nèi)設數(shù)據(jù)庫可以包括臨時數(shù)據(jù)庫和原始數(shù)據(jù)庫,所述統(tǒng)一訪問接口用于接收本地終端102發(fā)送的數(shù)據(jù)請求,并將接收的數(shù)據(jù)請求發(fā)送至所述數(shù)據(jù)庫,并將所述數(shù)據(jù)庫反饋的數(shù)據(jù)和信息顯示反饋至本地終端102。
[0033]所述服務器101包括臨時數(shù)據(jù)庫和原始數(shù)據(jù)庫,所述原始數(shù)據(jù)庫包含多種非關系型數(shù)據(jù)庫,多個所述非關系型數(shù)據(jù)庫的種類可以包括多種,其數(shù)據(jù)模型(如鍵/值、列存儲、文檔性、圖型等)多樣且靈活,多種數(shù)據(jù)庫的訪問方式多為數(shù)據(jù)庫本身提供的API或命令行,在數(shù)據(jù)模型和訪問方式上標準不統(tǒng)一,根據(jù)其存儲模型特征可以將所述非關系型數(shù)據(jù)庫中存儲的數(shù)據(jù)的存儲模型定義為嵌套存儲模型,嵌套存儲模型下的數(shù)據(jù)一般不能直接提供給用戶使用。
[0034]所述臨時數(shù)據(jù)庫可以優(yōu)選為關系型數(shù)據(jù)庫,臨時數(shù)據(jù)庫存儲有與所述原始數(shù)據(jù)庫中存儲有資源表述,所述資源表述與原始數(shù)據(jù)庫中存儲的數(shù)據(jù)存在映射關系,所述資源表述可以包括資源內(nèi)容和資源地址,所述資源內(nèi)容可以為資源地址所指向的原始數(shù)據(jù)庫中的非關系型數(shù)據(jù)庫的存儲空間存儲的原始數(shù)據(jù)的提示信息等。所述臨時數(shù)據(jù)庫優(yōu)選為關系型數(shù)據(jù)庫,其存儲模型可以為二維表存儲模型,二維表存儲模型下的數(shù)據(jù)可以直接提供給用戶使用。
[0035]因此本發(fā)明實施例提供的存儲模型轉換方法和裝置,用于實現(xiàn)非關系型數(shù)據(jù)庫存儲模型和關系型數(shù)據(jù)庫存儲模型之間的相互轉換,既能將非關系型數(shù)據(jù)庫存儲模型下的數(shù)據(jù)轉換成關系型數(shù)據(jù)庫存儲模型下的數(shù)據(jù)提供給用戶直接使用,也能將用戶提供的關系型數(shù)據(jù)庫存儲模型下的數(shù)據(jù)轉換為非關系型存儲模型下的數(shù)據(jù)存儲在非關系型數(shù)據(jù)中。
[0036]如圖2所示,是所述服務器200的方框示意圖。所述服務器200包括存儲模型轉換裝置201、存儲器202、存儲控制器203、處理器204、外設接口 205、輸入輸出單元206、顯示單元207。
[0037]所述存儲器202、存儲控制器203、處理器204、外設接口 205、輸入輸出單元206、顯示單元207各元件相互之間直接或間接地電性連接,以實現(xiàn)數(shù)據(jù)的傳輸或交互。例如,這些元件相互之間可通過一條或多條通訊總線或信號線實現(xiàn)電性連接。所述存儲模型轉換裝置201包括至少一個可以軟件或固件(firmware)的形式存儲于所述存儲器202中或固化在所述服務器200的操作系統(tǒng)(operating system,OS)中的軟件功能模塊。所述處理器204用于執(zhí)行存儲器202中存儲的可執(zhí)行模塊,例如所述存儲模型轉換裝置201包括的軟件功能模塊或計算機程序。
[0038]其中,存儲器202可以是,但不限于,隨機存取存儲器202(Random Access Memory,RAM),只讀存儲器202(Read Only Memory ,ROM),可編程只讀存儲器202 (ProgrammableRead-Only Memory,PR0M),可擦除只讀存儲器202(Erasable Programmable Read-OnlyMemory,EPR0M),電可擦除只讀存儲器202(Electric Erasable Programmable Read-OnlyMemory,EEPR0M)等。其中,存儲器202用于存儲程序,所述處理器204在接收到執(zhí)行指令后,執(zhí)行所述程序,前述本發(fā)明實施例任一實施例揭示的流過程定義的服務器200所執(zhí)行的方法可以應用于處理器204中,或者由處理器204實現(xiàn)。
[0039]處理器204可能是一種集成電路芯片,具有信號的處理能力。上述的處理器204可以是通用處理器204,包括中央處理器204(Central Processing Unit,簡稱CPU)、網(wǎng)絡處理器204(Network Processor,簡稱NP)等;還可以是數(shù)字信號處理器204(DSP)、專用集成電路(ASIC)、現(xiàn)成可編程門陣列(FPGA)或者其他可編程邏輯器件、分立門或者晶體管邏輯器件、分立硬件組件??梢詫崿F(xiàn)或者執(zhí)行本發(fā)明實施例中的公開的各方法、步驟及邏輯框圖。通用處理器204可以是微處理器204或者該處理器204也可以是任何常規(guī)的處理器204等。
[0040]所述外設接口 205將各種輸入/輸入裝置耦合至處理器204以及存儲器202。在一些實施例中,外設接口 205,處理器204以及存儲控制器203可以在單個芯片中實現(xiàn)。在其他一些實例中,他們可以分別由獨立的芯片實現(xiàn)。
[0041]輸入輸出單元206用于提供給用戶輸入數(shù)據(jù)實現(xiàn)用戶與所述服務器200(或本地終端)的交互。所述輸入輸出單元206可以是,但不限于,鼠標和鍵盤等。
[0042]顯示單元207在所述服務器200(或本地終端)與用戶之間提供一個交互界面(例如用戶操作界面)或用于顯示圖像數(shù)據(jù)給用戶參考。在本實施例中,所述顯示單元207可以是液晶顯示器或觸控顯示器。若為觸控顯示器,其可為支持單點和多點觸控操作的電容式觸控屏或電阻式觸控屏等。支持單點和多點觸控操作是指觸控顯示器能感應到來自該觸控顯示器上一個或多個位置處同時產(chǎn)生的觸控操作,并將該感應到的觸控操作交由處理器204進行計算和處理。
[0043]請參閱圖3和圖4,圖3是本發(fā)明較佳實施例提供的應用于圖2所示的存儲模型轉換裝置的非關系型數(shù)據(jù)庫存儲模型到關系型數(shù)據(jù)庫存儲模型的轉換方法的流程圖,圖4是本發(fā)明較佳實施例提供的存儲模型轉換方法的示意圖。所述方法應用于上述服務器,所述服務器包括原始數(shù)據(jù)庫和臨時數(shù)據(jù)庫,所述原始數(shù)據(jù)庫包含嵌套存儲模型的非關系型數(shù)據(jù)庫,所述臨時數(shù)據(jù)庫包含二維表存儲模型的關系型數(shù)據(jù)庫。下面將對圖3所示的具體流程進行詳細闡述。
[0044]步驟S301,在原始數(shù)據(jù)庫中查找待轉換數(shù)據(jù),所述待轉換數(shù)據(jù)為需要進行存儲模型由嵌套存儲模型到二維表存儲模型轉換的數(shù)據(jù)。
[0045]本實施例所提供的存儲模型轉換方法應用于服務器,所述服務器連接有本地終端,所述本地終端設置有統(tǒng)一訪問接口,用于接收用戶輸入的數(shù)據(jù)獲取請求。所述數(shù)據(jù)獲取請求可以包括欲獲取數(shù)據(jù)的目錄信息,所述欲獲取數(shù)據(jù)可以為單個的數(shù)據(jù),或者是一定存儲單元的數(shù)據(jù)集合等。本地終端在接收到用戶輸入的數(shù)據(jù)請求后,將所述數(shù)據(jù)請求發(fā)送至所述服務器。
[0046]所述服務器的所述臨時數(shù)據(jù)庫中預設有與原始數(shù)據(jù)庫中存儲的每個所述原始數(shù)據(jù)對應的資源表述,所述資源表述可以包括資源內(nèi)容和資源地址。所述資源內(nèi)容包括原始數(shù)據(jù)的提示信息,可以為數(shù)據(jù)目錄或者數(shù)據(jù)存儲行列的主鍵等,也可以包括數(shù)據(jù)的表達格式,如XML、JS0N等。所述資源地址為該資源內(nèi)容所指向的數(shù)據(jù)在原始數(shù)據(jù)庫中的原始數(shù)據(jù)的存儲地址,可以使用統(tǒng)一資源標識符(Uniform Resource Identifier,或URI))來命名和描述資源的地址。
[0047]所述服務器在接收到本地終端發(fā)送的數(shù)據(jù)請求后,在臨時數(shù)據(jù)庫存儲的資源表述庫中,查找與所述數(shù)據(jù)獲取請求對應的資源表述。所述服務器根據(jù)所述資源地址查找該資源地址所指向的存儲區(qū)域,在查找的所述存儲區(qū)域內(nèi)查找所述資源內(nèi)容所指向的數(shù)據(jù),所述欲獲取數(shù)據(jù)的存儲模型為嵌套存儲模型,需要將該數(shù)據(jù)的存儲模型轉換為二維表存儲模型,所述欲獲取數(shù)據(jù)即為欲轉換數(shù)據(jù),所述待轉換數(shù)據(jù)的存儲模型需要由嵌套存儲模型轉換為二維表存儲模型
[0048]步驟S302,將所述待轉換數(shù)據(jù)劃分成多個行片段,所述行片段為包括至少一個行鍵的數(shù)據(jù)片段。
[0049]所述服務器在原始數(shù)據(jù)庫中查找到欲轉換數(shù)據(jù)后,通過處理器對于所述欲轉換數(shù)據(jù)執(zhí)行存儲模型轉換操作,所述轉換操作可以優(yōu)選使用Map Reduce執(zhí)行。
[0050]Map Reduce是一種編程模型,一般用于大規(guī)模數(shù)據(jù)集(大于1TB)的并行運算。概念"Map(映射)〃和"Reduce(歸約)〃,當前的軟件實現(xiàn)是指定一個Map(映射)函數(shù),用來把一組鍵值對映射成一組新的鍵值對,指定并發(fā)的Reduce(歸約)函數(shù),用來保證所有映射的鍵值對中的每一個共享相同的鍵組。Map Reduce通過把對數(shù)據(jù)集的大規(guī)模操作分發(fā)給網(wǎng)絡上的每個節(jié)點實現(xiàn)可靠性;每個節(jié)點會周期性的返回它所完成的工作和最新的狀態(tài)。如果一個節(jié)點保持沉默超過一個預設的時間間隔,主節(jié)點(類同Google File System中的主服務器)記錄下這個節(jié)點狀態(tài)為死亡,并把分配給這個節(jié)點的數(shù)據(jù)發(fā)到別的節(jié)點。每個操作使用命名文件的原子操作以確保不會發(fā)生并行線程間的沖突;當文件被改名的時候,系統(tǒng)可能會把他們復制到任務名以外的另一個名字上去。user program的副本中有一個稱為master,其余稱為worker ,master是負責調(diào)度的,為空閑worker分配作業(yè)(Map作業(yè)或者Reduce作業(yè),本實施例主要涉及Map過程,主要為Map作業(yè)),worker的數(shù)量也是可以由用戶指定的。
[0051]本實施例的所述服務器在獲取所述欲轉換數(shù)據(jù)時,先通過MapReduce庫把欲轉換數(shù)據(jù)劃分為M份(Μ可以為用戶定義,可以根據(jù)文件的大小進行自定義設置),每一份通常有16ΜΒ到64ΜΒ,然后使用fork將用戶進程拷貝到集群內(nèi)其它機器上。每份任務包含一個行片段,由于行鍵為非關系型數(shù)據(jù)庫的基本存儲單元,因此每個所述行片段包括至少一個行鍵。
[0052]步驟S303,獲取每個所述行片段的原始參數(shù),所述原始參數(shù)包括行鍵、列組、列標識符和數(shù)值。
[0053]所述服務器的處理器在將所述欲轉換數(shù)據(jù)劃分成行片段之后,被分配了Map作業(yè)的worker,開始讀取對應分片的輸入數(shù)據(jù),Map作業(yè)數(shù)量是由M決定的,和split--對應;
Map作業(yè)從輸入數(shù)據(jù)中抽取出鍵值對,每一個鍵值對都作為參數(shù)傳遞給map函數(shù),map函數(shù)產(chǎn)生的中間鍵值對被緩存在內(nèi)存中jap作業(yè)從輸入數(shù)據(jù)中抽取出鍵值對時,將每一個鍵值對作為參數(shù)傳遞給Map函數(shù),Map對于其所接收的行片段進行處理,獲取該行片段的原始參數(shù),所述的原始參數(shù)可以包括行鍵、列組、列標識符和數(shù)值,每個Map獲取到其中的行片段的行鍵、列組、列標識符和數(shù)值。
[0054]步驟S304,將每個行片段的所述行鍵存儲在所述臨時數(shù)據(jù)庫的行存儲空間,將每個所述行片段的所述列組和所述列標識符存儲在所述臨時數(shù)據(jù)庫的列存儲空間,將每個所述行片段的所述數(shù)值存儲在所述臨時數(shù)據(jù)庫的數(shù)值存儲空間。
[0055]Map函數(shù)在對于所述行片段進行處理時,獲取每個所述行片段的所述行鍵、列組、列標識符和數(shù)值,根據(jù)預設的映射規(guī)則,將所獲取的所述行鍵、列組、列標識符和數(shù)值存儲在臨時數(shù)據(jù)庫中相應的數(shù)據(jù)存儲空間。映射存儲規(guī)則具體包括:將每個行片段的所述行鍵存儲在所述臨時數(shù)據(jù)庫的行存儲空間,將每個所述行片段的所述列組和所述列標識符存儲在所述臨時數(shù)據(jù)庫的列存儲空間,將每個所述行片段的所述數(shù)值存儲在所述臨時數(shù)據(jù)庫的數(shù)值存儲空間。所述行存儲空間、列存儲空間和數(shù)值存儲空間為設置在臨時數(shù)據(jù)庫中用于存儲轉換后數(shù)據(jù)的二維表,所述行存儲空間可以為獨立的行存儲表,所述列存儲空間可以為獨立的列存儲表,所述數(shù)值存儲表可以為獨立的數(shù)值存儲表,當然,也可以設置多個獨立存儲表格,每個存儲表格包括行存儲空間、列存儲空間和數(shù)值存儲空間,每個存儲表格可以用于存放一個完整的行片段的臨時屬性,例如行、列、單元格等。
[0056]上述的存儲模型轉換過程,所述服務器需要將欲轉換數(shù)據(jù)劃分成多個行片段,獲取其中的每個所述行片段的行鍵、列組、列標識符和數(shù)值,所述的獲取過程可以為并行獲取過程,即是并行獲取多個行片段的原始參數(shù),包括行鍵、列組、列標識符和數(shù)值等,所述的將每個行片段的所述行鍵存儲在所述臨時數(shù)據(jù)庫的行存儲空間,將每個所述行片段的所述列組和所述列標識符存儲在所述臨時數(shù)據(jù)庫的列存儲空間,將每個所述行片段的所述數(shù)值存儲在所述臨時數(shù)據(jù)庫的數(shù)值存儲空間。的過程也可以為并行存儲過程。對于多個行片段的相同的處理過程采用并行處理的方式,可以極大程度地節(jié)省處理時間、提高處理進度和準確率。
[0057]上述本發(fā)明實施例提供的非關系型數(shù)據(jù)庫存儲模型到關系型數(shù)據(jù)庫存儲模型的轉換方法,應用于服務器,服務器包括非關系型數(shù)據(jù)庫嵌套存儲模型的原始數(shù)據(jù)庫和關系型數(shù)據(jù)庫二維表存儲模型的臨時數(shù)據(jù)庫,使用Map函數(shù)將所查找的嵌套存儲模型的欲轉換數(shù)據(jù)劃分成多個行片段,獲取每個所述行片段的行鍵、列組、列標識符和數(shù)值,將每個所述行片段的所述行鍵、列組、列標識符和數(shù)值存儲在二維表存儲模型下的臨時數(shù)據(jù)庫中,即可實現(xiàn)了非關系型數(shù)據(jù)庫存儲模型到關系型數(shù)據(jù)庫存儲模型的轉換,可以將用戶需求的數(shù)據(jù)從非關系型數(shù)據(jù)庫查找到之后自動轉換存儲模型,方便用戶可以直接利用。
[0058]上述本發(fā)明實施例提供的存儲模型轉換方法中,所述臨時數(shù)據(jù)庫的所述行存儲空間包括行存儲表,所述列存儲空間包括列存儲表,所述數(shù)值存儲空間包括數(shù)值存儲表,上述步驟S304:將每個行片段的所述行鍵存儲在所述臨時數(shù)據(jù)庫的行存儲空間,將每個所述行片段的所述列組和所述列標識符存儲在所述臨時數(shù)據(jù)庫的列存儲空間,將每個所述行片段的所述數(shù)值存儲在所述臨時數(shù)據(jù)庫的數(shù)值存儲空間,可以具體包括如圖5所述的步驟:
[0059]S501,將所述列組和所述行鍵的外鍵插入所述臨時數(shù)據(jù)庫的所述行存儲表;
[0060]S502,將所述列標識符和所述列組的外鍵插入所述臨時數(shù)據(jù)庫的所述列存儲表;
[0061]S503,將所述數(shù)值和所述列標識符的外鍵插入所述臨時數(shù)據(jù)庫的所述數(shù)值存儲表。
[0062]所述服務器采用對應存儲的方式將非關系型存儲模型的相關數(shù)據(jù)存儲在臨時數(shù)據(jù)庫中,優(yōu)選在臨時數(shù)據(jù)庫中設置行存儲表、列存儲表和數(shù)值存儲表。獲取每個行片段的所述行鍵、列組、列標識符和數(shù)值之后,將所述列組和所述行鍵的外鍵插入所述臨時數(shù)據(jù)庫的所述行存儲表中,將所述列標識符和所述列組的外鍵插入所述臨時數(shù)據(jù)庫的所述列存儲表中,將所述數(shù)值和所述列標識符的外鍵插入所述臨時數(shù)據(jù)庫的所述數(shù)值存儲表中??梢栽谒鲂写鎯Ρ碇胁檎宜行衅蔚男墟I的外鍵和所述行片段的列組,通過所述行片段的列組與所述列組的外鍵的對應關系查找到所對應的列存儲表,在所述列存儲表中獲取所述列標識符,根據(jù)所述列標識符和該列標識符的外鍵的對應關系查找到所述數(shù)值存儲表,在所查找的所述數(shù)值存儲表中查找到所需要的數(shù)值。
[0063]為了保證行鍵、列組、列標識符和數(shù)值唯一存在,所述的將每個所述行片段的所述行鍵、列組、列標識符和數(shù)值存儲在臨時數(shù)據(jù)庫之前,所述方法還包括:
[0064]在臨時數(shù)據(jù)庫中檢驗需要插入的所述列組和所述列標識符是否為未存在狀態(tài),若是,則執(zhí)行存儲操作。
[0065]上述本發(fā)明實施例提供的非關系型數(shù)據(jù)庫存儲模型到關系型存儲模型轉換方法,應用于服務器,服務器包括非關系型數(shù)據(jù)庫嵌套存儲模型的原始數(shù)據(jù)庫和關系型數(shù)據(jù)庫二維表存儲模型的臨時數(shù)據(jù)庫,使用Map函數(shù)將所查找的嵌套存儲模型的欲轉換數(shù)據(jù)劃分成多個行片段,獲取每個所述行片段的行鍵、列組、列標識符和數(shù)值,將每個所述行片段的所述行鍵、列組、列標識符和數(shù)值存儲在二維表存儲模型下的臨時數(shù)據(jù)庫中,即可實現(xiàn)了非關系型數(shù)據(jù)庫存儲模型到關系型數(shù)據(jù)庫存儲模型的轉換。所述的行片段劃分、行鍵、列組、列標識符和數(shù)值等的獲取過程和轉換存儲過程均可以通過Map并行處理,以提高轉換效率和準確率,將每個行片段的行鍵、列組、列標識符和數(shù)值插入所述臨時數(shù)據(jù)庫時,利用相應數(shù)據(jù)與其外鍵的對應關系分表格存儲在相應的數(shù)據(jù)表中,以實現(xiàn)簡單查詢。在列組和列標識符插入之前檢驗所述列組和列標識符是否存在,以保證每個存儲空間所對應的數(shù)值唯一存在,進一步提高轉換存儲的準確率。本實施例提供的存儲模型轉換方法可以將用戶需求的數(shù)據(jù)從非關系型數(shù)據(jù)庫查找到之后自動轉換存儲模型,方便用戶可以直接利用。
[0066]實施例2
[0067]參見圖6和圖7,圖6是本發(fā)明較佳實施例提供的應用于圖2所示的存儲模型轉換裝置的非關系型數(shù)據(jù)庫存儲模型到關系型數(shù)據(jù)庫存儲模型的轉換方法的流程圖,圖7是存儲模型轉換方法的示意圖。所述方法應用于上述的服務器,所述服務器包括原始數(shù)據(jù)庫和臨時數(shù)據(jù)庫,所述原始數(shù)據(jù)庫包含嵌套存儲模型的非關系型數(shù)據(jù)庫,所述臨時數(shù)據(jù)庫包含二維表存儲模型的關系型數(shù)據(jù)庫。下面將對圖6所示的具體流程進行詳細闡述。
[0068]S601,接收本地終端發(fā)送的待轉換數(shù)據(jù),所述待轉換數(shù)據(jù)為需要進行存儲模型由二維表存儲模型到嵌套存儲模型轉換的數(shù)據(jù);
[0069]S602,將所述待轉換數(shù)據(jù)劃分成多個數(shù)據(jù)段,所述數(shù)據(jù)段包括至少一套完整的存儲結構,所述存儲結構的臨時屬性包括行存儲表、列存儲表和數(shù)值存儲表;
[0070]S603,獲取每個所述數(shù)據(jù)段的所述臨時屬性;
[0071]S604,將每個所述數(shù)據(jù)段的所述行存儲表存儲為所述原始數(shù)據(jù)庫的行鍵,將每個所述數(shù)據(jù)段的所述列存儲表存儲為所述原始數(shù)據(jù)庫的列組和列標識符,將每個所述數(shù)據(jù)段的所述數(shù)值存儲表存儲為所述原始數(shù)據(jù)庫的實體值。
[0072]用戶通過本地終端輸入所需要存儲的數(shù)據(jù),即所述待轉換數(shù)據(jù),所述服務器需要將用戶輸入的關系型數(shù)據(jù)庫存儲模型下的所述待轉換數(shù)據(jù)轉換為非關系型數(shù)據(jù)數(shù)據(jù)庫存儲模型下的數(shù)據(jù)存儲在原始數(shù)據(jù)庫的非關系型數(shù)據(jù)庫中,相應的非關系型數(shù)據(jù)庫及其存儲模型的選擇可以由用戶輸入或者根據(jù)數(shù)據(jù)類型自由選擇。
[0073]服務器獲取所述本地終端發(fā)送的待轉換數(shù)據(jù)之后,可以使用MapReduce對所述待轉換數(shù)據(jù)進行轉換處理。首先,將所述待轉換數(shù)據(jù)劃分成多個數(shù)據(jù)段,所述數(shù)據(jù)段包括至少一套完整的存儲結構,所述存儲結構的臨時屬性包括行存儲表、列存儲表和數(shù)值存儲表,所述服務器獲取每個所述數(shù)據(jù)段的所述臨時屬性,包括航存儲表、列存儲表和數(shù)值存儲表等。通過外鍵獲取到與之關聯(lián)的列組、列標識符與行鍵,獲將每個所述行片段的所述行鍵、列組、列標識符和數(shù)值組裝成put實例,將組裝的每個數(shù)據(jù)段的put實例對應存儲在原始數(shù)據(jù)庫中,例如,可以通過HTable寫入HBase中。服務器將每個所述數(shù)據(jù)段的所述行存儲表存儲為所述原始數(shù)據(jù)庫的行鍵,將每個所述數(shù)據(jù)段的所述列存儲表存儲為所述原始數(shù)據(jù)庫的列組和列標識符,將每個所述數(shù)據(jù)段的所述數(shù)值存儲為所述原始數(shù)據(jù)庫的實體值。
[0074]上述的獲取每個所述數(shù)據(jù)段的行鍵、列組、列標識符和數(shù)值可以為并行獲取過程,所述的將每個所述數(shù)據(jù)段的所述行鍵、列組、列標識符和數(shù)值存儲在所述原始數(shù)據(jù)庫也可以為并行存儲過程,可以很大程度上提高存儲模型轉換的效率和準確度。
[0075]本發(fā)明實施例提供的關系型數(shù)據(jù)庫存儲模型到非關系型數(shù)據(jù)庫存儲模型的轉換方法,應用于上述的服務器,將待轉換數(shù)據(jù)劃分成多個數(shù)據(jù)段,通過數(shù)據(jù)段的外鍵獲取與之關聯(lián)的列組、列標識符和行鍵等信息,可以將所述數(shù)值、列組、列標識符和行鍵組裝成put實例寫入原始數(shù)據(jù)庫相應的非關系型數(shù)據(jù)庫中,即可實現(xiàn)將用戶需要存儲的關系型數(shù)據(jù)庫存儲模型下的數(shù)據(jù)轉換為非關系型數(shù)據(jù)庫存儲模型下的數(shù)據(jù)存儲在相應的非關系型數(shù)據(jù)庫中存儲。本發(fā)明實施例提供的關系型數(shù)據(jù)庫存儲模型到非關系型數(shù)據(jù)庫存儲模型轉換方法的相關過程可參照上述非關系型數(shù)據(jù)庫到關系型數(shù)據(jù)庫存儲模型轉換方法,在此不再一一贅述。
[0076]實施例3
[0077]請參閱圖8,是本發(fā)明較佳實施例提供的應用于圖2所示的服務器的非關系型數(shù)據(jù)庫存儲模型到關系型數(shù)據(jù)庫存儲模型的轉換裝置的功能模塊示意圖。所述非關系型數(shù)據(jù)庫存儲模型到關系型數(shù)據(jù)庫存儲模型的轉換裝置主要包括:
[0078]待轉換數(shù)據(jù)查找單元801,用于在原始數(shù)據(jù)庫中查找待轉換數(shù)據(jù),所述待轉換數(shù)據(jù)為需要進行存儲模型由嵌套存儲模型到二維表存儲模型轉換的數(shù)據(jù);
[0079]行片段劃分單元802,用于將所述待轉換數(shù)據(jù)劃分成多個行片段,所述行片段為包括至少一個行鍵的數(shù)據(jù)片段;
[0080]行片段處理單元803,用于獲取每個所述行片段的原始參數(shù),所述原始參數(shù)包括行鍵、列組、列標識符和數(shù)值;
[0081 ]存儲單元804,用于將每個行片段的所述行鍵存儲在所述臨時數(shù)據(jù)庫的行存儲空間,將每個所述行片段的所述列組和所述列標識符存儲在所述臨時數(shù)據(jù)庫的列存儲空間,將每個所述行片段的所述數(shù)值存儲在所述臨時數(shù)據(jù)庫的數(shù)值存儲空間。
[0082]請參閱圖9,是本發(fā)明較佳實施例提供的應用于圖2所示的服務器的非關系型數(shù)據(jù)庫存儲模型到關系型數(shù)據(jù)庫存儲模型的轉換裝置的功能模塊示意圖。所述臨時數(shù)據(jù)庫的所述行存儲空間包括行存儲表,所述列存儲空間包括列存儲表,所述數(shù)值存儲空間包括數(shù)值存儲表,所述存儲單元900具體包括:
[0083]列組插入子單元901,用于將所述列組和所述行鍵的外鍵插入所述臨時數(shù)據(jù)庫的所述行存儲表;
[0084]列標識符插入子單元902,用于將所述列標識符和所述列組的外鍵插入所述臨時數(shù)據(jù)庫的所述列存儲表;
[0085]數(shù)值插入子單元903,用于將所述數(shù)值和所述列標識符的外鍵插入所述臨時數(shù)據(jù)庫的所述數(shù)值存儲表。
[0086]在上述實施例的基礎上,所述裝置還可以包括:
[0087]驗證單元,用于在所述臨時數(shù)據(jù)庫中檢驗需要插入的所述列組和所述列標識符是否存在,若不存在,則執(zhí)行插入操作。
[0088]實施例4
[0089]請參閱圖10,是本發(fā)明較佳實施例提供的應用于圖2所示的服務器的關系型數(shù)據(jù)庫存儲模型到非關系型數(shù)據(jù)庫存儲模型的轉換裝置的功能模塊示意圖。所述裝置1000應用于服務器,所述服務器包括原始數(shù)據(jù)庫和臨時數(shù)據(jù)庫,所述原始數(shù)據(jù)庫包含嵌套存儲模型的非關系型數(shù)據(jù)庫,所述臨時數(shù)據(jù)庫包含二維表存儲模型的關系型數(shù)據(jù)庫,所述裝置1000包括:
[0090]待轉換數(shù)據(jù)接收單元1001,用于接收本地終端發(fā)送的待轉換數(shù)據(jù),所述待轉換數(shù)據(jù)為需要進行存儲模型由二維表存儲模型到嵌套存儲模型轉換的數(shù)據(jù);
[0091]數(shù)據(jù)段劃分單元1002,用于將所述待轉換數(shù)據(jù)劃分成多個數(shù)據(jù)段,所述數(shù)據(jù)段包括至少一套完整的存儲結構,所述存儲結構的臨時屬性包括行存儲表、列存儲表和數(shù)值存儲表;
[0092]臨時屬性獲取單元1003,用于獲取每個所述行片段的所述臨時屬性;
[0093]存儲單元1004,用于將每個所述數(shù)據(jù)段的所述行存儲表存儲為所述原始數(shù)據(jù)庫的行鍵,將每個所述數(shù)據(jù)段的所述列存儲表存儲為所述原始數(shù)據(jù)庫的列組和列標識符,將每個所述數(shù)據(jù)段的所述數(shù)值存儲表存儲為所述原始數(shù)據(jù)庫的實體值。
[0094]本發(fā)明實施例提供的存儲模型轉換裝置,包括非關系型數(shù)據(jù)庫存儲模型到關系型數(shù)據(jù)庫存儲模型的轉換裝置和關系型數(shù)據(jù)庫存儲模型到非關系型數(shù)據(jù)庫存儲模型的轉換裝置。與現(xiàn)有技術相比,本發(fā)明的存儲模型轉換方法和裝置,應用于服務器,所述服務器包括原始數(shù)據(jù)庫和臨時數(shù)據(jù)庫,所述原始數(shù)據(jù)庫的存儲模型包括嵌套存儲模型,所述臨時數(shù)據(jù)庫的存儲模型包括二維表存儲模型。將欲轉換數(shù)據(jù)劃分成多個行片段,獲取每個所述行片段的行鍵、列組、列標識符和數(shù)值等,將每個所述行片段的所述行鍵、列組、列標識符和數(shù)值等按照關系型存儲模型存儲到二維表存儲模型下的臨時數(shù)據(jù)庫中,即可實現(xiàn)非關系型數(shù)據(jù)庫的存儲模型到關系型數(shù)據(jù)庫存儲模型的轉換。相應地,將欲實現(xiàn)關系型存儲模型到非關系型存儲模型轉換的待轉換數(shù)據(jù)劃分成多個數(shù)據(jù)段,獲取每個所述數(shù)據(jù)段的行鍵、列組、列標識符和數(shù)值,將每個所述數(shù)據(jù)段的所述行鍵、列組、列標識符和數(shù)值按照非關系型數(shù)據(jù)庫存儲模型存儲在原始數(shù)據(jù)庫,即可實現(xiàn)了關系型數(shù)據(jù)庫到非關系型數(shù)據(jù)庫的轉換。本發(fā)明實施例提供的存儲模型轉換方法和裝置,可以將非關系型數(shù)據(jù)庫中存儲的數(shù)據(jù)轉換成用戶可直接使用的關系型存儲模型下的數(shù)據(jù),還可以將用戶需要存儲的關系型數(shù)據(jù)庫存儲模型下的數(shù)據(jù)轉換成非關系型存儲模型下的數(shù)據(jù)存儲,在利用非關系型存儲優(yōu)勢的同時實現(xiàn)方便訪問和存儲。所述存儲模型轉換裝置的【具體實施方式】可參照上述方法實施例,在此不再贅述。
[0095]以上所述,僅為本發(fā)明的【具體實施方式】,但本發(fā)明的保護范圍并不局限于此,任何熟悉本技術領域的技術人員在本發(fā)明揭露的技術范圍內(nèi),可輕易想到變化或替換,都應涵蓋在本發(fā)明的保護范圍之內(nèi)。因此,本發(fā)明的保護范圍應所述以權利要求的保護范圍為準。
【主權項】
1.一種非關系型數(shù)據(jù)庫存儲模型到關系型數(shù)據(jù)庫存儲模型的轉換方法,其特征在于,應用于服務器,所述服務器包括原始數(shù)據(jù)庫和臨時數(shù)據(jù)庫,所述原始數(shù)據(jù)庫包含嵌套存儲模型的非關系型數(shù)據(jù)庫,所述臨時數(shù)據(jù)庫包含二維表存儲模型的關系型數(shù)據(jù)庫,所述方法包括: 在所述原始數(shù)據(jù)庫中查找待轉換數(shù)據(jù),所述待轉換數(shù)據(jù)為需要進行存儲模型由嵌套存儲模型到二維表存儲模型轉換的數(shù)據(jù); 將所述待轉換數(shù)據(jù)劃分成多個行片段,所述行片段為包括至少一個行鍵的數(shù)據(jù)片段; 獲取每個所述行片段的原始參數(shù),所述原始參數(shù)包括行鍵、列組、列標識符和數(shù)值; 將每個所述行片段的所述行鍵存儲在所述臨時數(shù)據(jù)庫的行存儲空間,將每個所述行片段的所述列組和所述列標識符存儲在所述臨時數(shù)據(jù)庫的列存儲空間,將每個所述行片段的所述數(shù)值存儲在所述臨時數(shù)據(jù)庫的數(shù)值存儲空間。2.根據(jù)權利要求1所述的方法,其特征在于,所述臨時數(shù)據(jù)庫的所述行存儲空間包括行存儲表,所述列存儲空間包括列存儲表,所述數(shù)值存儲空間包括數(shù)值存儲表,所述將每個行片段的所述行鍵存儲在所述臨時數(shù)據(jù)庫的行存儲空間,將每個所述行片段的所述列組和所述列標識符存儲在所述臨時數(shù)據(jù)庫的列存儲空間,將每個所述行片段的所述數(shù)值存儲在所述臨時數(shù)據(jù)庫的數(shù)值存儲空間,具體包括: 將每個所述行片段的所述列組和所述行鍵的外鍵插入所述臨時數(shù)據(jù)庫的所述行存儲表; 將每個所述行片段的所述列標識符和所述列組的外鍵插入所述臨時數(shù)據(jù)庫的所述列存儲表; 將每個所述行片段的所述數(shù)值和所述列標識符的外鍵插入所述臨時數(shù)據(jù)庫的所述數(shù)值存儲表。3.根據(jù)權利要求1所述的方法,其特征在于,所述的將每個所述行片段的所述行鍵、列組、列標識符和數(shù)值存儲在臨時數(shù)據(jù)庫之前,所述方法還包括: 在所述臨時數(shù)據(jù)庫中檢驗需要插入的所述列組和所述列標識符是否存在,若不存在,則執(zhí)行插入操作。4.根據(jù)權利要求1所述的方法,其特征在于,所述服務器并行獲取多個所述行片段的所述原始參數(shù),所述服務器并行將多個行片段的所述行鍵存儲在所述臨時數(shù)據(jù)庫的行存儲空間,并行將多個所述行片段的所述列組和所述列標識符存儲在所述臨時數(shù)據(jù)庫的所述列存儲空間,并行將多個所述行片段的所述數(shù)值存儲在所述臨時數(shù)據(jù)庫的所述數(shù)值存儲空間。5.—種關系型數(shù)據(jù)庫存儲模型到非關系型數(shù)據(jù)庫存儲模型的轉換方法,其特征在于,應用于服務器,所述服務器包括原始數(shù)據(jù)庫和臨時數(shù)據(jù)庫,所述原始數(shù)據(jù)庫包含嵌套存儲模型的非關系型數(shù)據(jù)庫,所述臨時數(shù)據(jù)庫包含二維表存儲模型的關系型數(shù)據(jù)庫,所述方法包括: 接收本地終端發(fā)送的待轉換數(shù)據(jù),所述待轉換數(shù)據(jù)為需要進行存儲模型由二維表存儲模型到嵌套存儲模型轉換的數(shù)據(jù); 將所述待轉換數(shù)據(jù)劃分成多個數(shù)據(jù)段,所述數(shù)據(jù)段包括至少一套完整的存儲結構,所述存儲結構的臨時屬性包括行存儲表、列存儲表和數(shù)值存儲表; 獲取每個所述數(shù)據(jù)段的所述臨時屬性; 將每個所述數(shù)據(jù)段的所述行存儲表存儲為所述原始數(shù)據(jù)庫的行鍵,將每個所述數(shù)據(jù)段的所述列存儲表存儲為所述原始數(shù)據(jù)庫的列組和列標識符,將每個所述數(shù)據(jù)段的所述數(shù)值存儲表存儲為所述原始數(shù)據(jù)庫的實體值。6.根據(jù)權利要求5所述的方法,其特征在于,所述服務器并行獲取多個數(shù)據(jù)段的所述臨時屬性,并行將多個所述數(shù)據(jù)段的所述行存儲表存儲為所述原始數(shù)據(jù)庫的列組和列標識符,并行將多個所述數(shù)據(jù)段的所述數(shù)值存儲表存儲為所述原始數(shù)據(jù)庫的實體值。7.—種非關系型數(shù)據(jù)庫存儲模型到關系型數(shù)據(jù)庫存儲模型的轉換裝置,其特征在于,應用于服務器,所述服務器包括原始數(shù)據(jù)庫和臨時數(shù)據(jù)庫,所述原始數(shù)據(jù)庫包含嵌套存儲模型的非關系型數(shù)據(jù)庫,所述臨時數(shù)據(jù)庫包含二維表存儲模型的關系型數(shù)據(jù)庫,所述裝置包括: 待轉換數(shù)據(jù)查找單元,用于在所述原始數(shù)據(jù)庫中查找待轉換數(shù)據(jù),所述待轉換數(shù)據(jù)為需要進行存儲模型由嵌套存儲模型到二維表存儲模型轉換的數(shù)據(jù); 行片段劃分單元,用于將所述待轉換數(shù)據(jù)劃分成多個行片段,所述行片段為包括至少一個行鍵的數(shù)據(jù)片段; 行片段處理單元,用于獲取每個所述行片段的原始參數(shù),所述原始參數(shù)包括行鍵、列組、列標識符和數(shù)值; 存儲單元,用于將每個行片段的所述行鍵存儲在所述臨時數(shù)據(jù)庫的行存儲空間,將每個所述行片段的所述列組和所述列標識符存儲在所述臨時數(shù)據(jù)庫的列存儲空間,將每個所述行片段的所述數(shù)值存儲在所述臨時數(shù)據(jù)庫的數(shù)值存儲空間。8.根據(jù)權利要求7所述的裝置,其特征在于,所述臨時數(shù)據(jù)庫的所述行存儲空間包括行存儲表,所述列存儲空間包括列存儲表,所述數(shù)值存儲空間包括數(shù)值存儲表,所述存儲單元具體包括: 列組插入子單元,用于將每個行片段的所述列組和所述行鍵的外鍵插入所述臨時數(shù)據(jù)庫的所述行存儲表; 列標識符插入子單元,用于將每個行片段的所述列標識符和所述列組的外鍵插入所述臨時數(shù)據(jù)庫的所述列存儲表; 數(shù)值插入子單元,用于將每個行片段的所述數(shù)值和所述列標識符的外鍵插入所述臨時數(shù)據(jù)庫的所述數(shù)值存儲表。9.根據(jù)權利要求7所述的裝置,其特征在于,所述裝置還包括: 驗證單元,在所述臨時數(shù)據(jù)庫中檢驗需要插入的所述列組和所述列標識符是否存在,若不存在,則執(zhí)行插入操作。10.—種關系型數(shù)據(jù)庫存儲模型到非關系型數(shù)據(jù)庫存儲模型的轉換裝置,其特征在于,應用于服務器,所述服務器包括原始數(shù)據(jù)庫和臨時數(shù)據(jù)庫,所述原始數(shù)據(jù)庫包含嵌套存儲模型的非關系型數(shù)據(jù)庫,所述臨時數(shù)據(jù)庫包含二維表存儲模型的關系型數(shù)據(jù)庫,所述裝置包括: 待轉換數(shù)據(jù)接收單元,用于接收本地終端發(fā)送的待轉換數(shù)據(jù),所述待轉換數(shù)據(jù)為需要進行存儲模型由二維表存儲模型到嵌套存儲模型轉換的數(shù)據(jù); 數(shù)據(jù)段劃分單元,用于將所述待轉換數(shù)據(jù)劃分成多個數(shù)據(jù)段,所述數(shù)據(jù)段包括至少一套完整的存儲結構,所述存儲結構的臨時屬性包括行存儲表、列存儲表和數(shù)值存儲表; 臨時屬性獲取單元,用于獲取每個所述數(shù)據(jù)段的所述臨時屬性; 存儲單元,用于將每個所述數(shù)據(jù)段的所述行存儲表存儲為所述原始數(shù)據(jù)庫的行鍵,將每個所述數(shù)據(jù)段的所述列存儲表存儲為所述原始數(shù)據(jù)庫的列組和列標識符,將每個所述數(shù)據(jù)段的所述數(shù)值存儲表存儲為所述原始數(shù)據(jù)庫的實體值。
【文檔編號】G06F17/30GK105930354SQ201610217480
【公開日】2016年9月7日
【申請日】2016年4月8日
【發(fā)明人】譚良, 胡波
【申請人】四川師范大學