一種基于鍵值數據庫的日志處理方法及系統的制作方法
【技術領域】
[0001]本申請涉及云存儲領域,特別涉及一種基于鍵值數據庫的日志處理方法及系統。
【背景技術】
[0002]隨著技術的發展,人們對云存儲系統日志處理的方法越來越關注。
[0003]現有的云存儲系統一般采用一個單獨的磁盤分區,或者采用一個單獨的磁盤文件存放日志,該磁盤分區或者磁盤文件時可以被循環地、覆蓋地寫入的,但是每次日志寫入都必須以直接1的形式固化到磁盤,極大地影響了云存儲系統的寫入帶寬、寫入延時和1PS等性能指標。
[0004]因此,如何有效的進行云存儲系統的日志處理,提高日志寫入的性能是本領域技術人員目前需要解決的技術問題。
【發明內容】
[0005]本申請所要解決的技術問題是提供一種基于鍵值數據庫的日志處理方法及系統,解決了現有技術中每次日志寫入都必須以直接1的形式固化到磁盤,極大地影響了云存儲系統的寫入帶寬、寫入延時和1PS等性能指標的問題。
[0006]其具體方案如下:
[0007]一種基于鍵值數據庫的日志處理方法,該方法包括:
[0008]接收寫請求操作的指令,為所述寫請求操作分配序號,所述寫請求操作的指令中包括所述寫請求操作的內容;
[0009]將所述寫請求操作的指令轉換為鍵值記錄,其中,所述鍵值記錄中的鍵為所述為寫請求操作分配的序號,所述鍵值記錄中的值為所述寫請求操作的內容;
[0010]將所述寫請求操作的指令轉換成的鍵值記錄保存到鍵值數據庫中。
[0011]上述的方法,還包括:
[0012]將所述寫請求操作應用并固化到云存儲系統中。
[0013]上述的方法,還包括:
[0014]從所述鍵值數據庫中刪除與應用并固化到云存儲系統中的寫請求操作相對應的鍵值記錄。
[0015]上述的方法,當云存儲系統出現故障意外終止,并重啟時,還包括:
[0016]按照順序讀取所述鍵值數據庫中的所有鍵值記錄;
[0017]提取每條所述鍵值記錄中的寫請求操作的內容;
[0018]將所述寫請求操作的內容應用并固化到云存儲系統中。
[0019]上述的方法,還包括:
[0020]從鍵值數據庫中刪除與應用并固化到云存儲系統中的寫請求操作的內容相對應的鍵值記錄。
[0021]一種基于鍵值數據庫的日志處理系統,該系統包括:
[0022]接收單元,用于接收寫請求操作的指令,所述寫請求操作的指令中包括所述寫請求操作的序號以及所述寫請求操作的內容;
[0023]轉換單元,用于將所述寫請求操作的指令轉換為鍵值記錄,其中,所述鍵值記錄中的鍵為所述寫請求操作的序號,所述鍵值記錄中的值為所述寫請求操作的內容;
[0024]保存單元,用于將所述寫請求操作的指令轉換成的鍵值記錄保存到鍵值數據庫中。
[0025]上述的系統,還包括:
[0026]第一應用單元,用于將所述寫請求操作應用并固化到云存儲系統中。
[0027]上述的系統,還包括:
[0028]第一刪除單元,用于從所述鍵值數據庫中刪除與應用并固化到云存儲系統中的寫請求操作相對應的鍵值記錄。
[0029]上述的系統,當云存儲系統出現故障意外終止,并重啟時,還包括:
[0030]讀取單元,用于按照順序讀取所述鍵值數據庫中的所有鍵值記錄;
[0031]提取單元,用于提取每條所述鍵值記錄中的寫請求操作的內容;
[0032]第二應用單元,用于將所述寫請求操作的內容應用并固化到云存儲系統中。
[0033]上述的系統,還包括:
[0034]第二刪除單元,用于從鍵值數據庫中刪除與應用并固化到云存儲系統中的寫請求操作的內容相對應的鍵值記錄。
[0035]本申請提供的一種基于鍵值數據庫的日志處理方法中,首先,接收寫請求操作的指令,為所述寫請求操作分配序號,所述寫請求操作的指令中包括所述寫請求操作的內容;然后,將所述寫請求操作的指令轉換為鍵值記錄,其中,所述鍵值記錄中的鍵為所述為寫請求操作分配的序號,所述鍵值記錄中的值為所述寫請求操作的內容;最后,將所述寫請求操作的指令轉換成的鍵值記錄保存到鍵值數據庫中。本申請中將每個寫請求操作的日志以鍵值記錄的形式保存在鍵值數據庫中,由于鍵值數據庫是一種輕量級的非關系型數據庫,在鍵值數據庫中,所有的數據都按照鍵值對的形式進行組織、索引和存儲,能夠有效的減少讀寫磁盤的次數,擁有更好的讀寫性能,因此,本申請中基于鍵值數據庫的日志處理方法,可以有效的減少因記錄日志而導致的磁盤寫入次數,大大提升了日志寫入的性能。
【附圖說明】
[0036]為了更清楚地說明本申請實施例中的技術方案,下面將對實施例描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本申請的一些實施例,對于本領域普通技術人員來講,在不付出創造性勞動性的前提下,還可以根據這些附圖獲得其他的附圖。
[0037]圖1是本申請的一種基于鍵值數據庫的日志處理方法實施例的流程圖;
[0038]圖2是本申請的一種基于鍵值數據庫的日志處理方法另一實施例的流程圖;
[0039]圖3是本申請的一種基于鍵值數據庫的日志處理系統實施例的示意圖。
【具體實施方式】
[0040]下面將結合本申請實施例中的附圖,對本申請實施例中的技術方案進行清楚、完整地描述,顯然,所描述的實施例僅僅是本申請一部分實施例,而不是全部的實施例。基于本申請中的實施例,本領域普通技術人員在沒有做出創造性勞動前提下所獲得的所有其他實施例,都屬于本申請保護的范圍。
[0041 ] 參考圖1,示出了本申請一種基于鍵值數據庫的日志處理方法實施例的流程圖,可以包括以下步驟:
[0042]步驟SlOl:接收寫請求操作的指令,為所述寫請求操作分配序號,所述寫請求操作的指令中包括所述寫請求操作的內容。
[0043]當系統正常運行時,需要對日志進行寫入操作時,首先接收寫請求操作的指令,所述指令中包括了寫請求操作的內容,然后云存儲系統對接收的寫請求操作分配序號,這個序號代表了所述寫請求操作提交和處理的順序,以便后續將所述寫請求操作轉換成鍵值記錄。
[0044]步驟S102:將所述寫請求操作的指令轉換為鍵值記錄,其中,所述鍵值記錄中的鍵為所述為寫請求操作分配的序號,所述鍵值記錄中的值為所述寫請求操作的內容。
[0045]為了建立日志與鍵值數據庫的關系,將寫請求操作指令中的信息轉換成與鍵值數據庫中的鍵值記錄,一個寫請求操作指令轉換成一條以該寫請求的序號為鍵、內容為值的日志記錄,使得每個日志記錄均以鍵值記錄的形式表現出來。
[0046]步驟S103:將所述寫請求操作的指令轉換成的鍵值記錄保存到鍵值數據庫中。
[0047]將每個寫請求操作指令轉換成的鍵值記錄插入到鍵值數據庫對應的位置上。
[0048]本申請中,對于使用日志機制的云存儲系統,使用鍵值數據庫作為日志的存儲后端,以替代傳統的磁盤分區、磁盤文件等后端。
[0049]鍵值數據庫又稱鍵值存儲、KV數據庫,是一種輕量級的非關系型數據庫。在鍵值數據庫中,所有的數據都按照鍵值對的形式進行組織、索引和存儲。鍵值數據庫非常適合不涉及過多數據關系業務關系的業務數據,同時能有效減少讀寫磁盤的次數,比關系型數據庫擁有更好的讀寫性能。目前,常用的開源鍵值數據庫系統有LevelDB,Redis等。
[0050]步驟S104:將所述日志記錄保存在鍵值數據庫中之后,需要將所述寫請求操作應用并固化到云存儲系統中,將云存儲系統中相關的內容按照所述寫請求操作進行更改。
[0051]步驟S105:在云存儲系統中進行更改操作后,從所述鍵值數據庫中刪除與應用并固化到云存儲系統中的寫請求操作相對應的鍵值記錄。
[0052]本申請中將每個寫請求操作的日志以鍵值記錄的形式保