用于自主存儲器搜索的方法及系統(tǒng)的制作方法
【專利說明】用于自主存儲器搜索的方法及系統(tǒng)
[0001 ] 優(yōu)先權(quán)申請案
[0002]本申請案主張2013年8月13日申請的第13/965,739號優(yōu)先權(quán)美國申請案的權(quán)益,所述申請案以全文引用的方式并入本文中。
【背景技術(shù)】
[0003]通常提供存儲器裝置作為計算機(jī)或其它電子裝置中的內(nèi)部半導(dǎo)體集成電路。存在許多不同類型的存儲器,包含隨機(jī)存取存儲器(RAM)、只讀存儲器(R0M)、動態(tài)隨機(jī)存取存儲器(DRAM)、同步動態(tài)隨機(jī)存取存儲器(SDRAM)及非易失性(例如快閃)存儲器。
[0004]若干非易失性存儲器裝置可經(jīng)組合以制造可仿效計算機(jī)系統(tǒng)中的機(jī)械操作硬盤驅(qū)動器的固態(tài)驅(qū)動器(SSD)。歸因于缺乏活動部件,固態(tài)驅(qū)動器可提供比機(jī)械硬盤驅(qū)動器更快的存取及更高可靠性。
[0005]至少部分歸因于計算機(jī)系統(tǒng)的提高性能,存儲器及固態(tài)驅(qū)動器制造者始終面臨提尚其存儲器的性能以試圖與計算機(jī)系統(tǒng)性能提尚保持同步的壓力。存儲器制造者提尚存儲器性能的一種方式是減少存儲器讀取/寫入次數(shù)。然而,存儲器技術(shù)的改進(jìn)可能妨礙所述效力。提高存儲器性能的另一方式可為使存儲器及SSD的搜索更加有效。
【附圖說明】
[0006]圖1說明數(shù)據(jù)庫存儲系統(tǒng)的實(shí)施例的框圖。
[0007]圖2說明根據(jù)圖1的實(shí)施例的存儲器系統(tǒng)的實(shí)施例的框圖。
[0008]圖3A及38說明數(shù)據(jù)庫存儲格式的實(shí)施例的圖式。
[0009]圖4A及4B說明主機(jī)與存儲器之間的通信的實(shí)施例的協(xié)議流程圖。
[0010]圖5說明用于自主存儲器搜索的方法的實(shí)施例的功能框圖。
[0011 ]圖6A及6B說明用于自主存儲器搜索的方法的實(shí)施例的流程圖。
[0012]圖7說明具有多個存儲器系統(tǒng)的系統(tǒng)的框圖。
【具體實(shí)施方式】
[0013]在以下詳細(xì)描述中,參考形成本發(fā)明的一部分的附圖,且在附圖中以說明方式展示特定實(shí)施例。在圖式中,相似符號描述貫穿若干視圖的實(shí)質(zhì)上類似組件??衫闷渌鼘?shí)施例且可在不背離本發(fā)明的范圍的情況下作出結(jié)構(gòu)、邏輯及電氣改變。因此,以下詳細(xì)描述不應(yīng)被視為限制意義。
[0014]隨后僅出于說明的目的而參考固態(tài)驅(qū)動器(SSD)。如本文中所揭示,自主存儲器搜索操作可同樣適當(dāng)應(yīng)用于包含半導(dǎo)體存儲器、光學(xué)存儲器或磁存儲器的任何類型的存儲器裝置或存儲器裝置群組。因此,本發(fā)明不限于SSD的搜索。
[0015]隨后,也參考結(jié)構(gòu)化查詢語言(SQL)及術(shù)語“MySQL”。如所屬領(lǐng)域中所知,SQL是指經(jīng)設(shè)計以管理關(guān)系型數(shù)據(jù)庫的專用編程語言。術(shù)語“MySQL”是指作為服務(wù)器運(yùn)行以提供對若干數(shù)據(jù)庫的多用戶存取的品牌關(guān)系型數(shù)據(jù)庫管理系統(tǒng)。MySQL?數(shù)據(jù)庫系統(tǒng)通??杀惶卣骰癁榻Y(jié)構(gòu)化數(shù)據(jù)庫。因此,本文對SQL及MySQL?數(shù)據(jù)庫的參考僅出于說明的目的。本文所揭示的自主存儲器搜索方法的實(shí)施例可同樣適當(dāng)應(yīng)用于存儲結(jié)構(gòu)化數(shù)據(jù)及非結(jié)構(gòu)化數(shù)據(jù)兩者的其它類型的數(shù)據(jù)庫。舉例來說,任何關(guān)鍵值存儲數(shù)據(jù)庫(例如NoSQL數(shù)據(jù)庫)可使用自主存儲器搜索方法。
[0016]如本文所使用,結(jié)構(gòu)化數(shù)據(jù)可為被組織成離散記錄(例如元素)的數(shù)據(jù)。所述記錄可由一或多個字段組成。結(jié)構(gòu)數(shù)據(jù)的實(shí)例可為被劃分成名字、地址及識別信息的記錄。
[0017]如本文所使用,非結(jié)構(gòu)化數(shù)據(jù)可為未組織成離散記錄(例如元素)的數(shù)據(jù)。非結(jié)構(gòu)化數(shù)據(jù)的實(shí)例可為來自書籍的文字、數(shù)字圖像或人類語言的數(shù)字表示。
[0018]圖1說明可包含主機(jī)130及存儲器系統(tǒng)(例如SSD)108的數(shù)據(jù)庫系統(tǒng)的實(shí)施例的框圖。主機(jī)130可為計算機(jī)系統(tǒng)或CPU。存儲器系統(tǒng)(例如SSD)108可為單一非易失性存儲器裝置或組合成單一單元(例如SSD)的多個非易失性存儲器裝置。
[0019]主機(jī)130可包括可提供數(shù)據(jù)庫系統(tǒng)中的不同數(shù)據(jù)庫功能的多個客戶端(例如客戶端軟件、程序)100。舉例來說,這些客戶端100可包含數(shù)據(jù)庫備份例程(例如mysqldump例程)、表維護(hù)例程(例如mysqlcheck例程)、命令行接口例程(例如mysqlimport例程)及/或其它數(shù)據(jù)庫功能。
[0020]客戶端100與服務(wù)器102通信。服務(wù)器102可為mysqlcKMySQL服務(wù)器)或一些其它類型的服務(wù)器。服務(wù)器102可為數(shù)據(jù)庫系統(tǒng)中的主程序,其管理對存儲于用于客戶端100及主機(jī)(例如中央處理單元、計算機(jī)、控制器)的存儲器系統(tǒng)108中的數(shù)據(jù)庫的存取。
[0021]存儲引擎104在主機(jī)130的服務(wù)器102與操作系統(tǒng)(OS)文件系統(tǒng)協(xié)議106之間通信。存儲引擎104通過主機(jī)130的OS文件系統(tǒng)106而將搜索準(zhǔn)則及搜索關(guān)鍵字傳輸?shù)酱鎯ζ?08,且通過主機(jī)130的OS文件系統(tǒng)106而從存儲器系統(tǒng)108接收對搜索的響應(yīng)。隨后論述搜索準(zhǔn)則及搜索關(guān)鍵字。
[0022]典型的現(xiàn)有技術(shù)存儲引擎可在存儲器中的數(shù)據(jù)庫的典型搜索期間傳送來自所述數(shù)據(jù)庫的大量原始數(shù)據(jù)。舉例來說,在含有表中的數(shù)千條記錄的數(shù)據(jù)庫的典型現(xiàn)有技術(shù)搜索中,將所述記錄的大多數(shù)或全部從所述存儲器讀取到(PU的主存儲器以由CPU處理。
[0023]用于自主存儲器搜索的方法的存儲引擎104可將搜索準(zhǔn)則及搜索關(guān)鍵字傳送到存儲器系統(tǒng)108,且僅接收回由使用搜索準(zhǔn)則及搜索關(guān)鍵字的數(shù)據(jù)庫搜索所致的搜索結(jié)果。因此,存儲引擎104可不必剖析大量原始數(shù)據(jù)且CPU可不必使用寶貴時間來執(zhí)行搜索準(zhǔn)則及搜索關(guān)鍵字與原始數(shù)據(jù)的比較。此可導(dǎo)致使用自主存儲器搜索的方法的系統(tǒng)的性能增強(qiáng)。此也可導(dǎo)致總電力節(jié)約、成本節(jié)約及形狀因子優(yōu)點(diǎn)。
[0024]存儲器系統(tǒng)108可包含可存儲待搜索的數(shù)據(jù)庫的任何類型的存儲器。圖2說明存儲器系統(tǒng)108 (例如SSD)的實(shí)施例的框圖。舉例來說,多個非易失性存儲器裝置(例如快閃存儲器)可經(jīng)組合以形成存儲器塊203。存儲器系統(tǒng)108(例如SSD)可具有耦合到存儲器塊203以控制存儲器系統(tǒng)108(例如SSD)的操作的控制器(例如處理器)201。根據(jù)圖4到6中所描述的協(xié)議及方法,控制器201可包括用于指導(dǎo)存儲引擎104的活動的模塊210(例如固件或軟件)。
[0025]圖3A說明數(shù)據(jù)庫存儲格式的實(shí)施例的圖式。在所說明的實(shí)施例中,數(shù)據(jù)庫可存儲于表狀格式300中。所說明的表300包含標(biāo)頭301及‘η’條記錄(例如記錄(O)到記錄(η-1))。每一記錄可指向表300中的下一記錄,使得當(dāng)表300由后一記錄更新時,前一記錄可經(jīng)更新以指向所述后一記錄。
[0026]標(biāo)頭301可包含描述表300的字段。舉例來說,標(biāo)頭301可包含表300中的記錄的數(shù)目、每一記錄的長度、每記錄的字段數(shù)目及每一字段的長度。其它實(shí)施例可包含標(biāo)頭301中的額外描述數(shù)據(jù)。
[0027]每一記錄(例如記錄(O)到記錄(n_l))303可包含待搜索的數(shù)據(jù)的多個字段(例如字段(O)到字段(m-1))。每一記錄303也可包含針對下一記錄的指針字段305。此指針字段305可為含有下一記錄的存儲器中的另一位置的邏輯地址。因此,記錄在存儲器中無需依序定位。
[0028]每一字段(例如字段(O)到字段(m-1))可包括存儲字段長度及字段數(shù)據(jù)的元素307。所述字段數(shù)據(jù)可包括待搜索的實(shí)際數(shù)據(jù)309。
[0029]圖3B說明數(shù)據(jù)庫存儲格式的另一實(shí)施例。此實(shí)施例也可呈表狀格式310。然而,圖3A及3B的格式僅出于說明的目的。本發(fā)明的實(shí)施例不受限于任何一種格式(表狀或其它格式)。
[0030]表310包括表標(biāo)頭312及‘η’個記錄群組(例如記錄群組(O)到記錄群組(η-1))。每一記錄群組可指向表300中的下一記錄群組,使得當(dāng)表310由后一記錄群組更新時,前一記錄群組可經(jīng)更新以指向所述后一記錄群組。
[0031]標(biāo)頭312可包含描述表310的字段。舉例來說,標(biāo)頭312可包含若干記錄群組、記錄群組長度、記錄數(shù)目、每記錄的字段數(shù)、字段長度、第一記錄群組的地址(例如邏輯地址、物理地址)及/或表的版本號碼。
[0032]每一記錄群組(例如記錄群組(O)到記錄群組(n_l))314可包含‘m’條記錄(例如記錄(O)到記錄(m-1))。每一記錄群組314可包含針對下一記錄群組314的指針320及用于每一記錄群組314中的記錄321以及記錄316的數(shù)目的字段。指針320可為含有下一記錄的存儲器中的另一位置的邏輯地址。因此,記錄群組在存儲器中無需依序定位。
[0033]每一記錄316可包括數(shù)據(jù)的‘k’個字段318(例如字段(O)到字段(k-Ι))。每一字段318可包括待搜索的實(shí)際數(shù)據(jù)。
[0034]圖4A及4B說明主機(jī)與存儲器系統(tǒng)之間的通信的兩個實(shí)施例的協(xié)議流程圖。這些實(shí)施例出于說明的目的,此僅是因?yàn)槠渌鼘?shí)施例可使用替代方法。
[0035]圖4A說明自主存儲器搜索的方法期間的主機(jī)(例如CPU、計算機(jī))130與存儲器系統(tǒng)108(如先前參考圖1所描述)之間的通信的實(shí)施例的協(xié)議流程圖。在所說明的實(shí)施例中,可由存儲引擎104發(fā)出三個命令以執(zhí)行搜索。舉例來說,寫入命令(例如小型計算機(jī)系統(tǒng)接口(SCSI)寫入命令)及接