前言:中文期刊網精心挑選了數據庫索引范文供你參考和學習,希望我們的參考范文能激發你的文章創作靈感,歡迎閱讀。
數據庫索引范文1
中圖分類號:TP311文獻標識碼:A文章編號:1009-3044(2011)27-6592-02
Indexing and Querying in Moving Objects Database
ZHANG Xia
(Computer and Information Technology Institute of Nanjing College of Information Technology, Nanjing 210046, China)
Abstract: Firstly, the paper introduced the features of Moving Objects Database (MOD). Then, the moving objects indexing was classified according to the different index space: moving objects indexing in unconstrained space and moving objects indexing in network space. Several technologies of moving objects indexing were presented. And then, the paper introduced several querying techniques, and proposed that query evaluation should be multi-faceted, multi-perspective. Finally, the development of Indexing and querying in moving objects database were briefly presented.
Key words: moving objects database; index; query; unconstrained space; network space
1 緒言
隨著無線通信、衛星定位等技術的飛速發展及其廣泛應用,如何存儲、查詢和管理一些隨空間改變和時間推移的數據成為現代數據庫研究的一個重要方向。移動對象數據庫(Moving Objects Databases,MOD)旨在常規的時空數據庫基礎上建立移動對象運動軌跡模型[1],增強數據更新和索引技術,擴展數據查詢語言,并增加移動對象位置不確定性管理方法[2]。其研究重點集中于幾個核心問題:1)移動對象建模和數據模型;2)索引方法和查詢處理;3)精確性和不確定性管理;4)實現原型。而如何高效表示和查詢移動對象的連續變化信息是移動對象數據庫首先要解決的問題。本文對移動對象數據庫的索引方法和查詢處理作簡單的綜述。
2 MOD的主要特點
文獻[2]中指出了MOD(移動對象數據庫)不同于傳統數據庫的4個特點:
1)存儲歷史數據:MOD通過記錄和處理對象位置或形狀要素隨時間的變化情況,保存了對象的現勢信息、歷史信息和過程信息,MOD的語義更豐富,更完整地表達和模擬移動對象的真實狀態,更準確地反映移動對象的時序變化與發展的過程和規律。
2)支持動態屬性:MOD提出了動態屬性的概念,即屬性值隨時間持續改變而不需顯式更新。
3)表達豐富的時空語義:MOD可以表達對象空間結構和空間拓撲關系等空間語義,還可以表達事件序列和時間相關性等時間語義。
4)管理位置不確定性:位置不確定性是移動對象的固有特性,這是因為受主客觀因素的限制,移動對象不能(或不必)把每次定位的結果都上傳到指揮監控中心的數據庫,而是采用一定的折衷策略,在位置精度和通信開銷之間取得平衡,從而使數據庫中所保存的對象位置并不總與其實際位置一致。移動對象的位置不確定性對數據庫的位置數據建模、索引和查詢等方面都產生了深遠的影響。
3 MOD的索引方法
MOD中的數據具有時間與空間雙重變化的特點,其海量的時空數據經常要求能實時響應,所以,MOD的索引結構相當重要。MOD的索引不僅要考慮索引空間還要考慮索引時間,為了支持對移動對象的查詢,必須對移動對象的不同時態進行索引,包括移動對象的完整歷史軌跡索引、移動對象的當前及未來位置的索引[3]。根據移動對象的運動空間,可將移動對象分為無限制空間的移動對象和網絡空間的移動對象兩類。
3.1 無限制空間內移動對象索引
無限制空間內移動索引的研究圍繞當前及未來位置的索引和歷史軌跡索引展開。對當前及未來位置的索引主要有原時空存取,空間轉換,參數化時空存取等方法;對歷史軌跡的索引主要有空間索引擴展,重疊及多版本結構,面向軌跡存取等方法。例如,PA樹[4]是一個參數式索引,它索引表達軌跡的多項式。該方法的作者認為最小外接矩形不能表示軌跡的平滑,應該將軌跡近似地表達為一系列連續的多項式運動函數。相比于R樹[5]來說,PA樹中用多項式系數代替R樹結構中的最小外接矩形。
3.2 網絡空間內移動對象索引
事實上,大多數的移動對象其實都不是無限制的,它們往往是被限制在網絡中,例如汽車總是在道路網絡中運行。網絡空間中移動對象的表示可以利用網絡中的線性參考位置,而不是用二維地理坐標。FNR[6]樹是一種在道路網絡中對移動對象歷史軌跡的索引方法,由一個二維R樹與一維R樹組成。這種方法的主要缺點索引樹結構中的大量節點,以及移動對象在路段變更時產生的大量更新。針對基于受限網絡的移動對象管理研究中道路網模型簡單,以及以空間平面坐標表達移動對象位置的方法不適合于道路網應用的問題,桂智明等人設計了一種針對道路網絡的移動對象索引模型[7]。與FNR及相關改進的索引方法相比,該方法在移動對象位置更新及添加上有更高的效率,在相關查詢上結果更加合理。在針對移動對象當前及未來位置的索引方法上,Au[8]方法通過AU分組提高單個移動對象更新的效率。
4 MOD的查詢處理
索引的主要目標是高效的查詢處理,移動對象數據庫中查詢種類繁多,選擇性查詢、最近鄰查詢、持續查詢和連接查詢等都是常見的查詢要求;相同的索引方法對于不同的查詢技術有不同的查詢效率;不同的索引方法對相同的查詢技術也是有不同的查詢效率;相同的索引方法和查詢方法,對于不同的查詢要求也是有不同的查詢效率,因此,MOD的查詢效率依賴于查詢種類、索引技術和查詢算法等多個方面,不能單一地來評判某個查詢方法的好與壞,對查詢策略的評價應多方面,多角度考慮。
移動對象數據庫中早期的K最近鄰查詢算法主要是查詢某個指定時刻距離查詢點最近的K個對象。接著,人們開始關注于連續性查詢系統并將其應用于位置服務中,被查詢的對象和查詢點都可以處于運動的狀態。現有方法中SEA-CNN[9]較具代表性,通過建立查詢索引機制等手段降低了系統I/O開銷,但沒有深入討論對中間結果的利用和動態查詢的優化問題。為此,文獻[10]提出了對象和結果的雙緩存機制,減少靜態查詢重新初始化次數,進一步縮小動態查詢搜索區域,實現了對象訪問和查詢結果的雙重共享。概率方法也曾被應用到移動對象數據的查詢中來,如文獻[11]將概率查詢方法運用到受限網絡移動對象的不確定區域中,提出了對受限網絡移動對象軌跡的不確定性點查詢和概率范圍查詢。此外,還有一些其他的查詢類型。文獻[12]定義了一種基于事件的位置相關查詢ELDQ(Event-based Location Dependent Query),提出了相應的網絡內優化方法來降低處理ELDQ的代價,包括自適應傳感器選擇算法、網絡內的查詢傳播方法和網絡內的位置相關數據聚集算法。同時,該文設計了一種兩級多查詢優化策略來降低處理并發ELDQ查詢的總體開銷。
5 結束語
移動對象數據庫系統往往具有海量數據以及復雜的時空運行特征,對于移動對象索引缺乏公認有效的,且能滿足各種實際查詢需求的方法。目前人們對移動對象索引研究取得了一定的成果,但尚有很多問題等待解決,文獻[3]中指出移動對象數據庫中索引的發展方向:1)分別索引網絡數據及移動對象;2)增加索引支持的查詢種類;3)索引的更新;4)MBR(最小外接矩形)作為對近似索引目標的技術,對索引目標的近似比較粗糙,容易產生死空間。
移動對象數據庫中的查詢不是孤立存在的,它與索引方法密切相關。某查詢方法適用于一種索引方法,但不一定適用于另外一種索引方法,需要依據實際解決的問題而定。
參考文獻:
[1] 何云斌,樊守德,郝忠孝.基于MOST模型的移動對象全軌跡建模[J].計算機工程,2008,34(16):41-43.
[2] 曾軍,張躍鵬,張德.移動對象數據庫及其應用[J].測繪科學與工程.2010,30(2):65-69.
[3] 肖暉,李清泉.移動對象數據庫索引研究綜述[J].計算機應用,2010,30(4):1064-1071.
[4] NI J,RAVISHANKAR C.Indexing spatio-temporal trajectories with efficient polynomial approximations[J].IEEE Transactions on Knowledge and Data Engineering, 2007,19(5):1-16.
[5] GUTYMAN A.R-trees:A dynamic index structure for spatial searching[C].Proceedings of the 1985 ACM SIGMOD International Conference on Management of Data. Boston:ACM Press,1984:47-57.
[6] FRENTZOS E.Indexing objects moving on fixed networks[C].Proceedings of the 8th International Symposium on Advances in Spatial and Temporal Databases. Santorini Island:Springer,2003:289-305.
[7] 桂智明,廖湖聲.基于LRS與GDF的移動對象軌跡建模及索引[J].計算機應用研究,2008,25(9):2684-2686.
[8] CHEN J,MENG X.Update-efficient indexing of moving objects in road networks[J].Geolnformatica,2009,13(4):397-424.
[9] Xiaopeng Xiong,Mohamed F,Mokbel,et,al.SEA-CNN:Scalable Processing of Continuous K-Nearest Neighbor Queries in Spatio-temporal Databases[C].Proceedings of the 21st International Conference on Data Engineering.2005:643-654.
[10] 潘鵬.時空數據庫的索引機制及查詢策略研究[D].武漢:華中科技大學,2007.
數據庫索引范文2
關鍵詞:對象數據庫;庫跨類查詢;對象查詢;索引結構
中圖分類號:TP393文獻標識碼:A文章編號:1009-3044(2012)03-0502-02
1對象數據庫跨類查詢索引結構的設計
1.1對象數據庫跨類查詢概述
在對象數據庫中,一個對象會對應一個相應的標識符,而對象間的關系就是由相應的對象所對應的標識符之間的關系來體現的。對象之間的關系是數據庫實現跨類查詢的基礎。通過數據庫查詢語言中那些支持跨類查詢的描述和支持跨類查詢處理操作的描述,從而完成對象數據庫跨類查詢的操作。
1.2認識對象數據庫跨類查詢索引結構
基于對象數據庫的對象數據庫跨類查詢索引結構多是依靠對象間的雙向指針連接、跨類查詢處理以及跨類查詢描述進行設計的。其中跨類查詢處理以及跨類查詢描述是依賴于對象間的雙向指針連接的。1.2.1對象間的雙向指針連接數據庫中的每一個對象都具有一個唯一的對象標識符,系統可以根據對象相對應的標識符以及這些對象之間所建立的聯系,借助這些對象彼此間建立的雙向指針連接來表示這些對象之間的相互聯系。其中用于描述對象之間相互關系的雙向指針連接,包括指針連接的建立和指針連接的刪除這兩個方面。
1)指針連接的建立。當數據庫系統在創建那些屬于不同類而且彼此之間具有相互聯系的對象時,數據庫系統會根據相應的對象所對應的標識符,通過建立這些對象彼此之間的指針連接來表示這些對象之間的相互關系。
2)指針連接的刪除。當數據庫系統中某個對象被刪除時,數據庫系統會將那些與這個被刪除的對象之間相關的指針連接自動刪除。
1.2.2跨類查詢處理
在數據庫跨類查詢處理時,會以某個初始類中的對象為出發點,通過對象之間的指針連接,來尋找目標類中的對象,并使用跨類查詢的目標表達式,對目標類中的對象進行計算,其中的計算結果即是跨類查詢的結 果。1.2.3跨類查詢描述
在數據庫查詢語言中,數據庫查詢語言中包含描述跨類查詢的語法,可以有效支持跨類查詢描述定義的相關操作。其中包括路徑表達式以及和類路徑表達式相似的形式。
2對象數據庫跨類查詢索引機制的實現
2.1對象數據庫系統對對象之間的雙向指針連接自動維護的實現2.1.1具有聯系的對象之間雙向指針連接的自動創建數據庫系統在創建一個類中的對象時會根據其為每個對象所分配的相應的標識符,找到與該對象具有聯系的其他所有的對象,然后數據庫系統中把這些用于描述對象之間相互關系的雙向指針連接記錄下來,而這些用于描述對象之間相互關系的雙向指針連接是由新創建對象所對應的標識符以及其所屬類所對應的標識符、關聯對象所對應的標識符以及關聯對象所屬類所對應的標識符組成的。這些對象間可能存在著1:m或1:1的關系,對于1:m的關系,則可通過多對的用于描述對象之間相互關系的雙向指針連接來記錄這些對象彼此之間的關系。而對于1:1的關系,可以通過一對用于描述對象之間相互關系的雙向指針連接來記錄這兩個對象之間的關系。
2.1.2具有聯系的對象之間雙向指針連接的自動刪除
數據庫系統在刪除某個類的其中一個對象的時候,數據庫系統會在記錄中自動找到那些與該被刪除的對象之間所有的指針連接,并自動將這些指針連接從數據庫系統中刪除掉。2.2跨類查詢的描述在進行跨類查詢的描述時,需要具備跨類查詢的起點類和終點類、跨類查詢所要經歷的路徑、跨類查詢的目標表達式等幾項內容。其中對跨類查詢的方向沒有明確的規定,其方向即可以是單向的也可以是雙向的。2.3跨類查詢的執行
跨類查詢的執行就是以某個初始類中的對象為出發點,通過對象之間的指針連接來尋找目標類中的對象,并使用跨類查詢的目標表達式,將目標對象表達式的計算結果返回??珙惒樵儓绦械木唧w步驟如下:
1)根據跨類查詢命令,確定目標類與初始類之間的類路徑,然后在確定類路徑之后,還需要對其正確性進行檢查,要檢查該類路徑中是否存在回路以及類路徑中前后兩個類之間是否具有某種語義上的關聯。
2)對于初始類中的每一個對象,要在跨類查詢路徑所涉及的所有類之間查找具有相互聯系的對象,一直到找到屬于目標類的相關對象為止。由于這些具有相互聯系的對象之間可能存在著1:m或1:1的關系,對于1:m的關系,則尋找與前一個類中的某一個對象具有相互聯系的后一個類中的多個對象,然后一直重復上述的查詢處理過程,直到所有的相關對象取完為止。對于1:1的關系,則尋找與前一個類中的某一個對象具有相互聯系的后一個類中的相應的某一個對象。
3)采用相應的數據庫表達式計算方法,并借助跨類查詢所設定的目標類上的表達式,來對目標類上的對象進行計算,完成跨類查詢的處理操作。
2.4路徑表達式的計算
對象數據庫查詢處理模塊的路徑表達式計算的具體步驟如下:
1)驗證路徑表達式的正確性。一個正確的路徑表達要滿足如下兩個方面的條件:一是正確的路徑表達要求前后兩個類之間要具有直接的關系,其中二者可以互為關系,或者其中一個類為另外一個類的類;二是正確的路徑表達要求路徑表達式的目標表達式必須是滿足路徑目標類屬性要求的一個計算表達式。
2)數據庫系統對初始類中的每一個對象進行掃描的時候,要根據相應的索引結構,對路徑表達式所涉及的所有類,然后按照深度優先遍歷算法查找這些類中具有相互聯系的對象之間的關系,一直到找到目標類上的相應的對象為止。由于路徑表達式的表達方向不明確,既可以是雙向的也可以是單向的,所以查找的源點即可以是源類,也可以是目標類。
3)完成上述操作找到目標類上的對象后,還需要結合路徑表達式的目標表達式,按照數據庫表達式的計算方法,對目標表達式進行計算,并要把最終的計算結果返回。
3一種基于對象查詢機制的索引結構
PNI即路徑導航索引是基于對象查詢機制而且支持路徑表達式高效計算的一種索引結構,以下就以路徑導航索引為例來對對象查詢的索引結構進行說明。3.1路徑導航索引結構的組成路徑導航索引結構主要由Identity-Index、Path-Instance-Table、Attribute-Index這三部分組成。其中Path-Instance-Table用于存儲路徑的實例,而Identity-Index和Attribute-Index的建立是以Path-Instance-Table為基礎的,Identity-Index和Attribute-Index的建立可以有效的實現快速的路徑實例檢索。
3.2路徑導航索引結構的說明3.2.1 Path-Instance-Table
Path-Instance-Table翻譯成漢語即路徑實例表,顧名思義,路徑實例表就是一張用來存儲給定路徑的所有實例的表,而且路徑實例表中的每個元組對應一個具體的路徑實例。數據庫系統根據對象之間的關系,在不同的層次中,會給定相應層次的一個不同的路徑。也就是說,可以通過對象間的關系來確定這些對象所有的路徑實例。
路徑實例表中存儲的不是完整的對象實例,其中只存儲了組成路徑實例的所有對象的OID。在給定的一條路徑即P=C1C2…Cn,該路徑所對應的Path-Instance-Table的模式為[S1:OID,S2:OID,…,Sn:OID],其長度路徑為n-1,是一個具有n列的路徑實例表,而且每列的數據類型都是為OID的數據類型,即是取值范圍為C1到Cn的所有實例的OID數據類型的數據集合,而路徑實例表的每一行對應Path-Instance-Table的一個路徑實例。
其中Path-Instance-Table即路徑實例表在設計時需要做到如下兩點:
1)對于互為逆路徑的兩條路徑,只存儲其中的一個路徑實例,這樣看以節省存儲開銷。因為對于任意可逆路徑P及其逆路徑P′,將組成P的每一個路徑實例的對象序列進行順序置換后就可以得到P′的路徑實例。
2)如果路徑實例表存儲的是完整的路徑實例,在計算路徑表達式時,需要找到路徑實例的最后一個對象實例,通過投影計算,推出路徑表達式的結果。如果路徑實例表存儲的只是存儲路徑實例中的第一個和最后一個實例,需要進行一次對象遍歷以存取路徑實例上相應的對象實例,然后進行路徑表達式的計算。
3.2.2 Identity-Index
在路徑實例表上建立Identity-Index,可以快速的實現路徑實例的檢索。其中Identity-Index是通過在路徑實例表的每一列上建立一個以OID作為記錄關鍵字的B+樹索引來實現的。其中addr1到addrn是包含有記錄關鍵字OID的路徑實例對應路徑實例表相應元組的物理地址,PagePointer是指向索引樹下一層結點的指針。
3.2.3 Attribute-Index
在路徑實例表上建立Attribute-Index,可以有效減少路徑表達式計算的開銷。Attribute-Index是將路徑上某個類對象的屬性值映射到包含該對象的路徑實例信息上。其中Key-length是索引屬性的長度,Key-value是索引記錄的關鍵字。
4結束語
結論:對象數據庫跨類查詢與對象查詢作為支持那些非傳統的復雜數據查詢的兩種重要的查詢方法,在當前的數據庫查詢應用領域得到了廣泛的應用。而對象數據庫跨類查詢與對象查詢方法的實現是以其所采用的索引結構為基礎的,索引結構的設計和優化直接決定著對象數據庫跨類查詢與對象查詢這兩種數據庫查詢方法的查詢效率,因此如何實現基于對象數據庫跨類查詢機制索引結構的優化以及基于對象查詢機制索引結構的優化,將成為今后數據庫數據查詢研究領域的一項重要研究課題。
參考文獻:
[1]王國仁.路徑表達式的算法研究[J].計算機學報,2003(9).
[2]黃澤謙.一種支持對象數據庫高效查詢處理的索引結構[J].計算機學報, 2010(8).
數據庫索引范文3
1.CMCI概況
中國生物醫學期刊引文數據庫(簡稱CMCI)是通過《中文生物醫學期刊引文查詢系統》充實、完善后的新版本,乃是解放軍醫學圖書館繼《中文生物醫學期刊文獻數據庫(簡稱CMCC)》和《中文醫學學術會議論文數據庫(簡稱CMAC)之后研發的我國第一個生物醫學領域規模最大的專業引文數據庫。CMC1收錄了1995年以來我國中文生物醫學期刊1000余種,學科范圍涉及了基礎醫學、臨床醫學、預防醫學、藥學、醫學生物學、中醫學、醫院管理及醫學情報等各個方面。涵蓋該領域所有的核心期刊和重要期刊,含有200萬條來源期刊文獻和200余萬條期刊引文數據。是我國深受歡迎的中文生物醫學期刊引文檢索工具。CMC1現己服務于全國醫療、科研單位。
2.CMCI的特點
2.1CMC1學科專一、專業性強。信息容量大、內容廣泛,基本上再現了我國中文生物醫學期刊引文的面貌。
2.2針對參考文獻規范化程度低、錯誤率高、著錄格式混亂等問題,該數據庫采用了智能搜索與人工分析判斷相結合,具備了獨特的查準率與查全率的功能。
2.3服務方式是以關盤方式提供了單機版與局域網絡版兩種類型。數據更新周期短(每月更新)基本上與科技成果和保持同步。
2.4具有新穎獨特的多途徑引文擴展檢索技術(二次檢索)與限定第一作者檢索功能,進一步提高了引文檢索的查全率和查準率。
2.5檢索途徑多,本系統設置了“作者檢索”、“刊名檢索’、“復合檢索”、“期刊目錄”檢索入口靈活方便,易于掌握。
3.CMCI檢索與方法
3.1作者檢索
作者文獻被引用檢索,其方法:點擊“作者檢索”按鈕,輸入第一作者姓名,無需勾選“第一作者”選擇框,即可列出該作者(包括同名作者)發表文獻被CMCI全部引用的情況。然后根據需要選中的被引文獻標記“?”,點擊“被引查詢”按鈕,系統自動列出與選中的相近引文,經過判斷選擇相近引文標記后“0’,點擊“引證文獻”按鈕,即可顯示此文章被引用總篇數,點擊“顯示”鍵后,最后以題名、作者、單位、出處項列出被引文獻的引用情況。
作者發表文獻檢索,其方法:在“作者檢索”框輸入作者名,點擊“發表文獻”按鈕,即可查出該作者所發表的文章(不計作者排名)如果勾選了“第一作者”,則僅查出該作者作為第一作者發表的文章。如查找多作者合著的文章,可輸入多個名字,用空格分開,如“郭穎張金山鐘南山”。用戶根據需要還可再進行智能擴展檢索:既作者/年擴展,作者擴展,題名/年擴展,題名擴展,出處擴展,全部擴展。
3.2刊名檢索
先分別從“刊名”和“年代”的下拉列表中選擇檢索內容,然后點擊“發表文獻”按鈕可查出期刊在某一年發表的文獻。如果點擊“被引文獻”按鈕可查出期刊某一年所發表文獻的被引用情況。在此基礎上,可根據需要再進行智能擴展檢索,既是作者/年擴展,作者擴展,題名/年擴展,題名擴展,出處擴展,全部擴展。
3.3復合檢索
“復合檢索”可以按每年統計出期刊量,并對刊的被引情況和刊進行評價作用。在“復合檢索”界面各項輸入框中輸入檢索詞(提示:單位名稱不可作為檢索詞)檢索時各項之間為“AND”關系。如果在每項輸入框中輸入多個檢索詞,詞間必須用空格分開,詞間的邏輯關系請選擇該項右側的“AND”或“OR'例如:在“單位”輸入框中輸入“301醫院解放軍總醫院”,選擇右側的“OR’可檢索出有關解放軍總醫院(別名:301醫院)的文獻。
另外,在“檢索詞”輸入框中可輸入較復雜的檢索表達式,支持在任意字段中查詢,無需指定字段。
例如:(301醫院or解放軍總醫院)and北京and2003
3.4期刊目錄
期刊目錄僅為本庫使用的來源期刊目錄,被引的期刊 范圍可能超出來源期刊范圍。輸入檢索詞(允許使用*或?通配符)搜索包含該詞的所有來源期刊。期刊目錄是按拼音排序,只要輸入檢索詞,按“重新檢索”按鈕,便可列出相關雜志目錄。還設有刊名“二次檢索”功能,只要點擊選中的刊名,便可列出該刊詳細內容:刊名、KSN號、統一刊號、郵編代碼、主辦單位、地址、電話、期/年、創刊年代、期刊級別、郵編、電子郵箱、期刊分類和網站類等,這有利于被引情況的分析。
提示注意:CMCI收錄參考文獻的原則是只收錄中國作者的期刊引文,不收錄圖書引文、會議引文、專利引文、外文期刊引文等。
4.CMCI的作用
4.1在醫學科學研究中發揮作用
該系統比較系統全面地反映了我國近十年來的中文醫學期刊文獻的引用和被引用情況。通過對他人早期文獻的引用可以客觀地分析文獻的引證和被引證的相互關系,揭示學科的相關性和學科的內在關系,從而全面了解某一學術觀點的產生、發展及目前的研宄現狀,及時掌握科技發展動態,了解自己以及同行研宄工作的進展;跟蹤當前研宄熱點。
4.2在醫藥衛生科技成果檢索查新中的作用
引文檢索己被列為我國科技查新的一項重要內容。它從另外一個側面反映科技成果被他人的認可度、利用度和學術價值。本系統可以從引文數據的完整性、及時性、高查全率等方面滿足廣大數據月更新,查新單位的需求。為評估和鑒別某一研宄工作在學術界產生的影響力發揮作用。4.3對科技人員的學術職稱評定、學術績效評價等產生作用。
引文文獻對于科研人員的學術業績起到質的評價效果。己經納入學術職稱評定的一個重要指標。
4.4通過檢索引文,評價技術成果的影響度,為選拔優秀科技人才,科研課題立項和科研基金的合理投入尋求基于實證的科學依據
醫學領域是自然科學的一個大領域,需要研宄的課題非常廣泛,通過考證引文之間的關系追溯其研宄的理論基礎、科學依據和研宄價值,對于科學化選題和立項都有著重要價值。
3.5相關文獻檢索展示科學研究之間的內在聯系
以共引文文獻為依據,共引文獻越多,其相關性越好,從而揭示同行研宄的相似性。
5.引文顯示、下載、打印
所列出的被引文獻條目中,只出現第一作者的名稱,而來源文獻條目中含有所有作者名稱。相關文獻的顯示是以共引文獻的數量多少排序。顯示或下載條數最多不超過2000條。有較好的輸出功能,可以對顯示的引文進行選擇或全部選中套錄或打印。
數據庫索引范文4
關鍵詞:大型數據庫;數據庫設計;執行效率;索引;查詢
中圖分類號:TP311文獻標識碼:A文章編號:1009-3044(2011)26-6321-03
Method Research of Large-scale Database
HUA Yan
(Department of Information, Higher Normal School of Wuxi, Wuxi 214021, China)
Abstract:The implementation efficiency of large databases is always the biggest problem to the users. This paper will discuss four methods of database design: logical database design, index design, query design and table optimization ,and by these ways,the database structure can be designed to avoid poor design and to improve the implementation efficiency.
Key words: large database; database design; implementation efficiency; index; query
隨著計算機應用系統的擴大,大型數據庫已成為大中型企業管理應用的首選數據庫平臺。而大型數據庫的執行效率一直是困擾系統用戶的最大問題。軟件項目在設計時,由于測試用例的數據量很小,很多有關執行效率的問題都反映不出來。但當項目交付使用并運行一段時間后,隨數據量的增大,執行效率將成為突出的問題,進而影響系統實際運行的性能。本文將從對大型數據庫系統執行效率帶來影響的結構設計進行綜合研究,從邏輯數據庫設計、索引設計、查詢設計和表的優化設計四個方面探討數據庫優化設計的方法,從而使數據庫在結構設計時就能規避不良設計方式,提高數據庫執行效率。
1 邏輯數據庫的設計
在數據庫邏輯設計過程中,為了保證數據庫的一致性和完整性,數據庫要按照關系數據庫的規范化要求設計。
以函數依賴為基礎的關系模式的規范化等級主要有五種: 1NF、2NF、3NF、BCNF和4NF,滿足這些范式條件的關系模式可以在不同程度上避免冗余、插入和更新異常問題。在基于表驅動的系統中,基本表的設計規范是第三范式3NF。但是,滿足3NF的數據庫設計,往往不是最好的設計。沒有冗余的數據庫可以設計出來,但是,沒有冗余的數據庫未必是最好的數據庫。有時為了提高運行效率,就必須降低范式標準,適當保留冗余數據。
合理使用冗余會為查詢帶來很大的好處,如經常被查詢的匯總數據,可以在平時工作中就累加好,不需要到查詢時再使用如sum之類的函數。
比如:一個學生管理系統中有成績表,其字段有學號SNO , 課程號CNO , 成績GRADE,而進行平均成績統計時,是用戶經常要在查詢和報表中用到的。在表的記錄量很大時,有必要把平均分作為一個獨立的字段加入到表中,這里可以采用觸發器以保持數據的一致性,從而提高數據庫的執行效率。
2 索引設計
索引即將表數據按索引要求而產生有序的數據副本。在關系數據庫的表上建立合適的索引,可以提高數據庫數據查詢的速度,改善數據庫的性能。除了聚集索引,每一索引的使用都以磁盤容量作為代價,當使用一個索引,數據庫引擎必須執行兩個數據讀取,這兩個數據讀取是數據庫記錄所必需的,第一個數據被讀取到實際數據指針的索引,第二個數據被讀入到指針指定的位置。因此創建索引時必須要與實際應用系統的查詢需求密切結合,在提高查詢速度和節省存儲空間之間尋求最佳的平衡點:
2.1 在合適的列上建立索引
1)在經常用作過濾器或者查詢頻率較高字段上建立索引;
2)為包含了大量的空值列建立索引,使包含空值的記錄集中排在表的末端,數據從無序變得有序, 可減少對這部分數據的遍歷,提高查詢效率。
3)有一列或多列經常被使用在where或join條件里,則為該列或多列建立簡單或復合索引以提高查詢效率。
4)在頻繁進行排序(group by) 或分組(order by)的列上建立索引。
2.2 不需要創建索引的情況
1)如果表很小,包含的數據量很少,則無須建立索引。
2)列不經常被用在查詢條件里, 無須建立索引。
3)不同值少的列,比如在學生表的“性別”列上只有“男”與“女”2 個不同值, 就無必要建立索引;
4)由文本、圖像等數據類型定義的列。
5)表頻繁被更新, 這樣如果建立了索引,開銷會很大,還會降低DML(INSERT、UPDATE、DELETE)操作執行的效率, 所以此種情況無須建立索引。
2.3 聚集索引和非聚集索引
聚集索引是指行的物理順序與行的索引順序相同的索引。一個表只能有一個聚集索引。非聚集索引是指定表的邏輯順序索引,行的物理順序與索引順序不盡相同,每個表可以有多個非聚集索引。缺省情況下建立的是非聚集索引,但是在一些特定的情況下建立非聚集索引會極大的縮短查詢的時間。建立索引時, 應考慮對兩者的選擇。
1)對有大量重復值、且經常有范圍查詢(between,>,=,
2)對于頻繁修改的列、或者返回小數目的不同值的情況應避免建立聚集索引。
3)當以某字段作為查詢條件,需要回傳局部范圍的大量數據時,應在此字段上建立聚集索引,而當查詢所獲得的數據量較少時,有必要在此字段上建立非聚集索引。
比如:回傳2010年1月1日到2011年1月1日這個時間段之間的數據,可考慮在日期字段上建聚集索引,那么數據本來就是按照日期的順序排列的,只要找到開始和結尾日期的數據就可以了,可以極大的節省時間。而如果使用非聚集索引,必須查到這個時間段中每個日期對應的位置,然后在根據位置存取數據,明顯效率很低。
在實際應用中,要綜合各要素點具體分析,以達到系統的性能綜合最優。
3 查詢設計
從大多數系統的應用實例來看, 查詢操作在各種數據庫操作中所占據的比重最大。許多程序員在開發數據庫應用程序時,只注重用戶界面的華麗,并不重視查詢語句的效率問題,導致所開發出來的應用系統效率低下,資源浪費嚴重。因此,如何設計高效合理的查詢語句就顯得非常重要。
3.1 正確地使用索引
索引作為數據庫中的重要數據結構,它的根本目的就是為了提高查詢的效率。建立適合關系數據庫系統的有用索引,這樣就可以避免表掃描,并減少因為查詢而造成的輸入輸出開銷,有效提高數據的查詢速度,優化數據庫性能。
比如,在學生表中,如果創建學號為單列索引, 那么查詢時WHERE 子句中應使用學號這個字段,使之成為有用索引。如果使用了其他字段, 那么學號這個索引就是無用索引:
SELECT SNO , SNAME, SEX
FROM S
WHERESNO = ’S1’
使用復合索引時, 必須保證在條件子句中首先使用復合索引的第一列。比如:在成績表中,如果創建學號SNO和課程號CNO為復合索引, 那么在查詢語句的WHERE子句中應這樣使用:
SELECT SNO , GRADE
FROM SC
WHERESNO = ’S3’ANDCNO = ’C1’
否則,下列復合索引的使用是沒用的, 系統仍然采用順序掃描方式:
SELECT SNO , GRADE
FROM SC
WHERECNO = ’C1’ANDSNO = ’S3’
3.2 模糊匹配的避免
LIKE關鍵字支持通配符匹配,技術上稱為正則表達式。但這種匹配特別耗費時間,應盡量避免使用這種模糊匹配。
比如: SELECT SNO FROM SC WHERE CNOLIKE′4 ′
即使在CNO字段上建立了索引,在這種情況下也還是采用順序掃描的方式。
可改寫為: SELECT SNOFROM SC WHERE CNO >′400′
這樣,在執行查詢時就會利用索引來查詢,顯然會大大提高速度。
3.3 子查詢合并
子查詢合并是將某些特定的子查詢重寫為等價的多個表的連接操作。子查詢合并的作用在于能使查詢語句的層次盡可能地減少,從而可提高查詢的效率。子查詢合并的一般規則為:
1) 如果外層查詢的結果沒有重復,即SELECT子句中包含主碼,則可以合并其子查詢,并且合并后的SELECT 子句前應加上DISTINCT 標志;
2) 如果外層查詢的SELECT 子句中有DISTINCT標志,那么可以直接進行子查詢合并;
3) 如果內部子查詢結果沒有重復元組,則可以合并。
比如:查詢選修201號課程的學生基本信息。
SELECT S.SNO , SNAME ,AGEFROM SWHERE SNOIN( SELECTSNOFROM CNOWHERECNO =′201′)
3.4 善于使用存儲過程
存儲過程是存儲在數據庫中的一段程序,它可以接受參數、返回狀態值和參數值,并且還可以嵌套調用,它是在建立時就已經編譯和優化的程序。另外存儲過程是一種模式化的程序設計,通過將公共集合編寫為合理的存儲過程,可避免冗余代碼,減少程序員的工作量。因此善于使用存儲過程會提高大型數據庫的執行效率。
4 表的優化設計
基于第三范式設計的庫表雖然有其優越性,然而在實際應用中有時不利于系統運行性能的優化,比如:需要部分數據時而要掃描整表,許多過程同時競爭同一數據,反復用相同行計算相同的結果,過程從多表獲取數據時引發大量的連接操作,這都消耗了磁盤I/O和CPU時間。針對這些情況,可通過引入臨時表來簡化查詢。
比如:查詢每個系中年齡最大的學生的"學號"。
SELECT SNO FROM S AS s1 WHERE AGE=(SELECT MAX(AGE) FROM S AS s2 WHERE s1.SDEPT=s2.SDEPT)
以上的查詢對于外層的年齡關系s1中的每一個元組,都要對內層的整個年齡關系s2進行檢索,因此查詢效率不高??梢詷嫿ㄅR時關系提高查詢效率。
SELECTMAX(AGE) AS maxage,SDEPTINTO tempFROMS GROUP BY SDEPT
SELECT SNO FROM S,temp WHERE AGE=maxage AND S.SDEPT=temp.SDEPT
又如,查詢有最多男生的系的名稱。使用單條查詢語句獲得查詢結果較為困難,則可建立臨時表 TEMPS (院系(SDEPT )、人數(NUMBER) ) ,先將各院系男生人數的統計結果寫入此表, 再在表TEMPS中查出人數最多的院系名稱。通過分解操作過程,使解決辦法得以簡化。
使用臨時表時要注意對它的更新操作,以保持與原始表之間數據的一致性。使用完畢后,應對其刪除,釋放其所占用的空間。
總之,數據庫的優化設計工作對提高系統執行效率起著重要的作用,但它又是一項綜合性的工作,受到各種各樣因素的制約,有些要求往往是彼此矛盾的。因此,設計結果常常是有得有失,設計者必須根據實際情況,將上述幾個方面的優化策略有機地結合起來,盡可能使系統效率達到最優。
參考文獻:
[1] 薩師煊,王珊.數據庫系統概論[M].4版.北京:高等教育出版社,2007.
[2] 楊學全.SQL Server 實例教程[M].3版.北京:電子工業出版社,2010.
[3] 黃明輝.大型數據庫的性能優化方法[J].計算機時代,2010(6):33-34.
數據庫索引范文5
【 關鍵詞 】 數據庫;關鍵詞檢索
Research and Analysis Keywords Retrieval about the Database
Wu Pei
(China Youth University Political Sciences Beijing 100089)
【 Abstract 】 With the rapid development of network, database use increased substantially. At present, the data information basically is stored in a relational database, which we present retrieval through database interaction. Based on the document keywords retrieval techniques cannot be applied to a wide range of retrieval. We urgently need to study a technical. The technique must be user friendly, efficient and accurate. Although users do not understand the SQL statement, not understanding the database model structure, still can resemble traditional file based keyword retrieval as only input the keywords to search to the satisfaction of the results. This paper is how to mainly study and analyze the database keyword search.
【 Keywords 】 database;key words retrieval
1 引言
計算機給人類的生活和工作帶來了日新月異的變化的同時,各種各樣的互聯網信息也成迅猛式增長。目前,我們流行的百度、Google等門戶搜索網站,使得我們非常發方便的找到互聯網上的相關信息。但是這些搜索引擎背后的知識庫數據庫也僅僅能搜索到互聯網數據的很小一部分。對于專業的,局域的甚至特定的數據庫,如何檢索出用戶需要的數據是一個值得我們研究的問題。基于數據庫的關鍵詞檢索技術,會強大搜索功能將,使用戶更加便捷的享受搜索服務,同時還能夠各種用戶的各種多變的查詢要求。一般情況下,互聯網數據庫的者需要設計很多特定的查詢表單來供用戶的搜索使用,但這些是遠遠不夠的,而且沒有統一科學的數據支撐,基于數據庫的關鍵字檢索技術會使得者不用自行設計這些查詢表單,數據庫的網上會變得更加便捷容易。
2 傳統關鍵字檢索存在的問題
目前,絕大多數成熟的商業數據庫系統都使用一種擴展功能來處理文本文檔搜索或者縣現成的檢索機制。事實上,這種文本擴展功能和檢索機制都不是那么完美,也存在一些缺點,其主要表現在幾個方面。
(1) 文本擴展功能通常是面向單個文本屬性的。例如SQL Server 2000、Oracle 9 i Text為關系表中的文本屬性創建全文索引都可以利用標準的SQL語句來進行,查詢結果使用contain(A,k)函數返回關鍵詞來實現,函數中的A就是屬性名稱,k就是一個用戶給定的關鍵詞。由于關系數據庫的規范化處理,通常情況下分別在不同的表中存儲著關鍵詞查詢所需要的信息,要想得到查詢結果必須對多個表進行連接操作才行。因此,對于全數據庫的關鍵詞檢索,這種針對單個文本屬性創建的全文索引無法給予有效支持。
(2)文本擴展功能并不是真正地與數據庫系統集成在一起,它通常是一個獨立的引擎。在API層面,文本的檢索謂詞與SQL所遵循的概念和語法不同,系統有時引導查詢處理器如何使用索引和其他優化方法需要用戶使用特定的語法來進行。事實上,對于真正的數據獨立性,如果系統對此進行支持,那么對于用戶而言這些工作都是不可見的。
(3) 現有研究成果沒有很好的建立和使用較為有效的索引,它們中的大部分只是在最初對單個關系表查找包含某個關鍵字的元組時使用關系數據庫本身自帶的索引。我們設想如果能針對查詢建立一個可應用于生成連接元組階段的特殊索引,將會對查詢效率以及準確率產生很大的提高。
3 關鍵字檢索概述
關鍵字指的是名詞、描述性詞、詞組和序列注冊號 (Accession number)。Internet 擁有不下一萬個數據庫總量。其中,“Internet 可檢索圖書館目錄和數據庫”就囊括了從美國國會圖書館到歐美各國許多公用圖書館和大學圖書館的幾百個聯機目錄和數據庫。數據庫檢索包含電子文獻、數據、事實、圖像、聲音等所種媒體所載信息的檢索??梢允褂幂^特定的索引條目來檢索以上數據庫進行特定關鍵詞的檢索。
4 關鍵字檢索方法
基于數據庫的關鍵字檢索。
數據庫索引范文6
關鍵詞:SQL server;數據庫;查詢優化
中圖分類號:TP392文獻標識碼:A文章編號:16727800(2012)008013302
作者簡介:張燕琴(1983-),女,華僑大學碩士研究生,泉州輕工職業學院助教,研究方向為數據庫技術。
0引言
在眾多數據庫的應用實例中,查詢操作所占的比重最大,數據庫管理系統中80%的工作是用于數據的查詢和檢索,因此數據查詢的快慢將直接影響到數據庫系統的性能。為了優化數據庫系統的性能,我們通過改進數據庫使用的硬件條件、軟件環境和規范化設計外,還應進行數據查詢的優化。查詢優化在關系數據庫中是非常重要的,優化的目標是避免磁盤I/O瓶頸、減少CPU利用率和減少資源,能實現快速的數據查詢。
1查詢優化
數據庫管理系統中的主要操作就是對數據的查詢,為提高數據庫的性能,查詢優化必不可少。在實際的應用中,要盡可能避免排序(Sort)、連接(Join)和相關子查詢操作。筆者認為查詢優化要做到以下幾點:
1.1SQL語句優化
(1)查詢時要盡量減少對數據庫的訪問次數,不要過多地使用通配符,如:select * from STUDENT ,要用到幾列就選擇幾列,如:select sno,sname from STUDENT。
(2)避免使用不兼容的數據類型,如:float和int、char和varchar等。數據類型的不兼容可能導致一些語句無法進行優化操作。如:select name from teacher where salary>5 000,在這里salary是money類型的,而5 000是一個整數,在程序編寫的過程中就會將money變換為整數,而不是在運行時才轉換。
(3)盡量避免在WHERE子句中對字段進行函數或表達式操作,這將導致引擎放棄使用索引而進行全表掃描。
如:SELECT * FROM sc WHERE grade1/2=200
應改為: SELECT * FROM sc WHERE grade=200*2
即:投影操作會導致全表掃描,它包括數據庫函數、計算表達式等,查詢時要盡可能將操作移至等號右邊。
(4)不要有超過5個以上的表連接(JOIN)。連接的表越多,其編譯的時間和連接的開銷也越大,性能也越不好控制,最好是把連接拆開成較小的幾個部分逐個順序執行,優先執行那些能夠大量減少結果的連接。拆分的好處不僅僅是減少SQL Server優化的時間,更使得SQL語句能夠以你可以預測的方式和順序執行??紤]使用臨時表或表變量存放中間結果,少用子查詢。如果一定需要連接很多表才能得到數據,那么也就意味著數據庫在設計時存在很大的缺陷。
(5)使用視圖加速查詢。把表的一個子集進行排序并創建視圖。它有助于避免多重排序操作,而且在其他方面還能簡化優化器的工作。
1.2操作符優化
(1)避免使用!=或<>、IS NULL或IS NOT NULL、IN、NOT IN等這樣的操作符,因為這會使系統無法使用索引而只能直接搜索表中的數據。例如: SELECT sno FROM student WHERE sno!= '2009101%',優化器將無法通過索引來確定將要命中的行數,因此需要搜索該表的所有行。NOT IN此操作符是強烈不建議使用的,因為它不能應用表的索引。推薦方案:用NOT EXISTS 方案代替 。
(2)> 及 < 操作符(大于或小于操作符)一般情況下是不用調整的,因為它有索引就會采用索引查找。但有的情況下可以對它進行優化,如一個表有200萬記錄,一個數值型字段A,60萬記錄的A=0,60萬記錄的A=1,79萬記錄的A=2,1萬記錄的A=3。那么執行A>2與A>=3的效果就有很大的區別了,因為A>2時SQL會先找出為2的記錄索引再進行比較,而A>=3時SQL則直接找到=3的記錄索引。
(3)LIKE操作符可以應用通配符查詢,里面的通配符組合可以實現幾乎是任意的查詢。但是如果用得不好,則會產生性能上的問題,如LIKE ‘%3600%’ 這種查詢不會引用索引,而LIKE ‘a3600%’則會引用范圍索引。
1.3使用存儲過程
存儲過程是一個可重用的代碼模塊,可以高效率地完成指定的操作。存儲過程允許用戶進行模塊化程序設計,大大提高了程序的設計效率,存儲過程創建后,可以在程序中任意調用,減少了重新編譯的時間。同時,存儲過程也減少了客戶端和服務器的繁復交互。如果程序后需要做某些改變,則可以直接修改存儲過程而不用修改程序,從而提高效率。
2索引優化
對于查詢的優化,數據庫管理系統通常采用索引技術來加快對表中數據的檢索。索引允許數據庫應用程序迅速找到表中的數據,而不必掃描整個數據庫。索引是一種表或視圖關聯的物理結構,可以用來加快從表或視圖中檢索數據行的速度。通過創建索引可以保證每一行數據的唯一性,可以大大加快數據的檢索速度,也可以加快表和表之間的連接。在使用order by和group by子句進行數據查詢時,可以減少查詢中的分組和排序時間,且可以在查詢的過程中使用優化隱藏器,提高系統的性能。
2.1索引的分類