【技術實現步驟摘要】
本專利技術涉及數據存儲技術,尤其涉及一種數據存儲方法及數據存儲系統。
技術介紹
目前,內存數據持久化存儲主要采用純內存存儲引擎,主要包括持久化消息隊列(mcq, MemcacheQ)、遠程字典服務器(Redis, Remote Dictionary Server)以及關系型數據庫管理系統(Mysql)等,Memcached暫時沒有自帶的數據落地方法,Redis則自帶有不斷添加模式(A0F, Append Only Mode)文件和快照(snapshot)兩種方式,Mysql的內存表則通過主動調用轉儲(dump)命令來將數據全部導出,然后寫入磁盤。現有支持數據落地的內存存儲引擎,Redis的AOF文件實現了增量備份(binlog),即對新增加的數據更新命令進行備份,通過將數據更新命令追加寫入到磁盤,這樣,可保證 用戶的數據更新命令能夠被及時寫入到磁盤,服務異常退出后,可以根據AOF文件中存儲的數據更新命令來恢復數據,但該方法隨著數據更新命令的不斷增多,使得AOF文件的數據量越來越大,數據恢復所需的時間會越來越長。為了降低數據恢復所需的時間,Redis引入了 AOF文件重寫機制,其功能就是重新生成一份AOF文件,新的AOF文件中一條記錄的數據更新命令只會有一次,而現有常規的AOF文件,記錄了對同一數據的多次更新命令,這樣,可以減小AOF文件的大小,但該方法在重寫AOF文件時,由于Redis在重寫AOF文件時會占用大量的CPU和內存資源,導致負載過高,出現短暫的服務暫停現象,因而,在重寫時,導致數據丟失問題,不能保障數據的安全性;而且,AOF文件的重寫,也將影響Red ...
【技術保護點】
一種數據存儲方法,該方法包括:接收數據更新命令,為數據更新命令分配游標;將接收的數據更新命令以及分配的游標寫入不斷添加模式AOF文件,并將AOF文件寫入磁盤;根據數據更新命令更新數據,在更新數據成功后,按照預先設置的時間周期,將數據寫入磁盤中的數據文件,將為數據更新命令分配的游標寫入磁盤中的游標文件;重啟服務,加載磁盤數據文件中的數據,獲取游標文件中順序位最高的游標,從存儲的AOF文件中,加載該游標對應的數據更新命令之后的數據更新命令。
【技術特征摘要】
1.一種數據存儲方法,該方法包括 接收數據更新命令,為數據更新命令分配游標; 將接收的數據更新命令以及分配的游標寫入不斷添加模式AOF文件,并將AOF文件寫入磁盤; 根據數據更新命令更新數據,在更新數據成功后,按照預先設置的時間周期,將數據寫入磁盤中的數據文件,將為數據更新命令分配的游標寫入磁盤中的游標文件; 重啟服務,加載磁盤數據文件中的數據,獲取游標文件中順序位最高的游標,從存儲的AOF文件中,加載該游標對應的數據更新命令之后的數據更新命令。2.根據權利要求I所述的方法,其中,所述為數據更新命令分配游標包括 判斷當前接收的數據更新命令是否為接收的第一條數據更新命令,如果是,為接收的數據更新命令分配游標序列號,并記錄分配的游標序列號信息;如果不是,將記錄的游標序列號進行累加,為接收數據更新命令設置累加的游標序列號,記錄累加的游標序列號信息。3.根據權利要求I所述的方法,其中,所述為數據更新命令分配游標包括 判斷AOF文件中是否存在寫入的數據更新命令,如果不存在,為接收的數據更新命令分配游標序列號;如果存在,獲取AOF文件中當前已寫入的數據更新命令的游標序列號信息,對獲取的游標序列號進行累加,為接收的數據更新命令設置累加的游標序列號。4.根據權利要求I至3任一項所述的方法,其中,所述將為數據更新命令分配的游標寫入磁盤中的游標文件包括 獲取預先設置的時間周期內,更新數據成功對應的數據更新命令,將為所述更新數據成功對應的數據更新命令分配的游標寫入磁盤中的游標文件。5.根據權利要求4所述的方法,其中,所述將為數據更新命令分配的游標寫入磁盤中的游標文件進一步包括 讀取游標文件中最新存儲的游標序列號; 判斷為數據更新命令分配的游標序列號是否大于游標文件中最新存儲的游標序列號,如果是,將為數據更新命令分配的游標寫入磁盤中的游標文件;否則,不作處理。6.根據權利要求I至3任一項所述的方法,其中,所述將數據寫入磁盤中的數據文件之后,進一步包括 刪除數據文件中除最近更新數據外的其他數據。7.根據權利要求I至3任一項所述的方法,其中,所述將為數據更新命令分配的游標寫入磁盤中的游標文件之后,進一步包括 存儲游標文件中最大的游標序列號,刪除游標文件中除最大游標序列號外的其他游標序列號。8.根據權利要求I至3任一項所述的方法,其中,所述加載磁盤數據文件中的數據,獲取游標文件中順序位最高的游標,從存儲的AOF文件中,加載該游標對應的數據更新命令之后的數據更新命令包括 讀取數據文件,獲取數據文件中最近更新的數據; 從游標文件中,獲取游標文件中順序位最大的游標序列號; 根據該最大的游標序列號,查詢存儲的AOF文件,根據AOF文件中的映射關系,獲取最大的游標序列號對應的數據更新命令;對獲取的數據文件中最近更新的數據,依序執行最大的游標序列號對應的數據更新命令之后的數據更新命令。9.一種數據存儲系統,其特征在于,該數據...
【專利技術屬性】
技術研發人員:湯曉剛,
申請(專利權)人:新浪網技術中國有限公司,
類型:發明
國別省市:
還沒有人留言評論。發表了對其他瀏覽者有用的留言會獲得科技券。