著兩個或兩個以上讀取命令可用于將搜索關鍵字及搜索準則轉(zhuǎn)移到存儲器系統(tǒng)108且檢索數(shù)據(jù)庫搜索的結果。
[0036]存儲器系統(tǒng)108中的數(shù)據(jù)庫的搜索可由一或多個搜索關鍵字(例如模式)、搜索準貝IJ(例如比較準則)及待搜索的數(shù)據(jù)集(例如數(shù)據(jù)庫)界定??赏ㄟ^比較搜索關鍵字與作為整體的數(shù)據(jù)集或數(shù)據(jù)的一系列子集而執(zhí)行搜索。當由搜索準則限定的搜索關鍵字的比較匹配數(shù)據(jù)集的至少一部分時,可進行匹配。搜索的結果可為無匹配、一個匹配、或多個匹配。
[0037]搜索準則可包含例如“等于”、“小于”、“大于”、“不等于”、“小于或等于”或“大于或等于”的運算子。另外,任何邏輯運算子(例如“與(AND)”、“或(OR)”、“非(NOT)”)及任何邏輯運算子的組合可單獨或與其它運算子組合地用于搜索數(shù)據(jù)庫。
[0038]可由將初始命令(例如SCSI寫入命令)401發(fā)出到存儲器系統(tǒng)108的主機130起始搜索(例如,可由存儲引擎(例如圖1的存儲引擎104)發(fā)出命令)。初始命令401可包含搜索準則及搜索關鍵字的指不。
[0039]初始命令(例如SCSI寫入命令)中的搜索準則及搜索關鍵字的指示可為所述命令的特定字段中的位集,其指示:由所述命令隱含且與所述命令相關聯(lián)的緩沖區(qū)含有搜索準則及搜索關鍵字。舉例來說,在SCSI寫入命令中,傳入邏輯塊地址(LBA)的高階位可經(jīng)設定以指示所述緩沖區(qū)中的隊列搜索準則及搜索關鍵字。
[0040]存儲器系統(tǒng)108接收初始命令401且讀取緩沖區(qū)中的隊列搜索準則及搜索關鍵字的指示。接著,存儲器系統(tǒng)108可將確認402回復給主機130。所述確認可被視為任選的,此是因為主機130可簡單地假定:存儲器系統(tǒng)108接收到初始命令401。
[0041]接著,主機130(例如存儲引擎)可將第二命令(例如SCSI讀取)403發(fā)出到存儲器系統(tǒng)108以指示準備接收搜索結果。在無來自存儲器系統(tǒng)108的響應的情況下,第二命令403可保持未處理,直到存儲器系統(tǒng)108已完成搜索或已填滿分配給搜索結果的其內(nèi)部緩沖區(qū)。一旦緩沖區(qū)已填滿搜索結果或搜索到達數(shù)據(jù)庫的末尾,存儲器系統(tǒng)108就可將響應(例如感測數(shù)據(jù))405發(fā)出到主機130以指示搜索已完成。如果存在且如果搜索已完成或緩沖區(qū)確實已滿且需要被讀取以清空緩沖區(qū),此響應(例如感測數(shù)據(jù))405就可指示從搜索找到的結果的數(shù)目。
[0042]如果來自存儲器系統(tǒng)108的響應405指示非零數(shù)目個搜索結果,主機130就可響應于此指示而發(fā)出另一命令(例如SCSI讀取)407以從存儲器系統(tǒng)緩沖區(qū)檢索結果。接著,存儲器系統(tǒng)108可發(fā)出可含有來自緩沖區(qū)的搜索結果的另一響應(例如感測數(shù)據(jù))409。
[0043]如果來自主機130的第一讀取命令403的結果指示搜索尚未完成,主機130就可返回到此讀取步驟403且重復過程,直到指示從存儲器系統(tǒng)108進行的搜索已完成。
[0044]圖4B說明自主存儲器搜索的方法期間的主機(例如CPU、計算機)130與存儲器系統(tǒng)108(如先前參考圖1所描述)之間的通信的另一實施例的協(xié)議流程圖。在所說明的實施例中,可由存儲引擎104發(fā)出三個命令以執(zhí)行搜索。舉例來說,寫入命令(例如小型計算機系統(tǒng)接口(SCSI)寫入命令)及接著兩個或兩個以上讀取命令可用于將搜索關鍵字及搜索準則轉(zhuǎn)移到存儲器系統(tǒng)108且檢索數(shù)據(jù)庫搜索的結果。
[0045]可由將初始命令(例如SCSI寫入命令)410發(fā)出到存儲器系統(tǒng)108的主機130起始搜索(例如,可由存儲引擎(例如圖1的存儲引擎104)發(fā)出命令)。初始命令410可包含搜索準則及搜索關鍵字的指不。
[0046]初始命令(例如SCSI寫入命令)中的搜索準則及搜索關鍵字的指示可為所述命令的特定字段中的位集,其指示:由所述命令隱含且與所述命令相關聯(lián)的緩沖區(qū)含有搜索準則及搜索關鍵字。舉例來說,在SCSI寫入命令中,傳入邏輯塊地址(LBA)的高階位可經(jīng)設定以指示所述緩沖區(qū)中的隊列搜索準則及搜索關鍵字。
[0047]存儲器系統(tǒng)108接收初始命令410且讀取緩沖區(qū)中的隊列搜索準則及搜索關鍵字的指示。接著,存儲器系統(tǒng)108可將確認412回復給主機130。所述確認可被視為任選的,此是因為主機130僅可假定:存儲器系統(tǒng)108接收初始命令410。
[0048]在無來自存儲器系統(tǒng)108的響應的情況下,初始命令410可保持未處理,直到存儲器系統(tǒng)108已完成搜索或已填滿分配給搜索結果的其內(nèi)部緩沖區(qū)。一旦緩沖區(qū)已由搜索結果填滿或搜索到達數(shù)據(jù)庫的末尾,存儲器系統(tǒng)108就可將響應(例如感測數(shù)據(jù))414發(fā)出到主機130以指示搜索已完成或響應于搜索請求搜索結果緩沖區(qū)已滿。如果存在且如果搜索已完成或緩沖區(qū)確實已滿且需要被讀取以清空緩沖區(qū),此響應(例如感測數(shù)據(jù))414就可指示從搜索找到結果的數(shù)目。
[0049]存儲器系統(tǒng)108可使用實際搜索結果416(例如感測數(shù)據(jù))來跟進響應414,假定具有非零個搜索結果。主機130可使用命令418(例如SCSI讀取命令)來確認搜索結果的正確接收。
[0050]存儲器系統(tǒng)108可讓與與搜索相關聯(lián)的緩沖區(qū)??赏ㄟ^來自存儲器系統(tǒng)108的響應(例如感測數(shù)據(jù))420向主機108指示此情況。
[0051]在圖4A及4B中所說明的協(xié)議流程圖期間,存儲器系統(tǒng)108仍可繼續(xù)正常操作。因此,存儲器系統(tǒng)108仍可對來自主機130的正常讀取命令及寫入命令作出響應。
[0052]圖5說明用于自主存儲器搜索的方法的實施例的功能框圖??捎纱鎯ζ飨到y(tǒng)108的控制器201執(zhí)行此功能框圖的執(zhí)行。
[0053]可從主機通過存儲器總線(例如序列先進技術附接(SATA))而接收命令(例如搜索請求、讀取)。可由剖析塊501檢查所接收的命令以確定命令的類型。
[0054]如果所接收的命令是搜索請求(例如圖4的SCSI寫入命令401),其就可在請求先進先出(FIFO)緩沖區(qū)503中排入隊列以供搜索處理線程512使用。緩沖區(qū)503可存儲搜索關鍵字及搜索準則。如果所接收的命令被剖析塊501確定為兩個隨后命令(例如圖4的SCSI讀取403、407)中的一者,這些命令的指示就可存儲于兩個未處理請求緩沖區(qū)505、506中的一者中。
[0055]連續(xù)緩沖區(qū)505可存儲第二命令(例如圖4中的SCSI讀取403)的指示,所述指示請求存儲器系統(tǒng)一旦緩沖區(qū)已滿或搜索已完成就作出響應。此緩沖區(qū)505耦合到發(fā)送響應信息塊507,使得當響應信息FIFO 508含有指示搜索完成(例如,響應FIFO 510、511已滿,整個數(shù)據(jù)庫已被搜索)的數(shù)據(jù)時,發(fā)送響應信息塊507可封裝返回到主機的信息響應(例如圖4中的響應405)以指示緩沖區(qū)已滿或整體數(shù)據(jù)庫已被搜索。
[0056]獲得響應緩沖區(qū)506可存儲第三命令(例如圖4中的SCSI讀取407)的指示,所述指示請求來自存儲器系統(tǒng)的搜索結果。此緩沖區(qū)508耦合到發(fā)送響應塊509,使得當從主機接收第二命令(例如圖4中的SCSI讀取407)時,發(fā)送響應塊509可封裝存儲于響應FIFO緩沖區(qū)510、511中的搜索結果且通過存儲器總線將數(shù)據(jù)發(fā)送到主機。一旦這些緩沖區(qū)510、511已空,指示就可存儲于響應緩沖區(qū)自由列表513中以對搜索處理線程512指示:如果搜索仍在繼續(xù),則線程512可繼續(xù)填充緩沖區(qū)510、511。
[0057]搜索處理線程512各自包括如從主機接收的單獨搜索。可通過使用多個不同搜索處理線程512而實質(zhì)上同時(例如實質(zhì)上并行、部分或完全重疊)執(zhí)行多個單獨搜索。
[0058]當從主機接收到起始命令(例如圖4中的SCSI寫入401)時,可將搜索準則及搜索關鍵字轉(zhuǎn)發(fā)到搜索處理線程512中的一者。接著,所述特定搜索處理線程512可存取數(shù)據(jù)庫記錄表(例如圖3)以根據(jù)搜索準則而比較搜索關鍵字與所存儲的記錄。每一搜索處理線程512可執(zhí)行具有不同搜索準則及搜索關鍵字的單獨搜索。
[0059]一旦搜索處理線程512中的一者已用來自搜索的結果填滿緩沖區(qū)510、511或已搜索整個數(shù)據(jù)庫(例如,搜索已完成),對何物完成的指示就可存儲于響應信息FIFO 508中。此指示可包含對所述指示所涉及的特定搜索的參考以及與是否緩沖區(qū)510、511確實已滿或搜索已完成相關的信息。接著,此指示可由發(fā)送響應信息塊507封裝且被發(fā)送到主機,如先前所論述。
[0060]圖5的功能塊可為存儲器系統(tǒng)108的部分且由存儲器系統(tǒng)中的控制器201執(zhí)行。功能塊可為硬件模塊與軟件/固件模塊的組合。因此,多個搜索處理線程512不僅實現(xiàn)多個并行搜索,且可由存儲器系統(tǒng)108執(zhí)行完成這些搜索的處理,此可減少主機130的工作負荷。
[0061]圖6A說明用于自主存儲器搜索的方法的實施例的流程圖。主機可將命令(例如SCSI寫入命令、搜索請求)傳輸?shù)酱鎯ζ飨到y(tǒng)以起始搜索601。此命令可包含與搜索關鍵字及搜索準則相關的指示。主機可從存儲器系統(tǒng)接收搜索請求已被接收的確認603。
[0062]接著,主機可將命令(例如SCSI讀取命令)發(fā)送到存儲器系統(tǒng)以對存儲器系統(tǒng)指示:主機已準備接收來自搜索請求的任何結果605??蓮拇鎯ζ飨到y(tǒng)接收可指示搜索已完成(例如,整個數(shù)據(jù)庫已被搜