本發(fā)明涉及數(shù)據(jù)處理技術(shù)領(lǐng)域,特別涉及一種關(guān)系型數(shù)據(jù)的搜索方法和裝置。
背景技術(shù):關(guān)系型數(shù)據(jù)庫(kù)是以關(guān)系模型為基礎(chǔ)建立的數(shù)據(jù)庫(kù),由于能夠較好的模擬現(xiàn)實(shí)世界中各種實(shí)體以及實(shí)體之間的關(guān)系而得到了廣泛的應(yīng)用。而如何從關(guān)系型數(shù)據(jù)庫(kù)中快速檢索到所需的數(shù)據(jù)一直是業(yè)界研究的重要課題之一。為了提高檢索效率,往往會(huì)為數(shù)據(jù)庫(kù)建立索引,由查詢條件利用索引來(lái)快速鎖定查詢數(shù)據(jù)范圍,最終返回查詢結(jié)果。目前市場(chǎng)流行的一種檢索方案為采用結(jié)構(gòu)化查詢語(yǔ)言(SQL)進(jìn)行檢索,在進(jìn)行數(shù)據(jù)檢索時(shí),輸入各種不同的關(guān)系條件,此關(guān)系條件將生成SQL語(yǔ)句的where條件,由SQL語(yǔ)句完成檢索并將結(jié)果返回給系統(tǒng)。然而,這種SQL檢索方案過(guò)度依賴數(shù)據(jù)庫(kù),當(dāng)數(shù)據(jù)庫(kù)壓力達(dá)到瓶頸時(shí),大量的SQL查詢會(huì)造成數(shù)據(jù)庫(kù)緩慢最終造成數(shù)據(jù)檢索緩慢。對(duì)于上述SQL檢索的缺陷,業(yè)界又提出了一種采用memcache,redis等高性能內(nèi)存緩存數(shù)據(jù)方案,支持鍵-值(Key-Value)的關(guān)系型數(shù)據(jù)。在進(jìn)行數(shù)據(jù)檢索時(shí),根據(jù)鍵Key獲取內(nèi)存中此鍵對(duì)應(yīng)的數(shù)據(jù),提高了訪問(wèn)性能。然而,這種檢索方案僅支持Key與Value這種一對(duì)一的查詢方式,無(wú)法根據(jù)查詢條件獲取查詢結(jié)果,查詢方式不靈活。
技術(shù)實(shí)現(xiàn)要素:本發(fā)明提供的一種關(guān)系型數(shù)據(jù)的搜索方法和裝置,以解決現(xiàn)有方案數(shù)據(jù)庫(kù)檢索時(shí)速度緩慢以及內(nèi)存檢索時(shí)查詢方式不靈活的問(wèn)題。為達(dá)到上述目的,本發(fā)明實(shí)施例采用了如下技術(shù)方案:本發(fā)明實(shí)施例提供了一種關(guān)系型數(shù)據(jù)的搜索方法,設(shè)置與各搜索條件對(duì)應(yīng)的數(shù)字編碼,利用至少一個(gè)搜索條件的數(shù)字編碼生成索引,根據(jù)索引和路 由配置在多個(gè)索引內(nèi)存中存儲(chǔ)關(guān)系型數(shù)據(jù)的鍵Key,所述方法包括:當(dāng)接收到的搜索條件中存在相應(yīng)的索引時(shí),根據(jù)該索引和所述路由配置確定該搜索條件所對(duì)應(yīng)的至少一個(gè)索引內(nèi)存,當(dāng)接收到的搜索條件中不存在相應(yīng)的索引時(shí),將任意索引內(nèi)存確定為該搜索條件所對(duì)應(yīng)的索引內(nèi)存;根據(jù)接收到的搜索條件從所確定的索引內(nèi)存中提取符合條件的搜索描述標(biāo)識(shí),其中,所述索引內(nèi)存中存儲(chǔ)搜索描述標(biāo)識(shí)及相對(duì)應(yīng)的Key,所述搜索描述標(biāo)識(shí)是由搜索條件的數(shù)字編碼生成的;利用搜索描述標(biāo)識(shí)獲取相應(yīng)的Key,并通過(guò)所獲取到的Key得到關(guān)系型數(shù)據(jù)的值Value。本發(fā)明實(shí)施例還提供了一種關(guān)系型數(shù)據(jù)的搜索裝置,所述裝置包括分布式構(gòu)建單元、索引搜索單元和數(shù)據(jù)獲取單元,其中,所述分布式構(gòu)建單元,用于設(shè)置與各搜索條件對(duì)應(yīng)的數(shù)字編碼,利用至少一個(gè)搜索條件的數(shù)字編碼生成索引,根據(jù)索引和路由配置在多個(gè)索引內(nèi)存中存儲(chǔ)關(guān)系型數(shù)據(jù)的鍵Key,所述索引內(nèi)存中存儲(chǔ)搜索描述標(biāo)識(shí)及相對(duì)應(yīng)的Key,所述搜索描述標(biāo)識(shí)是由搜索條件的數(shù)字編碼生成的;所述索引搜索單元,用于當(dāng)接收到的搜索條件中存在相應(yīng)的索引時(shí),根據(jù)該索引和所述路由配置確定該搜索條件所對(duì)應(yīng)的至少一個(gè)索引內(nèi)存,當(dāng)接收到的搜索條件中不存在相應(yīng)的索引時(shí),將任意索引內(nèi)存確定為該搜索條件所對(duì)應(yīng)的索引內(nèi)存;以及,根據(jù)接收到的搜索條件從所確定的索引內(nèi)存中提取符合條件的搜索描述標(biāo)識(shí);所述數(shù)據(jù)獲取單元,用于利用搜索描述標(biāo)識(shí)獲取相應(yīng)的Key,并通過(guò)所獲取到的Key得到關(guān)系型數(shù)據(jù)的值Value。本發(fā)明實(shí)施例的有益效果是:本發(fā)明實(shí)施例通過(guò)直接訪問(wèn)內(nèi)存提高了數(shù)據(jù)搜索的速度,并且能夠?qū)崿F(xiàn)根據(jù)搜索條件對(duì)內(nèi)存中關(guān)系型數(shù)據(jù)的搜索,顯著提高了搜索方式的靈活性,能夠滿足各種數(shù)據(jù)搜索場(chǎng)景的需求。并且,本方案采用一種分布式的結(jié)構(gòu),能夠在多個(gè)索引內(nèi)存分別執(zhí)行相應(yīng)數(shù)據(jù)的搜索,均衡了系統(tǒng)中的數(shù)據(jù)處理負(fù)荷,有助于提高數(shù)據(jù)搜索速度和 系統(tǒng)性能。附圖說(shuō)明圖1為本發(fā)明實(shí)施例一提供的一種關(guān)系型數(shù)據(jù)的搜索方法流程圖;圖2為本發(fā)明實(shí)施例三提供的一種關(guān)系型數(shù)據(jù)的搜索裝置結(jié)構(gòu)示意圖;圖3為本發(fā)明實(shí)施例三提供的應(yīng)用關(guān)系型數(shù)據(jù)的搜索裝置的系統(tǒng)結(jié)構(gòu)示意圖。具體實(shí)施方式為使本發(fā)明的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚,下面將結(jié)合附圖對(duì)本發(fā)明實(shí)施方式作進(jìn)一步地詳細(xì)描述。本發(fā)明實(shí)施例的技術(shù)構(gòu)思在于選擇某一搜索條件或者組合搜索條件來(lái)建立索引,將所建立的索引存儲(chǔ)在內(nèi)存(索引內(nèi)存)中。由于當(dāng)關(guān)系型數(shù)據(jù)容量較大時(shí),索引容量也會(huì)較大,為實(shí)現(xiàn)擴(kuò)容,建立配置表作為索引的路由配置,也就是將某一個(gè)索引對(duì)應(yīng)存儲(chǔ)到某一索引內(nèi)存中;而當(dāng)某一索引內(nèi)存訪問(wèn)壓力巨大或者其存儲(chǔ)的索引超過(guò)內(nèi)存上限時(shí),也需要實(shí)現(xiàn)擴(kuò)容,則將某一索引分別存儲(chǔ)在多個(gè)索引內(nèi)存中,這樣就完成了分布式搜索系統(tǒng)的構(gòu)建,當(dāng)然此系統(tǒng)也支持根據(jù)索引和關(guān)系型數(shù)據(jù)的鍵值進(jìn)行更新索引。參見圖1,為本發(fā)明實(shí)施例一提供的一種關(guān)系型數(shù)據(jù)的搜索方法,所述方法包括:11:設(shè)置與各搜索條件對(duì)應(yīng)的數(shù)字編碼,利用至少一個(gè)搜索條件的數(shù)字編碼生成索引,根據(jù)索引和路由配置在多個(gè)索引內(nèi)存中存儲(chǔ)關(guān)系型數(shù)據(jù)的鍵(Key);12:判斷當(dāng)前接收到的搜索條件中是否存在相應(yīng)的索引,若是,執(zhí)行步驟13a,若否,執(zhí)行步驟13b;13a:當(dāng)接收到的搜索條件中存在相應(yīng)的索引時(shí),根據(jù)該索引和所述路 由配置確定該搜索條件所對(duì)應(yīng)的至少一個(gè)索引內(nèi)存,進(jìn)入步驟14。13b:當(dāng)接收到的搜索條件中不存在相應(yīng)的索引時(shí),將任意一個(gè)或多個(gè)索引內(nèi)存確定為該搜索條件所對(duì)應(yīng)的索引內(nèi)存,進(jìn)入步驟14。14:根據(jù)接收到的搜索條件從所確定的索引內(nèi)存中提取符合條件的搜索描述標(biāo)識(shí),然后進(jìn)入步驟15;其中,所述索引內(nèi)存中存儲(chǔ)搜索描述標(biāo)識(shí)及相對(duì)應(yīng)的Key,所述搜索描述標(biāo)識(shí)是由搜索條件的數(shù)字編碼生成的。15:利用搜索描述標(biāo)識(shí)獲取相應(yīng)的Key,并通過(guò)所獲取到的Key得到關(guān)系型數(shù)據(jù)的值(Value)。在上述步驟14中,也可能出現(xiàn)根據(jù)搜索條件無(wú)法從所確定的索引內(nèi)存中提取出符合條件的搜索描述標(biāo)識(shí)的情況,這時(shí),可以直接返回失敗消息,在此,本發(fā)明各實(shí)施例中主要對(duì)所關(guān)注的能夠根據(jù)搜索條件提取出符合條件的搜索描述標(biāo)識(shí)的情況進(jìn)行說(shuō)明。下面對(duì)本發(fā)明實(shí)施例二提供的關(guān)系型數(shù)據(jù)的搜索方法進(jìn)行具體說(shuō)明。本發(fā)明實(shí)施例以關(guān)系型數(shù)據(jù)存儲(chǔ)用戶信息的場(chǎng)景為例進(jìn)行說(shuō)明,該場(chǎng)景中的Key為用戶標(biāo)識(shí)(UseId),Value為用戶資料。用戶資料可以按照最近最少使用(LRU)方式存儲(chǔ)在數(shù)據(jù)內(nèi)存中。本實(shí)施例兼容現(xiàn)有的memcache,redis等存儲(chǔ)方式,可以通過(guò)UseId定位到存儲(chǔ)相應(yīng)Value的數(shù)據(jù)內(nèi)存(如數(shù)據(jù)內(nèi)存服務(wù)器),從而獲取到單個(gè)用戶的資料。21:設(shè)置與各搜索條件對(duì)應(yīng)的數(shù)字編碼,利用至少一個(gè)搜索條件的數(shù)字編碼生成索引,根據(jù)索引和路由配置將關(guān)系型數(shù)據(jù)的鍵(Key)存儲(chǔ)在對(duì)應(yīng)的索引內(nèi)存中。根據(jù)關(guān)系型數(shù)據(jù)的內(nèi)容不同,所采用的搜索條件也不同,在本實(shí)施例中,搜索條件可以包括用戶所屬的“國(guó)家”、“省份”、“城市”、“年齡范圍”、“性別”、“在線狀態(tài)”等,則可以設(shè)置數(shù)字編碼1-1024分別標(biāo)識(shí)不同“城市”,每一個(gè)數(shù)字代表一個(gè)城市,相似的,數(shù)字編碼1-64分別標(biāo)識(shí)不同“省份”,數(shù)字編碼1-16分別標(biāo)識(shí)不同“國(guó)家”,數(shù)字編碼1(男)和2(女)分別標(biāo)識(shí)不同“性別”等等。在利用至少一個(gè)搜索條件的數(shù)字編碼生成索引時(shí),可以直接將一個(gè)搜索 條件的數(shù)字編碼直接作為索引,也可以將多個(gè)搜索條件的數(shù)字編碼組合起來(lái)作為索引,組合方式可以為合并或排除等方式,如將搜索條件1的數(shù)字編碼和搜索條件2的數(shù)字編碼合并在一起作為索引,即該索引能夠標(biāo)識(shí)所有同時(shí)滿足搜索條件1和搜索條件2的key,或者,將具有搜索條件1的數(shù)字編碼并排除搜索條件2的數(shù)字編碼作為索引,即該索引能夠標(biāo)識(shí)所有滿足搜索條件1但不滿足搜索條件2的key。根據(jù)上述數(shù)字編碼生成搜索描述標(biāo)識(shí)(ProfileId),用來(lái)表示搜索條件,也對(duì)所保存的用戶資料進(jìn)行了描述。例如,將搜索條件的數(shù)字編碼轉(zhuǎn)換為比特,將所述比特按照預(yù)定順序組合生成搜索條件的搜索描述標(biāo)識(shí),該預(yù)定順序可以為如下的搜索條件排列順序:城市-省份-國(guó)家-性別-年齡范圍-在線狀態(tài)-其它。本實(shí)施例中的ProfileId采用長(zhǎng)整形,長(zhǎng)整形有64個(gè)比特位,從而當(dāng)將上述數(shù)字編碼轉(zhuǎn)換為比特時(shí),能夠有足夠的比特位來(lái)表示各種搜索條件,例如,用比特位0-9表示城市,比特位10-15表示省份,比特位16-19表示國(guó)家,比特位20-21表示性別,比特位22-24表示年齡范圍,比特位25表示在線狀態(tài)。剩余未使用的比特位可以用于后續(xù)擴(kuò)展。每一個(gè)ProfileId會(huì)有多個(gè)相對(duì)應(yīng)的UserId,一個(gè)ProfileId對(duì)應(yīng)一個(gè)UserId集合,即有多個(gè)用戶都符合該P(yáng)rofileId所表示的搜索條件。當(dāng)在關(guān)系型數(shù)據(jù)中新增一個(gè)用戶UserId-1時(shí),通過(guò)上述方式得到該用戶對(duì)應(yīng)的ProfileId-1,當(dāng)ProfileId-1已存在時(shí),將UserId-1加入到ProfileId-1的UserId集合中,當(dāng)ProfileId-1不存在時(shí),則記錄該P(yáng)rofileId-1和與其對(duì)應(yīng)的UserId-1。示例性的,本實(shí)施例中將搜索條件“省份”的比特字段(ProfileId中的10-15比特位)作為索引,并為該索引建立路由配置,路由配置指示索引所對(duì)應(yīng)的索引內(nèi)存組。一個(gè)索引內(nèi)存組中設(shè)置一個(gè)或多個(gè)索引內(nèi)存(可由索引內(nèi)存服務(wù)器實(shí)現(xiàn))。例如,索引可以指示“省份”為北京、上海,則北京所對(duì)應(yīng)的索引內(nèi)存組中負(fù)載4臺(tái)索引內(nèi)存服務(wù)器,上海所對(duì)應(yīng)的索引內(nèi)存組中負(fù)載4臺(tái)索引內(nèi)存服務(wù)器,其他省份所對(duì)應(yīng)的索引內(nèi)存組中包含一臺(tái)索引內(nèi)存服務(wù)器。服務(wù)器具體的數(shù)量主要根據(jù)不同地區(qū)的用戶查詢壓力和用戶數(shù)量來(lái)決定。在構(gòu)建分布式關(guān)系型數(shù)據(jù)搜索系統(tǒng)時(shí),首先根據(jù)用戶資料生成ProfileId,然后根據(jù)ProfileId中第10-15比特位和路由配置進(jìn)行匹配,確定該用戶的Key(UseId)所屬于的索引內(nèi)存組,如該用戶的UseId屬于北京所對(duì)應(yīng)的索引內(nèi)存組1,則將符合所述索引對(duì)應(yīng)的搜索條件的Key存儲(chǔ)在所確定的索引內(nèi)存組中,即將符合搜索條件為北京的用戶的UseId存儲(chǔ)在索引內(nèi)存組1中。當(dāng)所述索引內(nèi)存組中包含的索引內(nèi)存的數(shù)量為二個(gè)以上時(shí),按照所述索引內(nèi)存組中索引內(nèi)存的數(shù)量對(duì)Key進(jìn)行取模運(yùn)算,以確定存儲(chǔ)該Key的索引內(nèi)存。例如,如果對(duì)用戶匹配的結(jié)果為屬于北京所對(duì)應(yīng)的索引內(nèi)存組1,索引內(nèi)存組1中有4臺(tái)索引內(nèi)存服務(wù)器,則根據(jù)UserIdmod4的結(jié)果得到相同索引下索引內(nèi)存服務(wù)器的編號(hào)(記為AccessPoint),將該用戶的ProfileId和UserId存儲(chǔ)到計(jì)算出的編號(hào)的索引內(nèi)存服務(wù)器上,索引內(nèi)存服務(wù)器會(huì)存儲(chǔ)ProfileId-UserId-AccessPoint的對(duì)應(yīng)關(guān)系。本實(shí)施例還維護(hù)一個(gè)條件集合ConditionCollection,該條件集合中記錄編號(hào)為AccessPoint的服務(wù)器中不同ProfileId下UserId數(shù)目總數(shù)。利用該UserId數(shù)目總數(shù)可以在執(zhí)行搜索時(shí),首先向搜索方返回滿足條件的數(shù)目總數(shù),便于搜索方快速獲取所需數(shù)據(jù),且利用該UserId數(shù)目總數(shù)能夠分頁(yè)返回?cái)?shù)據(jù),也有助于減少逐條查詢的開銷。由于新增用戶、刪除用戶或者對(duì)已有用戶數(shù)據(jù)進(jìn)行修改,或者改變索引的選取方式等都會(huì)導(dǎo)致索引內(nèi)存中所存儲(chǔ)的ProfileId和UserId失效或不完整,當(dāng)出現(xiàn)這些事件后,本實(shí)施例針對(duì)事件中所涉及的UserId,對(duì)相應(yīng)索引內(nèi)存中所存儲(chǔ)的ProfileId和UserId進(jìn)行更新,如刪除索引內(nèi)存中存儲(chǔ)的失效的ProfileId或UserId,在索引內(nèi)存中增加新的ProfileId或UserId等。通過(guò)上述方式,建立了分布式關(guān)系型數(shù)據(jù)基于內(nèi)存的搜索架構(gòu),以下對(duì)在該架構(gòu)中進(jìn)行數(shù)據(jù)搜索的方式進(jìn)行說(shuō)明。22:接收當(dāng)前的搜索條件。當(dāng)接收到的搜索條件中存在相應(yīng)的索引時(shí),如將搜索條件按照數(shù)字編碼轉(zhuǎn)換為與上述ProfileId相同的長(zhǎng)整型數(shù)值,該長(zhǎng)整型數(shù)值的10-15比特位的 值能夠與所選定索引的值相一致,即該搜索條件中存在索引,則根據(jù)該索引和路由配置確定該搜索條件所對(duì)應(yīng)的至少一個(gè)索引內(nèi)存(即對(duì)應(yīng)的索引內(nèi)存組);當(dāng)接收到的搜索條件中不存在相應(yīng)的索引時(shí),如將搜索條件按照數(shù)字編碼轉(zhuǎn)換為與上述ProfileId相同的長(zhǎng)整型數(shù)值,該長(zhǎng)整型數(shù)值的10-15比特位的值無(wú)法與所選定索引的值相一致,即該搜索條件中不存在索引,則將任意索引內(nèi)存確定為該搜索條件所對(duì)應(yīng)的索引內(nèi)存。23:提取符合條件的搜索描述標(biāo)識(shí)。根據(jù)接收到的搜索條件從所確定的索引內(nèi)存中提取符合條件的搜索描述標(biāo)識(shí)包括:從索引內(nèi)存中提取與接收到的搜索條件的搜索描述標(biāo)識(shí)相一致的搜索描述標(biāo)識(shí)的集合,記錄此集合中的ProfileId的數(shù)量為TotalCount,可以分頁(yè)讀取該集合中的ProfileId,返回至搜索方。根據(jù)接收到的選取指令從所述集合中選取所需的搜索描述標(biāo)識(shí)。例如選取指令指示所選取的起始頁(yè)1、終止頁(yè)n,則從上述集合中選取起始頁(yè)1至終止頁(yè)n中的搜索描述標(biāo)識(shí)作為最終提取到的符合條件的搜索描述標(biāo)識(shí)。并且,在將一個(gè)ProfileId所對(duì)應(yīng)的UserId返回至搜索方時(shí),也可以利用條件集合中所記錄的該P(yáng)rofileId下UserId的數(shù)目總數(shù)采用分頁(yè)顯示的方式,返回至搜索方。24:利用搜索描述標(biāo)識(shí)獲取相應(yīng)的Key,并通過(guò)所獲取到的Key得到關(guān)系型數(shù)據(jù)的Value。遍歷提取到的每個(gè)ProfileId對(duì)應(yīng)的UserId,通過(guò)該UserId搜索數(shù)據(jù)內(nèi)存得到查詢結(jié)果Value。進(jìn)一步的,本實(shí)施例中還可以采用一些優(yōu)化措施,以進(jìn)一步加快搜索速度:首先,對(duì)于上述步驟23,當(dāng)所確定的索引內(nèi)存的數(shù)量為二個(gè)以上時(shí),在所確定的索引內(nèi)存中,先從任一索引內(nèi)存中提取符合條件的搜索描述標(biāo)識(shí)的集合,當(dāng)該索引內(nèi)存中不存在符合條件的搜索描述標(biāo)識(shí)且所述選取指令指示繼續(xù)提取操作時(shí),再更換用于提取搜索描述標(biāo)識(shí)的索引內(nèi)存。這種優(yōu)化方式,盡量先在一臺(tái)服務(wù)器進(jìn)行數(shù)據(jù)讀取,若從一臺(tái)索引內(nèi)存服務(wù)器上提取的搜索 描述標(biāo)識(shí)的集合已滿足搜索方需求時(shí),就結(jié)束提取操作,避免了跨服務(wù)器訪問(wèn)操作,提高了搜索效率;其次,本實(shí)施例還提供一種快速搜索的方式,保存在已執(zhí)行的操作中根據(jù)搜索條件得到的Value,將該Value和該Value所對(duì)應(yīng)的搜索條件存儲(chǔ)在內(nèi)存中,在一次新的搜索操作開始時(shí),當(dāng)新的搜索條件與已執(zhí)行的搜索條件(所存儲(chǔ)的該Value所對(duì)應(yīng)的搜索條件)相同時(shí),從內(nèi)存中直接提取所存儲(chǔ)的Value作為獲取到的該新的搜索條件的Value,而不再重復(fù)執(zhí)行搜索過(guò)程。另外,本實(shí)施例還可以在一次搜索操作中對(duì)接收到的多個(gè)搜索條件同時(shí)進(jìn)行處理,采用批量處理的方式,提高搜索效率。本發(fā)明實(shí)施例三提供了一種關(guān)系型數(shù)據(jù)的搜索裝置,參見圖2,所述裝置包括分布式構(gòu)建單元21、索引搜索單元22和數(shù)據(jù)獲取單元23,其中,所述分布式構(gòu)建單元21,用于設(shè)置與各搜索條件對(duì)應(yīng)的數(shù)字編碼,利用至少一個(gè)搜索條件的數(shù)字編碼生成索引,根據(jù)索引和路由配置在多個(gè)索引內(nèi)存中存儲(chǔ)關(guān)系型數(shù)據(jù)的Key,所述索引內(nèi)存中存儲(chǔ)搜索描述標(biāo)識(shí)及相對(duì)應(yīng)的Key,所述搜索描述標(biāo)識(shí)是由搜索條件的數(shù)字編碼生成的;所述索引搜索單元22,用于當(dāng)接收到的搜索條件中存在相應(yīng)的索引時(shí),根據(jù)該索引和所述路由配置確定該搜索條件所對(duì)應(yīng)的至少一個(gè)索引內(nèi)存,當(dāng)接收到的搜索條件中不存在相應(yīng)的索引時(shí),將任意索引內(nèi)存確定為該搜索條件所對(duì)應(yīng)的索引內(nèi)存;以及,根據(jù)接收到的搜索條件從所確定的索引內(nèi)存中提取符合條件的搜索描述標(biāo)識(shí);所述數(shù)據(jù)獲取單元23,用于利用搜索描述標(biāo)識(shí)獲取相應(yīng)的Key,并通過(guò)所獲取到的Key得到關(guān)系型數(shù)據(jù)的Value。上述每一索引內(nèi)存可以由一臺(tái)索引內(nèi)存服務(wù)器實(shí)現(xiàn),參見圖3,上述關(guān)系型數(shù)據(jù)的搜索裝置可以在服務(wù)器31上實(shí)現(xiàn),每一索引內(nèi)存組32中包含一臺(tái)或多臺(tái)索引內(nèi)存服務(wù)器。具體的,所述分布式構(gòu)建單元21包括分布式存儲(chǔ)模塊,用于根據(jù)索引和路由配置確定Key所屬于的索引內(nèi)存組;將符合所述索引對(duì)應(yīng)的搜索條件 的Key存儲(chǔ)在所確定的索引內(nèi)存組中,其中,當(dāng)所述索引內(nèi)存組中包含的索引內(nèi)存的數(shù)量為二個(gè)以上時(shí),按照所述索引內(nèi)存組中索引內(nèi)存的數(shù)量對(duì)Key進(jìn)行取模運(yùn)算,以確定存儲(chǔ)該Key的索引內(nèi)存。所述分布式構(gòu)建單元21還包括標(biāo)識(shí)生成模塊,用于通過(guò)如下方式由搜索條件的數(shù)字編碼生成所述搜索描述標(biāo)識(shí):將搜索條件的數(shù)字編碼轉(zhuǎn)換為比特,并將所述比特按照預(yù)定順序組合生成搜索條件的搜索描述標(biāo)識(shí)。上述裝置還包括快速搜索單元,用于在通過(guò)所述數(shù)據(jù)獲取單元得到關(guān)系型數(shù)據(jù)的Value之后,將獲取到的Value和該Value所對(duì)應(yīng)的搜索條件存儲(chǔ)在內(nèi)存中,當(dāng)新的搜索條件與該Value所對(duì)應(yīng)的搜索條件相同時(shí),從內(nèi)存中直接提取所存儲(chǔ)的Value作為獲取到的該新的搜索條件的Value。通過(guò)快速搜索單元,無(wú)需重復(fù)執(zhí)行相同的搜索過(guò)程,提高了搜索效率。本發(fā)明裝置實(shí)施例中各單元和模塊的具體工作方式參見本發(fā)明的方法實(shí)施例。由上所述,本發(fā)明實(shí)施例通過(guò)直接訪問(wèn)內(nèi)存提高了數(shù)據(jù)搜索的速度,并且能夠?qū)崿F(xiàn)根據(jù)搜索條件對(duì)內(nèi)存中關(guān)系型數(shù)據(jù)的搜索,顯著提高了搜索方式的靈活性,能夠滿足各種數(shù)據(jù)搜索場(chǎng)景的需求。并且,本方案采用一種分布式的結(jié)構(gòu),能夠在多個(gè)索引內(nèi)存分別執(zhí)行相應(yīng)數(shù)據(jù)的搜索,均衡了系統(tǒng)中的數(shù)據(jù)處理負(fù)荷,有助于提高數(shù)據(jù)搜索速度和系統(tǒng)性能。以上所述僅為本發(fā)明的較佳實(shí)施例而已,并非用于限定本發(fā)明的保護(hù)范圍。凡在本發(fā)明的精神和原則之內(nèi)所作的任何修改、等同替換、改進(jìn)等,均包含在本發(fā)明的保護(hù)范圍內(nèi)。