摘 要:當前,越來越多的業(yè)務(wù)部門都需要操作海量數(shù)據(jù),如規(guī)劃部門的規(guī)劃數(shù)據(jù),水利部門的水文、水利數(shù)據(jù),氣象部門的氣象數(shù)據(jù),這些部門處理的數(shù)據(jù)量通常都非常大。它包括各種空間數(shù)據(jù)、報表統(tǒng)計數(shù)據(jù)、文字、聲音、圖像、超文本等各種環(huán)境和文化數(shù)據(jù)信息。我們需要從大規(guī)模的、沒有關(guān)系的數(shù)據(jù)中,在存儲、管理、處理、優(yōu)化等各個環(huán)節(jié)中注重效率,并提取出所需要的信息。海量數(shù)據(jù)存儲管理在各行業(yè)的信息化過程中很重要,受到廣泛的關(guān)注。本文綜述了海量存儲管理技術(shù)的研究及應(yīng)用現(xiàn)狀,以及結(jié)合大型收費系統(tǒng)同,介紹了一些關(guān)鍵的優(yōu)化技術(shù),包括數(shù)據(jù)庫的存儲,數(shù)據(jù)的管理,SQL語句,頁面分割等,最后,結(jié)合當前海量數(shù)據(jù)存儲管理技術(shù),指出了海量數(shù)據(jù)存儲管理面臨的一些新的發(fā)展方向。
關(guān)鍵詞:海量數(shù)據(jù);優(yōu)化;SQL
中圖分類號:TP301.6
1 海量數(shù)據(jù)概述
隨著信息社會的發(fā)展,伴隨著Internet的發(fā)展,數(shù)據(jù)呈爆炸式增長。隨著數(shù)字圖書館、電子商務(wù)、多媒體傳輸?shù)扔玫牟粩喟l(fā)展,數(shù)據(jù)從GB、TB到PB量級海量急速增長。存儲產(chǎn)品已不再是附屬于服務(wù)器的輔助設(shè)備,而成為互聯(lián)網(wǎng)中最主要的花費所在。海量存儲技術(shù)已成為繼計算機浪潮和互聯(lián)網(wǎng)浪潮之后的第三次浪潮,磁盤陣列與網(wǎng)絡(luò)存儲成為先鋒。
1.1 海量數(shù)據(jù)的定義。海量存儲的含義在于,其在數(shù)據(jù)存儲中的容量增長是沒有止境的。因此,用戶需要不斷地擴張存儲空間。但是,存儲容量的增長往往同存儲性能并不成正比。這也就造成了數(shù)據(jù)存儲上的誤區(qū)和障礙。
1.2 海量數(shù)據(jù)的特點。(1)用戶群體大,增長速度快。(2)數(shù)據(jù)總量大,增長速度快。(3)數(shù)據(jù)類型多樣,大小不一。(4)數(shù)據(jù)操作模式較為固定,一致性要求較弱。
2 海量數(shù)據(jù)的存儲
無論在任何行業(yè),當數(shù)據(jù)量特別大時,我們在處理和應(yīng)用時都會受到影響,甚至導致死機等嚴重現(xiàn)象,所以海量數(shù)據(jù)的存儲在整個行業(yè)發(fā)展中所處的地位也越來越重要,包括存儲設(shè)備、存儲方式、存儲系統(tǒng)等也都有了很大的變化。
2.1 傳統(tǒng)型的關(guān)系型數(shù)據(jù)存儲技術(shù)。傳統(tǒng)關(guān)系型數(shù)據(jù)庫在數(shù)據(jù)存儲管理的發(fā)展史上是一個重要的里程碑。在互聯(lián)網(wǎng)時代以前,數(shù)據(jù)的存儲管理應(yīng)用主要集中在金融、證券等商務(wù)領(lǐng)域中。這類應(yīng)用主要面向結(jié)構(gòu)化數(shù)據(jù),聚焦于便捷的數(shù)據(jù)查詢分析能力、嚴格的事務(wù)處理能力、多用戶并發(fā)訪問能力以及數(shù)據(jù)安全性的保證。而傳統(tǒng)關(guān)系型數(shù)據(jù)庫正是針對這種需求而設(shè)計,并以其結(jié)構(gòu)化的數(shù)據(jù)組織形式,嚴格的一致性模型,簡單便捷的查詢語言,強大的數(shù)據(jù)分析能力以及較高的程序與數(shù)據(jù)獨立性等優(yōu)點被廣泛應(yīng)用。
2.2 新興數(shù)據(jù)存儲系統(tǒng)。在傳統(tǒng)關(guān)系型數(shù)據(jù)庫已不能滿足互聯(lián)網(wǎng)應(yīng)用需求的情況下,開始出現(xiàn)一些針對結(jié)構(gòu)化、半結(jié)構(gòu)化甚至非結(jié)構(gòu)化數(shù)據(jù)的管理系統(tǒng)。按照數(shù)據(jù)管理方式劃分,這些新興的數(shù)據(jù)管理系統(tǒng)可以歸為兩大類:(1)集中式數(shù)據(jù)管理系統(tǒng)。這類系統(tǒng)采用傳統(tǒng)的server farm架構(gòu)。整個系統(tǒng)需要一個主控節(jié)點維護各從節(jié)點的元信息,是一種集中控制的管理手段。(2)非集中式數(shù)據(jù)管理系統(tǒng)。系統(tǒng)中各節(jié)點無主從之分,各節(jié)點通過相應(yīng)的通信機制相互感知,自我管理性較強。
2.3 網(wǎng)絡(luò)存儲技術(shù)。在存儲技術(shù)的地位越來越重要的今天,存儲設(shè)備已經(jīng)由單一的磁盤、磁帶轉(zhuǎn)向磁盤陣列,進而發(fā)展到當前日益流行的存儲網(wǎng)絡(luò),如DAS、NAS、SAN和iSC2SI等。大規(guī)模的數(shù)據(jù)應(yīng)用需求不斷涌現(xiàn),使得海量數(shù)據(jù)存儲及其應(yīng)用也成為一個新的發(fā)展方向。(1)直接連接存儲。DAS(Direct Attached Storage,直接連接存儲、又稱BAS(Bus Access Storage。在這種方式中,存儲設(shè)備是通過電纜直接連接至一臺服務(wù)器上,I/O請求直接發(fā)送到存儲設(shè)備。(2)網(wǎng)絡(luò)連接存儲。NAS(NetworkAttachedStorage,網(wǎng)絡(luò)連接存儲、是一種文件共享服務(wù)。它擁有自己的文件系統(tǒng),通過NFS或CIFS對外提供文件訪問服務(wù)。(3)存儲區(qū)域網(wǎng)絡(luò)。SAN(StorageAreaNetwork,存儲區(qū)域網(wǎng)絡(luò))經(jīng)歷了十多年歷史的發(fā)展,已相當成熟。SAN是存儲設(shè)備與服務(wù)器經(jīng)由高速網(wǎng)絡(luò)設(shè)備連接而形成的存儲專用網(wǎng)絡(luò),它類似于普通局域網(wǎng)的高速存儲網(wǎng)絡(luò),是一個獨立的、專門用于數(shù)據(jù)存取的局域網(wǎng)。
3 海量數(shù)據(jù)的優(yōu)化
以已存在的房屋收費數(shù)據(jù)庫為例進行研究測試。該數(shù)據(jù)庫明細表記錄以月為單位,每月每戶至少2條記錄,收費戶數(shù)不小于20萬,即如果有3年的記錄,數(shù)據(jù)規(guī)模將達到千萬以上。擬采用以下方案進行優(yōu)化:
3.1 選用優(yōu)秀的軟、硬件系統(tǒng)。在軟件方面,海量數(shù)據(jù)的處理對所使用的數(shù)據(jù)庫工具要求比較高,當前主流的幾種數(shù)據(jù)庫包括Oracle、DB2、SQL Server、My Sql等都對海量數(shù)據(jù)有了一定的支持,其中Oraclet和SQL Server較突出,微軟公司的SQL Server 2005和SQL Server 2008性能也不錯。另外在BI領(lǐng)域:數(shù)據(jù)庫,數(shù)據(jù)倉庫,多維數(shù)據(jù)庫,數(shù)據(jù)挖掘等相關(guān)工具也要進行選擇,好的ETL工具和好的OLAP工具都十分必要。
3.2 建立廣泛的索引。對海量的數(shù)據(jù)處理,對大表建立索引是必行的。(1)每個表只能有一個聚集索引。因為目錄只能按照一種方法進行排序。那么何時使用聚集索引或非聚集索引,在表1中進行了總結(jié)。(2)優(yōu)化SQL查詢語句。對海量數(shù)據(jù)進行查詢處理過程中,查詢的SQL語句的性能對查詢效率的影響是非常大的,編寫高效優(yōu)良的SQL腳本和存儲過程是數(shù)據(jù)庫工作人員的職責,也是檢驗數(shù)據(jù)庫工作人員水平的一個標準。在“收費系統(tǒng)”的設(shè)計實踐過程中,總結(jié)了以下經(jīng)驗:1)用TOP用來提取前幾條或前幾個百分比數(shù)據(jù)的詞;2)IN和OR會引起全表掃描,盡量不使用;3)非操作符、函數(shù)不提倡使用;4)order by按聚集索引列排序效率最高;5)盡量少用NOT;6)exists和in的執(zhí)行效率是一樣的;7)用函數(shù)charindex()和前面加通配符%的LIKE執(zhí)行效率一樣;8)union并不絕對比or的執(zhí)行效率高;9)字段提取要按照”需多少、提多少”的原則,避免“select *”;10)count(*)不比count(字段)慢。(3)數(shù)據(jù)定期結(jié)轉(zhuǎn),分表存儲。對海量數(shù)據(jù)進行分區(qū)、分表存儲是十分必要,將明細大表數(shù)據(jù),將不同的數(shù)據(jù)存于不同的文件組下,而不同的文件組存于不同的磁盤分區(qū)下,這樣將數(shù)據(jù)分散開,減小磁盤I/O,減小了系統(tǒng)負荷,而且還可以將日志,索引等放于不同的分區(qū)下,這樣在訪問某一年的數(shù)據(jù)時就會使效率成倍提高。我們選用以下兩種常見的分表方法:1)按日期來分表/分庫;2)按數(shù)字類型hash分表/分庫。(4)數(shù)據(jù)分頁及其他方案。經(jīng)典的數(shù)據(jù)分頁方法是:ADO紀錄集分頁法,也就是利用ADO自帶的分頁功能、游標、來實現(xiàn)分頁。
表1
動作描述使用聚集索引使用非聚集索引
列經(jīng)常被分組排序應(yīng)應(yīng)
返回某范圍內(nèi)的數(shù)據(jù)應(yīng)不應(yīng)
一個或極少不同值不應(yīng)不應(yīng)
小數(shù)目的不同值應(yīng)不應(yīng)
大數(shù)目的不同值不應(yīng)應(yīng)
頻繁更新的列不應(yīng)應(yīng)
外鍵列應(yīng)應(yīng)
主鍵列應(yīng)應(yīng)
頻繁修改索引列不應(yīng)應(yīng)
參考文獻:
[1]郭鄭州.SQL Server 2008完全學習手冊[M].北京:清華大學出版社,2011.
[2]井中月,郝記生.SQL入門經(jīng)典(第5版)[M].北京:人民郵電出版社,2011.
[3]侯瀟.海量數(shù)據(jù)處理中基于數(shù)據(jù)劃分的查詢優(yōu)化研究與實現(xiàn)[C].國防科學技術(shù)大學碩士論文,2007.
作者簡介:任歡(1985.01-),男,就職于遼寧省第四地質(zhì)大隊,碩士,科員,助理工程師,研究方向:約束求解。
作者單位:長春工業(yè)大學 計算機科學與工程學院,長春 130012