王強(qiáng)
摘要:2010年以來,隨著國家經(jīng)濟(jì)迅速發(fā)展,我們迎來了大數(shù)據(jù)時(shí)代,大量數(shù)據(jù)也實(shí)時(shí)影響著我們的生活和工作。在此背景下,優(yōu)化數(shù)據(jù)、提升查詢效率顯得尤為重要。該文分析了基于B-樹結(jié)構(gòu)的索引的實(shí)施對于數(shù)據(jù)優(yōu)化的影響,旨在找到數(shù)據(jù)優(yōu)化的實(shí)施策略。
關(guān)鍵詞:大數(shù)據(jù)技術(shù);索引;B-樹結(jié)構(gòu)
中圖分類號:TP311 文獻(xiàn)標(biāo)識碼:A 文章編號:1009-3044(2015)14-0004-02
Abstract:Since 2010,we ushered in the era of big data with the rapid development of the national economy, the large amount of data also affects our life and work in real time. Under this background, It is important to optimize data and query efficiency. This paper analyzes the impact of the implementation of the index based on the B- tree structure for data optimization, aiming to find the implementation strategy of data optimization.
Key words: large data technology index B-tree structure
進(jìn)入大數(shù)據(jù)時(shí)代,面對現(xiàn)實(shí)世界中的海量數(shù)據(jù),如何更科學(xué)有效地獲取、組織、存儲(chǔ)以及處理成為計(jì)算機(jī)技術(shù)中重要的研究領(lǐng)域,從早期的文件系統(tǒng)到后來的關(guān)系數(shù)據(jù)庫系統(tǒng)和數(shù)據(jù)挖掘技術(shù),再到現(xiàn)在的大數(shù)據(jù)處理技術(shù),在數(shù)據(jù)管理技術(shù)上迎來了新的飛躍。
1 大數(shù)據(jù)處理與索引
大數(shù)據(jù)與傳統(tǒng)的數(shù)據(jù)庫在數(shù)據(jù)來源、數(shù)據(jù)規(guī)模、數(shù)據(jù)模式和數(shù)據(jù)思維方式等方面都存在區(qū)別。借用一個(gè)形象的比喻,如果說文件系統(tǒng)與關(guān)系數(shù)據(jù)庫對數(shù)據(jù)的處理是 “池塘捕魚”,那么大數(shù)據(jù)時(shí)代就是“大海捕魚”。面對海量的數(shù)據(jù),如何優(yōu)化數(shù)據(jù)存儲(chǔ)和提升數(shù)據(jù)處理效率成為研究的重點(diǎn)之一,基于B-樹結(jié)構(gòu)的索引是解決大數(shù)據(jù)背景下數(shù)據(jù)優(yōu)化的有效途徑之一。
索引能實(shí)現(xiàn)數(shù)據(jù)快速定位,從而加速數(shù)據(jù)訪問速度,提升數(shù)據(jù)處理效率。對于擁有復(fù)雜結(jié)構(gòu)的大量數(shù)據(jù)所構(gòu)成的基本表而言,索引的作用和意義是非常重要的。它通過存儲(chǔ)排序的索引關(guān)鍵字與表記錄的物理空間位置建立映射關(guān)系,從而實(shí)現(xiàn)表記錄的邏輯排序。
2 索引的創(chuàng)建與實(shí)施
本實(shí)驗(yàn)中海量數(shù)據(jù)的存放借助的是SQL Server數(shù)據(jù)庫管理系統(tǒng)。SQL Server中索引的建立依賴于數(shù)據(jù)表,數(shù)據(jù)表的存儲(chǔ)內(nèi)容是由數(shù)據(jù)頁面和索引頁面兩部分組成,索引就放在索引頁面上。開始進(jìn)行數(shù)據(jù)檢索時(shí),首先尋找索引文件,定位位置指針,通過它找到數(shù)據(jù)頁面,然后進(jìn)行讀取、加載,完成檢索操作。
在數(shù)據(jù)庫系統(tǒng)層面,索引和表中數(shù)據(jù)存放在物理文件中,這些數(shù)據(jù)被分散在page的基本存儲(chǔ)單元中,采用Balanced Tree(以下簡稱B-樹)來組織與管理索引頁和基本表的數(shù)據(jù)頁。
3 B-樹結(jié)構(gòu)與性能分析
4 基于B-結(jié)構(gòu)的優(yōu)化實(shí)施
對于海量數(shù)據(jù),首先需要建立多層結(jié)構(gòu)的索引系統(tǒng),即多級索引。之后建立聚集索引,即表中記錄的物理順序與索引關(guān)鍵字的邏輯順序一致。
它自下而上的順序來構(gòu)建自己的B-樹。數(shù)據(jù)頁信息包括若干記條錄,存放在所有的葉子節(jié)點(diǎn)中;為多個(gè)數(shù)據(jù)頁建立一個(gè)最低級的索引頁,所有數(shù)據(jù)頁的最低級索引頁成為B-樹最下層的中間節(jié)點(diǎn)。再依次不斷為低級索引頁建立高一級的索引頁,直至建立起最高級的索引頁,在B-樹中對應(yīng)根節(jié)點(diǎn)。
再建立非聚集索引,非聚集索引具有與表數(shù)據(jù)完全分離的結(jié)構(gòu),表數(shù)據(jù)與索引分別存儲(chǔ)在不同位置,具有完全不同的順序。相應(yīng)的B-樹所有節(jié)點(diǎn)只保存索引頁,不存放數(shù)據(jù)頁信息。B-樹的葉子節(jié)點(diǎn)存放完全獨(dú)立于表記錄物理順序的索引關(guān)鍵字的鍵值,以及指向數(shù)據(jù)存儲(chǔ)位置的指針,并不存放表的數(shù)據(jù)頁,標(biāo)的數(shù)據(jù)頁存放在其他地方。非聚集索引通過指針來定位包含索引關(guān)鍵字值得物理記錄行,從而建立索引關(guān)鍵字的邏輯順序與實(shí)際記錄的物理順序之間的映射關(guān)系。
在實(shí)現(xiàn)檢索某個(gè)數(shù)據(jù)項(xiàng)的時(shí)候,要先找到聚集索引的根節(jié)點(diǎn),在根節(jié)點(diǎn)的索引頁中,對檢索數(shù)據(jù)項(xiàng)值與頁中的索引關(guān)鍵值進(jìn)行比較,找出小于或等于待檢索數(shù)據(jù)項(xiàng)值得最大索引關(guān)鍵值,通過相應(yīng)索引記錄的地址指針移動(dòng)到下一層的索引節(jié)點(diǎn),直到找到能夠精確匹配的數(shù)據(jù)頁,在數(shù)據(jù)頁上查找檢索數(shù)據(jù)項(xiàng)值,直到找到與數(shù)據(jù)項(xiàng)值對應(yīng)的記錄為止。
5 總結(jié)
雖然基于B-樹結(jié)構(gòu)的索引的創(chuàng)建需要犧牲一定的存儲(chǔ)空間,創(chuàng)建索引和維護(hù)索引也要耗費(fèi)一定的時(shí)間,但是面對海量數(shù)據(jù),基于B-樹結(jié)構(gòu)的索引的創(chuàng)建一方面加快了表內(nèi)數(shù)據(jù)檢查的速度,避免了數(shù)據(jù)查詢時(shí)將數(shù)據(jù)表文件分塊和全表掃描,改善了系統(tǒng)的性能,另一方面確保了數(shù)據(jù)記錄的唯一性,加快表與表之間的連接速度,更好地實(shí)現(xiàn)了表的參照完整性,加快了表間的查詢速度,這一切都優(yōu)化了數(shù)據(jù),提高了速度,從而更好地適應(yīng)大數(shù)據(jù)背景下的數(shù)據(jù)處理。
參考文獻(xiàn):
[1] Sack J.SQL Server2008實(shí)戰(zhàn)[M].金迎春,譯.北京:人民郵電出版社,2010.
[2] 康會(huì)光,馬海軍. SQL Server2008中文版標(biāo)準(zhǔn)教程[M].北京:清華大學(xué)出版社,2009.
[3] 陶雪嬌,胡曉峰,劉洋. 大數(shù)據(jù)研究綜述[J].系統(tǒng)仿真學(xué)報(bào),2013(8)
[4] 夏巖, 趙慧英, 賈軍帥. 數(shù)據(jù)挖掘發(fā)展綜述[J].通信與計(jì)算技術(shù),2009(5).