两个人的电影免费视频_国产精品久久久久久久久成人_97视频在线观看播放_久久这里只有精品777_亚洲熟女少妇二三区_4438x8成人网亚洲av_内谢国产内射夫妻免费视频_人妻精品久久久久中国字幕

LSM-tree索引的優(yōu)化方法和裝置的制造方法

文檔序號:8487902閱讀:766來源:國知局
LSM-tree索引的優(yōu)化方法和裝置的制造方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明實(shí)施例涉及數(shù)據(jù)處理技術(shù),尤其涉及一種LSM-tree索引的優(yōu)化方法和裝置。
【背景技術(shù)】
[0002]LSM-tree (The Log-Structured Merge-Tree,日志結(jié)構(gòu)的合并樹)是很多現(xiàn)代數(shù)據(jù)庫的底層索引結(jié)構(gòu),該索引結(jié)構(gòu)的基本思想是把數(shù)據(jù)的變更操作首先保存在內(nèi)存中,當(dāng)內(nèi)存中的數(shù)據(jù)規(guī)模到達(dá)一個(gè)閾值之后,將內(nèi)存中的數(shù)據(jù)批量、有序地寫入磁盤,并通過一定的分層整理算法將新落盤的數(shù)據(jù)與老的數(shù)據(jù)做滾動合并。其中,在LSM-tree索引結(jié)構(gòu)中,數(shù)據(jù)是按照鍵值(Key-Value)對的方式進(jìn)行存儲的。每一個(gè)鍵(Key)中存儲有對應(yīng)的值(Value),通過鍵名可以查找到相應(yīng)的數(shù)據(jù)值(也稱為數(shù)據(jù)項(xiàng)),進(jìn)而可以對數(shù)據(jù)項(xiàng)進(jìn)行一定的操作。
[0003]一般來說,內(nèi)存中會存儲有與相同Key對應(yīng)的多個(gè)數(shù)據(jù)項(xiàng)(例如,對某個(gè)熱門站點(diǎn)首頁的持續(xù)抓取所產(chǎn)生的數(shù)據(jù)項(xiàng)),并為不同數(shù)據(jù)項(xiàng)賦予不同的版本號。在磁盤中,針對Key相同的數(shù)據(jù)項(xiàng),新版本會覆蓋或屏蔽舊的版本。
[0004]發(fā)明人通過研宄發(fā)現(xiàn),針對LSM-tree索引結(jié)構(gòu)在頻繁更新相同Key數(shù)據(jù)項(xiàng)的場景下,現(xiàn)有的處理機(jī)制會產(chǎn)生CPU (Central Processing Unit,中央處理器)消耗過大、數(shù)據(jù)庫對外的吞吐量降低、l/0(input/output,輸入輸出)操作過多以及引入內(nèi)存緩存等技術(shù)問題。

【發(fā)明內(nèi)容】

[0005]有鑒于此,本發(fā)明實(shí)施例提供一種LSM-tree索引的優(yōu)化方法和裝置,以優(yōu)化現(xiàn)有的LSM-tree索引結(jié)構(gòu)在頻繁更新相同Key數(shù)據(jù)項(xiàng)的場景下的處理機(jī)制,顯著降低CPU消耗,提高數(shù)據(jù)庫對外的吞吐量。
[0006]在第一方面,本發(fā)明實(shí)施例提供了一種LSM-tree索引的優(yōu)化方法,包括:
[0007]將寫入內(nèi)存中的數(shù)據(jù)按照LSM-tree內(nèi)存索引結(jié)構(gòu)進(jìn)行存儲;
[0008]當(dāng)基于所述內(nèi)存索引結(jié)構(gòu)存儲的內(nèi)存數(shù)據(jù)滿足寫入閾值條件時(shí),按照第一合并算法,對所述內(nèi)存數(shù)據(jù)進(jìn)行合并;
[0009]將合并后的所述內(nèi)存數(shù)據(jù)按照LSM-tree磁盤索引結(jié)構(gòu)寫入磁盤文件中。
[0010]在第二方面,本發(fā)明實(shí)施例提供了一種LSM-tree索引的優(yōu)化裝置,包括:
[0011]內(nèi)存數(shù)據(jù)存儲模塊,用于將寫入內(nèi)存中的數(shù)據(jù)按照LSM-tree內(nèi)存索引結(jié)構(gòu)進(jìn)行存儲;
[0012]內(nèi)存數(shù)據(jù)合并模塊,用于當(dāng)基于所述內(nèi)存索引結(jié)構(gòu)存儲的內(nèi)存數(shù)據(jù)滿足寫入閾值條件時(shí),按照第一合并算法,對所述內(nèi)存數(shù)據(jù)進(jìn)行合并;
[0013]磁盤文件寫入模塊,用于將合并后的所述內(nèi)存數(shù)據(jù)按照LSM-tree磁盤索引結(jié)構(gòu)寫入磁盤文件中。
[0014]本發(fā)明實(shí)施例通過按照LSM-tree索引結(jié)構(gòu)來存儲內(nèi)存中寫入的數(shù)據(jù)的方式,巧妙的利用了 LSM-tree索引結(jié)構(gòu)在存儲數(shù)據(jù)時(shí)使用的合并操作,將相同Key數(shù)據(jù)項(xiàng)的合并操作下放至內(nèi)存數(shù)據(jù)的存儲過程中完成。解決了現(xiàn)有技術(shù)在頻繁更新相同Key數(shù)據(jù)項(xiàng)的場景下,所帶來的CPU消耗過大、數(shù)據(jù)庫對外的吞吐量降低、I/O操作過多以及引入內(nèi)存緩存等技術(shù)問題,顯著降低了 CPU消耗,提高了數(shù)據(jù)庫對外的吞吐量,同時(shí)避免了使用內(nèi)存緩存而帶來的額外內(nèi)存開銷以及性能降低等問題。
【附圖說明】
[0015]圖1是現(xiàn)有技術(shù)中頻繁操作相同Key場景下數(shù)據(jù)項(xiàng)臨時(shí)合并示意圖;
[0016]圖2是本發(fā)明第一實(shí)施例的一種LSM-tree索引的優(yōu)化方法的流程圖;
[0017]圖3是本發(fā)明第二實(shí)施例的一種LSM-tree索引的優(yōu)化方法的流程圖;
[0018]圖4是本發(fā)明第三實(shí)施例的一種LSM-tree索引的優(yōu)化方法的流程圖;
[0019]圖5是本發(fā)明第四實(shí)施例的一種LSM-tree索引的優(yōu)化方法的流程圖;
[0020]圖6是本發(fā)明實(shí)施例的一種嵌套式LSM-tree索引模型的結(jié)構(gòu)示意圖;
[0021]圖7是本發(fā)明第五實(shí)施例的一種LSM-tree索引的優(yōu)化裝置的結(jié)構(gòu)圖。
【具體實(shí)施方式】
[0022]為了使本發(fā)明的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚,下面結(jié)合附圖對本發(fā)明具體實(shí)施例作進(jìn)一步的詳細(xì)描述。可以理解的是,此處所描述的具體實(shí)施例僅僅用于解釋本發(fā)明,而非對本發(fā)明的限定。另外還需要說明的是,為了便于描述,附圖中僅示出了與本發(fā)明相關(guān)的部分而非全部內(nèi)容。在更加詳細(xì)地討論示例性實(shí)施例之前應(yīng)當(dāng)提到的是,一些示例性實(shí)施例被描述成作為流程圖描繪的處理或方法。雖然流程圖將各項(xiàng)操作(或步驟)描述成順序的處理,但是其中的許多操作可以被并行地、并發(fā)地或者同時(shí)實(shí)施。此外,各項(xiàng)操作的順序可以被重新安排。當(dāng)其操作完成時(shí)所述處理可以被終止,但是還可以具有未包括在附圖中的附加步驟。所述處理可以對應(yīng)于方法、函數(shù)、規(guī)程、子例程、子程序等等。
[0023]為了便于后續(xù)理解,首先將LSM-tree索引的基本原理以及針對LSM-tree索引結(jié)構(gòu)在頻繁更新相同Key數(shù)據(jù)項(xiàng)的場景下,現(xiàn)有的處理機(jī)制簡述如下:
[0024]如前所述(【背景技術(shù)】部分),在磁盤中,針對相同Key數(shù)據(jù)項(xiàng),新版本會覆蓋或屏蔽舊的版本。由于磁盤中的各份數(shù)據(jù)是有序的,合并的過程通過線性的多路歸并會非常高效。LSM-tree索引通過將數(shù)據(jù)變更操作賦予不同的版本號,使得數(shù)據(jù)的更新和刪除操作產(chǎn)生的磁盤I/O由隨機(jī)訪問轉(zhuǎn)化為順序訪問。通過定期地整理過期版本的方式,對于磁盤這樣的旋轉(zhuǎn)形介質(zhì)能夠顯著的提升吞吐率。
[0025]然而,LSM-tree索引在頻繁更新相同Key數(shù)據(jù)項(xiàng)的場景下,存在兩個(gè)明顯的性能冋題:
[0026]1、當(dāng)需要讀取LSM-tree索引結(jié)構(gòu)中的數(shù)據(jù)時(shí),需要首先讀取內(nèi)存中的數(shù)據(jù),當(dāng)內(nèi)存中不具有該數(shù)據(jù)時(shí),才會繼續(xù)讀取磁盤中的數(shù)據(jù)。當(dāng)順序讀取內(nèi)存中的某個(gè)區(qū)間時(shí),如果該區(qū)間的某些數(shù)據(jù)項(xiàng)存在很多版本(或者說,相同Key的多個(gè)數(shù)據(jù)項(xiàng)),讀取的有效速度會顯著下降,這是因?yàn)樾枰谧x取的過程中臨時(shí)合并很多版本,產(chǎn)生了明顯的CPU消耗;
[0027]2、版本合并算法不合理,造成局部大量的過期版本被整理掉,導(dǎo)致落盤的文件中數(shù)據(jù)過于稀疏,在后續(xù)與老數(shù)據(jù)的合并過程中產(chǎn)生多余的I/o操作。
[0028]在現(xiàn)有技術(shù)中,針對LSM-tree索引的同Key多版本合并優(yōu)化目前普遍采用如下兩者方案來解決:
[0029]1、在內(nèi)存數(shù)據(jù)滿刷到磁盤的時(shí)候進(jìn)行版本合并:內(nèi)存的跳表結(jié)構(gòu)中保留一段時(shí)間內(nèi)的所有數(shù)據(jù)變更,包括相同Key數(shù)據(jù)項(xiàng)的各次變更。直到內(nèi)存占用大小達(dá)到一定閾值后,才將內(nèi)存中數(shù)據(jù)整理到第O層的磁盤文件。在寫入到第O層文件的過程中,整理算法將相同Key的多個(gè)數(shù)據(jù)進(jìn)行合并,保留最新的版本。后續(xù)磁盤文件后臺調(diào)度合并,即:以Key的取值區(qū)間為每次的合并單元,將相鄰兩層的數(shù)據(jù)做合并,第η層的數(shù)據(jù)文件與第n+1層中相同取值范圍的數(shù)據(jù)合并,產(chǎn)生新的第n+1層數(shù)據(jù)文件;
[0030]2、利用內(nèi)存緩存保存相同Key的最新版本的Value,在讀取的時(shí)候直接返回最新的版本的Value給調(diào)用者,避免臨時(shí)合并帶來的開銷。
[0031]其中,方案I的缺點(diǎn)在于:在頻繁更新相同Key數(shù)據(jù)項(xiàng)的場景下,內(nèi)存中會囤積相同Key數(shù)據(jù)項(xiàng)的成百上千個(gè)版本,如果此時(shí)用戶有發(fā)起了順序讀取操作,只能將內(nèi)存中各個(gè)Key的多個(gè)版本進(jìn)行臨時(shí)合并。當(dāng)讀取頻繁的情況下,每次讀取都會觸發(fā)臨時(shí)合并,導(dǎo)致(PU被占滿,進(jìn)而降低整個(gè)數(shù)據(jù)庫對外的吞吐率。在圖1中示出了頻繁操作相同Key場景下數(shù)據(jù)項(xiàng)臨時(shí)合并示意圖;另外,由于內(nèi)存中(也稱MemStore)存儲了大量的過期版本,當(dāng)內(nèi)存中的數(shù)據(jù)寫入到第O層的磁盤文件后,寫入數(shù)據(jù)的大小相對于內(nèi)存中存儲數(shù)據(jù)的大小明顯縮水,極端情況下,一個(gè)文件可能只含有幾個(gè)數(shù)據(jù)項(xiàng)(例如,數(shù)據(jù)在內(nèi)存中已經(jīng)占32MB了,但是當(dāng)它寫入到第O層磁盤文件后,由于大量過期版本被丟棄,實(shí)際生成的文件只有10ΚΒ),當(dāng)磁盤中的第O層文件和第I層文件進(jìn)行合并的過程中,大量沒被更新的數(shù)據(jù)項(xiàng)也被讀出并寫入到新生成的文件中,所以實(shí)際有效的I/O操作非常少;
[0032]而方案2的缺點(diǎn)在于:緩存(也稱Cache)引入了額外的內(nèi)存開銷;維護(hù)緩存中數(shù)據(jù)和LSM-tree索引結(jié)構(gòu)中數(shù)據(jù)的一致性需要加鎖,降低了性能;受訪問分布規(guī)律影響較大,當(dāng)緩存命中率不夠高時(shí),優(yōu)化效果并不明顯。
[0033]第一實(shí)施例
[0034]圖2為本發(fā)明第一實(shí)施例提供的一種LSM-tree索引的優(yōu)化方法的流程圖,本實(shí)施例的方法可以由LSM-tree索引的優(yōu)化裝置來執(zhí)行,該裝置可通過硬件和/或軟件的方式實(shí)現(xiàn),并一般可集成于用于存儲海量LSM-tree索引結(jié)構(gòu)數(shù)據(jù)的服務(wù)器中,其中,所述服務(wù)器可以為單個(gè)服務(wù)器,也可以為多個(gè)服務(wù)器構(gòu)成的集群服務(wù)器。由于本發(fā)明實(shí)施例針對頻繁更新相同Key數(shù)據(jù)項(xiàng)的場景下會有明顯的優(yōu)化效果,所述服務(wù)器優(yōu)選可以為搜索引擎服務(wù)器。
[0035]本實(shí)施例的方法具體包括:
[0036]210、將寫入內(nèi)存中的數(shù)據(jù)按照LSM-tree內(nèi)存索引結(jié)構(gòu)進(jìn)行存儲。
[0037]在傳統(tǒng)的LSM-tree索引結(jié)構(gòu)中,內(nèi)存中
當(dāng)前第1頁1 2 3 4 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點(diǎn)贊!
1
英德市| 常州市| 白山市| 黎城县| 富裕县| 南木林县| 洮南市| 石屏县| 鲜城| 同江市| 文山县| 禹州市| 清新县| 济南市| 宁津县| 天峨县| 谢通门县| 和平区| 财经| 许昌市| 塘沽区| 乐至县| 贵溪市| 视频| 兖州市| 临漳县| 墨脱县| 宣恩县| 岳西县| 偏关县| 旬邑县| 阿巴嘎旗| 张北县| 梁平县| 洞头县| 镇沅| 洪洞县| 云林县| 齐河县| 宜章县| 若羌县|