天天看點

lsm mysql_基于LSM樹的Oracle資料庫資料處理方法與流程

lsm mysql_基于LSM樹的Oracle資料庫資料處理方法與流程

本發明涉及一種資料處理方法,尤其涉及一種基于LSM樹的Oracle資料庫資料處理方法。

背景技術:

資料庫有三種基本的存儲方式:1、哈希表,支援增、删、改以及随機讀取操作,但不支援順序掃描,對應的存儲系統為key-value存儲系統。對于key-value的插入以及查詢,哈希表的複雜度都是O(1),明顯比樹的操作O(n)快,如果不需要有序的周遊資料,哈希表就是不錯的選擇;2、B+樹,支援單條記錄的增、删、讀、改操作,還支援順序掃描(B+樹的葉子節點之間的指針),對應的存儲系統就是關系資料庫(Mysql等);3、LSM樹(Log-Structured Merge Tree),LSM樹和B樹一樣,同樣支援增、删、讀、改、順序掃描操作,而且通過批量存儲技術規避磁盤随機寫入問題。LSM樹和B+樹相比,LSM樹犧牲了部分讀性能,用來大幅提高寫性能;基于LSM樹實作的資料庫如LevelDB、HBase等。

LSM樹是将資料的修改增量保持在記憶體中,達到指定的大小限制後将這些修改操作批量寫入磁盤,不過讀取的時候稍微麻煩,需要合并磁盤中曆史資料和記憶體中最近修改操作,是以寫入性能大大提升,讀取時可能需要先看是否儲存在記憶體中,則需要通路較多的磁盤檔案。是以,LSM-樹比較适合的應用場景是:寫入資料量大,讀資料量和更新資料量不高且讀一般針對最新資料。

在大并發插入資料的業務場景下,随機寫需要大量的磁盤随機IO,意味着大量的磁盤尋道次數,影響業務響應速度。B+樹最大的性能問題是會産生大量的随機IO,随着新資料的插入,葉子節點會慢慢分裂,邏輯上連續的葉子節點在實體上往往并不連續,甚至分離地很遠,會産生大量的随機讀寫IO,低下的磁盤尋道速度嚴重影響性能。

目前的Oracle資料庫對于大批量的日志寫入資料庫場景,資料庫寫入效率依然是技術瓶頸,是以将LSM樹原理應用于Oracle資料庫中,利用LSM樹的特點,提升資料入庫的執行效率是非常有必要的。

技術實作要素:

本發明要解決的技術問題是提供一種基于LSM樹的Oracle資料庫資料處理方法,将随機寫轉換成順序寫,在讀寫之間取得平衡,保證穩定的資料插入速率。

本發明為解決上述技術問題而采用的技術方案是提供一種基于LSM樹的Oracle資料庫資料處理方法,包括如下步驟:S1:寫資料,将增加或者更新的資料有序的寫入LSM記憶體緩沖區;S2:資料持久化,将LSM記憶體緩沖區中的資料定時或者按照固定大小持久化到LSM磁盤;S3:資料合并,對LSM磁盤中的檔案進行資料合并,消除備援資料;S4:讀資料,先從LSM記憶體緩沖區資料開始通路,然後按順序逐層從LSM磁盤查找資料;S5:删除資料,在需要删除的資料上打上删除标記,在進行資料合并時,将有删除标記的資料丢棄。

進一步的,所述LSM樹的存儲系統為key-value存儲系統,所述LSM記憶體緩沖區的存儲空間是存儲的Level-0層,儲存了所有最近寫入的(key,value)資料,所述LSM記憶體緩沖區中存儲的資料有序且随時原地更新,同時支援資料查詢讀取。

進一步的,所述LSM磁盤存儲空間是資料存儲的Level-1到Level-n層,每一層存儲的資料都是一個在key上有序的資料結構。

進一步的,所述LSM記憶體緩沖區中設有LSM日志,所述LSM日志記錄用戶端的操作請求,并将寫入LSM記憶體緩沖區中的資料追加寫入LSM日志檔案,當LSM記憶體緩沖區中的資料持久化到LSM磁盤上時,清空LSM日志檔案;所述LSM記憶體緩沖區的資料發生丢失時,則通過LSM日志檔案恢複資料。

進一步的,所述LSM記憶體緩沖區中的資料持久化到LSM磁盤的過程中産生持久化檔案,當因程序退出造成資料丢失時,則在重新開機程序後通過持久化檔案進行資料恢複。

進一步的,所述LSM記憶體緩沖區中的資料持久化到LSM磁盤時,通過順序的IO操作将LSM記憶體緩沖區中資料以塊資料的形式刷到LSM磁盤,不更新LSM磁盤上的已有檔案,LSM磁盤上的已有檔案不可寫且有序。

進一步的,所述步驟S3中資料合并為異步合并操作,在異步合并操作觸發後,将LSM記憶體緩沖區中的資料和LSM磁盤中的資料合并成新的LSM磁盤資料;資料合并和記憶體資料的寫入采用交替合并的方式;當一個記憶體緩沖區被觸發合并時,新的寫入請求被指向另一個記憶體緩沖區,寫資料操作和合并指向不同的記憶體緩沖區,進行隔離操作。

本發明對比現有技術有如下的有益效果:本發明提供的基于LSM樹的Oracle資料庫資料處理方法,實作了順序寫磁盤,其以追加的方式寫磁盤檔案,響應快,穩定性高,有效提高了高并發量;Oracle LSM存儲方式隻有随機讀盤沒有随機寫盤,隻需使用讀密集型固态盤,降低了成本;将資料劃分為基線資料和修改增量,基線資料持久化到實體磁盤檔案,而修改增量在記憶體緩存中進行,熱點資料和事務操作都發生在記憶體緩存中,事務處理性能高;實作讀寫分離,獲得接近記憶體資料庫的事務處理性能。

附圖說明

圖1為本發明實施例中基于LSM樹的Oracle資料庫資料處理方法流程圖;

圖2為本發明實施例中基于LSM樹的Oracle資料庫資料處理方法架構圖;

圖3為本發明實施例中資料持久化原理圖;

圖4為本發明實施例中資料合并原理圖。

具體實施方式

下面結合附圖和實施例對本發明作進一步的描述。

圖1為本發明實施例中基于LSM樹的Oracle資料庫資料處理方法流程圖。

請參見圖1,本發明實施例的基于LSM樹的Oracle資料庫資料處理方法,包括如下步驟:

S1:寫資料,将增加或者更新的資料有序的寫入LSM記憶體緩沖區;

S2:資料持久化,将LSM記憶體緩沖區中的資料定時或者按照固定大小持久化到LSM磁盤;

S3:資料合并,對LSM磁盤中的檔案進行資料合并,消除備援資料;

S4:讀資料,先從LSM記憶體緩沖區資料開始通路,然後按順序逐層從LSM磁盤查找資料;由于檔案本身有序,并且定期的合并減少了磁盤檔案個數,因而查找過程相對較快速,在用戶端會話看來資料存儲檔案的位置是透明的;

S5:删除資料,在需要删除的資料上打上删除标記,在進行資料合并時,将有删除标記的資料丢棄。

請參見圖2,本發明實施例的基于LSM樹的Oracle資料庫資料處理方法,LSM存儲引擎是一個多層結構,就像一個樹一樣從小到大。LSM記憶體緩沖區為存儲的Level-0層,儲存了所有最近寫入的資料,這個記憶體結構是有序的,并且可以随時原地更新,同時支援随時讀操作;剩下的Level-1到Level-n層都在LSM磁盤上,每一層都是一個有序的結構。

當有增量寫入操作或修改更新操作時,寫入LSM記憶體緩沖區中(buffer cache),LSM記憶體緩沖區中通過某種資料結構(如skiplist)保持key有序,所有動态修改都在LSM記憶體緩沖區中完成;LSM記憶體緩沖區沒有尋道速度的問題,随機寫的性能相比較磁盤得到大幅提升;為了防止程序突然挂掉導緻LSM記憶體緩沖區的資料丢失,一般會将資料追加寫到日志檔案後才寫入LSM記憶體緩沖區中,以備必要時能從日志恢複資料;每次用戶端會話的操作請求都會寫入該日志,隻有寫入成功才會繼續執行對業務資料的操作請求。當記憶體緩沖區中的資料持久化到實體磁盤檔案上時,就可以清空相應的LSM日志。

請同時參見圖3,本發明實施例的基于LSM樹的Oracle資料庫資料處理方法,資料儲存到LSM記憶體緩沖區後,記憶體中的資料定時或按固定大小地持久化到LSM磁盤,更新操作隻不斷地寫到記憶體,并不更新磁盤上已有檔案;記憶體中的資料以塊資料形式刷到磁盤,是順序的IO操作;随着越來越多寫操作,磁盤上積累的檔案也越來越多,這些檔案不可寫且有序。

請同時參見圖4,本發明實施例的基于LSM樹的Oracle資料庫資料處理方法,記憶體緩沖區持久化形成的磁盤檔案越來越多,當記憶體中的修改量超過某個閥值時或者經曆一個特定的時間後,讀的性能會越來越差,是以需要在适當的時候,對小的磁盤檔案進行合并,提高讀的性能。在異步的合并操作被觸發後,合并操作将記憶體和磁盤資料合并成新的磁盤資料;為了避免合并操作對業務的影響,本發明可以采用交替合并的方式進行;當一個記憶體緩沖區(比如LSM buffer 0)被觸發合并時,應用會話新的寫入請求被指向另一個記憶體緩沖區(LSM buffer 1),這樣應用寫資料操作和合并指向的是不同的記憶體緩沖區,可以隔離彼此影響。定時對檔案進行合并操作(compaction),消除備援資料,減少檔案數量;檔案有序,保證讀取操作相對快速。

具體的,本發明實施例的基于LSM樹的Oracle資料庫資料處理方法,當有讀(select)操作時,先從Level-0層記憶體資料開始通路,如果在記憶體中通路不到,再按順序逐層一個個從磁盤檔案(Level-0到Level-n)中查找,由于檔案本身有序,并且定期的合并減少了磁盤檔案個數,因而查找過程相對較快速。在用戶端會話看來資料存儲檔案的位置是透明的。删除(delete)是一種特殊的更改,被用戶端删除的資料打上删除标記,查找會跳過這些删除的資料,當合并時,有删除标記的資料會被丢棄。

綜上所述,本發明提供的基于LSM樹的Oracle資料庫資料處理方法,實作了順序寫磁盤,其以追加的方式寫磁盤檔案,響應快,穩定性高,有效提高了高并發量;Oracle LSM存儲方式隻有随機讀盤沒有随機寫盤,隻需使用讀密集型固态盤,降低了成本;将資料劃分為基線資料和修改增量,基線資料持久化到實體磁盤檔案,而修改增量在記憶體緩存中進行,熱點資料和事務操作都發生在記憶體緩存中,事務處理性能高;實作讀寫分離,獲得接近記憶體資料庫的事務處理性能。

雖然本發明已以較佳實施例揭示如上,然其并非用以限定本發明,任何本領域技術人員,在不脫離本發明的精神和範圍内,當可作些許的修改和完善,是以本發明的保護範圍當以權利要求書所界定的為準。