[發明專利]SSTable文件存儲方法及裝置有效
| 申請號: | 201410039183.8 | 申請日: | 2014-01-27 |
| 公開(公告)號: | CN103744628A | 公開(公告)日: | 2014-04-23 |
| 發明(設計)人: | 楊威;唐會軍 | 申請(專利權)人: | 北京奇虎科技有限公司;奇智軟件(北京)有限公司 |
| 主分類號: | G06F3/06 | 分類號: | G06F3/06;G06F17/30 |
| 代理公司: | 北京市浩天知識產權代理事務所 11276 | 代理人: | 宋菲;劉蘭蘭 |
| 地址: | 100088 北京市西城區新*** | 國省代碼: | 北京;11 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | sstable 文件 存儲 方法 裝置 | ||
技術領域
本發明涉及網絡通信技術領域,具體涉及一種SSTable文件存儲方法及裝置。
背景技術
SSTable(Sorted?String?Table,排序字符串表)文件能夠將內存中的數據按照KEY-VALUE的形式高效地存儲到磁盤上。具體地,每當內存中寫入的數據達到一定大小后,就會一次性刷新到磁盤上形成一個或多個SSTable文件。其中,一次生成多個SSTable文件的情況主要是在要存儲的數據量超過了一個標準的SSTable文件的預設大小時才會發生,否則,一次只需生成一個SSTable文件即可。其中,每個SSTable文件包含多條行數據。每條行數據通過一個鍵值來標識,該鍵值相當于KEY-VALUE結構中的KEY;每條行數據中存儲的數據內容相當于KEY-VALUE結構中的VALUE。并且,每個SSTable文件中的各條行數據是按照鍵值KEY的大小有序存儲的。
這些刷新到磁盤上的SSTable文件一旦形成就只能讀取不能修改。由于內存中不斷有新的數據寫入,因此,每隔一定的時間就會形成一些新的SSTable文件。因此,如果不對磁盤上的各個SSTable文件進行定期整理并重新存儲,則會占用大量的磁盤空間,進而導致磁盤空間不足。
目前,在對磁盤上的各個SSTable文件進行定期整理時,主要是通過對各個SSTable文件中鍵值相同的行數據進行合并來實現的。例如,對于KEY=DFCD3454的鍵值來說,該鍵值可能在每個SSTable文件中都存在著對應的行數據,由于這些不同的SSTable文件中的行數據都具有相同的鍵值,因而表明這些行數據都是關于同一信息項的內容,因此,只需要保留一條最新的行數據以供查詢,而對于內容重復的行數據或者時間較早的行數據則可以直接刪除。為了實現這一點,需要將磁盤中的所有SSTable文件都打開并讀取其中的內容才能確定出關于每一鍵值的最新存儲結果。
但是,上述方式存在著以下明顯缺陷:每次合并存儲時都需要同時打開磁盤中的所有SSTable文件,因此當磁盤中的SSTable文件占用空間大于整個磁盤空間的二分之一時,則無法進行上述合并存儲工作。例如,假設磁盤空間的總大小為15T,且當前磁盤空間中已經存儲了10T的SSTable文件,此時,如果要將這些SSTable文件同時打開,則需要磁盤能夠額外提供10T的緩存空間,而這只有在磁盤總大小不小于20T的情況下才能完成,由此可見,現有的SSTable文件的合并存儲方式存在很大的局限性,對磁盤空間的要求較高。而且,即使磁盤空間充足,但是由于上述操作需要同時占用很多的系統進程,因而操作失敗或死機的風險很高。
另外,在現有的合并存儲方式中,合并后的每個SSTable文件中依然包含所有的鍵值,因此,合并后SSTable文件的鍵值數量并未得到簡化,導致每次合并過程都會存在上述的諸多缺陷。而且,正是由于合并后SSTable文件的鍵值數量沒有得到簡化,因此,每次對SSTable文件進行掃描或讀取時都必須打開所有的SSTable文件,所以也不能顯著降低掃描或讀取操作時的工作量。
發明內容
鑒于上述問題,提出了本發明以便提供一種克服上述問題或者至少部分地解決上述問題的SSTable文件存儲方法及裝置。
依據本發明的一個方面,提供了一種SSTable文件存儲方法,包括:讀取合并前的多個SSTable文件,其中,每個合并前的SSTable文件中包含多條通過鍵值標識的行數據;確定所述合并前的多個SSTable文件所對應的鍵值區間,其中,所述合并前的多個SSTable文件所對應的鍵值區間由所述合并前的多個SSTable文件中包含的最大鍵值和最小鍵值界定;將所述合并前的多個SSTable文件所對應的鍵值區間劃分為多個子區間,且每個子區間分別對應一個預設的子目錄;對所述合并前的多個SSTable文件中所有鍵值相同的行數據進行合并,將合并后的行數據按照鍵值與子區間的對應關系存儲為多個合并后的SSTable文件,將所述多個合并后的SSTable文件分別存儲到對應子區間的子目錄下。
可選地,每個合并前的SSTable文件所對應的鍵值區間相同,且所述每個合并前的SSTable文件所對應的鍵值區間由該SSTable文件中包含的最大鍵值和最小鍵值界定。
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于北京奇虎科技有限公司;奇智軟件(北京)有限公司,未經北京奇虎科技有限公司;奇智軟件(北京)有限公司許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201410039183.8/2.html,轉載請聲明來源鉆瓜專利網。
- 上一篇:用于多屏幕觀看的內容分發的方法和裝置
- 下一篇:背部觸控方法及其移動終端





