專利名稱:一種基于索引排序的數(shù)據(jù)讀寫方法及裝置的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及計算機(jī)數(shù)據(jù)存儲技術(shù),特別涉及一種基于索引排序的數(shù)據(jù)讀寫方法及
>J-U ρ α裝直。
背景技術(shù):
隨著計算機(jī)網(wǎng)絡(luò)技術(shù)的發(fā)展,通過點對點的技術(shù)來實現(xiàn)互聯(lián)網(wǎng)上的即時溝通的即時通信(IM, Instant Messaging)軟件工具應(yīng)用越來越普遍,IM已經(jīng)被大多數(shù)的用戶所接受并成為用戶日常生活以及工作中必不可少的一部分,通過頂軟件工具應(yīng)用,例如,微博,用戶可以實現(xiàn)與朋友、同事以及同學(xué)之間的交流與溝通。微群是微博中為不同用戶群提供交流溝通的平臺,是在微博中,一群人自發(fā)加入組成的小圈子,進(jìn)行內(nèi)部交流,并可以選擇將部分內(nèi)容分享給自己的微博聽眾的產(chǎn)品。由于微群的特點,用戶訪問到的群內(nèi)發(fā)表數(shù)據(jù)需要按時間倒排,即對于每次用戶最新發(fā)表的數(shù)據(jù),都要寫到緩存的數(shù)據(jù)隊列的最前端。因而,數(shù)據(jù)讀寫時在數(shù)據(jù)隊列的排序方式對于緩存的內(nèi)核資源消耗以及后續(xù)的數(shù)據(jù)檢索效率非常重要,有效的排序方式,能大量降低緩存的內(nèi)核資源消耗、縮短檢索 所需的時間,提高數(shù)據(jù)檢索效率。圖1為現(xiàn)有基于索引排序的數(shù)據(jù)讀寫方法流程示意圖。以數(shù)據(jù)寫入為例,參見圖1,采用一級索引實現(xiàn)按時序倒排寫入,該流程包括:步驟101,接收數(shù)據(jù)寫入請求,通過數(shù)據(jù)寫入請求中攜帶的關(guān)鍵詞(Key)匹配微群索引表,獲取待寫入數(shù)據(jù)對應(yīng)的微群索引;本步驟中,關(guān)鍵詞可以是用戶標(biāo)識(ID,Identifier),根據(jù)發(fā)送數(shù)據(jù)寫入請求的用戶標(biāo)識確定其所屬的微群,從包含各微群索引的微群索引表中獲取該對應(yīng)的微群索引。步驟102,根據(jù)微群索引,獲取寫入數(shù)據(jù)的數(shù)據(jù)塊地址ID ;本步驟中,微群索引中存儲寫入數(shù)據(jù)的數(shù)據(jù)塊的地址ID信息,較佳地,對于按時序倒排寫入數(shù)據(jù)的情形,數(shù)據(jù)塊地址ID信息為數(shù)據(jù)塊初始地址ID信息。步驟103,根據(jù)獲取的數(shù)據(jù)塊地址ID,按時序倒排寫入數(shù)據(jù)。本步驟中,通過讀到的數(shù)據(jù)塊地址ID,按時序倒排寫入數(shù)據(jù),即將每次用戶最新發(fā)表的數(shù)據(jù)寫到內(nèi)存的數(shù)據(jù)隊列最前端,并依序?qū)?shù)據(jù)隊列中寫入的數(shù)據(jù)在內(nèi)存中后移。當(dāng)數(shù)據(jù)塊容量小于數(shù)據(jù)容量時,可以申請更多數(shù)據(jù)塊,數(shù)據(jù)塊頭部存放指向下一個數(shù)據(jù)塊的數(shù)據(jù)塊地址ID。圖2為現(xiàn)有基于索引排序的數(shù)據(jù)讀寫的內(nèi)存結(jié)構(gòu)示意圖。參見圖2,包括微群索引表以及數(shù)據(jù)塊區(qū),微群索引表包括各微群索引,存儲數(shù)據(jù)塊地址ID信息,根據(jù)微群索引中的數(shù)據(jù)塊地址ID信息,找到數(shù)據(jù)塊區(qū)中相應(yīng)的數(shù)據(jù)塊,按時序倒排寫入數(shù)據(jù)并依序?qū)懭氲臄?shù)據(jù)后移。實際應(yīng)用中,對于一個數(shù)據(jù)塊在寫入當(dāng)前數(shù)據(jù)后還有剩余存儲空間的情形,可以繼續(xù)用于寫入下一數(shù)據(jù),即塊數(shù)據(jù)合并存儲。由上述可見,現(xiàn)有采用一級索引實現(xiàn)按時序倒排寫入的方法,由于微群的特點,需要將用戶最新發(fā)表的數(shù)據(jù)寫到數(shù)據(jù)隊列最前端,因此,當(dāng)寫入的數(shù)據(jù)量(消息量)較大時,在每次寫入新數(shù)據(jù)時,需要將已寫入的數(shù)據(jù)量占用的數(shù)據(jù)塊在內(nèi)存中執(zhí)行后移處理,這樣將導(dǎo)致大量的內(nèi)核資源耗費(fèi),并且容易出錯。
發(fā)明內(nèi)容
有鑒于此,本發(fā)明的主要目的在于提出一種基于索引排序的數(shù)據(jù)讀寫方法,降低讀寫數(shù)據(jù)的內(nèi)核資源耗費(fèi)。本發(fā)明的另一目的在于提出一種基于索引排序的數(shù)據(jù)讀寫裝置,降低讀寫數(shù)據(jù)的內(nèi)核資源耗費(fèi)。為達(dá)到上述目的,本發(fā)明提供了一種基于索引排序的數(shù)據(jù)讀寫方法,該方法包括:接收數(shù)據(jù)讀寫請求,通過數(shù)據(jù)讀寫請求中攜帶的關(guān)鍵詞匹配微群索引表,獲取待寫入數(shù)據(jù)對應(yīng)的微群索引;根據(jù)數(shù)據(jù)讀寫請求中攜帶的讀寫時間信息,從獲取的微群索引中獲取與讀寫時間信息對應(yīng)的二級索引地址標(biāo)識ID信息;根據(jù)獲取的二級索引地址ID信息尋址對應(yīng)的二級索引,獲取讀寫數(shù)據(jù)的數(shù)據(jù)塊地址ID ;根據(jù)獲取的數(shù)據(jù)塊地址ID,按時序倒排讀寫數(shù)據(jù)。所述數(shù)據(jù)讀寫請求包括數(shù)據(jù)寫入請求以及數(shù)據(jù)讀出請求,對于數(shù)據(jù)讀寫請求,所述讀寫時間信息為接收數(shù)據(jù)寫入請求的當(dāng)前時間,對于數(shù)據(jù)讀出請求,所述讀寫時間信息為攜帶的數(shù)據(jù)發(fā)表的時間信息。在所述接收數(shù)據(jù)讀寫請求之后,通過數(shù)據(jù)讀寫請求中攜帶的關(guān)鍵詞匹配微群索引表之前,進(jìn)一步包括:確定所述數(shù)據(jù)讀寫請求為數(shù)據(jù)寫入請求;如果確定攜帶的讀寫時間信息超出控制策略預(yù)先設(shè)置的數(shù)據(jù)寫入時間段范圍,生成一個新二級索引并為新二級索引配置相應(yīng)的二級索引地址ID信息以及寫入數(shù)據(jù)的數(shù)據(jù)塊地址ID信息。在所述接收數(shù)據(jù)讀寫請求之后,通過數(shù)據(jù)讀寫請求中攜帶的關(guān)鍵詞匹配微群索引表之前,進(jìn)一步包括:確定所述數(shù)據(jù)讀寫請求為數(shù)據(jù)寫入請求;獲取存儲上一數(shù)據(jù)的二級索引對應(yīng)寫入數(shù)據(jù)的數(shù)據(jù)量;確定該二級索引對應(yīng)寫入數(shù)據(jù)的數(shù)據(jù)量與當(dāng)前數(shù)據(jù)的數(shù)據(jù)量之和超出控制策略預(yù)先設(shè)置的數(shù)據(jù)量閾值,生成一個新二級索引并為新二級索引配置相應(yīng)的二級索引地址ID信息以及寫入數(shù)據(jù)的數(shù)據(jù)塊地址ID信息。在所述接收數(shù)據(jù)讀寫請求之后,通過數(shù)據(jù)讀寫請求中攜帶的關(guān)鍵詞匹配微群索引表之前,進(jìn)一步包括:確定所述數(shù)據(jù)讀寫請求為數(shù)據(jù)寫入請求;通過數(shù)據(jù)寫入請求中攜帶的關(guān)鍵詞匹配微群索引表后,確定未能匹配上,則構(gòu)建新微群索引。所述微群索引中存儲有數(shù)據(jù)寫入時間段信息與二級索引地址ID信息的映射表。
所述關(guān)鍵詞包括用戶ID或用戶所屬的微群ID。一種基于索引排序的數(shù)據(jù)讀寫裝置,該裝置包括:第一索引模塊、第二索引模塊以及數(shù)據(jù)塊模塊,其中,第一索引模塊,接收數(shù)據(jù)讀寫請求,通過數(shù)據(jù)讀寫請求中攜帶的關(guān)鍵詞匹配微群索引表,獲取待寫入數(shù)據(jù)對應(yīng)的微群索引;根據(jù)數(shù)據(jù)讀寫請求中攜帶的讀寫時間信息,從獲取的微群索引中獲取與讀寫時間信息對應(yīng)的二級索引地址ID信息,輸出至第二索引模塊;第二索引模塊,根據(jù)獲取的二級索引地址ID信息尋址對應(yīng)的二級索引,獲取讀寫數(shù)據(jù)的數(shù)據(jù)塊地址ID,輸出至數(shù)據(jù)塊模塊;數(shù)據(jù)塊模塊,根據(jù)獲取的數(shù)據(jù)塊地址ID,按時序倒排讀寫數(shù)據(jù)。所述裝置進(jìn)一步包括:數(shù)據(jù)寫入時間段控制模塊,在確定接收到的數(shù)據(jù)讀寫請求為數(shù)據(jù)寫入請求時,如果確定攜帶的讀寫時間信息超出控制策略預(yù)先設(shè)置的數(shù)據(jù)寫入時間段范圍,生成一個新二級索引并為新二級索引配置相應(yīng)的二級索引地址ID信息以及寫入數(shù)據(jù)的數(shù)據(jù)塊地址ID信
肩、O所述裝置進(jìn)一步包括:數(shù)據(jù)量控制模塊,在確定接收到的數(shù)據(jù)讀寫請求為數(shù)據(jù)寫入請求時,獲取存儲上一數(shù)據(jù)的二級索引對應(yīng)寫入數(shù)據(jù)的數(shù)據(jù)量,確定該二級索引對應(yīng)寫入數(shù)據(jù)的數(shù)據(jù)量與當(dāng)前數(shù)據(jù)的數(shù)據(jù)量之和超出控制策略預(yù)先設(shè)置的數(shù)據(jù)量閾值,生成一個新二級索引并為新二級索引配置相應(yīng)的二級索引地址ID信息以及寫入數(shù)據(jù)的數(shù)據(jù)塊地址ID信息。由上述的技術(shù)方案可見,本發(fā)明實施例提供的一種基于索引排序的數(shù)據(jù)讀寫方法及裝置,接收數(shù)據(jù)讀寫請求,通過數(shù)據(jù)讀寫請求中攜帶的關(guān)鍵詞匹配微群索引表,獲取待寫入數(shù)據(jù)對應(yīng)的微群索引;根據(jù)數(shù)據(jù)讀寫請求中攜帶的讀寫時間信息,從獲取的微群索引中獲取與讀寫時間信息對應(yīng)的二級索引地址標(biāo)識ID信息;根據(jù)獲取的二級索引地址ID信息尋址對應(yīng)的二級索引,獲取讀寫數(shù)據(jù)的數(shù)據(jù)塊地址ID ;根據(jù)獲取的數(shù)據(jù)塊地址ID,按時序倒排讀寫數(shù)據(jù)。這樣,在對其中的一個二級索引對應(yīng)的數(shù)據(jù)塊進(jìn)行讀寫時,其它已寫入數(shù)據(jù)的二級索引對應(yīng)的數(shù)據(jù)塊無需在內(nèi)存中移動,從而可以快速找到或?qū)懭霐?shù)據(jù)塊,更好地支持了按時序倒排的需求,減少了內(nèi)核資源耗費(fèi)。
圖1為現(xiàn)有基于索引排序的數(shù)據(jù)讀寫方法流程示意圖。圖2為現(xiàn)有基于索引排序的數(shù)據(jù)讀寫的內(nèi)存結(jié)構(gòu)示意圖。圖3為本發(fā)明實施例基于索引排序的數(shù)據(jù)讀寫方法流程示意圖。圖4為本發(fā)明實施例基于索引排序的數(shù)據(jù)讀寫的內(nèi)存結(jié)構(gòu)示意圖。圖5為本發(fā)明實施例基于索引排序的數(shù)據(jù)讀寫裝置結(jié)構(gòu)示意圖。
具體實施例方式為使本發(fā)明的目的、技術(shù)方案和優(yōu)點更加清楚,下面將結(jié)合附圖及具體實施例對本發(fā)明作進(jìn)一步地詳細(xì)描述?,F(xiàn)有基于索引排序的數(shù)據(jù)讀寫方法,在每次寫入新數(shù)據(jù)時,需要將已寫入的數(shù)據(jù)量占用的數(shù)據(jù)塊在內(nèi)存中執(zhí)行后移處理,導(dǎo)致大量的內(nèi)核資源耗費(fèi)。本發(fā)明實施例中,考慮對現(xiàn)有的索引結(jié)構(gòu)進(jìn)行改進(jìn),采用二級索引快速排序的方法,即采用二級索引緩存的技術(shù),對微群索引按照時間順序進(jìn)行細(xì)化控制,形成多個存儲寫入數(shù)據(jù)的數(shù)據(jù)塊地址ID信息的二級索引,這樣,在對其中的一個二級索引對應(yīng)的數(shù)據(jù)塊進(jìn)行寫入時,其它已寫入數(shù)據(jù)的二級索引對應(yīng)的數(shù)據(jù)塊無需在內(nèi)存中移動,從而減少了內(nèi)核資源耗費(fèi)。圖3為本發(fā)明實施例基于索引排序的數(shù)據(jù)讀寫方法流程示意圖。參見圖3,該流程包括:步驟301,接收數(shù)據(jù)讀寫請求,通過數(shù)據(jù)讀寫請求中攜帶的關(guān)鍵詞匹配微群索引表,獲取待寫入數(shù)據(jù)對應(yīng)的微群索引;本步驟中,數(shù)據(jù)讀寫請求包括數(shù)據(jù)寫入請求以及數(shù)據(jù)讀出請求。關(guān)鍵詞可以是用戶ID,也可以是用戶所屬的微群ID,根據(jù)發(fā)送數(shù)據(jù)讀寫請求的用戶標(biāo)識或微群ID,從包含各微群索引的微群索引表中獲取該對應(yīng)的微群索引。對于用戶ID,可以預(yù)先存儲各用戶ID映射的微群索引。當(dāng)然,實際應(yīng)用中,如果是數(shù)據(jù)寫入請求,通過數(shù)據(jù)寫入請求中攜帶的關(guān)鍵詞匹配微群索引表后,確定未能匹配上,則構(gòu)建新微群索引。步驟302,根據(jù)數(shù)據(jù)讀寫請求中攜帶的讀寫時間信息,從獲取的微群索引中獲取與讀寫時間信息對應(yīng)的二級索引地址ID信息;本步驟中,與現(xiàn)有微群索引中存儲寫入數(shù)據(jù)的數(shù)據(jù)塊的地址ID信息不同的是,本發(fā)明實施例中,微群索引中存儲有數(shù)據(jù)寫入時間段信息與二級索引地址ID信息的映射表。例如,微群索引中存儲有二級索引I 二級索引3的地址ID信息,二級索引I映射的數(shù)據(jù)寫入時間段信息為2011.01.01 2011.04.30,二級索引2映射的數(shù)據(jù)寫入時間段信息為2011.05.01 2011.09.31,二級索引3映射的數(shù)據(jù)寫入時間段信息為2011.10.01 。這樣,對于寫入數(shù)據(jù)來說,數(shù)據(jù)讀寫請求中攜帶的讀寫時間信息可以默認(rèn)為當(dāng)前時間,根據(jù)該當(dāng)前時間,可以獲取其映射二級索引3,從而得到二級索引3的地址ID信息;而對于讀出數(shù)據(jù)來說,數(shù)據(jù)讀寫請求中攜帶的讀寫時間信息數(shù)據(jù)發(fā)表的時間信息,假設(shè)為2011.05.04,則根據(jù)該時間信息,可以獲取其映射二級索引2,從而得到二級索引2的地址ID f目息。步驟303,根據(jù)獲取的二級索引地址ID信息尋址對應(yīng)的二級索引,獲取讀寫數(shù)據(jù)的數(shù)據(jù)塊地址ID ;本步驟中,二級索引中存儲讀寫數(shù)據(jù)的數(shù)據(jù)塊的地址ID信息,較佳地,對于按時序倒排讀寫數(shù)據(jù)的情形,數(shù)據(jù)塊地址ID信息為數(shù)據(jù)塊初始地址ID信息。如前所述,對于寫入數(shù)據(jù)來說,在尋址到對應(yīng)的二級索引3后,可以獲取二級索引3用于讀寫數(shù)據(jù)的數(shù)據(jù)塊地址ID ;而對于讀出數(shù)據(jù)來說,在尋址到對應(yīng)的二級索引2后,可以獲取二級索引2用于讀寫數(shù)據(jù)的數(shù)據(jù)塊地址ID。各二級索引用于讀寫數(shù)據(jù)的數(shù)據(jù)塊地址ID互不相同。步驟304,根據(jù)獲取的數(shù)據(jù)塊地址ID,按時序倒排讀寫數(shù)據(jù)。本步驟中,在通過數(shù)據(jù)塊地址ID尋址到讀寫數(shù)據(jù)的存儲位置后,按時序倒排讀寫數(shù)據(jù),即對于當(dāng)前需寫入的數(shù)據(jù),將該數(shù)據(jù)寫到內(nèi)存的數(shù)據(jù)隊列(數(shù)據(jù)塊)最前端,并依序?qū)?shù)據(jù)隊列中已寫入的數(shù)據(jù)在內(nèi)存中后移,當(dāng)數(shù)據(jù)塊容量小于數(shù)據(jù)容量時,可以申請更多數(shù)據(jù)塊,數(shù)據(jù)塊頭部存放指向下一個數(shù)據(jù)塊的數(shù)據(jù)塊地址ID。對于當(dāng)前需讀出的數(shù)據(jù),從內(nèi)存的數(shù)據(jù)隊列(數(shù)據(jù)塊)的最前端,依序往后遍歷數(shù)據(jù)隊列,直至獲取與讀寫時間信息對應(yīng)的數(shù)據(jù)。一個二級索引用于讀寫數(shù)據(jù)的數(shù)據(jù)塊中存放已經(jīng)分配給該微群的所有數(shù)據(jù),當(dāng)該二級索引中的數(shù)據(jù)塊放不下時,可以請求分配多個數(shù)據(jù)塊存放數(shù)據(jù)。較佳地,微群索引按照預(yù)先設(shè)置的控制策略控制其包含的二級索引數(shù)量??刂撇呗园〝?shù)據(jù)寫入時間段、和/或,二級索引對應(yīng)存儲的數(shù)據(jù)量。舉例來說,如前所述,當(dāng)一個二級索引對應(yīng)寫入數(shù)據(jù)的時間段超過4個月時,則生成一個新二級索引并為新二級索引配置相應(yīng)的二級索引地址ID信息以及寫入數(shù)據(jù)的數(shù)據(jù)塊地址ID信息;或者,當(dāng)一個二級索引對應(yīng)寫入數(shù)據(jù)的數(shù)據(jù)量超過預(yù)先設(shè)置的數(shù)據(jù)量閾值時,則生成一個新二級索引,從而使微群索引能夠按照時間順序或數(shù)據(jù)量進(jìn)行細(xì)化控制,形成多個存儲寫入數(shù)據(jù)的數(shù)據(jù)塊地址ID信息的二級索引。這樣,對于控制策略為數(shù)據(jù)寫入時間段的情形,在接收到數(shù)據(jù)寫入請求時,進(jìn)一步包括:如果確定攜帶的讀寫時間信息超出控制策略預(yù)先設(shè)置的數(shù)據(jù)寫入時間段范圍,生成一個新二級索引并為新二級索引配置相應(yīng)的二級索引地址ID信息以及寫入數(shù)據(jù)的數(shù)據(jù)塊地址ID信息。對于控制策略為二級索引對應(yīng)存儲的數(shù)據(jù)量的情形,在接收到數(shù)據(jù)寫入請求時,進(jìn)一步包括:獲取存儲上一數(shù)據(jù)的二級索引對應(yīng)寫入數(shù)據(jù)的數(shù)據(jù)量;確定該二級索引對應(yīng)寫入數(shù)據(jù)的數(shù)據(jù)量與當(dāng)前數(shù)據(jù)的數(shù)據(jù)量之和超出控制策略預(yù)先設(shè)置的數(shù)據(jù)量閾值,生成一個新二級索引并為新二級索引配置相應(yīng)的二級索引地址ID信息以及寫入數(shù)據(jù)的數(shù)據(jù)塊地址ID信息。圖4為本發(fā)明實施例基于索引排序的數(shù)據(jù)讀寫的內(nèi)存結(jié)構(gòu)示意圖。參見圖4,包括微群索引表(一級索引)、二級索引以及數(shù)據(jù)塊區(qū),微群索引表包括各微群索引,分別存儲微群索引對應(yīng)的一個或多個二級索引地址ID信息,通過關(guān)鍵詞命中微群索引表中的微群索引,讀到二級索引地址ID信息,根據(jù)二級索引地址ID信息尋址到相應(yīng)的二級索引,二級索引中存儲數(shù)據(jù)塊地址ID信息,根據(jù)數(shù)據(jù)塊地址ID信息,找到數(shù)據(jù)塊區(qū)中相應(yīng)的數(shù)據(jù)塊,按時序倒排讀寫數(shù)據(jù)。圖5為本發(fā)明實施例基于索引排序的數(shù)據(jù)讀寫裝置結(jié)構(gòu)示意圖。參見圖5,該裝置包括:第一索引模塊、第二索引模塊以及數(shù)據(jù)塊模塊,其中,第一索引模塊,接收數(shù)據(jù)讀寫請求,通過數(shù)據(jù)讀寫請求中攜帶的關(guān)鍵詞匹配微群索引表,獲取待寫入數(shù)據(jù)對應(yīng)的微群索引;根據(jù)數(shù)據(jù)讀寫請求中攜帶的讀寫時間信息,從獲取的微群索引中獲取與讀寫時間信息對應(yīng)的二級索引地址ID信息,輸出至第二索引模塊;本發(fā)明實施例中,關(guān)鍵詞可以是用戶ID,也可以是用戶所屬的微群ID。第二索引模塊,根據(jù)獲取的二級索引地址ID信息尋址對應(yīng)的二級索引,獲取讀寫數(shù)據(jù)的數(shù)據(jù)塊地址ID,輸出至數(shù)據(jù)塊模塊;本發(fā)明實施例中,二級索引中存儲讀寫數(shù)據(jù)的數(shù)據(jù)塊的地址ID信息,各二級索引用于讀寫數(shù)據(jù)的數(shù)據(jù)塊地址ID互不相同。
數(shù)據(jù)塊模塊,根據(jù)獲取的數(shù)據(jù)塊地址ID,按時序倒排讀寫數(shù)據(jù)。較佳地,該裝置進(jìn)一步包括:數(shù)據(jù)寫入時間段控制模塊,在確定接收到的數(shù)據(jù)讀寫請求為數(shù)據(jù)寫入請求時,如果確定攜帶的讀寫時間信息超出控制策略預(yù)先設(shè)置的數(shù)據(jù)寫入時間段范圍,生成一個新二級索引并為新二級索引配置相應(yīng)的二級索引地址ID信息以及寫入數(shù)據(jù)的數(shù)據(jù)塊地址ID信息;如果攜帶的讀寫時間信息沒有超出控制策略預(yù)先設(shè)置的數(shù)據(jù)寫入時間段范圍,將該數(shù)據(jù)寫入請求輸出至第一索引模塊?;蛘撸瑪?shù)據(jù)量控制模塊,在確定接收到的數(shù)據(jù)讀寫請求為數(shù)據(jù)寫入請求時,獲取存儲上一數(shù)據(jù)的二級索引對應(yīng)寫入數(shù)據(jù)的數(shù)據(jù)量,確定該二級索引對應(yīng)寫入數(shù)據(jù)的數(shù)據(jù)量與當(dāng)前數(shù)據(jù)的數(shù)據(jù)量之和超出控制策略預(yù)先設(shè)置的數(shù)據(jù)量閾值,生成一個新二級索引并為新二級索引配置相應(yīng)的二級索引地址ID信息以及寫入數(shù)據(jù)的數(shù)據(jù)塊地址ID信息;如果該二級索引對應(yīng)寫入數(shù)據(jù)的數(shù)據(jù)量與當(dāng)前數(shù)據(jù)的數(shù)據(jù)量之和沒有超出控制策略預(yù)先設(shè)置的數(shù)據(jù)量閾值,將該數(shù)據(jù)寫入請求輸出至第一索引模塊。由上述可見,本發(fā)明實施例的基于索引排序的數(shù)據(jù)讀寫方法及裝置,通過采用二級緩存的技術(shù),提供一種高效按時間倒排的方法,即采用一級索引、二級索引與數(shù)據(jù)的方式緩存,首先根據(jù)數(shù)據(jù)讀寫請求中攜帶的關(guān)鍵詞命中到一級索引層,在一級索引層中讀到二級索引地址ID,然后通過讀到的二級索引地址ID,讀到二級索引用于讀寫數(shù)據(jù)的數(shù)據(jù)塊地址ID,按時序倒排讀寫數(shù)據(jù)。從而可以快速找到或?qū)懭霐?shù)據(jù)塊,相對于一級索引,更好地支持了按時序倒排的需求,使最新消息寫入時,只需要寫到二級索引對應(yīng)第一個分配的數(shù)據(jù)塊中,然后重新排序?qū)懟?,不需要對已?jīng)緩存的其他二級索引對應(yīng)數(shù)據(jù)塊存儲的數(shù)據(jù)執(zhí)行移動處理,避免了大量數(shù)據(jù)的內(nèi)存移動,從而減少了內(nèi)核資源耗費(fèi)。以上所述僅為本發(fā)明的較佳實施例而已,并非用于限定本發(fā)明的保護(hù)范圍。凡在本發(fā)明的精神和原則之內(nèi),所作的任何修改、等同替換以及改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。
權(quán)利要求
1.一種基于索引排序的數(shù)據(jù)讀寫方法,其特征在于,該方法包括: 接收數(shù)據(jù)讀寫請求,通過數(shù)據(jù)讀寫請求中攜帶的關(guān)鍵詞匹配微群索引表,獲取待寫入數(shù)據(jù)對應(yīng)的微群索引; 根據(jù)數(shù)據(jù)讀寫請求中攜帶的讀寫時間信息,從獲取的微群索引中獲取與讀寫時間信息對應(yīng)的二級索引地址標(biāo)識ID信息; 根據(jù)獲取的二級索引地址ID信息尋址對應(yīng)的二級索引,獲取讀寫數(shù)據(jù)的數(shù)據(jù)塊地址ID ; 根據(jù)獲取的數(shù)據(jù)塊地址ID,按時序倒 排讀寫數(shù)據(jù)。
2.如權(quán)利要求1所述的方法,其特征在于,所述數(shù)據(jù)讀寫請求包括數(shù)據(jù)寫入請求以及數(shù)據(jù)讀出請求,對于數(shù)據(jù)讀寫請求,所述讀寫時間信息為接收數(shù)據(jù)寫入請求的當(dāng)前時間,對于數(shù)據(jù)讀出請求,所述讀寫時間信息為攜帶的數(shù)據(jù)發(fā)表的時間信息。
3.如權(quán)利要求2所述的方法,其特征在于,在所述接收數(shù)據(jù)讀寫請求之后,通過數(shù)據(jù)讀寫請求中攜帶的關(guān)鍵詞匹配微群索引表之前,進(jìn)一步包括: 確定所述數(shù)據(jù)讀寫請求為數(shù)據(jù)寫入請求; 如果確定攜帶的讀寫時間信息超出控制策略預(yù)先設(shè)置的數(shù)據(jù)寫入時間段范圍,生成一個新二級索引并為新二級索引配置相應(yīng)的二級索引地址ID信息以及寫入數(shù)據(jù)的數(shù)據(jù)塊地址ID信息。
4.如權(quán)利要求2所述的方法,其特征在于,在所述接收數(shù)據(jù)讀寫請求之后,通過數(shù)據(jù)讀寫請求中攜帶的關(guān)鍵詞匹配微群索引表之前,進(jìn)一步包括: 確定所述數(shù)據(jù)讀寫請求為數(shù)據(jù)寫入請求; 獲取存儲上一數(shù)據(jù)的二級索引對應(yīng)寫入數(shù)據(jù)的數(shù)據(jù)量; 確定該二級索引對應(yīng)寫入數(shù)據(jù)的數(shù)據(jù)量與當(dāng)前數(shù)據(jù)的數(shù)據(jù)量之和超出控制策略預(yù)先設(shè)置的數(shù)據(jù)量閾值,生成一個新二級索引并為新二級索引配置相應(yīng)的二級索引地址ID信息以及寫入數(shù)據(jù)的數(shù)據(jù)塊地址ID信息。
5.如權(quán)利要求2所述的方法,其特征在于,在所述接收數(shù)據(jù)讀寫請求之后,通過數(shù)據(jù)讀寫請求中攜帶的關(guān)鍵詞匹配微群索引表之前,進(jìn)一步包括: 確定所述數(shù)據(jù)讀寫請求為數(shù)據(jù)寫入請求; 通過數(shù)據(jù)寫入請求中攜帶的關(guān)鍵詞匹配微群索引表后,確定未能匹配上,則構(gòu)建新微群索引。
6.如權(quán)利要求1至5任一項所述的方法,其特征在于,所述微群索引中存儲有數(shù)據(jù)寫入時間段信息與二級索引地址ID信息的映射表。
7.如權(quán)利要求6所述的方法,其特征在于,所述關(guān)鍵詞包括用戶ID或用戶所屬的微群ID0
8.一種基于索引排序的數(shù)據(jù)讀寫裝置,其特征在于,該裝置包括:第一索引模塊、第二索引模塊以及數(shù)據(jù)塊模塊,其中, 第一索引模塊,接收數(shù)據(jù)讀寫請求,通過數(shù)據(jù)讀寫請求中攜帶的關(guān)鍵詞匹配微群索引表,獲取待寫入數(shù)據(jù)對應(yīng)的微群索引;根據(jù)數(shù)據(jù)讀寫請求中攜帶的讀寫時間信息,從獲取的微群索引中獲取與讀寫時間信息對應(yīng)的二級索引地址ID信息,輸出至第二索引模塊;第二索引模塊,根據(jù)獲取的二級索引地址ID信息尋址對應(yīng)的二級索引,獲取讀寫數(shù)據(jù)的數(shù)據(jù)塊地址ID,輸出至數(shù)據(jù)塊模塊; 數(shù)據(jù)塊模塊,根據(jù)獲取的數(shù)據(jù)塊地址ID,按時序倒排讀寫數(shù)據(jù)。
9.如權(quán)利要求8所述的裝置,其特征在于,所述裝置進(jìn)一步包括: 數(shù)據(jù)寫入時間段控制模塊,在確定接收到的數(shù)據(jù)讀寫請求為數(shù)據(jù)寫入請求時,如果確定攜帶的讀寫時間信息超出控制策略預(yù)先設(shè)置的數(shù)據(jù)寫入時間段范圍,生成一個新二級索引并為新二級索引配置相應(yīng)的二級索引地址ID信息以及寫入數(shù)據(jù)的數(shù)據(jù)塊地址ID信息。
10.如權(quán)利要求8所述的裝置,其特征在于,所述裝置進(jìn)一步包括: 數(shù)據(jù)量控制模塊,在確定接收到的數(shù)據(jù)讀寫請求為數(shù)據(jù)寫入請求時,獲取存儲上一數(shù)據(jù)的二級索引對應(yīng)寫入數(shù)據(jù)的數(shù)據(jù)量,確定該二級索引對應(yīng)寫入數(shù)據(jù)的數(shù)據(jù)量與當(dāng)前數(shù)據(jù)的數(shù)據(jù)量之和超出控制策略預(yù)先設(shè)置的數(shù)據(jù)量閾值,生成一個新二級索引并為新二級索引配置相應(yīng)的二級索引地址 ID信息以及寫入數(shù)據(jù)的數(shù)據(jù)塊地址ID信息。
全文摘要
本發(fā)明公開了一種基于索引排序的數(shù)據(jù)讀寫方法及裝置。該方法包括接收數(shù)據(jù)讀寫請求,通過數(shù)據(jù)讀寫請求中攜帶的關(guān)鍵詞匹配微群索引表,獲取待寫入數(shù)據(jù)對應(yīng)的微群索引;根據(jù)數(shù)據(jù)讀寫請求中攜帶的讀寫時間信息,從獲取的微群索引中獲取與讀寫時間信息對應(yīng)的二級索引地址標(biāo)識ID信息;根據(jù)獲取的二級索引地址ID信息尋址對應(yīng)的二級索引,獲取讀寫數(shù)據(jù)的數(shù)據(jù)塊地址ID;根據(jù)獲取的數(shù)據(jù)塊地址ID,按時序倒排讀寫數(shù)據(jù)。應(yīng)用本發(fā)明,可以降低讀寫數(shù)據(jù)的內(nèi)核資源耗費(fèi)。
文檔編號G06F17/30GK103186537SQ20111044480
公開日2013年7月3日 申請日期2011年12月27日 優(yōu)先權(quán)日2011年12月27日
發(fā)明者舒軍, 熊歡, 史業(yè)政, 田明 申請人:騰訊科技(北京)有限公司