對象檢索方法和對象存儲系統的制作方法
【專利摘要】在本公開實施例中,提供了一種對象存儲系統中檢索對象的方法,根據對象請求中的存儲空間標識符和對象信息生成檢索SQL中的檢索條件,通過檢索SQL檢索數據庫獲得對象的存儲信息,通過存儲信息獲得多個對象并將對象返回給客戶端,其中數據庫存儲有對象的屬性信息,在對象創建、修改和刪除時更新。該方法無需遍歷存儲空間中的所有對象直接獲得對象存儲信息,由此提高了系統的整體效率。且由于對象信息中支持通配符設定,可以一次性檢索多個滿足條件的對象數據,避免某些場景下客戶端為獲得對象數據需提交多個對象請求,進一步提高系統的整體效率。本公開同時提供支持具有上述檢索方法的對象存儲系統。
【專利說明】
對象檢索方法和對象存儲系統
技術領域
[0001 ]本公開涉及云存儲領域,具體涉及一種對象檢索方法和對象存儲系統。
【背景技術】
[0002]對象存儲在互聯網的大潮中受到了廣發關注,并得到了迅速的發展。對象存儲與文件存儲不同,對象不以目錄分層的結構進行組織。每個對象都位于被稱為存儲池的扁平的空間的相同層級,每一級的每個元素在存儲系統中都有唯一的標識,用戶通過這個標識來訪問容器或者對象。采用扁平的數據組織結構拋棄了嵌套的文件夾,避免維護龐大的目錄樹。在大數據和互聯網時代,存儲的文件/對象超過上百萬個,單位時間內的訪問次數和并發訪問量也達到了前所未有的量級,在這種情況下,目錄樹會給存儲系統帶來很大的開銷和諸多問題,成為系統的瓶頸。另外一個讓對象存儲煥發生命力的因素是,對象存儲不再提供POSIX兼容的接口(如open,close,read ,write等),而是可以非常方便地通過HTTPRestful API接口和對象進行交互,通過PUT和GET進行上傳下載,通過DELETE進行刪除。
[0003]在對象存儲中,因為用戶的數據全部存儲在遠端,用戶如果想對自己的文件進行查找,會非常麻煩,用戶需要采用遍歷的方式對存儲空間(bucket)內的全部對象進行一次遍歷操作,獲得所有的文件列表,并根據這個列表做一次檢索,以獲得自己想查找的對象,這里頭有三個比較大的開銷,第一是存儲空間(bucket)遍歷時,對于每一次HTTP請求,對象存儲服務端最多返回給用戶的對象個數是有數額限制的(通常是1000個),如果用戶的存儲空間(bucket)內的數據遍歷操作超過了這個限額,則需要發起多個HTTP請求,因此這個動作通常是很慢的,第二,則對象存儲集群服務端需要先將存儲空間(bucket)內所有的對象名封裝成一個xml文件返回給用戶,用戶解析這個xml文件也需要消耗時間,況且用戶需要解析的xml文件是跟用戶對象數據成正比的,第三,解析完xml之后,用戶還需要從很多文件中去檢索需要查找的文件,這也會帶來開銷。顯然,用戶需要一個更好的按對象名進行檢索的 AP I。
[0004]另外,從服務端的角度看,服務端對于存儲空間(bucket)遍歷請求也需要消耗很多資源去進行所有對象名的封裝,以及大量帶寬向用戶發送數據,這些資源實際上是浪費掉的。
【發明內容】
[0005]有鑒于此,本公開提供一種對象檢索方法和對象存儲系統,以至少解決上述問題之一O
[0006]根據本公開的第一方面,本公開提供一種對象檢索方法,包括:建立從客戶端到云存儲端的通信連接;接收所述客戶端的對象請求,所述對象請求中包含存儲空間標識符和對象信息;根據所述存儲空間標識符和所述對象信息生成檢索SQL;通過所述檢索SQL檢索數據庫,獲取對象存儲信息;根據所述對象存儲信息獲取多個對象;以及將所述多個對象返回給所述客戶端;
[0007]其中,所述云存儲端存儲有多個存儲空間和多個對象,每一所述對象都存儲在一個所述存儲空間中,所述存儲空間標識符為一個所述存儲空間的唯一標識,所述數據庫存儲有所述云存儲端的多個對象的屬性信息。
[0008]優選地,還包括:在創建、修改或刪除一個對象時,對應增加、更新或刪除所述數據庫的記錄。
[0009]優選地,所述對象信息為正則表達式。
[0010]優選地,所述正則表達式包含第一字符和第二字符,所述第一字符為元字符,所述第二字符用于匹配對象名的英文或數字字符。
[0011 ]優選地,所述數據庫為內存型數據庫。
[0012]根據本公開的第二方面,本公開提供一種對象存儲系統,包括多個客戶端和云存儲端,
[0013]所述客戶端包括:
[0014]和所述云存儲端建立通信連接;提交對象請求,所述對象請求中包含存儲空間標識符和對象信息;以及接受所述云存儲端返回的多個對象;
[0015]所述云存儲端包括:
[0016]建立和所述客戶端的通信連接;接收所述對象請求;根據所述存儲空間標識符和所述對象信息生成檢索SQL;
[0017]通過所述檢索SQL檢索數據庫,獲取對象存儲信息;根據所述對象存儲信息獲取多個對象;以及將所述多個對象返回給所述客戶端;
[0018]其中,所述云存儲端存儲有多個存儲空間和多個對象,每一所述對象都存儲在一個所述存儲空間中,所述存儲空間標識符為一個所述存儲空間的唯一標識,所述數據庫存儲有所述云存儲端的多個對象的屬性信息。
[0019]優選地,所述云存儲端還包括:在創建、修改或刪除一個對象時,對應增加、更新或刪除所述數據庫的記錄。
[0020]優選地,所述對象信息為正則式。
[0021]優選地,所述正則表達式包含第一字符和第二字符,所述第一字符為元字符,所述第二字符為用于匹配對象名的英文或數字字符。
[0022]優選地,所述數據庫為內存型數據庫。
[0023]在本公開實施例中,提供了一種對象存儲系統中檢索對象的方法,根據對象請求中的存儲空間標識符和對象信息生成檢索SQL中的檢索條件,通過檢索SQL檢索數據庫獲得對象的存儲信息,通過存儲信息獲得多個對象并將對象返回給客戶端,其中數據庫存儲有對象的屬性信息,在對象創建、修改和刪除時更新。該方法無需遍歷存儲空間中的所有對象直接獲得對象存儲信息,由此提高了系統的整體效率。且由于對象信息中支持通配符設定,可以一次性檢索多個滿足條件的對象數據,避免某些場景下客戶端為獲得對象數據需提交多個對象請求,進一步提高系統的整體效率。本公開同時提供支持具有上述檢索方法的對象存儲系統。
【附圖說明】
[0024]通過參照以下附圖對本公開實施例的描述,本公開的上述以及其它目的、特征和優點將更為清楚,在附圖中:
[0025]圖1是根據本公開實施例的對象存儲系統的示意圖;
[0026]圖2是根據本公開實施例的對象檢索方法的流程圖;
[0027]圖3是根據本公開實施例的客戶端和云存儲端建立通信連接的示意圖。
【具體實施方式】
[0028]以下基于實施例對本公開進行描述,但是本公開并不僅僅限于這些實施例。在下文對本公開的細節描述中,詳盡描述了一些特定的細節部分。對本領域技術人員來說沒有這些細節部分的描述也可以完全理解本公開。為了避免混淆本公開的實質,公知的方法、過程、流程沒有詳細敘述。另外附圖不一定是按比例繪制的。
[0029]在本公開的描述中,需要理解的是,術語“第一”、“第二”等僅用于描述目的,而不能理解為指示或暗示相對重要性。
[0030]圖1是根據本公開實施例的對象存儲系統的示意圖。所述對象系統包括客戶端100和云存儲端101。這里,客戶端可以是一個手機APP,或視頻系統、電商系統的前端或后端程序。云存儲端則可以包括軟硬件結合的云服務系統。
[0031]客戶端100和云存儲端101建立通信連接,通過該通信連接發送請求,云存儲端接收到該請求后,處理請求后將相關的數據返回給客戶端100。這里,可以把云存儲端的存儲區域看作一個網絡SAN(Storage Area Network),即一個集中式管理的高速存儲網絡,由多供應商存儲系統、存儲管理軟件、應用程序服務器和網絡硬件組成。云存儲端使用存儲空間(bucket)和對象對數據進行存儲。可以將存儲空間(bucket)理解為容器,每個對象都存放在一個容器中,如圖1中的102所示,云存儲端將存儲區域分為若干個bucket(大小相等),每個bucket中存放著多個對象。bucket使用存儲空間標識符作為唯一標識,由于對象的大小不同,所以即使相同容量的bucket存放的對象個數也不同。
[0032]優選地,如圖1所示,云存儲端101還包括一個數據庫103,存儲對象和存儲空間的關聯信息,如圖上I示出的數據庫記錄表示存儲空間標識符I的bucket中存儲有對象I,對象2,對象3,并記錄了每個對象在bucket中的存儲位置。這樣,在通過對象名稱查找對象時,不需要遍歷bucket中的所有對象,直接檢索數據庫103即可獲得對象信息,由此減輕云存儲端的性能壓力,提高整體性能。
[0033]圖2是根據本公開實施例的對象檢索方法的流程圖。所述檢索方法包括步驟201-206。
[0034]在步驟201中,建立從客戶端到云存儲端的通信連接。
[0035]圖3示出了一個手機APP和云存儲端建立安全通信連接的過程。標記30為客戶端,標記31為權限管理服務器,通過客戶端訪問權限管理服務器。當需要進行云端存儲時,客戶端通過步驟301向權限管理服務器發送一個云端授權請求,權限管理服務器接收后,向云存儲端轉發,云存儲端進行校驗后,返回臨時授權ID或訪問令牌(Access token),權限管理服務器接收到該授權ID或訪問令牌,返回給客戶端。客戶端將該授權ID或訪問令牌緩存在本地,并通過該授權ID或訪問令牌和云存儲端進行通信連接。為了保證授權ID或訪問令牌不被濫用或竊取,該類授權ID或訪問令牌一般都設有時間限制,過了預定時間自動失效。
[0036]在步驟202中,接收客戶端的對象請求,對象請求中包含存儲空間標識符和對象信息。
[0037]對象信息可以為和對象名稱、對象類型、對象存儲的數據相關的各類信息。優選地,對象信息為正則式。例如,用于匹配對象名稱的正則式,形式類似于“myob ject*”,其中
字符為元字符(元字符為正則式中具有特殊的含義,如*,~,!,@,#等),“myobject”為普通字符。“myob ject*” 表示以 “myob ject” 打頭的對象名稱,myob ject I,myob ject2,myob jectsl等都包含其中。
[0038]在步驟203中,根據存儲空間標識符和對象信息生成檢索SQL。
[0039]在步驟204中,通過檢索SQL檢索數據庫,獲取對象存儲信息。
[0040]這里,數據庫里存儲有存儲空間和對象的關聯信息,在對象創建、修改或刪除時,對應增加、更新或刪除數據庫中的記錄。由于存儲空間和對象表現為一對多的關系,所以可以采用關系型數據庫存儲。為了效率更高,也可以通過HASH表將數據存儲在內存中,例如,通過HASH MAP存儲對象信息。或者采用開源的REDIS存儲數據。
[0041 ]在步驟203和204中,根據存儲空間標識符和對象信息生成檢索SQL的檢索條件,類似where object like“object%”and bracketld= “bracket”。通過檢索SQL獲得滿足條件的對象的存儲信息,即獲取到對象在存儲空間中的存儲位置。如果沒有,則返回給用戶無數據。
[0042]在步驟205中,根據對象存儲信息獲取多個對象。
[0043]在步驟206中,將多個對象返回給客戶端。
[0044]在步驟205和206中,通過對象的存儲信息獲得對象,并將對象返回給客戶端。
[0045]在本公開實施例中,提供了一種在對象存儲系統中檢索對象的方法,根據對象請求中的存儲空間標識符和對象信息生成檢索SQL中的檢索條件,通過檢索SQL檢索數據庫獲得對象的存儲信息,通過存儲信息獲得多個對象并將對象返回給客戶端,其中數據庫存儲有對象的屬性信息,在對象創建、修改和刪除時更新。該方法無需遍歷bucket中的所有對象直接獲得對象存儲信息,由此提高了系統的整體效率。且由于對象信息中支持通配符設定,可以一次性檢索多個滿足條件的對象數據,避免某些場景下客戶端需提交多個對象請求,進一步提高系統的整體效率。本公開同時提供支持具有上述檢索方法的對象存儲系統。
[0046]附圖中的流程圖、框圖圖示了本公開實施例的系統、方法、裝置的可能的體系框架、功能和操作,流程圖和框圖上的方框可以代表一個、程序段或僅僅是一段代碼,所述、程序段和代碼都是用來實現規定邏輯功能的可執行指令。也應當注意,所述實現規定邏輯功能的可執行指令可以重新組合,從而生成新的和程序段。因此附圖的方框以及方框順序只是用來更好的圖示實施例的過程和步驟,而不應以此作為對發明本身的限制。
[0047]系統的各個或單元可以通過硬件、固件或軟件實現。軟件例如包括采用JAVA、C/C++/C#、SQL等各種編程語言形成的編碼程序。雖然在方法以及方法圖例中給出本公開實施例的步驟以及步驟的順序,但是所述步驟實現規定的邏輯功能的可執行指令可以重新組合,從而生成新的步驟。所述步驟的順序也不應該僅僅局限于所述方法以及方法圖例中的步驟順序,可以根據功能的需要隨時進行調整。例如將其中的某些步驟并行或按照相反順序執行。
[0048]根據本公開的系統和方法可以部署在單個或多個服務器上。例如,可以將不同的分別部署在不同的服務器上,形成專用服務器。或者,可以在多個服務器上分布式部署相同的功能單元、或系統,以減輕負載壓力。所述服務器包括但不限于在同一個局域網以及通過Internet連接的多個PC機、PC服務器、刀片機、超級計算機等。
[0049]以上所述僅為本公開的優選實施例,并不用于限制本公開,對于本領域技術人員而言,本公開可以有各種改動和變化。凡在本公開的精神和原理之內所作的任何修改、等同替換、改進等,均應包含在本公開的保護范圍之內。
【主權項】
1.一種對象檢索方法,包括: 建立從客戶端到云存儲端的通信連接; 接收所述客戶端的對象請求,所述對象請求中包含存儲空間標識符和對象信息; 根據所述存儲空間標識符和所述對象信息生成檢索SQL; 通過所述檢索SQL檢索數據庫,獲取對象存儲信息; 根據所述對象存儲信息獲取多個對象;以及 將所述多個對象返回給所述客戶端; 其中,所述云存儲端存儲有多個存儲空間和多個對象,每一所述對象都存儲在一個所述存儲空間中,所述存儲空間標識符為一個所述存儲空間的唯一標識,所述數據庫存儲有所述云存儲端的多個對象的屬性信息。2.根據權利要求1所述的對象檢索方法,還包括:在創建、修改或刪除一個對象時,對應增加、更新或刪除所述數據庫的記錄。3.根據權利要求1所述的對象檢索方法,其中,所述對象信息為正則表達式。4.根據權利要求3所述的對象檢索方法,其中,所述正則表達式包含第一字符和第二字符,所述第一字符為元字符,所述第二字符用于匹配對象名的英文或數字字符。5.根據權利要求1所述的對象檢索方法,其中,所述數據庫為內存型數據庫。6.一種對象存儲系統,包括多個客戶端和云存儲端, 所述客戶端包括: 和所述云存儲端建立通信連接; 提交對象請求,所述對象請求中包含存儲空間標識符和對象信息;以及 接受所述云存儲端返回的多個對象; 所述Ζ5Γ存儲?而包括: 建立和所述客戶端的通信連接; 接收所述對象請求; 根據所述存儲空間標識符和所述對象信息生成檢索SQL; 通過所述檢索SQL檢索數據庫,獲取對象存儲信息; 根據所述對象存儲信息獲取多個對象;以及 將所述多個對象返回給所述客戶端; 其中,所述云存儲端存儲有多個存儲空間和多個對象,每一所述對象都存儲在一個所述存儲空間中,所述存儲空間標識符為一個所述存儲空間的唯一標識,所述數據庫存儲有所述云存儲端的多個對象的屬性信息。7.根據權利要求6所述的對象檢索系統,其中,所述云存儲端還包括:在創建、修改或刪除一個對象時,對應增加、更新或刪除所述數據庫的記錄。8.根據權利要求6所述的對象檢索系統,其中,所述對象信息為正則式。9.根據權利要求8所述的對象檢索系統,其中,所述正則表達式包含第一字符和第二字符,所述第一字符為元字符,所述第二字符為用于匹配對象名的英文或數字字符。10.根據權利要求6所述的對象檢索系統,其中,所述數據庫為內存型數據庫。
【文檔編號】G06F17/30GK105930506SQ201610305909
【公開日】2016年9月7日
【申請日】2016年5月10日
【發明人】吳興義
【申請人】樂視控股(北京)有限公司, 樂視云計算有限公司