[發(fā)明專利]存儲器的讀寫控制方法及對應的存儲器有效
| 申請?zhí)枺?/td> | 201210038206.4 | 申請日: | 2012-02-20 |
| 公開(公告)號: | CN103257831A | 公開(公告)日: | 2013-08-21 |
| 發(fā)明(設計)人: | 許劍峰;吳悅;鐘超宇;謝明;李文征 | 申請(專利權)人: | 深圳市騰訊計算機系統(tǒng)有限公司 |
| 主分類號: | G06F3/06 | 分類號: | G06F3/06;G06F12/02 |
| 代理公司: | 北京德琦知識產(chǎn)權代理有限公司 11018 | 代理人: | 張曉峰;宋志強 |
| 地址: | 518057 廣東省深圳市南*** | 國省代碼: | 廣東;44 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 存儲器 讀寫 控制 方法 對應 | ||
技術領域
本發(fā)明涉及數(shù)據(jù)存儲技術領域,尤其涉及一種存儲器的讀寫控制方法及對應的存儲器和服務器。
背景技術
目前的數(shù)據(jù)存儲技術中,通常在存儲器中以塊(Block)為單位對存儲資源進行劃分。也就是說:將存儲器按固定大小區(qū)分為多個區(qū)域,每一個區(qū)域,稱為一個塊。在現(xiàn)有存儲器中分為兩種塊:一種塊叫做基本塊,用來進行哈希(Hash)計算定位使用,以方便數(shù)據(jù)的定位;另一種塊叫做溢出塊,用于在基本塊不夠用時,存儲溢出部分的數(shù)據(jù)。
現(xiàn)有技術中,數(shù)據(jù)在存儲器中存儲,是以數(shù)據(jù)的關鍵字(Key)進行Hash計算后再取模,得到一個存儲器的塊偏移量,在存儲器的該偏移量處的塊直接寫入數(shù)據(jù);如果發(fā)現(xiàn)該偏移量處的塊已經(jīng)有了數(shù)據(jù),則需要讀取出來,把新數(shù)據(jù)和老數(shù)據(jù)打包在一起再次寫入該塊。如果指定偏移量處的塊已經(jīng)存儲滿了,則把還未寫入的數(shù)據(jù)添加到溢出塊,并在該偏移量處的塊的尾部保存溢出塊地址。
圖1為現(xiàn)有技術的一種存儲器讀寫控制的示意圖。參見圖1,如果一個數(shù)據(jù)的Key經(jīng)過Hash計算并取模后的值為3,則把該數(shù)據(jù)存儲在存儲器的基本塊中的第3塊中,并沒有任何索引信息;讀取該數(shù)據(jù)時,也是相同的定位流程,即對該數(shù)據(jù)的Key經(jīng)過Hash計算并取模后的值為3,則到存儲器的基本塊的第3個塊把所有數(shù)據(jù)讀取出來,然后解碼,得到該Key對應的數(shù)據(jù)。如果該第3塊原來就有數(shù)據(jù),那么在寫入此Key對應數(shù)據(jù)的時候,先把原來的數(shù)據(jù)讀出來,將新舊數(shù)據(jù)合并(編碼)后,再一起寫入該第3塊。
圖2為現(xiàn)有技術的一種存儲器讀寫控制時使用溢出塊的示意圖。參見圖2,當向存儲器的基礎塊的所述第3塊寫數(shù)據(jù)后,該第3塊被寫滿、但當前數(shù)據(jù)還沒有寫完的時候,則找到一個空閑的溢出塊,將剩余的數(shù)據(jù)寫入該空閑的溢出塊中,并在所述基礎塊的第3塊的尾部保存所寫的溢出塊的地址。在讀取數(shù)據(jù)時,先讀取所述基礎快中第3塊的數(shù)據(jù),然后判斷讀取出的數(shù)據(jù)是否完整,如果不完整則根據(jù)塊尾部的溢出塊地址去對應的溢出塊讀取出數(shù)據(jù)。
現(xiàn)有技術的缺點如下:
寫數(shù)據(jù)時,每寫一個數(shù)據(jù)都需要對存儲器進行至少一次輸入/輸出(I/O)操作,在原塊中有數(shù)據(jù)時還需要讀一次,以便合并老數(shù)據(jù)寫入,這樣會造成更多的I/O操作。因此,現(xiàn)有技術對存儲器進行寫數(shù)據(jù)時的I/O操作次數(shù)比較多,存儲器的寫操作效率很差。現(xiàn)有技術尤其是對于固態(tài)硬盤(SSD,solidstate?disk)這種壽命受限于擦除數(shù)、隨機寫對性能和壽命都有影響的存儲器,支持得不好,導致寫數(shù)據(jù)時過多的I/O操作不但導致SSD寫操作效率很差,而且嚴重影響了SSD的壽命。
發(fā)明內容
有鑒于此,本發(fā)明的主要目的在于提供一種存儲器的讀寫控制方法及對應的存儲器和服務器,在對存儲器實現(xiàn)讀寫控制的同時,降低寫數(shù)據(jù)時對存儲器的I/O操作次數(shù),提高對存儲器的寫操作效率。
本發(fā)明的技術方案是這樣實現(xiàn)的:
一種存儲器的讀寫控制方法,包括:
將存儲器的存儲資源以塊為單位進行劃分;
寫入數(shù)據(jù)時:將要寫入的數(shù)據(jù)合并成數(shù)據(jù)塊,將所述合并后的數(shù)據(jù)塊寫入存儲器的空閑塊中,記錄所寫數(shù)據(jù)的標識及其對應的索引信息,每條所寫數(shù)據(jù)的索引信息為該數(shù)據(jù)在存儲器中的偏移量信息;
讀取數(shù)據(jù)時:按照欲讀數(shù)據(jù)的標識和索引信息從存儲器的相應偏移量處讀取數(shù)據(jù)。
一種存儲器,該存儲器的存儲資源以塊為單位進行了劃分;并包括:
寫入控制模塊,用于將要寫入的數(shù)據(jù)合并成數(shù)據(jù)塊,將所述合并后的數(shù)據(jù)塊寫入存儲器的空閑塊中,記錄所寫數(shù)據(jù)的標識及其對應的索引信息,每條所寫數(shù)據(jù)的索引信息為該數(shù)據(jù)在存儲器中的偏移量信息;
讀取控制模塊,用于按照欲讀數(shù)據(jù)的標識和索引信息從存儲器的相應偏移量處讀取數(shù)據(jù)。
一種服務器,其包括至少一個上述的存儲器。在所述存儲器的數(shù)量為兩個以上時,所述將所述合并后的數(shù)據(jù)塊寫入存儲器的空閑塊中具體為:從第一個存儲器的第一個塊起,遍歷所有存儲器的第一個塊,如果沒有找到空閑塊則遍歷所有存儲器的下一個塊,直到出現(xiàn)空閑塊為止,將所屬合并后的數(shù)據(jù)庫寫入該空閑塊中。
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于深圳市騰訊計算機系統(tǒng)有限公司,未經(jīng)深圳市騰訊計算機系統(tǒng)有限公司許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業(yè)授權和技術合作,請聯(lián)系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201210038206.4/2.html,轉載請聲明來源鉆瓜專利網(wǎng)。
- 同類專利
- 專利分類
G06F 電數(shù)字數(shù)據(jù)處理
G06F3-00 用于將所要處理的數(shù)據(jù)轉變成為計算機能夠處理的形式的輸入裝置;用于將數(shù)據(jù)從處理機傳送到輸出設備的輸出裝置,例如,接口裝置
G06F3-01 .用于用戶和計算機之間交互的輸入裝置或輸入和輸出組合裝置
G06F3-05 .在規(guī)定的時間間隔上,利用模擬量取樣的數(shù)字輸入
G06F3-06 .來自記錄載體的數(shù)字輸入,或者到記錄載體上去的數(shù)字輸出
G06F3-09 .到打字機上去的數(shù)字輸出
G06F3-12 .到打印裝置上去的數(shù)字輸出





