亚洲狠狠干,亚洲国产福利精品一区二区,国产八区,激情文学亚洲色图

數(shù)據(jù)讀寫方法及系統(tǒng)的制作方法

文檔序號:6425324閱讀:184來源:國知局
專利名稱:數(shù)據(jù)讀寫方法及系統(tǒng)的制作方法
數(shù)據(jù)讀寫方法及系統(tǒng)
技術(shù)領(lǐng)域
本發(fā)明涉及計算機技術(shù)領(lǐng)域,特別涉及一種數(shù)據(jù)讀寫方法及系統(tǒng)。
背景技術(shù)
隨著互聯(lián)網(wǎng)技術(shù)的發(fā)展,用戶數(shù)量越來越多,每個用戶發(fā)布的信息也越來越多,數(shù)據(jù)總量開始急劇膨脹,形成海量的數(shù)據(jù),如何對這些海量的數(shù)據(jù)進行有效管理,以保證用戶快速發(fā)表數(shù)據(jù)和讀取數(shù)據(jù),成為后臺技術(shù)面臨的巨大挑戰(zhàn)。SSD (Solid State Disk,固態(tài)硬盤)是互聯(lián)網(wǎng)中一種最新存儲技術(shù),它是由控制單元和存儲單元(DRAM或FLASH芯片)兩部分組成。存儲單元負責存儲數(shù)據(jù),控制單元負責讀取、寫入數(shù)據(jù)。SSD能夠在低于Ims的時間內(nèi)對任意位置存儲單元完成1/0(輸入/輸出) 操作,其隨機讀性能可達到每秒上萬次,順序?qū)懶阅芸蛇_每秒4k 5k,但是其隨機寫性能比較差,每秒只有幾十次,并且會嚴重影響隨機讀性能。傳統(tǒng)的數(shù)據(jù)讀寫一般采用內(nèi)存索引加上數(shù)據(jù)庫永久存儲的方式實現(xiàn),該方式代碼設(shè)計復(fù)雜,且需考慮緩存和數(shù)據(jù)庫中的數(shù)據(jù)的一致性,導(dǎo)致數(shù)據(jù)讀寫速度慢,且當緩存大量失效時,并發(fā)的流量集中在數(shù)據(jù)庫上,會使數(shù)據(jù)庫瞬間壓力暴增,讀寫性能急劇下降。

發(fā)明內(nèi)容基于此,有必要提供一種提高讀寫速度的數(shù)據(jù)讀寫方法。一種數(shù)據(jù)讀寫方法,包括以下步驟獲取寫操作請求及用戶標識號,根據(jù)所述用戶標識號從第一數(shù)據(jù)文件中讀取與所述用戶標識號相對應(yīng)的數(shù)據(jù)塊,再根據(jù)所述寫操作請求及所述讀取的數(shù)據(jù)塊生成新的數(shù)據(jù)塊,并將新的數(shù)據(jù)塊順序?qū)懭氲剿龅谝粩?shù)據(jù)文件中;記錄所述新的數(shù)據(jù)塊與用戶標識號的對應(yīng)關(guān)系以及所述新的數(shù)據(jù)塊的偏移地址
信息;獲取讀操作請求及用戶標識號,根據(jù)所述讀操作請求、用戶標識號與新的數(shù)據(jù)塊的對應(yīng)關(guān)系及新的數(shù)據(jù)塊的偏移地址信息從所述第一數(shù)據(jù)文件中讀取與所述用戶標識號相對應(yīng)的新的數(shù)據(jù)塊。優(yōu)選地,還包括步驟記錄寫操作,生成寫操作備份文件。優(yōu)選地,還包括步驟計算所述第一數(shù)據(jù)文件的利用率;判斷所述第一數(shù)據(jù)文件的利用率是否小于預(yù)設(shè)閾值,若是,則將所述第一數(shù)據(jù)文件中的有效的數(shù)據(jù)塊進行數(shù)據(jù)轉(zhuǎn)移到第二數(shù)據(jù)文件中,否則返回到計算所述第一數(shù)據(jù)文件的利用率的步驟。優(yōu)選地,還包括步驟在預(yù)定間隔時間內(nèi)掃描所述第一數(shù)據(jù)文件,當?shù)谝粩?shù)據(jù)文件中的數(shù)據(jù)塊無效時,刪除所述第一數(shù)據(jù)文件。優(yōu)選地,還包括步驟判斷所述第一數(shù)據(jù)文件中的數(shù)據(jù)塊是否為空,若是,則將所述第一數(shù)據(jù)文件中的所述數(shù)據(jù)塊的索引設(shè)置為空指針。此外,還有必要提供一種提高讀寫速度的數(shù)據(jù)讀寫系統(tǒng)。一種數(shù)據(jù)讀寫系統(tǒng),包括主寫進程模塊,用于獲取寫操作請求及用戶標識號,根據(jù)所述用戶標識號從第一數(shù)據(jù)文件中讀取與所述用戶標識號相對應(yīng)的數(shù)據(jù)塊,再根據(jù)所述寫操作請求及讀取的數(shù)據(jù)塊生成新的數(shù)據(jù)塊,并將新的數(shù)據(jù)塊順序?qū)懭氲剿龅谝粩?shù)據(jù)文件中;存儲模塊,用于記錄所述新的數(shù)據(jù)塊與用戶標識號的對應(yīng)關(guān)系以及所述新的數(shù)據(jù)塊的偏移地址信息;讀進程模塊,用于獲取讀操作請求及用戶標識號,根據(jù)所述讀操作請求、用戶標識號與新的數(shù)據(jù)塊的對應(yīng)關(guān)系及新的數(shù)據(jù)塊的偏移地址信息從所述第一數(shù)據(jù)文件中讀取與所述用戶標識號相對應(yīng)的新的數(shù)據(jù)塊。 優(yōu)選地,還包括輔助寫進程模塊,所述輔助寫進程模塊用于記錄寫操作,生成寫操作備份文件。優(yōu)選地,還包括重整進程模塊,所述重整進程模塊用于計算所述第一數(shù)據(jù)文件的利用率,并判斷所述第一數(shù)據(jù)文件的利用率是否小于預(yù)設(shè)閾值;所述主寫進程模塊還用于在所述重整進程模塊判斷出所述第一數(shù)據(jù)文件的利用率小于預(yù)設(shè)閾值時,將所述第一數(shù)據(jù)文件中的有效的數(shù)據(jù)塊進行數(shù)據(jù)轉(zhuǎn)移到第二數(shù)據(jù)文件中。優(yōu)選地,所述重寫進程模塊還用于在預(yù)定間隔時間內(nèi)掃描所述第一數(shù)據(jù)文件,當?shù)谝粩?shù)據(jù)文件中的數(shù)據(jù)塊無效時,刪除所述第一數(shù)據(jù)文件。優(yōu)選地,還包括指針設(shè)置模塊,所述指針設(shè)置模塊用于在所述第一數(shù)據(jù)文件中的數(shù)據(jù)塊為空時,將所述第一數(shù)據(jù)文件中的所述數(shù)據(jù)塊索引設(shè)置為空指針。上述數(shù)據(jù)讀寫方法及系統(tǒng),采用寫操作時,將第一數(shù)據(jù)文件中的與用戶標識號相對應(yīng)的數(shù)據(jù)塊讀取出來,再根據(jù)寫操作及讀取的數(shù)據(jù)塊生成新的數(shù)據(jù)塊,并將新的數(shù)據(jù)塊順序?qū)懭氲降谝粩?shù)據(jù)文件中,讀操作時,根據(jù)用戶標識號查找到對應(yīng)的新的數(shù)據(jù)塊讀取出來,實現(xiàn)了多用戶數(shù)據(jù)的快速讀寫,提高了讀寫速度。另外,因根據(jù)寫操作讀取出原有的數(shù)據(jù)塊,并生成新的數(shù)據(jù)塊,再將新的數(shù)據(jù)塊順序?qū)懭氲降谝粩?shù)據(jù)文件中,不會出現(xiàn)大量數(shù)據(jù)涌入數(shù)據(jù)庫而使數(shù)據(jù)庫瞬間壓力暴增的情況,數(shù)據(jù)讀寫性能穩(wěn)定。

圖I為一個實施例中數(shù)據(jù)讀寫方法的流程圖;圖2為另一個實施例中數(shù)據(jù)讀寫方法的流程圖;圖3為第一數(shù)據(jù)文件利用率及轉(zhuǎn)移第一數(shù)據(jù)文件的示意圖;圖4為一個實施例中數(shù)據(jù)讀寫系統(tǒng)的結(jié)構(gòu)圖;圖5為另一個實施例中數(shù)據(jù)讀寫系統(tǒng)的結(jié)構(gòu)圖。
具體實施方式下面結(jié)合具體的實施例及附圖對技術(shù)方案進行詳細的描述。如圖I所示,在一個實施例中,一種數(shù)據(jù)讀寫方法,包括以下步驟
步驟S100,獲取寫操作請求及用戶標識號,根據(jù)該用戶標識號從第一數(shù)據(jù)文件中讀取與該用戶標識號相對應(yīng)的數(shù)據(jù)塊,再根據(jù)該寫操作請求及該讀取的數(shù)據(jù)塊生成新的數(shù)據(jù)塊,并將新的數(shù)據(jù)塊順序?qū)懭氲皆摰谝粩?shù)據(jù)文件中。第一數(shù)據(jù)文件中存儲有多個用戶的數(shù)據(jù)塊、每個數(shù)據(jù)塊的偏移地址信息以及用戶的數(shù)據(jù)塊與用戶標識號存在對應(yīng)關(guān)系。用戶進行寫操作時,需發(fā)送寫操作請求。同時,寫操作時需獲取到用戶原有的數(shù)據(jù),為此需得到用戶標識號,根據(jù)用戶標識號從第一數(shù)據(jù)文件中讀取到與該用戶標識號相對應(yīng)的數(shù)據(jù)塊。如用戶A發(fā)表微博信息,在微博服務(wù)器的第一數(shù)據(jù)文件中會分配一個空閑位置給用戶A,存儲用戶A的數(shù)據(jù)塊I及數(shù)據(jù)塊I的偏移地址信息,該偏移地址信息即為數(shù)據(jù)塊的起始地址。該寫操作可為增加數(shù)據(jù)、刪除數(shù)據(jù)、修改數(shù)據(jù)等操作類型。根據(jù)寫操作請求及讀取的數(shù)據(jù)塊生成新的數(shù)據(jù)塊,并將新的數(shù)據(jù)塊順序?qū)懭氲降谝粩?shù)據(jù)文件中。
當寫操作為增加數(shù)據(jù)操作時,根據(jù)寫操作請求,獲取到增加的數(shù)據(jù),將增加的數(shù)據(jù)與讀取的與用戶標識號相對應(yīng)的數(shù)據(jù)塊中的數(shù)據(jù)合并在一起,生成新的數(shù)據(jù)塊,將新的數(shù)據(jù)塊順序?qū)懭氲降谝粩?shù)據(jù)文件中。當寫操作為刪除數(shù)據(jù)操作時,根據(jù)寫操作請求,讀取第一數(shù)據(jù)文件中的與用戶標識號相對應(yīng)的數(shù)據(jù)塊,選中數(shù)據(jù)塊中需要刪除的數(shù)據(jù)刪除,將剩下的數(shù)據(jù)生成新的數(shù)據(jù)塊,再將新的數(shù)據(jù)塊順序?qū)懭氲降谝粩?shù)據(jù)文件中。當寫操作為修改數(shù)據(jù)操作時,根據(jù)寫操作請求,讀取第一數(shù)據(jù)文件中的與用戶標識號相對應(yīng)的數(shù)據(jù)塊,選中數(shù)據(jù)塊中需要修改的數(shù)據(jù)進行修改操作,將修改后的數(shù)據(jù)與未修改的數(shù)據(jù)一起生成新的數(shù)據(jù)塊,將新的數(shù)據(jù)塊順序?qū)懭氲降谝粩?shù)據(jù)文件中。上述寫操作均在SSD硬盤上執(zhí)行。每次寫操作都會進行是否重復(fù)的寫檢查。另外,在一個實施例中,上述數(shù)據(jù)讀寫方法,在步驟SlOO執(zhí)行的同時,還包括步驟記錄寫操作,生成寫操作備份文件。記錄寫操作,即記錄該寫操作是增加數(shù)據(jù)、刪除數(shù)據(jù)或者修改數(shù)據(jù)等操作類型,生成寫操作備份文件,記錄寫操作的類型及時間等。如2011年5月I日,寫操作為增加數(shù)據(jù)操作。步驟S200,記錄該新的數(shù)據(jù)塊與用戶標識號的對應(yīng)關(guān)系以及新的數(shù)據(jù)塊的偏移地
址信息。新的數(shù)據(jù)塊生成后,寫入第一數(shù)據(jù)文件中,會將新的數(shù)據(jù)塊與用戶標識號進行映射,產(chǎn)生對應(yīng)關(guān)系,方便查詢。新的數(shù)據(jù)塊寫入后,會分配該新的數(shù)據(jù)塊寫入的偏移地址信息,即新的數(shù)據(jù)塊的起始地址。新的數(shù)據(jù)塊與用戶標識號映射產(chǎn)生對應(yīng)關(guān)系后,原有的數(shù)據(jù)塊與用戶標識號的對應(yīng)關(guān)系將自動解除。步驟S300,獲取讀操作請求及用戶標識號,根據(jù)該讀操作請求、用戶標識號與新的數(shù)據(jù)塊的對應(yīng)關(guān)系及新的數(shù)據(jù)塊的偏移地址信息從該第一數(shù)據(jù)文件中讀取與該用戶標識號相對應(yīng)的新的數(shù)據(jù)塊。用戶讀取數(shù)據(jù)時,需發(fā)送讀操作請求及該用戶的標識號。根據(jù)用戶標識號依據(jù)用戶標識號及數(shù)據(jù)塊的對應(yīng)關(guān)系查找到相應(yīng)的數(shù)據(jù)塊,根據(jù)數(shù)據(jù)塊的偏移地址信息從該新的數(shù)據(jù)塊的起始地址開始讀取該新的數(shù)據(jù)塊,從而得到該新的數(shù)據(jù)塊中的數(shù)據(jù)。優(yōu)選的實施例中,如圖2所示,上述數(shù)據(jù)讀寫方法,除了包括步驟SlOO至S300,還包括以下步驟步驟S400,計算第一數(shù)據(jù)文件的利用率。第一數(shù)據(jù)文件的利用率等于第一數(shù)據(jù)文件中有效數(shù)據(jù)塊的大小除以第一數(shù)據(jù)文件大小所得值的百分比。其中,有效數(shù)據(jù)塊是指存在被索引鏈接引用的數(shù)據(jù)塊,即用戶訪問數(shù)據(jù)塊時,需通過索引查找到該數(shù)據(jù)塊,存在這種對應(yīng)關(guān)系的數(shù)據(jù)塊則為有效數(shù)據(jù)塊,數(shù)據(jù)塊無法被索引鏈接到則為無效數(shù)據(jù)塊。步驟S500,判斷第一數(shù)據(jù)文件的利用率是否小于預(yù)設(shè)閾值,若是,執(zhí)行步驟S600,否則返回步驟S400。
預(yù)設(shè)閾值可由系統(tǒng)設(shè)定,如為28%、30%、40%、45%等。 步驟S600,將第一數(shù)據(jù)文件中的有效數(shù)據(jù)塊進行數(shù)據(jù)轉(zhuǎn)移到第二數(shù)據(jù)文件中。數(shù)據(jù)轉(zhuǎn)移是指將第一數(shù)據(jù)文件的有效數(shù)據(jù)塊讀出來并寫入到第二數(shù)據(jù)文件中。如圖3所示,數(shù)據(jù)文件利用率小于40%的,將有效數(shù)據(jù)轉(zhuǎn)移到該用戶的最新數(shù)據(jù)文件中,第二數(shù)據(jù)文件可為最新數(shù)據(jù)文件。將有效數(shù)據(jù)塊轉(zhuǎn)移到第二數(shù)據(jù)文件中后,第一數(shù)據(jù)文件中的數(shù)據(jù)塊將均為無效數(shù)據(jù)塊,第一數(shù)據(jù)文件可被刪除,以節(jié)省磁盤空間。因第一數(shù)據(jù)文件中存儲有效數(shù)據(jù)塊和大量的無效數(shù)據(jù)塊,將有效數(shù)據(jù)塊轉(zhuǎn)移后,剩余無效數(shù)據(jù)塊,將第一數(shù)據(jù)文件刪除,節(jié)省了磁盤空間。步驟S700,在預(yù)定時間間隔內(nèi)掃描第一數(shù)據(jù)文件,判斷第一數(shù)據(jù)文件中的數(shù)據(jù)塊是否無效,若是,則執(zhí)行步驟S800,否則執(zhí)行步驟S900。由于每次寫操作都會生成新的數(shù)據(jù)塊,因此會存在較多無用的數(shù)據(jù)塊,占用比較多的磁盤空間,為了釋放空閑空間,需定期掃描第一數(shù)據(jù)文件,當?shù)谝粩?shù)據(jù)文件中的數(shù)據(jù)塊均為無效數(shù)據(jù)塊時,則直接刪掉該第一數(shù)據(jù)文件,以節(jié)省磁盤空間。步驟S800,刪除該第一數(shù)據(jù)文件。步驟S900,保留該第一數(shù)據(jù)文件。優(yōu)選的實施例中,上述數(shù)據(jù)讀寫方法,還包括步驟判斷第一數(shù)據(jù)文件中的數(shù)據(jù)塊是否為空,若是,則將第一數(shù)據(jù)文件中的數(shù)據(jù)塊的索引設(shè)置為空指針。第一數(shù)據(jù)文件的數(shù)據(jù)塊沒有數(shù)據(jù)時,將第一數(shù)據(jù)文件中的數(shù)據(jù)塊的索引設(shè)為空指針(NULL)。如圖4所示,在一個實施例中,一種數(shù)據(jù)讀寫系統(tǒng),包括主寫進程模塊400、存儲模塊410和讀進程模塊420。主寫進程模塊400用于獲取寫操作請求及用戶標識號,根據(jù)該用戶標識號從第一數(shù)據(jù)文件中讀取與該用戶標識號相對應(yīng)的數(shù)據(jù)塊,再根據(jù)該寫操作請求及讀取的數(shù)據(jù)塊生成新的數(shù)據(jù)塊,并將新的數(shù)據(jù)塊順序?qū)懭氲降谝粩?shù)據(jù)文件中。第一數(shù)據(jù)文件中存儲有多個用戶的數(shù)據(jù)塊、每個數(shù)據(jù)塊的偏移地址信息以及用戶的數(shù)據(jù)塊與用戶標識號存在對應(yīng)關(guān)系。用戶通過主寫進程模塊400進行寫操作時,需發(fā)送寫操作請求。同時,寫操作時需獲取到用戶原有的數(shù)據(jù),為此需得到用戶標識號,根據(jù)用戶標識號從第一數(shù)據(jù)文件中讀取到與該用戶標識號相對應(yīng)的數(shù)據(jù)塊。如用戶A發(fā)表微博信息,在微博服務(wù)器的第一數(shù)據(jù)文件中會分配一個空閑位置給用戶A,存儲用戶A的數(shù)據(jù)塊I及數(shù)據(jù)塊I的偏移地址信息,該偏移地址信息即為數(shù)據(jù)塊的起始地址。該寫操作可為增加數(shù)據(jù)、刪除數(shù)據(jù)、修改數(shù)據(jù)等操作類型。主寫進程模塊400根據(jù)用戶標識號在第一數(shù)據(jù)文件查找到相對應(yīng)的數(shù)據(jù)塊,讀取該數(shù)據(jù)塊,再根據(jù)寫操作請求及讀取的數(shù)據(jù)塊生成新的數(shù)據(jù)塊,并將新的數(shù)據(jù)塊順序?qū)懭氲降谝粩?shù)據(jù)文件中。當寫操作為增加數(shù)據(jù)操作時,主寫進程模塊400根據(jù)寫操作請求,獲取到增加的數(shù)據(jù),將增加的數(shù)據(jù)與讀取的與用戶標識號相對應(yīng)的數(shù)據(jù)塊中的數(shù)據(jù)合并在一起,生成新的數(shù)據(jù)塊,將新的數(shù)據(jù)塊順序?qū)懭氲降谝粩?shù)據(jù)文件中。當寫操作為刪除數(shù)據(jù)操作時,主寫進程模塊400根據(jù)寫操作請求,讀取第一數(shù)據(jù)文件中的與用戶標識號相對應(yīng)的數(shù)據(jù)塊,選中數(shù)據(jù)塊中需要刪除的數(shù)據(jù)刪除,將剩下的數(shù)據(jù)生成新的數(shù)據(jù)塊,再將新的數(shù)據(jù)塊順序?qū)懭氲降谝粩?shù)據(jù)文件中。當寫操作為修改數(shù)據(jù)操作時,主寫進程模塊400根據(jù)寫操作請求,讀取第一數(shù)據(jù)文件中的與用戶標識號相對應(yīng)的數(shù)據(jù)塊,選中數(shù)據(jù)塊中需要修改的數(shù)據(jù)進行修改操作,將修改后的數(shù)據(jù)與未修改的數(shù)據(jù)一起生成新的數(shù)據(jù)塊,將新的數(shù)據(jù)塊順序?qū)懭氲降谝粩?shù)據(jù)文件中。 上述寫操作均在SSD硬盤上執(zhí)行。每次寫操作都會進行是否重復(fù)的寫檢查。存儲模塊410用于記錄該新的數(shù)據(jù)塊與用戶標識號的對應(yīng)關(guān)系及新的數(shù)據(jù)塊的偏移地址信息。新的數(shù)據(jù)塊生成后,順序?qū)懭氲谝粩?shù)據(jù)文件中,會將新的數(shù)據(jù)塊與用戶標識號進行映射,產(chǎn)生對應(yīng)關(guān)系,方便查詢。新的數(shù)據(jù)塊寫入后,會分配該新的數(shù)據(jù)塊寫入的偏移地址信息,即新的數(shù)據(jù)塊的起始地址。新的數(shù)據(jù)塊與用戶標識號映射產(chǎn)生對應(yīng)關(guān)系后,原有的數(shù)據(jù)塊與用戶標識號的對應(yīng)關(guān)系將自動解除。讀進程模塊420用于獲取讀操作請求及用戶標識號,根據(jù)該讀操作請求、用戶標識號與新的數(shù)據(jù)塊的對應(yīng)關(guān)系及新的數(shù)據(jù)塊的偏移地址信息從所述第一數(shù)據(jù)文件中讀取與所述用戶標識號相對應(yīng)的新的數(shù)據(jù)塊。用戶讀取數(shù)據(jù)時,需發(fā)送讀操作請求及該用戶的標識號。讀進程模塊420根據(jù)用戶標識號依據(jù)用戶標識號及數(shù)據(jù)塊的對應(yīng)關(guān)系查找到相應(yīng)的數(shù)據(jù)塊,根據(jù)數(shù)據(jù)塊的偏移地址信息從該新的數(shù)據(jù)塊的起始地址開始讀取該新的數(shù)據(jù)塊,從而得到該新的數(shù)據(jù)塊中的數(shù)據(jù)。在一個實施例中,如圖5所示,上述數(shù)據(jù)讀寫系統(tǒng),除了包括主寫進程模塊400、存儲模塊410和讀進程模塊420,還包括輔助寫進程模塊430、重整進程模塊440和指針設(shè)置模塊450。輔助寫進程模塊430用于記錄寫操作,生成寫操作備份文件。該實施例中,輔助寫進程模塊430可為Binlog寫進程。所有寫操作的二進制包由主寫進程模塊400通過binlog-channel傳遞給Binlog寫進程記錄,生成寫操作備份文件。記錄寫操作,即記錄該寫操作是增加數(shù)據(jù)、刪除數(shù)據(jù)或者修改數(shù)據(jù)等操作類型,生成寫操作備份文件,記錄寫操作的類型及時間等。如2011年5月I日,寫操作為增加數(shù)據(jù)操作。重整進程模塊440用于計算第一數(shù)據(jù)文件的利用率,并判斷該第一數(shù)據(jù)文件的利用率是否小于預(yù)設(shè)閾值。第一數(shù)據(jù)文件的利用率等于第一數(shù)據(jù)文件中有效數(shù)據(jù)塊的大小除以第一數(shù)據(jù)文件大小所得值的百分比。其中,有效數(shù)據(jù)塊是指存在被索引鏈接引用的數(shù)據(jù)塊,即用戶訪問數(shù)據(jù)塊時,需通過索引查找到該數(shù)據(jù)塊,存在這種對應(yīng)關(guān)系的數(shù)據(jù)塊則為有效數(shù)據(jù)塊,數(shù)據(jù)塊無法被索引鏈接到則為無效數(shù)據(jù)塊。預(yù)設(shè)閾值可由系統(tǒng)設(shè)定,如為28%、30%、40%、45% 等。主寫進程模塊400還用于在重整進程模塊440判斷出該第一數(shù)據(jù)文件的利用率小于預(yù)設(shè)閾值時,將該第一數(shù)據(jù)文件中的有效數(shù)據(jù)塊進行數(shù)據(jù)轉(zhuǎn)移到第二數(shù)據(jù)文件中。第二數(shù)據(jù)文件為新建的數(shù)據(jù)文件。數(shù)據(jù)轉(zhuǎn)移是指將第一數(shù)據(jù)文件的有效數(shù)據(jù)塊讀出來并寫入到第二數(shù)據(jù)文件中。如圖3所示,數(shù)據(jù)文件利用率小于40%的,將有效數(shù)據(jù)轉(zhuǎn)移到最新數(shù)據(jù)文件中,第二數(shù)據(jù)文件作為最新數(shù)據(jù)文件。將有效數(shù)據(jù)塊轉(zhuǎn)移到第二數(shù)據(jù)文件中后,第一數(shù)據(jù)文件中的數(shù)據(jù)塊將均為無效數(shù)據(jù)塊,第一數(shù)據(jù)文件可被刪除,以節(jié)省磁盤空間。因第一數(shù)據(jù)文件中存儲有效數(shù)據(jù)塊和大量的無效數(shù)據(jù)塊,將有效數(shù)據(jù)塊轉(zhuǎn)移后,剩余無效數(shù)據(jù)塊,將第一數(shù)據(jù)文件刪除,節(jié)省了磁盤空間。
優(yōu)選的實施例中,重整進程模塊440還用于在預(yù)定間隔時間內(nèi)掃描該第一數(shù)據(jù)文件,當?shù)谝粩?shù)據(jù)文件中的數(shù)據(jù)塊無效時,刪除該第一數(shù)據(jù)文件。由于每次寫操作都會生成新的數(shù)據(jù)塊,因此會存在較多無用的數(shù)據(jù)塊,占用比較多的磁盤空間,為了釋放空閑空間,需定期掃描第一數(shù)據(jù)文件,當?shù)谝粩?shù)據(jù)文件中的數(shù)據(jù)塊均為無效數(shù)據(jù)塊時,則直接刪掉該第一數(shù)據(jù)文件,以節(jié)省磁盤空間。指針設(shè)置模塊450用于在該第一數(shù)據(jù)文件中的數(shù)據(jù)塊為空時,將該第一數(shù)據(jù)文件的數(shù)據(jù)塊的索引設(shè)置為空指針。第一數(shù)據(jù)文件的數(shù)據(jù)塊內(nèi)沒有數(shù)據(jù)時,指針設(shè)置模塊450將第一數(shù)據(jù)文件的數(shù)據(jù)塊索引設(shè)為空指針(NULL)。在不同的實施例中,上述數(shù)據(jù)讀寫系統(tǒng),可只包括輔助寫進程模塊430,或重整進程模塊440。此外,上述數(shù)據(jù)讀寫系統(tǒng)初始化時,將全量用戶均勻分布在多臺存儲設(shè)備上,當某臺存儲設(shè)備上的數(shù)據(jù)總量達到閾值時,啟動擴容功能,將與數(shù)據(jù)文件標識號相對應(yīng)的數(shù)據(jù)文件中的數(shù)據(jù)轉(zhuǎn)移到新增加的存儲設(shè)備上,實現(xiàn)并行擴容。上述數(shù)據(jù)讀寫方法及系統(tǒng),在單機掛載8塊SSD硬盤情況下,并行寫性能可達每秒
3.2萬次,并行隨機讀性能可達每秒8萬次,讀寫速率比傳統(tǒng)機械式硬盤提高了近100倍。上述數(shù)據(jù)讀寫方法及系統(tǒng),采用寫操作時,將第一數(shù)據(jù)文件中的與用戶標識號相對應(yīng)的數(shù)據(jù)塊讀取出來,再根據(jù)寫操作及讀取的數(shù)據(jù)塊生成新的數(shù)據(jù)塊,并將新的數(shù)據(jù)塊順序?qū)懭氲降谝粩?shù)據(jù)文件中,讀操作時,根據(jù)用戶標識號查找到對應(yīng)的新的數(shù)據(jù)塊讀取出來,實現(xiàn)了多用戶數(shù)據(jù)的快速讀寫,提高了讀寫速度。另外,因根據(jù)寫操作讀取出原有的數(shù)據(jù)塊,并生成新的數(shù)據(jù)塊,再將新的數(shù)據(jù)塊順序?qū)懭氲降谝粩?shù)據(jù)文件中,不會出現(xiàn)大量數(shù)據(jù)涌入數(shù)據(jù)庫而使數(shù)據(jù)庫瞬間壓力暴增的情況,數(shù)據(jù)讀寫性能穩(wěn)定;采用記錄寫操作,并生成寫操作備份文件,以方便獲知數(shù)據(jù)變更的具體時間及類型;采用定時掃描第一數(shù)據(jù)文件,對第一數(shù)據(jù)文件進行清理,節(jié)省SSD磁盤空間,提高磁盤空間利用率;當?shù)谝粩?shù)據(jù)文件利用率低時,將有效數(shù)據(jù)塊進行轉(zhuǎn)移寫入到第二數(shù)據(jù)文件,第一數(shù)據(jù)文件中數(shù)據(jù)塊無效,將第一數(shù)據(jù)文件刪除,節(jié)省磁盤空間,提高磁盤空間的利用率。此外,利用SSD硬盤的特性,按照時間的先后順序?qū)?shù)據(jù)寫入SSD中,不會出現(xiàn)大量數(shù)據(jù)全部涌入的情況,讀寫性能穩(wěn)定。以上所述實施例僅表達了本發(fā)明的幾種實施方式,其描述較為具體和詳細,但并不能因此而理解為對本發(fā)明專利范圍的限制。應(yīng)當指出的是,對于本領(lǐng)域的普通技術(shù)人員來說,在不脫離本發(fā)明構(gòu)思的前提下,還可以做出若干變形和改進,這些都屬于本發(fā)明的保護范圍。因此,本發(fā)明專利的保護范圍應(yīng)以所附權(quán)利要求為準。
權(quán)利要求
1.一種數(shù)據(jù)讀寫方法,包括以下步驟 獲取寫操作請求及用戶標識號,根據(jù)所述用戶標識號從第一數(shù)據(jù)文件中讀取與所述用戶標識號相對應(yīng)的數(shù)據(jù)塊,再根據(jù)所述寫操作請求及所述讀取的數(shù)據(jù)塊生成新的數(shù)據(jù)塊,并將新的數(shù)據(jù)塊順序?qū)懭氲剿龅谝粩?shù)據(jù)文件中; 記錄所述新的數(shù)據(jù)塊與用戶標識號的對應(yīng)關(guān)系以及所述新的數(shù)據(jù)塊的偏移地址信息; 獲取讀操作請求及用戶標識號,根據(jù)所述讀操作請求、用戶標識號與新的數(shù)據(jù)塊的對應(yīng)關(guān)系及新的數(shù)據(jù)塊的偏移地址信息從所述第一數(shù)據(jù)文件中讀取與所述用戶標識號相對應(yīng)的新的數(shù)據(jù)塊。
2.根據(jù)權(quán)利要求I所述的數(shù)據(jù)讀寫方法,其特征在于,還包括步驟記錄寫操作,生成寫操作備份文件。
3.根據(jù)權(quán)利要求I所述的數(shù)據(jù)讀寫方法,其特征在于,還包括步驟 計算所述第一數(shù)據(jù)文件的利用率; 判斷所述第一數(shù)據(jù)文件的利用率是否小于預(yù)設(shè)閾值,若是,則將所述第一數(shù)據(jù)文件中的有效的數(shù)據(jù)塊進行數(shù)據(jù)轉(zhuǎn)移到第二數(shù)據(jù)文件中,否則返回到計算所述第一數(shù)據(jù)文件的利用率的步驟。
4.根據(jù)權(quán)利要求3所述的數(shù)據(jù)讀寫方法,其特征在于,還包括步驟在預(yù)定間隔時間內(nèi)掃描所述第一數(shù)據(jù)文件,當?shù)谝粩?shù)據(jù)文件中的數(shù)據(jù)塊無效時,刪除所述第一數(shù)據(jù)文件。
5.根據(jù)權(quán)利要求I所述的數(shù)據(jù)讀寫方法,其特征在于,還包括步驟判斷所述第一數(shù)據(jù)文件中的數(shù)據(jù)塊是否為空,若是,則將所述第一數(shù)據(jù)文件中的所述數(shù)據(jù)塊的索引設(shè)置為空指針。
6.一種數(shù)據(jù)讀寫系統(tǒng),其特征在于,包括 主寫進程模塊,用于獲取寫操作請求及用戶標識號,根據(jù)所述用戶標識號從第一數(shù)據(jù)文件中讀取與所述用戶標識號相對應(yīng)的數(shù)據(jù)塊,再根據(jù)所述寫操作請求及讀取的數(shù)據(jù)塊生成新的數(shù)據(jù)塊,并將新的數(shù)據(jù)塊順序?qū)懭氲剿龅谝粩?shù)據(jù)文件中; 存儲模塊,用于記錄所述新的數(shù)據(jù)塊與用戶標識號的對應(yīng)關(guān)系以及所述新的數(shù)據(jù)塊的偏移地址信息; 讀進程模塊,用于獲取讀操作請求及用戶標識號,根據(jù)所述讀操作請求、用戶標識號與新的數(shù)據(jù)塊的對應(yīng)關(guān)系及新的數(shù)據(jù)塊的偏移地址信息從所述第一數(shù)據(jù)文件中讀取與所述用戶標識號相對應(yīng)的新的數(shù)據(jù)塊。
7.根據(jù)權(quán)利要求6所述的數(shù)據(jù)讀寫系統(tǒng),其特征在于,還包括輔助寫進程模塊,所述輔助寫進程模塊用于記錄寫操作,生成寫操作備份文件。
8.根據(jù)權(quán)利要求6所述的數(shù)據(jù)讀寫系統(tǒng),其特征在于,還包括重整進程模塊,所述重整進程模塊用于計算所述第一數(shù)據(jù)文件的利用率,并判斷所述第一數(shù)據(jù)文件的利用率是否小于預(yù)設(shè)閾值;所述主寫進程模塊還用于在所述重整進程模塊判斷出所述第一數(shù)據(jù)文件的利用率小于預(yù)設(shè)閾值時,將所述第一數(shù)據(jù)文件中的有效的數(shù)據(jù)塊進行數(shù)據(jù)轉(zhuǎn)移到第二數(shù)據(jù)文件中。
9.根據(jù)權(quán)利要求8所述的數(shù)據(jù)讀寫系統(tǒng),其特征在于,所述重寫進程模塊還用于在預(yù)定間隔時間內(nèi)掃描所述第一數(shù)據(jù)文件,當?shù)谝粩?shù)據(jù)文件中的數(shù)據(jù)塊無效時,刪除所述第一數(shù)據(jù)文件。
10.根據(jù)權(quán)利要求6所述的數(shù)據(jù)讀寫系統(tǒng),其特征在于,還包括指針設(shè)置模塊,所述指針設(shè)置模塊用于在所述第一數(shù)據(jù)文件中的數(shù)據(jù)塊為空時,將所述第一數(shù)據(jù)文件中的所述數(shù)據(jù)塊索引設(shè)置為空指針。
全文摘要
本發(fā)明涉及一種數(shù)據(jù)讀寫方法及系統(tǒng)。該方法包括以下步驟獲取寫操作請求及用戶標識號,根據(jù)所述用戶標識號從第一數(shù)據(jù)文件中讀取與所述用戶標識號相對應(yīng)的數(shù)據(jù)塊,再根據(jù)所述寫操作請求及所述讀取的數(shù)據(jù)塊生成新的數(shù)據(jù)塊,并將新的數(shù)據(jù)塊順序?qū)懭氲剿龅谝粩?shù)據(jù)文件中;記錄所述新的數(shù)據(jù)塊與用戶標識號的對應(yīng)關(guān)系以及所述新的數(shù)據(jù)塊的偏移地址信息;獲取讀操作請求及用戶標識號,根據(jù)所述讀操作請求、用戶標識號與新的數(shù)據(jù)塊的對應(yīng)關(guān)系及新的數(shù)據(jù)塊的偏移地址信息從所述第一數(shù)據(jù)文件中讀取與所述用戶標識號相對應(yīng)的新的數(shù)據(jù)塊。上述數(shù)據(jù)讀寫方法及系統(tǒng),實現(xiàn)了多用戶數(shù)據(jù)的快速讀寫,提高了讀寫速度。
文檔編號G06F17/30GK102810092SQ201110144738
公開日2012年12月5日 申請日期2011年5月31日 優(yōu)先權(quán)日2011年5月31日
發(fā)明者袁清 申請人:騰訊科技(深圳)有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1