本申請涉及計算機技術領域,具體涉及數據處理領域,尤其涉及存儲數據的方法和裝置。
背景技術:
寫入放大(Write amplification,簡稱WA)是閃存和固態硬盤(SSD)中實際寫入的物理信息量是將要寫入的邏輯數量的多倍的現象。這是因為閃存在可重新寫入數據前必須先擦除,執行這些操作的過程就產生了一次以上的用戶數據和元數據的移動(或重新寫入),導致物理信息量倍增,并增加請求寫入的次數。
作為電子平臺上開發程序或系統的核心組件,引擎可供開發者迅速生成、鋪設程序所需的功能,或利用其輔助程序的運轉。現有的引擎架構一般包括三個部分:日志模塊、索引模塊和存儲模塊,日志模塊保存與內存一致的數據,從日志模塊中保存入存儲模塊的數據在日志模塊中被清除。在數據被從日志模塊中保存入存儲模塊時,需要對數據進行過濾冗余處理,通過索引模塊從日志模塊中讀出鍵值對,清除重復的鍵或者被刪除的鍵值,之后,將保留的鍵值寫入存儲模塊。這種讀、寫過程存在寫入放大問題,從而導致盤片需求量增大,存儲數據的有效性不高。
技術實現要素:
本申請的目的在于提出一種改進的存儲數據的方法和裝置,來解決以上背景技術部分提到的技術問題。
第一方面,本申請實施例提供了一種存儲數據的方法,該方法包括:獲取待存儲的鍵值對數據;將上述鍵值對數據存儲在磁盤的預寫日志文件中;根據上述鍵值對數據在磁盤中的存儲位置以及該鍵值對數據中的鍵在內存中為該鍵值對數據生成索引項,以通過該索引項對該鍵值對數據執行預定操作,在檢測到滿足合并整理條件的預寫日志文件時,根據索引將該滿足預定條件的預寫日志文件中保留的鍵值對數據追加寫入磁盤中,其中,存儲位置包括以下至少一項:預寫日志文件的文件名、鍵值對數據在預寫日志文件中與文件起始位置的偏移量。
在一些實施例中,當預定操作包括讀操作時,通過索引項對預寫日志文件中所存儲的鍵值對數據執行預定操作包括:在索引中查找待讀取鍵值對數據所對應的索引項,以獲取待讀取鍵值對數據的存儲位置;根據上述存儲位置從預寫日志文件中讀取待讀取鍵值對數據。
在一些實施例中,當預定操作包括刪除操作時,通過所述索引項對預寫日志文件中所存儲的鍵值對數據執行預定操作包括:根據鍵值對數據中的鍵在索引中刪除待刪除鍵值對數據的索引項。
在一些實施例中,上述方法還包括:刪除被追加寫入磁盤的預寫日志文件;更新內存中的索引。
在一些實施例中,合并整理條件包括以下至少一項:預寫日志文件的占用空間超過預設文件空間閾值;預寫日志文件的占用空間與總空間的比值超過預設文件空間比例閾值;預寫日志文件中被刪除的鍵值對數據超過預設閾值;預寫日志文件中被刪除鍵值對數據的占用空間與總空間的比值超過預設刪除比例閾值;磁盤的已占用空間超過預設磁盤空間閾值;磁盤的已占用空間與磁盤總容量的比值超過預設磁盤空間比例閾值。
在一些實施例中,內存中的索引包括根據磁盤中的預寫日志文件中的鍵值對數據的鍵生成的字典樹,其中,在該字典樹中,從根節點出發的每條路徑對應一個鍵值對數據的鍵,每條路徑的最后一個節點存儲該路徑所對應的鍵值對數據的存儲位置。
第二方面,本申請實施例還提供了一種存儲數據的裝置,該裝置包括:獲取模塊,配置用于獲取待存儲的鍵值對數據;存儲模塊,配置用于將上述鍵值對數據存儲在磁盤的預寫日志文件中;索引項生成模塊,配置用于根據上述鍵值對數據在磁盤中的存儲位置以及鍵值對數據中的鍵在內存中為該鍵值對數據生成索引項,以供數據操作模塊通過該索引項對該鍵值對數據執行預定操作,在檢測到滿足合并整理條件的預寫日志文件時,根據索引將該滿足預定條件的預寫日志文件中保留的鍵值對數據追加寫入磁盤中,其中,存儲位置包括以下至少一項:預寫日志文件的文件名、鍵值對數據在預寫日志文件中與文件起始位置的偏移量。
在一些實施例中,當預定操作包括讀操作時,數據操作模塊配置用于:在索引中查找待讀取鍵值對數據所對應的索引項,以獲取待讀取鍵值對數據的存儲位置;根據存儲位置從預寫日志文件中讀取待讀取鍵值對數據。
在一些實施例中,當預定操作包括刪除操作時,數據操作模塊配置用于:根據鍵值對數據中的鍵在索引中刪除待刪除鍵值對數據的索引項。
在一些實施例中,上述裝置還包括:刪除模塊,配置用于刪除被追加寫入磁盤的預寫日志文件;索引生成模塊還配置用于更新內存中的索引。
在一些實施例中,合并整理條件包括以下至少一項:預寫日志文件的占用空間超過預設文件空間閾值;預寫日志文件的占用空間與總空間的比值超過預設文件空間比例閾值;預寫日志文件中被刪除的鍵值對數據超過預設閾值;預寫日志文件中被刪除鍵值對數據的占用空間與總空間的比值超過預設刪除比例閾值;磁盤的已占用空間超過預設磁盤空間閾值;磁盤的已占用空間與磁盤總容量的比值超過預設磁盤空間比例閾值。
在一些實施例中,內存中的索引包括根據磁盤中的預寫日志文件中的鍵值對數據的鍵生成的字典樹,其中,在該字典樹中,從根節點出發的每條路徑對應一個鍵值對數據的鍵,每條路徑的最后一個節點存儲該路徑所對應的鍵值對數據的存儲位置。
第三方面,本申請實施例提供了一種存儲設備,包括:一個或多個處理器;程序存儲裝置,用于存儲一個或多個程序;磁盤,用于存儲一個或多個預寫日志文件;當所述一個或多個程序被所述一個或多個處理器執行,使得所述一個或多個處理器實現任一上述的方法。
本申請實施例提供的存儲數據的方法和裝置,通過獲取待存儲的鍵值對數據,接著將該鍵值對數據存儲在磁盤的預寫日志文件中,然后根據該鍵值對數據在磁盤中的存儲位置以及該鍵值對數據中的鍵在內存中為該鍵值對生成索引項,以通過索引項對預寫日志文件中所存儲的鍵值對數據執行預定操作,在檢測到滿足合并整理條件的預寫日志文件時,根據索引將該滿足預定條件的預寫日志文件中保留的鍵值對數據追加寫入磁盤中。由于鍵值對數據存儲在預寫日志文件中,可以通過對內存中的索引項對預寫日志文件中所存儲的鍵值對數據執行預定操作,在合并整理操作時,以追加寫方式只寫保留的鍵值對數據,從而可以減小寫入放大問題,提高存儲數據的有效性。
附圖說明
通過閱讀參照以下附圖所作的對非限制性實施例所作的詳細描述,本申請的其它特征、目的和優點將會變得更明顯:
圖1是本申請可以應用于其中的示例性系統架構圖;
圖2是根據本申請的存儲數據的方法的一個實施例的流程圖;
圖3是根據本申請的存儲數據的方法的一個可選實現方式中的字典樹形式索引示意圖;
圖4是根據本申請的存儲數據的方法的一個應用場景的示意圖;
圖5是根據圖4示出的應用場景中刪除鍵值對數據的過程示意圖;
圖6是根據本申請的存儲數據裝置的一個實施例的結構示意圖;
圖7是適于用來實現本申請實施例的終端設備或服務器的計算機系統的結構示意圖。
具體實施方式
下面結合附圖和實施例對本申請作進一步的詳細說明。可以理解的是,此處所描述的具體實施例僅僅用于解釋相關發明,而非對該發明的限定。另外還需要說明的是,為了便于描述,附圖中僅示出了與有關發明相關的部分。
需要說明的是,在不沖突的情況下,本申請中的實施例及實施例中的特征可以相互組合。下面將參考附圖并結合實施例來詳細說明本申請。
圖1示出了可以應用本申請的存儲數據的方法或存儲數據裝置的實施例的示例性系統架構100。
如圖1所示,系統架構100可以包括終端設備101、102、103,網絡104和服務器105。網絡104用以在終端設備101、102、103和服務器105之間提供通信鏈路的介質。網絡104可以包括各種連接類型,例如有線、無線通信鏈路或者光纖電纜等等。
用戶可以使用終端設備101、102、103通過網絡104與服務器105交互,以接收或發送消息等。終端設備101、102、103上可以安裝有各種通訊客戶端應用,例如網頁瀏覽器應用、存儲數據類應用、購物類應用、搜索類應用、即時通信工具、郵箱客戶端、社交平臺軟件等。
終端設備101、102、103可以是具有顯示屏并且支持網頁瀏覽的各種電子設備,包括但不限于智能手機、平板電腦、電子書閱讀器、MP3播放器(Moving Picture Experts Group Audio Layer III,動態影像專家壓縮標準音頻層面3)、MP4(Moving Picture Experts Group Audio Layer IV,動態影像專家壓縮標準音頻層面4)播放器、膝上型便攜計算機和臺式計算機等等。
服務器105可以是提供各種服務的服務器,例如對終端設備101、102、103上顯示的網頁提供支持的網頁服務器等。服務器105可以對接收到的數據(如搜索請求等)進行分析等處理。例如,服務器105可以接收從終端設備101、102、103等發送的搜索請求,并對接收到的搜索請求中包含的搜索關鍵詞數據進行分析和存儲。
需要說明的是,本申請所提供的存儲數據的方法的實施例一般由服務器105執行,相應地,存儲數據裝置的實施例一般設置于服務器105中。
應該理解,圖1中的終端設備、網絡和服務器的數目僅僅是示意性的。根據實現需要,可以具有任意數目的終端設備、網絡和服務器。
繼續參考圖2,示出了根據本申請的存儲數據的方法的一個實施例的流程200。該存儲數據的方法,包括以下步驟:
步驟201,獲取待存儲的鍵值對數據。
通常,在分布式存儲系統中,通過key-value(鍵值對)分布式存儲可以將key(鍵)作為索引實現大數據量、高并發的快速查詢。在本實施例中,存儲數據的方法運行于其上的電子設備(例如圖1所示的服務器105)可以從本地或遠程地獲取待存儲的key-value數據。其中,待存儲的key-value數據可以是符合上述電子設備存儲的數據的條件的key-value數據。
作為示例,上述電子設備要存儲的key-value數據可以包括:key是用戶輸入的搜索關鍵詞,value(值)是與該搜索關鍵詞相關的其他搜索關鍵詞,例如該搜索關鍵詞的同義詞、近義詞、相關詞等。舉例而言,如果該搜索關鍵詞為“北京天氣”,與該搜索關鍵詞相關的其他搜索關鍵詞例如可以包括“北京天氣”、“首都天氣”、“北京的天氣”等等,則可以生成該條key-value數據:key=“北京天氣”,value=“北京天氣、首都天氣、北京的天氣……”。當上述電子設備是為網頁瀏覽器提供支持的后臺服務器時,上述電子設備可以存儲有或者通過獲取終端設備的搜索關鍵詞生成該條鍵值對數據,其可以從本地獲取該條鍵值對數據;當上述電子設備是與為網頁瀏覽器提供支持的后臺服務器相連接的其他電子設備時,其可以遠程地獲取該條鍵值對數據。可以理解,實踐中還可以有很多種存儲數據的方法運行于其上的電子設備從本地或遠程地獲取待存儲的key-value數據的情況,在此不再窮舉。key-value數據的生成方法不是本實施例方案的發明點,其可以采用公知的各種技術,在此不再贅述。
步驟202,將上述鍵值對數據存儲在磁盤的預寫日志文件中。
在本實施例中,上述電子設備(例如圖1所示的服務器105)可以進一步將步驟201中獲取的待存儲的key-value數據存儲在磁盤的預寫日志(write-ahead log,WAL)文件中。
其中,磁盤可以是用于存儲數據的而磁性盤片,通過磁頭在磁性盤片上的移動讀寫數據。磁盤上可以包括多個預寫日志文件。在本實施例中,磁頭可以順著一個方向移動,按可用預寫日志文件的順序將待存儲的key-value數據寫入預寫日志文件。上述電子設備可以通過設置文件標記(例如位標記)來表示預寫日志文件是否可用。例如,已存儲有數據的預寫日志文件不可用。當某個預寫日志文件的數據被刪除時,上述電子設備可以將預設日志文件的文件標記修改為可用(如將標記為置位)。當磁盤中的最后一個可用預寫日志文件被寫滿時,上述電子設備可以控制磁頭從起始位置順序檢測可用預寫日志文件以寫入數據。
步驟203,根據上述鍵值對數據在磁盤中的存儲位置以及鍵值對數據中的鍵在內存中為該鍵值對數據生成索引項。
在本實施例中,上述電子設備可以接著根據上述key-value數據在磁盤中的存儲位置以及key-value數據中的key在內存中為該條key-value數據生成索引項,從而,上述電子設備可以通過索引項對磁盤的預寫日志文件中存儲的key-value數據執行預定操作,在檢測到滿足合并整理條件的預寫日志文件時,根據索引將該滿足預定條件的預寫日志文件中保留的key-value數據追加寫入磁盤中。實踐中,電子設備可以遍歷滿足預定條件的預寫日志文件中的key-value數據,并根據其中的各個key,從索引中查找,若查找到該條key-value數據的索引項,且沒有刪除標記,則可以確定該條key-value數據需保留。否則,當在索引中查找不到相應索引項,或者查找到相應索引項被做了刪除標記,則不保留該條key-value數據。
其中,合并整理條件例如可以包括但不限于以下至少一項:預寫日志文件的占用空間超過預設文件空間閾值(如15千兆字節);預寫日志文件的占用空間與總空間的比值超過預設文件空間比例閾值(如99%);預寫日志文件中被刪除的鍵值對數據超過預設閾值(如50條);預寫日志文件中被刪除鍵值對數據的占用空間與總空間的比值超過預設刪除比例閾值(如90%);磁盤的已占用空間超過預設磁盤空間閾值(如15億兆字節);磁盤的已占用空間與磁盤總容量的比值超過預設磁盤空間比例閾值(如90%);等等。
這里,存儲位置可以包括但不限于以下至少一項:預寫日志文件的文件名、所述鍵值對數據在預寫日志文件中與文件起始位置的偏移量。其中偏移量可以是字節數(如1byte),也可以是偏移的位數(如8bit),本申請對此不做限定。
這里的預定操作可以是針對數據的基本操作,例如包括但不限于讀操作、寫操作、刪除操作等。預定操作還可以是由基本操作組成的組合操作,例如合并整理操作,其可以包括讀操作、寫操作、刪除操作中的一項或多項。
以寫操作為例,上述電子設備可以按可用預寫日志文件的順序將待存儲的key-value數據寫入預寫日志文件,然后根據鍵值對數據在磁盤中的存儲位置以及key-value數據中的key在內存中為鍵值對數據生成索引項。
以讀操作為例,上述電子設備可以先根據待讀取的key-value數據中的key,在索引中查找到相應索引項,從索引項中獲取該key對應的key-value數據在磁盤中的存儲位置,例如預寫日志文件的文件名、鍵值對數據在預寫日志文件中與文件起始位置的偏移量,上述電子設備可以根據該存儲位置找到key-value數據所在的預寫日志文件,并根據鍵值對數據在預寫日志文件中與文件起始位置的偏移量找到key-value數據讀出。
以刪除操作為例,上述電子設備可以根據待刪除的鍵值對數據中的key,在索引中查找到相應索引項,并刪除該索引項。電子設備可以根據該索引項查找磁盤中刪除對應的key-value數據,或者對磁盤中對應的key-value數據做出已刪除標記,或者對磁盤中對應的key-value數據暫且不做任何處理。當檢測到滿足合并整理條件的預寫日志文件時,根據索引將該滿足預定條件的預寫日志文件中保留的key-value數據追加寫入磁盤中。此時,由于刪除操作對待刪除的key-value數據進行了刪除索引項的操作,所以,在這里根據索引將該滿足預定條件的預寫日志文件中保留的key-value數據追加寫入磁盤時,不再寫入需刪除的key-value數據,而只寫入了需保留的key-value數據。由此,對數據的合并整理過程中只有需保留的key-value數據占了兩份空間,可以大大減少讀寫數據量,從而減少寫入放大。
在本實施例的一些可選實現方式中,上述電子設備對預寫日志文件進行合并整理操作后,可以刪除掉合并整理前的預寫日志文件,以騰出磁盤空間。另外,由于該預寫日志文件中的鍵值對數據的存儲位置發生了變化,上述電子設備可以根據變化后的存儲位置更新內存中的索引,以便后續根據索引對相應鍵值對數據進行操作。
在本實施例的一些可選實現方式中,內存中的索引可以包括根據磁盤中的預寫日志文件中的key-value數據的key生成的字典樹。其中,在字典樹中,從根節點出發的每條路徑可以對應一個鍵值對數據的鍵,每條路徑的最后一個節點可以存儲該路徑所對應的鍵值對數據的存儲位置。作為示例,假如所存儲的key-value數據中的key是用戶搜索時的搜索關鍵詞,如圖3所示,生成的字典樹中:從根節點300到節點311形成的路徑,節點300和節點310對應一個key“西門”,節點311中存放key“西門”對應的鍵值對數據的存儲地址“地址1”;從根節點300到節點313形成的路徑,節點300、節點310、節點312對應一個key“西門慶”,節點313中存放key“西門慶”對應的key-value數據的存儲地址“地址2”;從根節點300到節點321形成的路徑,節點300、節點320對應一個key“西瓜”,節點321中存放key“西瓜”對應的鍵值對數據的存儲地址“地址3”;等等。
繼續參見圖4,圖4是根據本實施例的存儲數據的方法的應用場景的一個示意圖。在圖4的應用場景中,本實施例的存儲數據的方法例如應用于為網頁瀏覽器提供支持的后臺服務器410。用戶可以通過運行有網頁瀏覽器的終端設備420輸入搜索關鍵詞421以獲取網頁。后臺服務器410可以根據用戶輸入的搜索關鍵詞421及搜索關鍵詞421的同義詞、近義詞、相關詞提供搜索結果422、423、424等通過終端設備420展現給用戶。后臺服務器410可以根據所有用戶的搜索關鍵詞,通過諸如聚類、語義分析之類的方法,對搜索關鍵詞進行分類和擴充,例如,可以將同義詞、近義詞、相關詞作為value,其中的一個詞作為key進行存儲,以供用戶通過搜索關鍵詞421搜索網頁時,檢索出與該搜索關鍵詞421及其同義詞、近義詞、相關詞相應的結果提供給用戶。
該應用場景中,當接收到用戶輸入的搜索關鍵詞時,后臺服務器410可以先將用戶輸入的搜索關鍵詞與索引中的key進行匹配。其中,該匹配可以是同義詞、近義詞、相關詞的匹配。當在索引中能匹配到相應key時,后臺服務器410可以確定該條檢索數據不存儲,當在索引中不能匹配到相應key時,后臺服務器可以將該搜索關鍵詞作為key,該搜索關鍵詞的同義詞、近義詞、相關詞作為value生成key-value數據,并將其作為待存儲key-value數據。接著,后臺服務器410可以將該待存儲key-value數據存儲在磁盤的預寫日志文件中。在該應用場景中,磁頭可以按可用預寫日志文件的順序寫入數據,每次讀取數據后磁頭仍跳回數據寫到的位置,則后臺服務器可以將該待存儲key-value數據存儲在磁盤中磁頭當前指向的預寫日志文件中。然后,根據key-value數據在磁盤中的存儲位置以及key-value數據中的key在內存中為key-value數據生成索引項,以通過索引項對key-value數據執行預定操作。
可以理解,一定時期往往會產生該時期的網絡熱詞,假設后臺服務器410按照時間段(如1天)存儲預定數量(如1000)的熱詞,則對于一個當前時間段不是熱詞的歷史熱詞,則需要被刪除。此時,請參考圖5,假設某個歷史熱詞對應的鍵值對數據x需要被刪除,在步驟501中,后臺服務器可以只刪除鍵值對數據x在索引中的索引項。當鍵值對數據x所在的預設日志文件的合并整理條件(例如預寫日志文件被刪除的數據達到90%)滿足時,后臺服務器410可以遍歷鍵值對數據x所在的預設日志文件,如步驟502所示,對于鍵值對數據x,后臺服務器410可以匹配索引中的key,此時沒有匹配到相應的key,則鍵值對數據x的索引項為空。如步驟503所示,假設key-value數據x所在的預設日志文件中,另一個鍵值對數據y的索引項存在,則后臺服務器410可以將該鍵值對數據y以追加寫的方式存儲到磁盤,并可以更新索引中該鍵值對數據y的索引項。然后,如步驟504所示,后臺服務器410在遍歷完key-value數據x所在的預設日志文件后,可以將整個文件刪除。
本實施例的存儲數據的方法,由于key-value數據存儲在預寫日志文件中,可以通過對內存中的索引項對預寫日志文件中所存儲的鍵值對數據執行預定操作,在合并整理操作時,以追加寫方式只寫保留的key-value數據,從而可以減小寫入放大問題,提高存儲數據的有效性。
進一步參考圖6,作為對存儲數據的方法的實現,本申請提供了一種存儲數據的裝置的一個實施例,該裝置實施例與圖2所示的方法實施例相對應。
如圖6所示,本實施例的存儲數據的裝置600包括:獲取模塊601、存儲模塊602、索引項生成模塊603和數據操作模塊604。其中,獲取模塊601可以配置用于獲取待存儲的key-value數據;存儲模塊602可以配置用于將上述key-value數據存儲在磁盤的預寫日志文件中;索引項生成模塊603可以根據上述key-value數據在磁盤中的存儲位置以及key-value數據中的key在內存中為該key-value數據生成索引項,以供數據操作模塊604通過該索引項對該key-value數據執行預定操作,在檢測到滿足合并整理條件的預寫日志文件時,根據索引將該滿足預定條件的預寫日志文件中保留的key-value數據追加寫入磁盤中,其中,存儲位置可以包括但不限于以下至少一項:預寫日志文件的文件名、key-value數據在預寫日志文件中與文件起始位置的偏移量。
在本實施例的一些可選實現方式中,當預定操作包括讀操作時,數據操作模塊604可以配置用于:在索引中查找待讀取key-value數據所對應的索引項,以獲取待讀取key-value數據的存儲位置;根據存儲位置從預寫日志文件中讀取待讀取key-value數據。
在本實施例的一些可選實現方式中,當預定操作包括刪除操作時,數據操作模塊604可以配置用于:根據key-value數據中的key在索引中刪除待刪除key-value數據的索引項。
在本實施例的一些可選實現方式中,上述裝置600還可以包括:刪除模塊(未示出),配置用于刪除被追加寫入磁盤的預寫日志文件;索引生成模塊603還可以配置用于更新內存中的索引。
在本實施例的一些可選實現方式中,合并整理條件可以包括但不限于以下至少一項:預寫日志文件的占用空間超過預設文件空間閾值;預寫日志文件的占用空間與總空間的比值超過預設文件空間比例閾值;預寫日志文件中被刪除的key-value數據超過預設閾值;預寫日志文件中被刪除key-value數據的占用空間與總空間的比值超過預設刪除比例閾值;磁盤的已占用空間超過預設磁盤空間閾值;磁盤的已占用空間與磁盤總容量的比值超過預設磁盤空間比例閾值;等等。
在本實施例的一些可選實現方式中,內存中的索引包括根據磁盤中的預寫日志文件中的key-value數據的key生成的字典樹,其中,在該字典樹中,從根節點出發的每條路徑對應一個key-value數據的鍵,每條路徑的最后一個節點存儲該路徑所對應的key-value數據的存儲位置。
值得說明的是,存儲數據的裝置600中記載的諸模塊與參考圖2描述的方法中的各個步驟相對應。由此,上文針對方法描述的操作和特征同樣適用于存儲數據的裝置600及其中包含的模塊或單元,在此不再贅述。
本領域技術人員可以理解,上述存儲數據的裝置600還包括一些其他公知結構,例如處理器、存儲器等,為了不必要地模糊本公開的實施例,這些公知的結構在圖6中未示出。
下面參考圖7,其示出了適于用來實現本申請實施例的終端設備/服務器的計算機系統700的結構示意圖。圖7示出的終端設備/服務器僅僅是一個示例,不應對本申請實施例的功能和使用范圍帶來任何限制。
如圖7所示,計算機系統700包括中央處理單元(CPU)701,其可以根據存儲在只讀存儲器(ROM)702中的程序或者從存儲部分708加載到隨機訪問存儲器(RAM)703中的程序而執行各種適當的動作和處理。在RAM 703中,還存儲有系統700操作所需的各種程序和數據。CPU701、ROM 702以及RAM703通過總線704彼此相連。輸入/輸出(I/O)接口705也連接至總線704。
以下部件連接至I/O接口705:包括硬盤等的存儲部分706;以及包括諸如LAN卡、調制解調器等的網絡接口卡的通信部分707。通信部分707經由諸如因特網的網絡執行通信處理。驅動器708也根據需要連接至I/O接口705。可拆卸介質709,諸如磁盤、光盤、磁光盤、半導體存儲器等等,根據需要安裝在驅動器708上,以便于從其上讀出的計算機程序根據需要被安裝入存儲部分706。
特別地,根據本公開的實施例,上文參考流程圖描述的過程可以被實現為計算機軟件程序。例如,本公開的實施例包括一種計算機程序產品,其包括承載在計算機可讀介質上的計算機程序,該計算機程序包含用于執行流程圖所示的方法的程序代碼。在這樣的實施例中,該計算機程序可以通過通信部分707從網絡上被下載和安裝,和/或從可拆卸介質709被安裝。在該計算機程序被中央處理單元(CPU)701執行時,執行本申請的方法中限定的上述功能。需要說明的是,本申請所述的非易失性計算機可讀介質可以是非易失性計算機可讀信號介質或者非易失性計算機可讀存儲介質或者是上述兩者的任意組合。非易失性計算機可讀存儲介質例如可以是——但不限于——電、磁、光、電磁、紅外線、或半導體的系統、裝置或器件,或者任意以上的組合。非易失性計算機可讀存儲介質的更具體的例子可以包括但不限于:具有一個或多個導線的電連接、便攜式計算機磁盤、硬盤、隨機訪問存儲器(RAM)、只讀存儲器(ROM)、可擦式可編程只讀存儲器(EPROM或閃存)、光纖、便攜式緊湊磁盤只讀存儲器(CD-ROM)、光存儲器件、磁存儲器件、或者上述的任意合適的組合。在本申請中,非易失性計算機可讀存儲介質可以是任何包含或存儲程序的有形介質,該程序可以被指令執行系統、裝置或者器件使用或者與其結合使用。而在本申請中,計算機可讀的信號介質可以包括在基帶中或者作為載波一部分傳播的數據信號,其中承載了計算機可讀的程序代碼。這種傳播的數據信號可以采用多種形式,包括但不限于電磁信號、光信號或上述的任意合適的組合。計算機可讀的信號介質還可以是計算機可讀存儲介質以外的任何計算機可讀介質,該計算機可讀介質可以發送、傳播或者傳輸用于由指令執行系統、裝置或者器件使用或者與其結合使用的程序。計算機可讀介質上包含的程序代碼可以用任何適當的介質傳輸,包括但不限于:無線、電線、光纜、RF等等,或者上述的任意合適的組合。
附圖中的流程圖和框圖,圖示了按照本申請各種實施例的系統、方法和計算機程序產品的可能實現的體系架構、功能和操作。在這點上,流程圖或框圖中的每個方框可以代表一個模塊、程序段、或代碼的一部分,該模塊、程序段、或代碼的一部分包含一個或多個用于實現規定的邏輯功能的可執行指令。也應當注意,在有些作為替換的實現中,方框中所標注的功能也可以以不同于附圖中所標注的順序發生。例如,兩個接連地表示的方框實際上可以基本并行地執行,它們有時也可以按相反的順序執行,這依所涉及的功能而定。也要注意的是,框圖和/或流程圖中的每個方框、以及框圖和/或流程圖中的方框的組合,可以用執行規定的功能或操作的專用的基于硬件的系統來實現,或者可以用專用硬件與計算機指令的組合來實現。
描述于本申請實施例中所涉及到的模塊可以通過軟件的方式實現,也可以通過硬件的方式來實現。所描述的模塊也可以設置在處理器中,例如,可以描述為:一種處理器包括獲取模塊、存儲模塊、索引項生成模塊和數據操作模塊。其中,這些模塊的名稱在某種情況下并不構成對該單元本身的限定,例如,獲取模塊還可以被描述為“配置用于獲取待存儲的鍵值對數據的模塊”。
作為另一方面,本申請還提供了一種計算機可讀介質,該計算機可讀介質可以是上述實施例中描述的裝置中所包含的;也可以是單獨存在,而未裝配入該裝置中。上述計算機可讀介質承載有一個或者多個程序,當上述一個或者多個程序被該裝置執行時,使得該裝置:獲取待存儲的鍵值對數據;將上述鍵值對數據存儲在磁盤的預寫日志文件中;根據上述鍵值對數據在磁盤中的存儲位置以及該鍵值對數據中的鍵在內存中為該鍵值對數據生成索引項,以通過該索引項對該鍵值對數據執行預定操作,在檢測到滿足合并整理條件的預寫日志文件時,根據索引將該滿足預定條件的預寫日志文件中保留的鍵值對數據追加寫入磁盤中,其中,存儲位置包括以下至少一項:預寫日志文件的文件名、鍵值對數據在預寫日志文件中與文件起始位置的偏移量。
以上描述僅為本申請的較佳實施例以及對所運用技術原理的說明。本領域技術人員應當理解,本申請中所涉及的發明范圍,并不限于上述技術特征的特定組合而成的技術方案,同時也應涵蓋在不脫離上述發明構思的情況下,由上述技術特征或其等同特征進行任意組合而形成的其它技術方案。例如上述特征與本申請中公開的(但不限于)具有類似功能的技術特征進行互相替換而形成的技術方案。