[發明專利]一種基于鍵值庫的文件與結構化數據統一存儲方法有效
| 申請號: | 201110272333.6 | 申請日: | 2011-09-14 |
| 公開(公告)號: | CN102298641A | 公開(公告)日: | 2011-12-28 |
| 發明(設計)人: | 王建民;朱妤晴;李旭嘉;楊義繁;丁貴廣 | 申請(專利權)人: | 清華大學 |
| 主分類號: | G06F17/30 | 分類號: | G06F17/30 |
| 代理公司: | 北京清亦華知識產權代理事務所(普通合伙) 11201 | 代理人: | 羅文群 |
| 地址: | 100084*** | 國省代碼: | 北京;11 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 一種 基于 鍵值 文件 結構 數據 統一 存儲 方法 | ||
1.一種基于鍵值庫的文件與結構化數據統一存儲方法,其特征在于該方法包括以下步驟:
(1)用戶初始化鍵值庫,鍵值庫中具有表格、列簇和列三種單元的結構化存儲模式,其中,表格包含多個列簇,每個列簇包含一個或多個列,數據按行存入表格中,每行數據在同一表格中用行鍵識別,數據存儲在列中,一行列數據存儲在一個或多個列簇中;
(2)建成對文件與結構化數據統一進行高效訪問的存儲接口模塊,在鍵值庫中為文件建立元數據表格,在元數據表格中存儲文件的屬性數據,所述的元數據表格包含元數據和內容數據兩個列簇,分別用以表示文件或文件所在的文件夾的屬性數據和文件的內容數據;
(3)存儲接口模塊通過將文件拆分成多個數據塊存儲在鍵值庫中,使用一行元數據和多行內容數據存儲一個文件,存儲形式如下:文件在所在文件系統中的路徑所形成的行鍵,與該行鍵相對應的行數據存儲在元數據列簇下,該行數據為文件的屬性數據,該屬性數據包括一列文件名、一列文件所在的父文件夾路徑和一列文件內容數據的第一個數據塊的行鍵;文件內容數據被切分成數據塊后存儲在內容數據列簇中,每個數據塊為一行,數據塊的行鍵為即時生成的通用唯一識別碼(UUID),所述的內容數據列簇包括一列下一個數據塊的行鍵、一列本數據塊的內容,若該數據塊為最后一個數據塊,則將下一個數據塊行鍵列的內容記為“文件結尾”;
(4)存儲接口模塊用一行元數據存儲一個文件夾,存儲形式如下:文件夾在所在文件系統中的路徑形成行鍵,與該行鍵相對應的行數據存儲在元數據列簇下,該行數據為文件夾的屬性數據,該屬性數據包括一列文件夾的名稱和一列文件夾所在的父文件夾路徑,若該文件夾存在子文件,則屬性數據還包括子文件路徑,若該文件夾存在子文件夾,則屬性數據還包括子文件夾路徑;
(5)當存儲接口模塊接到用戶的構造命令及相應構造參數時,存儲接口模塊返回用戶所訪問資源的存儲標識符,該存儲標識符標識文件夾、文件、表格、行、列簇和列6種資源,若用戶訪問的是文件夾或文件,則構造參數為路徑,若用戶訪問的是表格,則構造參數為表格名稱或表格名稱與一個或多個列簇名稱,若用戶訪問的是行,則構造參數為表格名稱和行鍵,若用戶訪問的是列簇,則構造參數為表格名稱、行鍵和列簇名稱,若用戶訪問的是列,則構造參數為表格名稱、行鍵、列簇名稱和列名稱;
(6)當存儲接口模塊接到用戶的創建命令及相應的存儲標識符時,存儲接口模塊對存儲標識符進行識別:
(6-1)若為文件、行、列簇或列中的任何一種資源,則向用戶返回“不支持此資源”信息;
(6-2)若為表格資源,則存儲接口模塊對鍵值庫進行檢查,若鍵值庫中已存在同名的表格,則向用戶返回“已存在同名表格”信息,若鍵值庫中不存在同名的表格,則在鍵值庫中創建含指定表格名稱的表格,并向用戶返回“創建成功”信息;
(6-3)若為文件夾資源,則存儲接口模塊對指定路徑進行判斷,若指定路徑下已存儲同名的文件或文件夾,則向用戶返回“已經存在同名資源”信息,若指定路徑下未存儲同名的文件或文件夾,則對父文件夾進行判斷,若不存在父文件夾,則重復步驟(6-3),創建父文件夾,使得父文件夾存在,若存在父文件夾,則在父文件夾所在行的元數據列簇下插入一個列,列的名稱為指定路徑名稱,并添加特殊前綴,列的數據為指定路徑,同時創建本文件夾路徑的所在行,行的數據分布在元數據列簇下,在該行元數據列簇下增加兩列,其中一列記錄本文件夾名稱,另一列記錄父文件夾路徑,向返回用戶“成功”信息;若創建父文件夾過程中出現“已存在同名資源”信息,則向用戶返回“失敗”信息;
(7)當存儲接口模塊接到用戶的刪除命令及相應的存儲標識符時,存儲接口模塊對存儲標識符進行識別:
(7-1)當存儲標識符標識的是表格資源時,存儲接口模塊對表格資源進行判斷:
(7-1-1)若鍵值庫中存在與該表格資源相對應的表格,則從鍵值庫中刪除與該表格資源相對應的表格,并向用戶返回“成功”信息;
(7-1-2)若鍵值庫中不存在與該表格資源相對應的表格,則向用戶返回“成功”信息;
(7-2)當存儲標識符標識的是列資源時,存儲接口模塊對列資源進行判斷:
(7-2-1)若鍵值庫中存在與該列資源相對應的列,則從鍵值庫中刪除與該列資源相對應的列,并向用戶返回“成功”信息;
(7-2-2)若鍵值庫中不存在與該列資源相對應的列,則向用戶返回“成功”信息;
(7-3)當存儲標識符標識的是列簇資源時,存儲接口模塊對列簇資源進行判斷:
(7-3-1)若鍵值庫中存在與該列簇資源相對應的列簇,則從鍵值庫中刪除與該列簇資源相對應的列簇,并向用戶返回“成功”信息;
(7-3-2)若鍵值庫中不存在與該列簇資源相對應的列簇,則向用戶返回“成功”信息;
(7-4)當存儲標識符標識的是行資源時,存儲接口模塊對行資源進行判斷:
(7-4-1)若鍵值庫存在與該行資源相對應的行時,存儲接口模塊對行中存儲了數據的各列簇使用步驟(7-3)逐一進行刪除,并向用戶返回“成功”信息;
(7-4-2)若鍵值庫不存在與該行資源相對應的行時,則向用戶返回“成功”信息;
(7-5)當存儲標識符標識的是文件資源時,存儲接口模塊從鍵值庫中的該文件的父文件夾所在元數據行中刪除記錄該文件路徑的列,同時從該文件所在元數據行中獲取該文件的首個數據塊所在行鍵,將首個數據塊作為當前數據塊,從當前數據塊所在行中讀出下一數據塊的行鍵后,刪除當前數據塊,再將下一數據塊置為當前數據塊,重復上述讀取和刪除的操作,直到讀出下一數據塊行鍵為“文件結尾”的數據塊,將下一數據塊的行鍵為“文件結尾”的數據塊置為當前數據塊后,刪除當前數據塊,同時刪除該文件的元數據行,并向用戶返回“成功”信息;
(7-6)當存儲標識符標識的是文件夾資源時,存儲接口模塊先從鍵值庫中的該文件夾的父文件夾所在元數據行中刪除記錄該文件夾路徑的列,從該文件夾所在元數據行中獲取存儲各子文件或子文件夾的路徑,并重復步驟(7-5)或(7-6),刪除各子文件或子文件夾,直到該文件夾不存在子文件或子文件夾,當該文件夾不存在子文件或子文件夾時,刪除該文件夾所在的元數據行,并向用戶返回“成功”信息;
(8)當存儲接口模塊接到用戶的字節上傳命令及相應的存儲標識符、字節數據、追加選項時,存儲接口模塊對存儲標識符進行識別:
(8-1)若存儲標識符標識的是文件夾、表格、行或列簇,則向用戶返回“不支持”信息;
(8-2)若存儲標識符標識的是列,對追加選項進行識別:
(8-2-1)當追加選項為假時,存儲接口模塊對與存儲標識符標識的列相關的表格和列簇進行判斷,若與存儲標識符標識的列相關的表格或列簇存在,則在鍵值庫中將字節數據存儲到存儲標識符標識的列,并向用戶返回“成功”信息,若與存儲標識符標識的列相關的表格或列簇不存在,則向用戶返回“失敗”信息,
(8-2-2)當追加選項為真時,存儲接口模塊對存儲標識符標識的列進行判斷,若存儲標識符標識的列存在,則從鍵值庫中讀取存儲標識符標識的列的數據,并將字節數據追加到存儲標識符標識的列的數據,存入存儲標識符標識的列中,若存儲標識符標識的列不存在,則向用戶返回“失敗”信息;
(8-3)若存儲標識符標識的是文件,則存儲接口模塊對鍵值庫進行查詢:
(8-3-1)若鍵值庫中不存在存儲標識符標識的文件,則對該文件的父文件夾進行判斷,若鍵值庫中不存在該文件的父文件夾,則使用步驟(6-3)創建該文件的父文件夾,使得鍵值庫中存在該文件的文件夾,則進行步驟(8-3-1-1);若鍵值庫中存在該文件的父文件夾,則進行步驟(8-3-1-1);
(8-3-1-1)在該文件的父文件夾的元數據行中增加一列記錄該文件的路徑,創建該文件的元數據行,確定該文件內容的第一個數據塊的行鍵,使用第一個數據塊的行鍵創建內容數據行,再將字節數據寫入第一個內容數據行的數據列,最后置下一數據塊行鍵列為“文件結尾”,并向用戶返回“成功”信息;
(8-3-2)若鍵值庫中存在與存儲標識符標識的文件同名的文件夾,則向用戶返回“同名文件夾存在”信息;
(8-3-3)若鍵值庫中存在存儲標識符標識的文件,則對追加選項進行判斷:
(8-3-3-1)若追加選項為假,則讀取該文件的元數據行,獲得文件內容第一個數據塊的行鍵,并將字節數據寫入第一個數據塊的行鍵所指示的內容數據行的數據列中,讀取第一數據塊內容數據行,獲得下一數據塊的行鍵,并將第一數據塊的下一數據塊行鍵列置為“文件結尾”,同時置下一數據塊為當前數據塊,讀取該當前數據塊的下一數據塊行鍵的列,獲得下一數據塊的行鍵,并刪除該當前數據塊的內容數據行,置下一數據塊為當前數據塊,重復上述讀取刪除操作,直到當前數據塊的下一數據塊行鍵列的值為“文件結尾”,刪除當前數據塊的內容數據行,向用戶返回“成功”信息;
(8-3-3-2)若追加選項為真,則讀取該文件元數據行,獲得文件內容第一個數據塊的行鍵,置第一個數據塊為當前數據塊,從該當前數據塊的行鍵所指示的內容數據行中讀取下一數據塊的行鍵,重復“置數據塊為當前數據塊,從該當前數據塊的行鍵所指示的內容數據行中讀取下一數據塊的行鍵”的操作,直到當前數據塊的內容數據行的下一數據塊行鍵列值為“文件結尾”,讀出當前數據塊的內容數據,并將字節數據追加到當前數據塊的內容數據后,得到新的當前數據塊內容數據,進行步驟(8-3-3-2-1);
(8-3-3-2-1)根據用戶設定的數據塊大小域值判斷當前數據塊內容數據大小,若當前數據塊內容數據大小超過數據塊大小域值,則將當前數據塊拆分出一塊等于數據塊大小域值的數據塊和最后一塊剩余內容數據塊,將當前數據塊設為大小等于數據塊大小域值的數據塊后,將當前數據塊內容數據寫入當前數據塊的內容數據行的數據中,構建下一數據塊的行鍵,并在當前數據塊的內容數據行中寫入下一數據塊的行鍵,并將最后一塊剩余內容數據塊設為當前數據塊,重復步驟(8-3-3-2-1),直到最后一塊剩余內容數據塊不超過數據塊大小域值,并將最后一塊內容數據塊寫入該數據塊行鍵指定的內容數據行的數據列中,并置下一數據塊行鍵列內容為“文件結尾”,向用戶返回“成功”信息;
(9)當存儲接口模塊接到用戶的本地路徑上傳命令及相應的存儲標識符、本地文件或本地文件夾路徑時,存儲接口模塊對存儲標識符進行識別:
(9-1)若存儲標識符標識的是表格、行、列簇或列,則向用戶返回“不支持”信息;
(9-2)若存儲標識符標識的是文件且本地路徑是文件夾,則向用戶返回“錯誤”信息;
(9-3)若存儲標識符標識的是文件夾且本地路徑是文件,則向用戶返回“錯誤”信息;
(9-4)若存儲標識符標識的是文件且本地路徑是文件,則存儲接口模塊使用步驟(6-3)創建該文件的父文件夾,若步驟(6-3)返回“失敗”信息,則向用戶返回“失敗”信息,若步驟(6-3)返回“已經存在同名資源”或“成功”信息,則在該文件所在父文件夾的元數據行中增加“該文件路徑”列,同時創建該文件的元數據行,確定該文件內容第一個數據塊的行鍵,置第一個數據塊為當前數據塊,并置當前文件讀取位置為0,從本地路徑所指示的文件內容的當前文件讀取位置向后讀取數據,使讀取的數據大小等于數據塊大小域值,形成第一個數據塊,將該第一個數據塊內容寫入當前數據塊行鍵所指示的內容數據行的數據列中,同時存儲接口模塊確定下一個數據塊的行鍵,并將下一個數據塊的行鍵寫入當前數據塊的內容數據行的下一數據塊行鍵列中,置下一個數據塊為當前數據塊,將當前文件讀取位置加上數據塊大小域值,重復上述讀取數據塊、寫入數據塊、確定行鍵、置當前數據塊的操作,直至讀到本地文件內容的最后一個數據塊,將最后一個數據塊內容寫入該數據塊內容數據行的數據列后,在該數據塊內容數據行的下一數據塊行鍵列中寫入“文件結尾”,向用戶返回“成功”信息;
(9-5)若存儲標識符標識的是文件夾且本地路徑是文件夾,使用步驟(6-3)創建該文件夾,若步驟(6-3)返回“已經存在同名資源”或“失敗”信息,則向用戶返回“已經存在同名資源”或“失敗”信息,若步驟(6-3)返回“成功”信息,則讀取本地路徑所指示文件夾的一個子文件或子文件夾i(i=1,2,..,n),并使用步驟(9-3)或(9-4)對子文件或子文件夾i進行上傳后,在存儲標識符標識的文件夾的元數據行中添加“子文件路徑”或“子文件夾路徑”列以及內容為子文件或子文件夾i的元數據行行鍵的列數據,重復上述上傳子文件或子文件夾的步驟,直到將n個子文件或子文件夾上傳完成后,向用戶返回“成功”信息,當重復過程中出現子文件或子文件夾上傳失敗,則向用戶返回“失敗”信息;
(10)當存儲接口模塊接到用戶的流上傳命令及相應的存儲標識符、追加選項時,存儲接口模塊初始化一個大小等于用戶設定的數據塊大小域值的本地內存緩存區,并將本地內存緩存區內容置為空,對存儲標識符進行識別:
(10-1)若存儲標識符標識的是文件夾、表格、行或列簇,則向用戶返回“不支持”信息;
(10-2)若存儲標識符標識的是列,則對追加選項進行判斷:
(10-2-1)若追加選項為假,則存儲接口模塊對存儲標識符中標識的列所在的表格和列簇進行判斷,若存儲標識符標識的列所在的表格和列簇不存在,則向用戶返回“失敗”信息,若存儲標識符標識的列所在的表格和列簇存在,則將存儲標識符標識的鍵值庫中的列數據置為空,并打開一個輸出流,向用戶返回該輸出流操作對象;
(10-2-2)若追加選項為真,則存儲接口模塊對存儲標識符中標識的列進行判斷,若存儲標識符標識的列不存在,則向用戶返回“失敗”信息,若存儲標識符標識的列存在,則將存儲標識符標識的鍵值庫中的列數據讀到本地內存緩存區中,將存儲標識符標識的鍵值庫中的列數據置為空,并打開一個輸出流,向用戶返回該輸出流操作對象;
(10-3)若存儲標識符標識的是文件,則存儲接口模塊對鍵值庫進行查詢:
(10-3-1)若鍵值庫中不存在存儲標識符標識的文件,則存儲接口模塊對該文件的父文件夾進行判斷,若鍵值庫中不存在該文件的父文件夾,則使用步驟(6-3)創建該文件的父文件夾,使得該文件的父文件夾存在,該文件的父文件夾存在后,在該文件的父文件夾的元數據行中增加“該文件路徑”列,同時創建該文件的元數據行,確定該文件內容第一個數據塊的行鍵,使用第一個數據塊的行鍵創建內容數據行,將該內容數據行的下一數據塊行鍵列置為“文件結尾”,并打開一個輸出流,向用戶返回該輸出流操作對象;
(10-3-2)若鍵值庫中存在與存儲標識符標識的文件同名的文件夾,則向用戶返回“同名文件夾存在”信息;
(10-3-3)若鍵值庫中存在存儲標識符標識的文件,則對追加選項進行判斷:
(10-3-3-1)若追加選項為假,則存儲接口模塊讀取該文件元數據行,獲得文件內容第一個數據塊的行鍵,讀取第一數據塊的行鍵所指示的內容數據行,以獲得下一數據塊的行鍵,將第一數據塊的下一數據塊行鍵列置為“文件結尾”,同時置下一數據塊為當前數據塊,讀取該當前數據塊內容數據行,以獲得下一數據塊的行鍵,刪除當前數據塊的內容數據行后置下一數據塊為當前數據塊,重復上述置當前數據塊、獲取下一數據塊行鍵、刪除當前數據行的操作直到獲取當前數據塊的下一數據塊行鍵列數據為“文件結尾”,刪除當前數據塊的內容數據行,打開一個輸出流,向用戶返回該輸出流操作對象;
(10-3-3-2)若追加選項為真,則存儲接口模塊讀取該文件元數據行,以獲得文件內容第一個數據塊的行鍵,置第一個數據塊為當前數據塊,讀取該當前數據塊的行鍵所指示的內容數據行,以獲得下一數據塊的行鍵,重復讀取下一數據塊行鍵列查找下一數據塊內容數據行的操作,直到當前數據塊的內容數據行的下一數據塊行鍵列值為“文件結尾”,將當前數據塊內容數據讀到本地內存緩存區中,打開一個輸出流,向用戶返回該輸出流操作對象;
(10-4)用戶使用上述輸出流操作對象,以字節或字節數組的方式向本地內存緩存區寫入數據,同時存儲接口模塊啟動一個計時器,若計時器計時超過用戶設定的未寫超時時間或用戶關閉了該輸出流操作對象,則存儲接口模塊關閉計時器,關閉輸出流,存儲接口模塊根據存儲標識符進行識別,根據識別結果分別進行步驟(10-4-1)或(10-4-2),若計時器計時在用戶設定的未寫超時時間內,且用戶寫入的數據將本地內存緩存區填滿時,存儲接口模塊對存儲標識符進行識別:
(10-4-1)若存儲標識符標識的是列,則存儲接口模塊從鍵值庫中讀取存儲標識符標識的列的數據,將本地內存緩存區數據追加到原列數據,形成新的列數據,將該新的列數據寫入存儲標識符標識的列中,置本地內存緩存區數據為空,重復步驟(10-4);
(10-4-2)若存儲標識符標識的是文件,則存儲接口模塊將本地內存緩存區數據寫入當前數據塊的內容數據行的數據列中,確定下一數據塊的行鍵,將下一數據塊的行鍵寫入當前數據塊的內容數據行的下一數據塊行鍵列中,將下一數據塊置為當前數據塊,創建當前數據塊行鍵所指示的內容數據行,將當前數據塊的內容數據行的下一數據塊行鍵列置為“文件結尾”,將本地內存緩存區數據置為空,重復步驟(10-4),
(11)當存儲接口模塊接到用戶字節下載命令及相應的存儲標識符時,存儲接口模塊對存儲標識符進行識別,若存儲標識符標識的是文件、文件夾、表格、行或列簇,則向用戶返回“不支持”信息;若存儲標識符標識的是列,則存儲接口模塊對鍵值庫進行查詢,若鍵值庫中不存在存儲標識符標識的列,則向用戶返回一個空字節數組;若鍵值庫中存在存儲標識符標識的列,則從鍵值庫中讀取存儲標識符標識的列數據,并將該列數據存入字節數組中,向用戶返回該字節數組;
(12)當存儲接口模塊接到用戶本地路徑下載命令及相應的存儲標識符、本地路徑時,存儲接口模塊對存儲標識符進行識別:
(12-1)若存儲標識符標識的是表格、行、列簇或列,則向用戶返回“不支持”信息;
(12-2)若存儲標識符標識的是文件或文件夾,則存儲接口模塊對存儲標識符和本地路徑進行識別:
(12-2-1)若存儲標識符標識的是文件,且本地路徑指示的是已經存在的文件或文件夾,則向用戶返回“本地文件/文件夾已經存在”信息;
(12-2-2)若存儲標識符標識的是文件,且本地路徑指示的文件不存在,則根據本地路徑創建本地文件,存儲接口模塊從鍵值庫中讀出存儲標識符標識的文件元數據行中的第一個數據塊的行鍵,將第一個數據塊設為當前數據塊,通過當前數據塊的行鍵讀取當前數據塊的內容數據,并將當前數據塊的內容數據追加到本地文件內容中,再讀取當前數據塊的內容數據行,獲得下一個數據塊的行鍵,再將下一個數據塊置為當前數據塊,重復上述讀取數據塊內容、追加本地文件內容、讀取下一數據塊行鍵、設置當前數據塊的操作直到當前數據塊的下一數據塊行鍵列數據為“文件結尾”時,向用戶返回“成功”信息;
(12-2-3)若存儲標識符標識的是文件夾,且本地路徑指示的是已經存在的文件,或存儲標識符標識的是文件夾,且本地路徑加標識符標識的文件夾名稱形成的新路徑指示的是已存在的本地文件或文件夾,則向用戶返回“本地文件/文件夾已經存在”信息;
(12-2-4)若存儲標識符標識的是文件夾,且不存在本地路徑指示的文件或文件夾,則存儲接口模塊在本地創建本地路徑指示的文件夾,并在本地路徑指示的文件夾下創建以標識符標識的文件夾名稱命名的文件夾,存儲接口模塊從鍵值庫中讀取存儲標識符標識的文件夾元數據行的“子文件路徑i”或“子文件夾路徑i”(i=1,2,..,n)各列數據,并重復步驟(12-2),下載該文件夾的所有子文件和子文件夾,并向用戶返回“成功”信息;
(13)當存儲接口模塊接到流下載命令及相應的存儲標識符時,存儲接口模塊對存儲標識符進行識別:
(13-1)若存儲標識符標識的是表格,則存儲接口模塊向用戶返回“不支持”信息;
(13-2)若存儲標識符標識的是列,則存儲接口模塊對存儲標識符標識的列進行判斷,若鍵值庫中不存在存儲標識符標識的列,則向用戶返回“列不存在”信息,若鍵值庫中存在存儲標識符標識的列,則從鍵值庫中將存儲標識符標識的列數據下載到本地內存緩存區中,并打開一個輸入流,向用戶返回該輸入流操作對象;
(13-3)若存儲標識符標識的是文件,存儲接口模塊對存儲標識符標識的文件進行判斷,若鍵值庫中不存在存儲標識符標識的文件,則向用戶返回“文件不存在”信息,若鍵值庫中存在存儲標識符標識的文件,則存儲接口模塊從鍵值庫中讀取該文件元數據行,以獲得第一個數據塊的內容數據行的行鍵,將第一個數據塊置為當前數據塊,使用當前數據塊的行鍵讀取其內容數據行的數據列中的數據,存入本地內存緩存區中,并打開一個輸入流,向用戶返回該輸入流操作對象;
(13-4)若存儲標識符標識的是文件夾,存儲接口模塊對存儲標識符標識的文件夾進行判斷,若鍵值庫中不存在存儲標識符標識的文件夾,則向用戶返回“文件夾不存在”信息,若鍵值庫中存在存儲標識符標識的文件夾,則存儲接口模塊從鍵值庫中讀取該文件夾元數據行的“子文件路徑i”或子文件夾路徑i”(i=1,2,..,n)各列數據,并存入本地內存緩存區中,打開一個輸入流,向用戶返回該輸入流操作對象;
(13-5)若存儲標識符標識的是列簇,存儲接口模塊對存儲標識符標識的列簇進行判斷,若鍵值庫中不存在存儲標識符標識的列簇,則向用戶返回“列簇不存在”信息,若鍵值庫中存在存儲標識符標識的列簇,則存儲接口模塊從鍵值庫中讀取列簇的所有列及列數據,并存入本地內存緩存區中,打開一個輸入流,向用戶返回該輸入流操作對象;
(13-6)若存儲標識符標識的是行,存儲接口模塊對存儲標識符標識的行進行判斷,若鍵值庫中不存在存儲標識符標識的行,則向用戶返回“行不存在”信息,若鍵值庫中存在存儲標識符標識的行,則存儲接口模塊從鍵值中讀取表格定義的列簇列表,并存入本地內存的緩存區中,依次對上述列簇列表中的每一列簇,重復步驟(13-5),但在用戶使用輸入流操作對象時不向用戶返回“讀取完畢”信息,直到遍歷列簇列表中的所有列簇,向用戶返回“讀取完畢”信息;
(13-7)用戶使用輸入流操作對象進行讀取時,輸入流操作對象對存儲標識符進行識別:
(13-7-1)若存儲標識符標識的是列,則輸入流操作對象以字節或字節數組的方式將數據從本地內存緩存區中讀出,輸入流的初始讀取位置是0,用戶每讀取一個字節或由n個字節組成的字節數組,讀取位置加1或加n,直到讀取位置與本地內存緩存區數據字節數相同時,則向用戶返回“讀取完畢”信息;
(13-7-2)若存儲標識符標識的是文件,則輸入流操作對象以字節或字節數組的方式將數據從本地內存緩存區中讀出,輸入流的初始讀取位置是0,用戶每讀取一個字節或由n個字節組成的字節數組,讀取位置加1或加n,直到讀取位置與本地內存緩存區數據字節數相同時,讀取當前數據塊的內容數據行,以獲得下一個數據塊的行鍵,將下一個數據塊置為當前數據塊,使用當前數據塊的行鍵讀取其內容數據行的數據列中的數據,存入本地內存緩存區中,重復上述步驟,直到讀取當前數據塊的內容數據行的下一數據塊行鍵列為“文件結尾”時,向用戶返回“讀取完畢”信息;
(13-7-3)若存儲標識符標識的是文件夾,則輸入流操作對象從本地內存緩存區中讀取下一子文件或子文件夾路徑,并向用戶返回下一子文件或子文件夾路徑,當所有子文件或子文件夾路徑已經讀取完成時,向用戶返回“讀取完畢”信息;
(13-7-4)若存儲標識符標識的是列簇,則輸入流操作對象從本地內存緩存區中讀取下一列,并向用戶返回下一列的名稱及數據,當所有列已經讀取完成時,向用戶返回“讀取完畢”信息。
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于清華大學,未經清華大學許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201110272333.6/1.html,轉載請聲明來源鉆瓜專利網。
- 上一篇:用于確保交易安全的方法及其相應的設備和計算機程序
- 下一篇:防觸電的電熱水器





