時(shí)間:2022-01-30 23:44:56
序論:好文章的創(chuàng)作是一個(gè)不斷探索和完善的過程,我們?yōu)槟扑]十篇關(guān)系數(shù)據(jù)庫范例,希望它們能助您一臂之力,提升您的閱讀品質(zhì),帶來更深刻的閱讀感受。
中圖分類號:TP311文獻(xiàn)標(biāo)識碼:A文章編號:1009-3044(2012)05-1002-02
A Brief Analysis of the Relationship between Notes Databases and Relational Databases
YE Hao-bo
(City College of Dongguan, University of Technology, Dongguan 523106, China)
Abstract: With the wide application of office automation system, the Notes database technology has become a hot issue for it’s suitable for office automation system workflow. This paper analysis the relationship between the Notes database and the relational database and their re? spective advantages at first; then desribe the transformation method between the Notes database and the relational database from the applica? tion angle.
Key words: workflow technology; notes databases; relational databases; transforming method
在科技不斷發(fā)展的今天,辦公室人員的工作已經(jīng)發(fā)生了較大的變化,已經(jīng)從原來的數(shù)據(jù)與文件為中心的個(gè)人獨(dú)立工作方式發(fā)展到了以工作流為核心的團(tuán)隊(duì)工作上?,F(xiàn)代化的辦公體系正朝著高速的信息處理、統(tǒng)一的工作流程、先進(jìn)的知識管理為一身的知識型方向發(fā)展,所以現(xiàn)代化辦公自動(dòng)化(OA)系統(tǒng)在現(xiàn)代化的企業(yè)管理中發(fā)揮的著越來越重要的作用。
OA系統(tǒng)的后臺數(shù)據(jù)庫產(chǎn)品有很多,從目前的軟件開發(fā)的情況來看,主流產(chǎn)品是IBM的Notes數(shù)據(jù)庫,正因?yàn)槿绱?,Notes數(shù)據(jù)庫已經(jīng)成為大家關(guān)注的熱點(diǎn)問題,而在辦公自動(dòng)化系統(tǒng)里有一部分功能的實(shí)現(xiàn)需要用到關(guān)系數(shù)據(jù)庫,這兩種數(shù)據(jù)庫之間的關(guān)系及他們之間的轉(zhuǎn)化方法是怎的呢?本文下面將作一個(gè)簡單的分析。
1工作流技術(shù)
從OA系統(tǒng)的發(fā)展過程來看,我們可以清楚的認(rèn)識到,辦公自動(dòng)化系統(tǒng)的核心技術(shù)是工作流技術(shù)。那么什么是工作流技術(shù)呢?它是在一個(gè)工作群組中,為了一個(gè)共同的目的或者某種任務(wù),在這個(gè)群組的人員需要共同協(xié)作地去完成某一項(xiàng)工作,工作的方式可以是按先后順序或者同時(shí)進(jìn)行。它包含一組活動(dòng)、活動(dòng)之間的內(nèi)在關(guān)系、活動(dòng)開始和結(jié)束的條件、活動(dòng)的功能描述等內(nèi)容。概括來說,它是一個(gè)電子化的辦公流程,能方便地處理辦公系統(tǒng)中文檔的收發(fā)、傳遞、審閱等操作。把工作流技術(shù)用在OA系統(tǒng)中可以對現(xiàn)代化管理提供幫助:
第一、它可以加強(qiáng)事務(wù)處理的各個(gè)環(huán)節(jié)的協(xié)同工作的能力,從而可以讓工作的運(yùn)作的非常通暢。
第二、工作流技術(shù)將各項(xiàng)事務(wù)的管理由原來的人工管理轉(zhuǎn)變?yōu)楣ぷ髁鞣?wù)器來管理,所以辦公人員可以從大量的繁瑣的工作中解脫出來,從而可以將工作重點(diǎn)轉(zhuǎn)換到怎么更好地做好事件。
第三、工作流技術(shù)對工作流程重組提供了非常實(shí)用的技術(shù)支持和分析方法。在快速發(fā)展的當(dāng)今社會,管理水平和技術(shù)水平都在日益更新,對于辦公室的工作流程發(fā)生變化的機(jī)會也在增多。所以辦公自動(dòng)化系統(tǒng)應(yīng)該能夠快速適應(yīng)這種動(dòng)態(tài)的變化。一般傳統(tǒng)的技術(shù)或者方法不能適應(yīng)這種變化,可是工作流技術(shù)和OA系統(tǒng)的結(jié)合就能很快適應(yīng)這種動(dòng)態(tài)變化,從而實(shí)現(xiàn)企業(yè)的協(xié)同辦公。
2關(guān)系數(shù)據(jù)庫與Notes數(shù)據(jù)庫的比較與轉(zhuǎn)化方法
2.1關(guān)系數(shù)據(jù)庫和Notes數(shù)據(jù)庫的比較
Notes數(shù)據(jù)庫:它主要是以存儲文本文檔為其主要內(nèi)容的數(shù)據(jù)庫管理系統(tǒng),也就是說它的數(shù)據(jù)的元組就是文本文檔,是一種非數(shù)值型的數(shù)據(jù)。但是這種非數(shù)值型(非結(jié)構(gòu)型)的數(shù)據(jù)對于Lotus Notes處理起來更為方便,如視頻、聲頻、傳真、OLE對象、圖形、頁面、表格等數(shù)據(jù)類型Notes處理起來會靈活一點(diǎn)。
對于數(shù)據(jù)的訪問,Lotus Notes是通過全文檢索方式訪問數(shù)據(jù)庫的數(shù)據(jù),對于檢索定位方面,Lotus Notes是通過視圖定位數(shù)據(jù)的方式。
關(guān)系數(shù)據(jù)庫:它是一個(gè)數(shù)值型的DBMS,主要通過數(shù)學(xué)公式來處理數(shù)據(jù),所以對于一個(gè)事務(wù)型的流程,它必須先將其轉(zhuǎn)化為嚴(yán)格 的數(shù)學(xué)公式以后,才能在數(shù)據(jù)庫上進(jìn)行處理,數(shù)據(jù)庫中的表實(shí)際就是一張二維表,關(guān)系型數(shù)據(jù)庫對一些結(jié)構(gòu)化(數(shù)值型)的數(shù)據(jù)處理起來相當(dāng)快捷。
對于數(shù)據(jù)的訪問,關(guān)系型數(shù)據(jù)庫是通過SQL語言訪問數(shù)據(jù)庫的數(shù)據(jù),對于檢索定位方面,關(guān)系型數(shù)據(jù)庫是通過實(shí)時(shí)查詢來定位數(shù)據(jù)。
通過上述的比較,兩種數(shù)據(jù)庫各有各的優(yōu)勢,而在辦公自動(dòng)化系統(tǒng)中有一些部門可能會用到一些復(fù)雜計(jì)算、數(shù)據(jù)處理等方面的功能,我們知道這些都是Notes不太善長的地方,又加之現(xiàn)在的JSP、ASP等腳本語言訪問關(guān)系型數(shù)據(jù)庫是十分方便的,所以要是能將兩種數(shù)據(jù)庫進(jìn)行相互轉(zhuǎn)化就能解決系統(tǒng)中的問題,下面本文介紹在本系統(tǒng)中他們之間的轉(zhuǎn)換方法。
2.2兩種數(shù)據(jù)庫之間的轉(zhuǎn)化方法
2.2.1 Notes數(shù)據(jù)庫轉(zhuǎn)化為關(guān)系數(shù)據(jù)庫
為了與其他的管理信息系統(tǒng)進(jìn)行信息的交換,在Notes數(shù)據(jù)庫管理系統(tǒng)里面有一套專門針對和外部程序數(shù)據(jù)的擴(kuò)展類庫,也就是Lotus Script Data Object,,這套擴(kuò)展類庫由三個(gè)基本的類構(gòu)成的一個(gè)整體,它們分別是ODBC Result Set、ODBC Query和ODBC Connection,通過他們來完成與外部數(shù)據(jù)之間的訪問和修改,由于它所使用的標(biāo)準(zhǔn)是ODBC,就通過這樣的標(biāo)準(zhǔn)來讀取的修改外部數(shù)據(jù)庫的數(shù)據(jù)的屬性和相應(yīng)的方法。這三種類主要分工是這樣的,ODBC Connection是負(fù)責(zé)與外部數(shù)據(jù)庫之間的連接,ODBC Query主要用于一個(gè)結(jié)構(gòu)化查詢語言語句的定義,而ODBC Result Set主要用于在通過SQL語句查詢結(jié)果數(shù)據(jù)集上執(zhí)行相應(yīng)數(shù)據(jù)讀取的操作,在數(shù)據(jù)庫中我們主要利用RTF域存放Notes文檔數(shù)據(jù),而對于RTF域來說,我們可以在數(shù)據(jù)庫的表單的任何位置放置它,正是因?yàn)镽TF域可以包含無限制的數(shù)據(jù)的特點(diǎn)剛好可以滿足文本的特性,所以對于文本中包含有圖片、文字、獨(dú)立的文件、甚至可以是一些對象。在關(guān)系型數(shù)據(jù)庫中常處理的一些數(shù)據(jù),如文件的名字、生成的時(shí)間、文字、日期等我們可以在關(guān)系型數(shù)據(jù)庫直接處理。對于每一個(gè)程序文檔完成后就執(zhí)行QuerySave,使用Lotus腳本語言編寫子程序模塊QuerySave將查詢的信息數(shù)據(jù)寫到關(guān)系型數(shù)據(jù)庫中。
綜上所述,Notes數(shù)據(jù)庫轉(zhuǎn)化為關(guān)系數(shù)據(jù)庫可以是以下幾個(gè)過程;
第一步就是要?jiǎng)?chuàng)建三個(gè)類:即ODBC Connection、ODBC Query、ODBC Result Set;
第二步就是數(shù)據(jù)庫的連接,即用ConnectTo函數(shù)連接到SQL數(shù)據(jù)庫,同時(shí)使用查詢語句進(jìn)行查詢操作;
第三步就是將查詢的qry. Sql和結(jié)果集相連接,執(zhí)行有關(guān)函數(shù)如result.execute查詢到關(guān)系數(shù)據(jù)庫中的情況,當(dāng)result.currentrow等于零的時(shí)候,則可以寫入新一批的數(shù)據(jù),李不然就修改數(shù)據(jù)。
2.2.2關(guān)系數(shù)據(jù)庫轉(zhuǎn)化為Notes數(shù)據(jù)庫
在Notes數(shù)據(jù)庫中我們采取ODBC標(biāo)準(zhǔn)來訪問各種不同數(shù)據(jù)類型的信息,我們可以利用Notes的內(nèi)部函數(shù)或者相應(yīng)的腳本語言,就可以將關(guān)系數(shù)據(jù)庫中的有關(guān)數(shù)據(jù)寫入到Notes文檔中,把這些數(shù)據(jù)變換為Notes數(shù)據(jù),我們具體的方法有兩種:
方法一:將@Db函數(shù)引入到Notes有關(guān)的函數(shù)當(dāng)中。Notes內(nèi)部有三個(gè)函數(shù),即@DbCommand、@DbLookup和@DbColumn,只要在上述函數(shù)在第一個(gè)參數(shù)使用了“ODBC,這樣就是讀取有關(guān)的關(guān)系型數(shù)據(jù)庫中的表,這種方法也有很明顯的不足之處,它對于信息的提取只能以列的方式進(jìn)行,不能以行的方式進(jìn)行。
方法二:采用Lotus Script數(shù)據(jù)對象LSX,同時(shí)利用Lotus腳本語言編寫相關(guān)的數(shù)據(jù)讀取函數(shù),在Notes里面的ODBC Connection、ODBC Query、ODBC Result Set就是使用ODBC標(biāo)準(zhǔn)來讀取外部的各種不同的數(shù)據(jù)。
上面兩種方法進(jìn)行比較,作者認(rèn)為第二種方法更為科學(xué),下面就簡單談?wù)勥@種方法的實(shí)現(xiàn)過程:
首先,在Notes數(shù)據(jù)庫中,我們按照SQL數(shù)據(jù)庫相應(yīng)表單里的結(jié)構(gòu)同樣建立一個(gè)一樣結(jié)構(gòu)的表單,這樣做的好處就在于能夠?qū)㈥P(guān)系型數(shù)據(jù)庫中的數(shù)據(jù)進(jìn)行一一轉(zhuǎn)換,并且容易理解,然后就建立相關(guān)的,用腳本語言寫相應(yīng)的轉(zhuǎn)換程序;
然后,創(chuàng)建視圖來執(zhí)行上述的,從而可以實(shí)現(xiàn)將關(guān)系型數(shù)據(jù)庫中有關(guān)的數(shù)據(jù)表單轉(zhuǎn)換成notes數(shù)據(jù)庫中的信息。
3結(jié)束語
本文在上面的敘述當(dāng)中我們可以發(fā)現(xiàn)在OA系統(tǒng)的開發(fā)過程中,只要處理好數(shù)據(jù)庫,就可以做到有的放矢,這就是說,我們可以根據(jù)系統(tǒng)的要求,在需要使用Notes數(shù)據(jù)庫的模塊里就Notes數(shù)據(jù)庫,在需要使用SQL數(shù)據(jù)庫的地方就使用關(guān)系型數(shù)據(jù)庫,通過相應(yīng)的轉(zhuǎn)換辦法,就可以實(shí)現(xiàn)它們之間的數(shù)據(jù)共享。
參考文獻(xiàn):
0 引言
關(guān)系數(shù)據(jù)庫是20世紀(jì)70年代初提出來,經(jīng)過數(shù)據(jù)庫專家?guī)资甑呐?,理論和?shí)踐都取得了顯著成果,標(biāo)志著數(shù)據(jù)庫技術(shù)的日益成熟。但它仍然難以實(shí)現(xiàn)對關(guān)系數(shù)據(jù)庫中數(shù)據(jù)的分析,不能很好地支持決策,因此在80年代,產(chǎn)生了數(shù)據(jù)倉庫的思想,90年代,數(shù)據(jù)倉庫的基本原理、架構(gòu)形式和使用原則都已確定。主要技術(shù)包括對數(shù)據(jù)庫中數(shù)據(jù)訪問、網(wǎng)絡(luò)、C / S結(jié)構(gòu)和圖形界面,一些大公司已經(jīng)開始構(gòu)建數(shù)據(jù)倉庫。針對數(shù)據(jù)倉庫中迅速增長的海量數(shù)據(jù)的收集、存放,用人力已經(jīng)不能解決,那么數(shù)據(jù)倉庫中有用的知識的提取就需要數(shù)據(jù)挖掘來實(shí)現(xiàn)。數(shù)據(jù)挖掘與統(tǒng)計(jì)學(xué)子領(lǐng)域“試探性數(shù)據(jù)分析”及人工智能子領(lǐng)域“知識發(fā)現(xiàn)”和機(jī)器學(xué)有關(guān),是一門綜合性的技術(shù)學(xué)科。了解關(guān)系數(shù)據(jù)庫、數(shù)據(jù)倉庫與數(shù)據(jù)挖掘三者之間的區(qū)別與聯(lián)系,使之更好的使用這3種技術(shù),處理各種信息需求是非常必要和重要的。
1 關(guān)系數(shù)據(jù)庫、數(shù)據(jù)倉庫和數(shù)據(jù)挖掘之間的關(guān)系
1.1 關(guān)系數(shù)據(jù)庫和數(shù)據(jù)倉庫之間的聯(lián)系與區(qū)別
關(guān)系數(shù)據(jù)庫是面向事務(wù)的設(shè)計(jì),數(shù)據(jù)倉庫是一個(gè)面向主題的設(shè)計(jì);關(guān)系數(shù)據(jù)庫存儲在線事務(wù)數(shù)據(jù),數(shù)據(jù)倉庫通常存儲歷史數(shù)據(jù),關(guān)系數(shù)據(jù)庫的設(shè)計(jì)將盡量避免冗余,但數(shù)據(jù)倉庫是傾向于引入冗余;關(guān)系數(shù)據(jù)庫設(shè)計(jì)用于捕獲數(shù)據(jù),數(shù)據(jù)倉庫設(shè)計(jì)用于分析數(shù)據(jù)。傳統(tǒng)的關(guān)系數(shù)據(jù)庫面向以事務(wù)處理為主的系統(tǒng)應(yīng)用,所以它無法滿足決策支持系統(tǒng)的分析要求。事務(wù)處理和分析處理有非常不同的性質(zhì),他們有不同的需求數(shù)據(jù)。
1.2 數(shù)據(jù)倉庫與數(shù)據(jù)挖掘之間的聯(lián)系與區(qū)別
數(shù)據(jù)挖掘是基于數(shù)據(jù)倉庫和多維數(shù)據(jù)庫中的數(shù)據(jù),找到數(shù)據(jù)的潛在模式進(jìn)行預(yù)測,它可以對數(shù)據(jù)進(jìn)行復(fù)雜處理。大多數(shù)情況下,數(shù)據(jù)挖掘是讓數(shù)據(jù)從數(shù)據(jù)倉庫到數(shù)據(jù)挖掘數(shù)據(jù)庫中。從數(shù)據(jù)倉庫中直接得到進(jìn)行數(shù)據(jù)挖掘的數(shù)據(jù)有許多優(yōu)點(diǎn),因?yàn)閿?shù)據(jù)倉庫中數(shù)據(jù)的清理和數(shù)據(jù)挖掘中幾乎是相同的,如果數(shù)據(jù)在數(shù)據(jù)倉庫中已被清除,數(shù)據(jù)挖掘中不再被清除,并且數(shù)據(jù)不一致也得到了解決。數(shù)據(jù)倉庫是數(shù)據(jù)挖掘的先期步驟,通過數(shù)據(jù)倉庫的構(gòu)建,提高了數(shù)據(jù)挖掘的效率和能力,保證了數(shù)據(jù)挖掘中的數(shù)據(jù)的寬廣性和完整性。
1.3 關(guān)系數(shù)據(jù)庫與數(shù)據(jù)挖掘之間的聯(lián)系與區(qū)別
數(shù)據(jù)挖掘的數(shù)據(jù)源不一定是數(shù)據(jù)倉庫。也可以是一個(gè)關(guān)系數(shù)據(jù)庫中的數(shù)據(jù),但要事先進(jìn)行數(shù)據(jù)預(yù)處理,才能用于數(shù)據(jù)挖掘。數(shù)據(jù)預(yù)處理是數(shù)據(jù)挖掘的關(guān)鍵步驟,并且是數(shù)據(jù)挖掘過程中的主要工作部分。因此,數(shù)據(jù)倉庫和數(shù)據(jù)挖掘沒有必然的聯(lián)系,有些人簡單地認(rèn)為,數(shù)據(jù)倉庫是數(shù)據(jù)挖掘的準(zhǔn)備,這種理解是不全面的,也可以使用關(guān)系數(shù)據(jù)庫中的數(shù)據(jù)作為數(shù)據(jù)挖掘的數(shù)據(jù)源。
2 三種技術(shù)的應(yīng)用
2.1 應(yīng)用價(jià)值
2.1.1 關(guān)系數(shù)據(jù)庫
關(guān)系數(shù)據(jù)庫的主要價(jià)值體現(xiàn)在事務(wù)處理。關(guān)系數(shù)據(jù)庫已經(jīng)滲透到各行各業(yè)的日常事務(wù),該事務(wù)管理離不開關(guān)系數(shù)據(jù)庫的應(yīng)用系統(tǒng),這是對傳統(tǒng)事務(wù)管理的一個(gè)重大突破,是社會甚至家庭不可或缺的工具,它對社會的應(yīng)用價(jià)值是100%。
2.1.2 數(shù)據(jù)倉庫
數(shù)據(jù)倉庫的主要價(jià)值體現(xiàn)在為決策分析提供數(shù)據(jù)源。一方面,在一個(gè)事務(wù)中,用戶要求高效的訪問系統(tǒng)和數(shù)據(jù)庫,操作時(shí)間應(yīng)該短。在一個(gè)決策分析中,決策問題的一些請求可能會導(dǎo)致系統(tǒng)的操作,解決這一問題的決策分析需要遍歷大多數(shù)數(shù)據(jù)庫中的數(shù)據(jù),這對一般日常事務(wù)處理系統(tǒng)是困難的,所以操作數(shù)據(jù)和決策分析數(shù)據(jù)應(yīng)該分開。另一方面,決策數(shù)據(jù)需求問題。在決策分析時(shí),由于不同的應(yīng)用系統(tǒng)中,實(shí)體、字段存在數(shù)據(jù)類型、名稱和格式的不符,需要在集成時(shí)進(jìn)行轉(zhuǎn)換,這個(gè)轉(zhuǎn)換必須在決策之前完成;一些決策數(shù)據(jù)需要?jiǎng)討B(tài)更新,需要經(jīng)常進(jìn)行匯總和總結(jié),這些需求用事務(wù)處理系統(tǒng)解決比較繁瑣。三是數(shù)據(jù)的操作模式問題。決策分析人員要以專業(yè)用戶身份,使用各種工具以各種形式來操作數(shù)據(jù),對數(shù)據(jù)操作的結(jié)果以商業(yè)智能的方式表達(dá)出來。事務(wù)處理系統(tǒng)不能滿足這一要求,只有數(shù)據(jù)倉庫系統(tǒng)能夠滿足數(shù)據(jù)挖掘技術(shù)對數(shù)據(jù)環(huán)境的要求,所以使用數(shù)據(jù)倉庫中的數(shù)據(jù)省去了對數(shù)據(jù)預(yù)處理的步驟。
2.1.3 數(shù)據(jù)挖掘
面對日益激烈的市場競爭,客戶對迅速應(yīng)答各種業(yè)務(wù)問題的能力要求越來越高,對過量數(shù)據(jù)的及時(shí)處理要求越來越高,帶來的挑戰(zhàn)一方面大規(guī)模、復(fù)雜數(shù)據(jù)系統(tǒng)讓用戶感覺漫無頭緒,無法開始;另一方面,這些大量數(shù)據(jù)背后隱藏很多有意義的有價(jià)值的決策信息。如計(jì)算機(jī)界都熟知的“啤酒與尿布”的故事,就是零售業(yè)巨頭“沃爾瑪”從大量銷售數(shù)據(jù)中分析出來的規(guī)律:美國的男士在下班要去超市買嬰兒尿布,同時(shí)他們還會買啤酒?!拔譅柆敗本桶堰@兩種“毫不相干”的商品擺放在靠近的貨架上,并且還擺放一些下灑小菜,使這些商品銷量大增。所以應(yīng)用數(shù)據(jù)挖掘從大量數(shù)據(jù)中發(fā)現(xiàn)規(guī)律,具有具體的指導(dǎo)意義。
2.2 應(yīng)用領(lǐng)域
2.2.1 關(guān)系數(shù)據(jù)庫
關(guān)系數(shù)據(jù)庫應(yīng)用領(lǐng)域非常廣泛,如:證券行業(yè)、醫(yī)院、銀行、銷售部門、公司或企業(yè),以及政府、國防工業(yè),科學(xué)和技術(shù)發(fā)展領(lǐng)域等等,這些領(lǐng)域都需要使用數(shù)據(jù)庫來存儲數(shù)據(jù)。例如:人事管理系統(tǒng)、工資管理系統(tǒng),xxx部門信息管理系統(tǒng),手機(jī)話費(fèi)管理系統(tǒng)等,都需要關(guān)系數(shù)據(jù)庫作為后臺提供數(shù)據(jù)源。
2.2.2 數(shù)據(jù)倉庫
數(shù)據(jù)倉庫應(yīng)用領(lǐng)域主要有兩個(gè)方面:一是全局應(yīng)用。因?yàn)閿?shù)據(jù)倉庫獲得來自多方面的數(shù)據(jù),所以在把數(shù)據(jù)向數(shù)據(jù)倉庫輸入時(shí),要進(jìn)行轉(zhuǎn)換、計(jì)算和綜合等集成處理。通過處理把來自不同地方的數(shù)據(jù)源轉(zhuǎn)換成統(tǒng)一的格式,以促進(jìn)全局應(yīng)用。二是復(fù)雜系統(tǒng)。信息處理的要求越來越復(fù)雜,除了數(shù)據(jù)處理操作,如添加、刪除、修改、和統(tǒng)計(jì)匯總,高級管理層也希望對歷史的和現(xiàn)在的數(shù)據(jù)進(jìn)行各種復(fù)雜性分析,以支持決策。數(shù)據(jù)倉庫中就是存儲了舊的歷史數(shù)據(jù),方便復(fù)雜分析、應(yīng)用,為高層決策服務(wù)。
2.2.3 數(shù)據(jù)挖掘
數(shù)據(jù)挖掘的應(yīng)用領(lǐng)域主要表現(xiàn)在特定應(yīng)用問題和應(yīng)用背景。數(shù)據(jù)挖掘技術(shù)已經(jīng)應(yīng)用于各行各業(yè),如電信,保險(xiǎn),交通,學(xué)校、銀行、超級市場等。例如:數(shù)據(jù)挖掘技術(shù)應(yīng)用在大學(xué)。高校擴(kuò)招,學(xué)生增加到幾萬人,但是學(xué)生的學(xué)習(xí)積極性不高,成績不好,因此引入數(shù)據(jù)挖掘技術(shù)找出影響學(xué)生學(xué)習(xí)積極性和學(xué)習(xí)成績的原因,制定措施,提高教育和教學(xué)質(zhì)量。分析的數(shù)據(jù)源是考試成績和成績之外的影響因素,分析的方法是采用關(guān)聯(lián)規(guī)則、模型庫、去“噪”處理、粗糙集等進(jìn)行數(shù)據(jù)挖掘,得出的結(jié)論是:傳統(tǒng)的學(xué)習(xí)方法不能完全滿足需要,改進(jìn)教學(xué)方法和教學(xué)模式,從而調(diào)動(dòng)學(xué)生學(xué)習(xí)的積極性,提高教學(xué)質(zhì)量。
3 關(guān)系數(shù)據(jù)庫、數(shù)據(jù)倉庫與數(shù)據(jù)挖掘的融合
日常事務(wù)處理需要關(guān)系數(shù)據(jù)庫,構(gòu)建分析處理環(huán)境需要數(shù)據(jù)倉庫,幫助決策者尋找數(shù)據(jù)之間的潛在的關(guān)聯(lián)需要數(shù)據(jù)挖掘。他們之間是相互聯(lián)系又有區(qū)別的,不能互相取代的,又需要相互融合。數(shù)據(jù)倉庫中的數(shù)據(jù)并不是最新的,專有的,而是來源于其他關(guān)系數(shù)據(jù)庫,它是建立在一個(gè)更全面和完善的信息應(yīng)用的基礎(chǔ)上,用于支持高層決策分析的數(shù)據(jù)基地。數(shù)據(jù)倉庫是數(shù)據(jù)庫新技術(shù),到目前為止,數(shù)據(jù)倉庫仍用關(guān)系數(shù)據(jù)庫管理系統(tǒng)管理數(shù)據(jù)。數(shù)據(jù)挖掘是從大量存儲在數(shù)據(jù)庫、數(shù)據(jù)倉庫或其他信息庫中發(fā)現(xiàn)有趣知識的過程。只有這三個(gè)數(shù)據(jù)庫技術(shù)互相融合,取長補(bǔ)短,各盡其責(zé),才能更好的為廣大用戶所使用,為社會各個(gè)領(lǐng)域所應(yīng)用。
【參考文獻(xiàn)】
中圖分類號:TP311 文獻(xiàn)標(biāo)識碼:A 文章編號:1009-2374(2011)07-0088-02
在信息技術(shù)與網(wǎng)絡(luò)技術(shù)高速發(fā)展的今天,網(wǎng)絡(luò)已經(jīng)成為新一代操作平臺。信息正全面地以互聯(lián)網(wǎng)方式展開,互聯(lián)網(wǎng)的信息傳播,極大地加速了人類發(fā)展的進(jìn)程。隨著WEB技術(shù)的日益發(fā)展,WEB已經(jīng)成為信息制造、、加工和處理的主要平臺。XML技術(shù)已日益受到更為廣泛的關(guān)注,已經(jīng)在電子商務(wù)、電子數(shù)據(jù)交換、科學(xué)數(shù)據(jù)表示、數(shù)據(jù)建模與分析和搜索引擎等領(lǐng)域有著廣泛的應(yīng)用。隨著XML應(yīng)用技術(shù)的深入,將會有大量的XML文檔出現(xiàn),并且現(xiàn)在在網(wǎng)絡(luò)上已經(jīng)積累了大量的XML文檔。本文主要就基于關(guān)系數(shù)據(jù)庫的XML存儲技術(shù)相關(guān)問題進(jìn)行探討。
一、XML與關(guān)系數(shù)據(jù)庫結(jié)構(gòu)上的差異
XML文檔是半結(jié)構(gòu)化的數(shù)據(jù),是一個(gè)樹模型,如果考慮到XML元素次序,則是一棵有序樹模型,其數(shù)據(jù)結(jié)構(gòu)是非結(jié)構(gòu)化的,而關(guān)系數(shù)據(jù)庫管理系統(tǒng)是采用二維表格作為存儲數(shù)據(jù)的模型,表格由行和列組成,列被稱作“字段”用于表示組成數(shù)據(jù)有效信息的屬性,行則用于儲存一條完整的數(shù)據(jù)記錄。XML數(shù)據(jù)與關(guān)系表之間數(shù)據(jù)結(jié)構(gòu)有很大的差異,具體來說,XML數(shù)據(jù)是有序的,而關(guān)系數(shù)據(jù)則是無序的,另外XML數(shù)據(jù)的模式往往經(jīng)常變化,可是關(guān)系數(shù)據(jù)庫的數(shù)據(jù)結(jié)構(gòu)是固定不變的,XML數(shù)據(jù)可以無限層次嵌套,而關(guān)系數(shù)據(jù)則不能。雖然XML放松的類型限制和自描述性有利于數(shù)據(jù)之間的交換,但是卻不利于數(shù)據(jù)存儲。因此,XML的數(shù)據(jù)模型的半結(jié)構(gòu)化、有序性與平坦、無序的關(guān)系模型之間存在固有的不匹配。另外遵循文檔類型定義(DTD)或文檔模式定義(XML SCHEMA)的XML文檔也與遵循關(guān)系存儲模式的關(guān)系數(shù)據(jù)在語法、結(jié)構(gòu)以及約束等很多方面存在著固有的異構(gòu)性,因此很難直接由XML數(shù)據(jù)產(chǎn)生關(guān)系模式。甚至即使多個(gè)XML文檔實(shí)例都遵循同一個(gè)文檔模式定義,它們也可能有不同的結(jié)構(gòu)??梢钥闯觯琗ML映射到關(guān)系數(shù)據(jù)庫中存在固有的困難。映射時(shí)主要存在以下需要解決的問題:(1)如何利用可能有的XML文檔模式(或類型)信息來采取各種不同的存儲策略;(2)如何將XML文檔無損地存入關(guān)系數(shù)據(jù)庫;(3)如何從關(guān)系數(shù)據(jù)庫中查詢并重構(gòu)XML信息。
二、基于關(guān)系數(shù)據(jù)庫的存儲策略
(一) 基于結(jié)構(gòu)映射的策略
具體來說,基于結(jié)構(gòu)的映射方法可以分為兩個(gè)步驟來實(shí)現(xiàn):
第一步:簡化DTD并生成DTD圖。因?yàn)閄ML DTD的元素是相當(dāng)復(fù)雜的,需要對復(fù)雜的DTD進(jìn)行簡化。DTD的簡化變換主要有以下三種方式:(1)平面化變換:將DTD內(nèi)的層次嵌套關(guān)系打平,把嵌套的定義轉(zhuǎn)換為非嵌套的定義;(2)簡化變換:將連續(xù)的多個(gè)一元操作轉(zhuǎn)換為一個(gè)一元操作;(3)聚集變換:將多個(gè)具有相同名稱的子元素聚在一起,形成一個(gè)子元素。一個(gè)DTD圖表示的是一個(gè)DTD的結(jié)構(gòu),圖的結(jié)點(diǎn)表示DTD中的元素、屬性或操作符,DTD中的元素在DTD圖中只出現(xiàn)一次,屬性和操作符在DTD圖中出現(xiàn)的次數(shù)則與它們在DTD中出現(xiàn)的次數(shù)相同。
第二步:DTD圖到關(guān)系模式的映射。從DTD圖到關(guān)系模式的映射方法主要有:基本內(nèi)聯(lián)法、共享內(nèi)聯(lián)法和綜合內(nèi)聯(lián)法。
首先,基本內(nèi)聯(lián)法。基本內(nèi)聯(lián)法的原則是在存儲一個(gè)結(jié)點(diǎn)的時(shí)候,盡可能多地將這個(gè)元素的后代結(jié)點(diǎn)存儲在一個(gè)表中。其次,共享內(nèi)聯(lián)法。共享內(nèi)聯(lián)法為以下三種DTD結(jié)點(diǎn)生成獨(dú)立的關(guān)系:(1)DTD圖中入度大于l或者等于0(根結(jié)點(diǎn))的元素結(jié)點(diǎn)生成獨(dú)立的關(guān)系;(2)DTD圖中結(jié)點(diǎn)“幸”的孩子結(jié)點(diǎn)(將值集元素作為單獨(dú)的關(guān)系保存);(3)互為遞歸的入度均為1的元素結(jié)點(diǎn),其中之一生成獨(dú)立的關(guān)系。而其余的結(jié)點(diǎn)都生成關(guān)系屬性。共享內(nèi)聯(lián)法相對減少了XML查詢轉(zhuǎn)換為SOL語句的數(shù)目,但增加了每個(gè)SOL查詢中的連接運(yùn)算。再次,綜合內(nèi)聯(lián)法。綜合內(nèi)聯(lián)方法在處理入度大于1的結(jié)點(diǎn)上與共享內(nèi)聯(lián)方法不同,綜合內(nèi)聯(lián)法將所有入度大于1的元素結(jié)點(diǎn)也內(nèi)聯(lián)進(jìn)入父結(jié)點(diǎn)所生成的關(guān)系表中,但是帶回路的結(jié)點(diǎn)以及結(jié)點(diǎn)“}”或“+”的直接后繼結(jié)點(diǎn)除外,該方法減少了子結(jié)點(diǎn)與父結(jié)點(diǎn)的連接運(yùn)算。
(二) 基于模型映射的策略
模型映射的方法是用一個(gè)固有的模式來存儲XML文檔。它用固定的關(guān)系模式來存放任何格式的XML數(shù)據(jù),而不考慮XML文檔的模式(DTD或SCHEMA),其實(shí)質(zhì)是存儲XML文檔本身的結(jié)構(gòu)信息。
第一,Edge方法。Edge方法圓的存儲策略是把要存入的XML文檔看做圖形結(jié)構(gòu),每個(gè)圖的邊界都表示為圖中的元組,把XML文檔圖中的所有邊都存入到關(guān)系表Edge中,用表Edge(source,ordinal,target,label,flag,value)存儲XML文檔圖中的邊,其中的source字段和target字段分別用來存儲邊的源結(jié)點(diǎn)和目標(biāo)結(jié)點(diǎn)的標(biāo)識符;label域?yàn)槟繕?biāo)結(jié)點(diǎn)的類型;flag用來區(qū)分目標(biāo)結(jié)點(diǎn);target是一個(gè)元素結(jié)點(diǎn)還是一個(gè)文本結(jié)點(diǎn),如果該目標(biāo)結(jié)點(diǎn)是文本結(jié)點(diǎn),則文本值存儲于value域中;ordinal字段指出target結(jié)點(diǎn)在source結(jié)點(diǎn)的所有孩子中的位置。由于Edge方法將所有XML數(shù)據(jù)都用Edge表存放,操作方法簡單。但缺點(diǎn)是在Edge方法中每條邊都是單獨(dú)管理的,所以在用戶進(jìn)行查詢操作時(shí)就需在大量的表上進(jìn)行連接操作以形成路徑。如果要判斷祖先/后代關(guān)系就需要從祖先到后代(或與之相反)遍歷所有的邊,造成代價(jià)非常昂貴。
第二,XRel方法。XRel方法為了存儲XML文檔的所有信息,將XML文檔樹分解為一個(gè)個(gè)路徑表達(dá)式,對于樹中每一個(gè)結(jié)點(diǎn),都將從根結(jié)點(diǎn)到其自身的路徑存儲。而在樹中有可能有多個(gè)結(jié)點(diǎn)的路徑是一樣的,所以單個(gè)的簡單路徑表達(dá)式并不能夠存儲整棵XML文檔樹的信息。XRel模式是通過區(qū)間編碼[start,end]來反映XML文檔的模型結(jié)構(gòu),并根據(jù)結(jié)點(diǎn)類型來劃分,分為元素結(jié)點(diǎn)表、屬性結(jié)點(diǎn)表和文本結(jié)點(diǎn)表,同時(shí)將所有路徑進(jìn)行存儲。因此,XRel模式由四個(gè)關(guān)系表組成如圖1所示:
在Path表中,存儲所有的不重復(fù)的路徑,其中,PathID為標(biāo)記路徑的標(biāo)識,pathexp域存儲標(biāo)記路徑。為了實(shí)現(xiàn)路徑表達(dá)式的字符串匹配操作,防止意外的結(jié)果出現(xiàn),將標(biāo)記路徑中的“/”替換為“#/”進(jìn)行存儲。對于Element表、Attribute表和Text表,Attribute表和Text表中的value字段存儲的分別是屬性結(jié)點(diǎn)的值和文本結(jié)點(diǎn)的值。對于每一個(gè)路徑表達(dá)式,查詢過程都可以分為兩部:第一步,利用字符串的匹配操作,能夠快速的查找出與路徑表達(dá)式相匹配的所有標(biāo)記路徑的標(biāo)識;第二步,利用這些路徑標(biāo)識,能夠快速的查找出隸屬于這些路徑終端的值。
XRel存儲模式的特點(diǎn)可以總結(jié)如下:(1)用簡單路徑表達(dá)式和結(jié)點(diǎn)的區(qū)間編碼(start,end)存儲XML文檔的所有信息;(2)分別為每一種結(jié)點(diǎn)類型創(chuàng)建一個(gè)對應(yīng)的關(guān)系表;(3)用一個(gè)Path表把文檔中所有不重復(fù)的路徑都提取出來,有效地降低了數(shù)據(jù)庫的存儲容量。
第三,XParent方法。XParent模式和XRel模式一樣,將文本數(shù)據(jù)路徑獨(dú)立出來,共包含四個(gè)關(guān)系表,如圖2所示:
其中,表LabelPath中的pathexp字段用來存儲所有不重復(fù)的標(biāo)簽路徑,即模式路徑。每一個(gè)標(biāo)簽路徑被賦予一個(gè)標(biāo)識符pathlD,length為標(biāo)記路徑的長度。Parent表存儲的是雙親/孩子關(guān)系,pid和cid分別表示一個(gè)邊的起始結(jié)點(diǎn)與結(jié)尾結(jié)點(diǎn)。did為XML文檔中元素結(jié)點(diǎn)的標(biāo)識,它也可以作為以該結(jié)點(diǎn)為終端點(diǎn)的數(shù)據(jù)路徑的標(biāo)識。
中圖分類號:TP311 文獻(xiàn)標(biāo)識碼:A 文章編號:1009-3044(2016)26-0008-02
1 引言
關(guān)系數(shù)據(jù)庫是當(dāng)今應(yīng)用最廣泛的數(shù)據(jù)庫系統(tǒng)。關(guān)系數(shù)據(jù)庫支持關(guān)系數(shù)據(jù)模型。關(guān)系數(shù)據(jù)結(jié)構(gòu)非常單一,現(xiàn)實(shí)世界中的實(shí)體及實(shí)體之間的聯(lián)系都是用關(guān)系來表示,在用戶看來,關(guān)系數(shù)據(jù)結(jié)構(gòu)就是二維表。常用的關(guān)系操作包括查詢操作和插入、刪除、修改操作兩大部分,其中查詢操作的表達(dá)能力最重要。數(shù)據(jù)查詢是數(shù)據(jù)庫應(yīng)用中非常重要的組成部分,數(shù)據(jù)查詢是否具備較高的執(zhí)行效率和反應(yīng)速度受到數(shù)據(jù)庫設(shè)計(jì)者和用戶的極大關(guān)注。
2 不同查詢方案代價(jià)對比
關(guān)系模型中的查詢語言早期通常是用代數(shù)方法或邏輯方法來表示,分別稱為關(guān)系代數(shù)和關(guān)系演算,隨后出現(xiàn)一種介于關(guān)系代數(shù)和關(guān)系演算的語言稱為結(jié)構(gòu)化查詢語言,簡稱SQL。SQL語言作為關(guān)系數(shù)據(jù)庫的標(biāo)準(zhǔn)語言向用戶提供了易于掌握、高度非過程化得查詢語言。大多數(shù)商用數(shù)據(jù)庫都支持SQL語言,用戶只需指明“干什么?”不需指出“怎么干。”對同一個(gè)查詢要求有不同的查詢解決方案,查詢優(yōu)化就是盡量在不同的解決方案中找到效率高、代價(jià)小的方案。
為了提升數(shù)據(jù)庫系統(tǒng)性能對數(shù)據(jù)查詢進(jìn)行優(yōu)化成了必須解決的問題,查詢優(yōu)化技術(shù)的發(fā)展與應(yīng)用,也助推了數(shù)據(jù)庫技術(shù)的推廣與普及。
下面我們通過一個(gè)實(shí)例對比不同查詢方案所花費(fèi)的代價(jià)。
商品銷售管理數(shù)據(jù)庫
銷售點(diǎn)信息表(銷售點(diǎn)編號,城市、地址,聯(lián)系電話,開設(shè)時(shí)間)
產(chǎn)品信息表(產(chǎn)品編號,產(chǎn)品名,類型,規(guī)格,生產(chǎn)廠家,進(jìn)貨價(jià)格)
銷售情況表(銷售點(diǎn)編號,產(chǎn)品編號,銷售量,銷售單價(jià))
求銷售產(chǎn)品編號為’JD051’這種產(chǎn)品的銷售點(diǎn)信息?
用SQL語言表達(dá)該查詢:
Select 銷售點(diǎn)信息表.*
From 銷售點(diǎn)信息表 , 銷售情況表
Where 銷售點(diǎn)信息表.銷售點(diǎn)編號=銷售情況表.銷售點(diǎn)編號 and 產(chǎn)品編號=’JD051’
SQL語言是高度的非過程化語言,同一個(gè)查詢要求可以有不同的執(zhí)行方式。下面針對上述查詢要求運(yùn)用關(guān)系代數(shù)表達(dá)式來表示不同的執(zhí)行方式。
方案1
Π銷售點(diǎn)信息表.*(σ銷售點(diǎn)信息表.銷售點(diǎn)編號=銷售情況表.銷售點(diǎn)編號∧銷售情況表.產(chǎn)品編號=’JD051’(銷售點(diǎn)信息表×銷售情況表))
第一種方式需要占用內(nèi)存空間保留廣義笛卡爾積的中間結(jié)果,讀取數(shù)據(jù)量過多及耗時(shí)較長;
方案2
Π銷售點(diǎn)信息表.*(σ產(chǎn)品編號=’JD051’(銷售點(diǎn)信息表∞銷售情況表))
第二種方案相比第一種方式減少了中間結(jié)果,使用自然連接相比笛卡爾積大大減少了中間結(jié)果;
方案3
Π銷售點(diǎn)編號(σ產(chǎn)品編號=’JD051’ (銷售情況表))∞銷售點(diǎn)信息表
第三種方式減少了數(shù)據(jù)讀取量,中間結(jié)果相比第二種情況更少??偟牟樵儠r(shí)間最短、查詢代價(jià)最少。
以上三種表達(dá)式雖然等價(jià),但其執(zhí)行的查詢策略不同,數(shù)據(jù)規(guī)模越大,查詢所花費(fèi)的代價(jià)差別就越大。通過三種不同查詢方式的對比,說明查詢優(yōu)化的必要性,選擇合適的查詢策略將大大減少查詢時(shí)間、降低查詢代價(jià),因此查詢優(yōu)化問題一直是數(shù)據(jù)庫研究的重點(diǎn)。
3 關(guān)系數(shù)據(jù)庫查詢處理過程
當(dāng)用戶發(fā)出查詢請求,要采用不同的處理步驟對原始查詢進(jìn)行轉(zhuǎn)換,這些轉(zhuǎn)換工作必須在系統(tǒng)處理查詢請求和返回查詢結(jié)果前完成。關(guān)系數(shù)據(jù)庫查詢處理過程如圖1所示。
圖1
主要步驟:語法分析與翻譯處理,查詢優(yōu)化處理,執(zhí)行。
4 查詢優(yōu)化技術(shù)分類
查詢優(yōu)化技術(shù)一般分為代數(shù)優(yōu)化和非代數(shù)優(yōu)化(物理結(jié)構(gòu)優(yōu)化)。
1)代數(shù)優(yōu)化,通過對查詢語句進(jìn)行變換,改變基本操作的次序,使查詢語句執(zhí)行起來更有效,這種查詢優(yōu)化僅涉及查詢語句本身,而不涉及實(shí)際存取路徑,稱為獨(dú)立于存取路徑的優(yōu)化,或代數(shù)優(yōu)化。
查詢是由高級查詢語言表示的對數(shù)據(jù)庫的一個(gè)或一組操作的集合,通常由投影、選擇、連接、笛卡爾積等操作符組成。通過語法分析功能分析查詢語句的正確性、完整性、有效性,并將其轉(zhuǎn)換為等價(jià)關(guān)系代數(shù)查詢樹,如圖2。
根據(jù)關(guān)系代數(shù)等價(jià)變換規(guī)則,查詢樹可以按以下方法進(jìn)行變換:
方法1:下移選擇和投影運(yùn)算,以減少中間結(jié)果的元組數(shù)和參與運(yùn)算的關(guān)系的規(guī)模;
方法2:將某些選擇運(yùn)算與笛卡爾積運(yùn)算相結(jié)合;
方法3:同時(shí)執(zhí)行同一個(gè)關(guān)系上的選擇、投影運(yùn)算,減少對關(guān)系的掃描次數(shù);
方法4:將連接運(yùn)算與投影運(yùn)算結(jié)合起來執(zhí)行。
圖2可變換為圖3。
對比圖2和圖3選擇運(yùn)算和投影運(yùn)算優(yōu)先執(zhí)行,減少了查詢中間結(jié)果的元組數(shù),大大降低了參與連接運(yùn)算的關(guān)系規(guī)模。
在制定具體的查詢策略時(shí)應(yīng)盡量減少對數(shù)據(jù)表的訪問,減少對磁盤的訪問次數(shù),訪問磁盤所需的時(shí)間大大長于對內(nèi)存的訪問時(shí)間,減少對磁盤的訪問次數(shù)將大大降低系統(tǒng)的響應(yīng)時(shí)間。選擇運(yùn)算盡可能提前做,往往可以使執(zhí)行時(shí)間降低幾個(gè)數(shù)量級,通過選擇運(yùn)算減少中間結(jié)果。在執(zhí)行連接操作前,對關(guān)系進(jìn)行適當(dāng)?shù)念A(yù)處理,在連接的字段上建立索引以及對關(guān)系進(jìn)行排序,加快查詢速度。
關(guān)系代數(shù)優(yōu)化的一般步驟:[3]
(a)把查詢轉(zhuǎn)換成語法樹;(b)優(yōu)化語法樹;(c)選擇低層次的存取路徑;(d)選擇代價(jià)較小的查詢方案。
2)非代數(shù)優(yōu)化,也稱物理結(jié)構(gòu)優(yōu)化。數(shù)據(jù)庫物理結(jié)構(gòu)是整個(gè)數(shù)據(jù)庫存儲的基礎(chǔ),物理結(jié)構(gòu)設(shè)計(jì)是在邏輯結(jié)構(gòu)設(shè)計(jì)的基礎(chǔ)上完成的,應(yīng)確保數(shù)據(jù)庫存儲和訪問或操作數(shù)據(jù)表具有較高的執(zhí)行效率。物理結(jié)構(gòu)優(yōu)化是指為數(shù)據(jù)庫系統(tǒng)的數(shù)據(jù)推薦合適的物理存儲位置或存儲結(jié)構(gòu),以及為查詢推薦合適的存取路徑,進(jìn)而提升系統(tǒng)的整體性能。
5 小結(jié)
查詢優(yōu)化技術(shù)是數(shù)據(jù)庫中一項(xiàng)重要的技術(shù)。對于的查詢要求,我們應(yīng)該根據(jù)數(shù)據(jù)規(guī)模大小,具體的物理存儲結(jié)構(gòu)等因素進(jìn)行分析,選擇合適的查詢策略。具體的SQL查詢語句應(yīng)根據(jù)代數(shù)優(yōu)化的相關(guān)原則進(jìn)行變換,提高查詢效率。查詢優(yōu)化目的是為了提升系統(tǒng)的性能,如果進(jìn)行優(yōu)化本身需要花費(fèi)的代價(jià)過大,反而會降低系統(tǒng)的性能。所以只有兼顧了查詢效率、控制系統(tǒng)開銷、保障數(shù)據(jù)庫安全等諸多方面才能真正地優(yōu)化系統(tǒng)的性能。
參考文獻(xiàn):
[1] 馮衛(wèi)兵.關(guān)系數(shù)據(jù)庫的查詢優(yōu)化[J].現(xiàn)代計(jì)算機(jī),2010(1).
[2] 王能斌.數(shù)據(jù)庫系統(tǒng)原理[M].北京:電子工業(yè)出版社,2001.
[3] 薩師煊,王珊. 數(shù)據(jù)庫系統(tǒng)概論[M].3版.北京:高等教育出版社,2000.
[4] 谷震離.關(guān)系數(shù)據(jù)庫查詢方法研究[J].微計(jì)算機(jī)信息,2006.
中圖分類號:TP399文獻(xiàn)標(biāo)識碼:A文章編號:1009-3044(2009)25-7090-03
Comparison and Analysis for Relational Database and Cloud Database Based on Architecture
ZHANG Zhen-yong, WEN Jing-hua
(Guizhou College of Finance and Economics, Guiyang 550004,China)
Abstract: Aiming at the shortcoming that relational database processes a large number of video,audio,images and complex data types, this thesis compared and analyzed relational database and Bigtable representing cloud database and based on architecture. The results showed that cloud database was more advantageous than relational database in precessing a great mass of data and complex data types. With the development of the cloud database technology,cloud database will be superseding the relational database as the mainstream of the database.
Key words: ralational database; cloud database; bigtable; timestamp
關(guān)系數(shù)據(jù)庫從1970年發(fā)展至今,雖功能日趨完善,但對數(shù)據(jù)類型的處理大多采用數(shù)字、字符等基本數(shù)據(jù)類型,對多媒體信息的處理只是停留在簡單的二進(jìn)制代碼文件的存儲。隨著信息技術(shù)的發(fā)展,互聯(lián)網(wǎng)上數(shù)據(jù)量高速增長,非結(jié)構(gòu)化數(shù)據(jù)的應(yīng)用日趨擴(kuò)大,再加上用戶應(yīng)用需求的提高、硬件技術(shù)的發(fā)展和Web2.0提供的多彩的多媒體交流方式,用戶對多媒體處理的要求從簡單的存儲上升為識別、檢索和深入加工等高級應(yīng)用。關(guān)系數(shù)據(jù)庫在處理這類數(shù)據(jù)時(shí),逐漸暴露出了一些缺陷。
如何來高效處理占數(shù)據(jù)總量70%的聲音、圖像和視頻等復(fù)雜數(shù)據(jù)類型是目前互聯(lián)網(wǎng)界亟待解決的問題。正是在這種狀態(tài)下,云端數(shù)據(jù)庫便應(yīng)運(yùn)而生并開始發(fā)展起來。目前云端數(shù)據(jù)庫技術(shù)在云計(jì)算中的應(yīng)用有Google的Bigtable系統(tǒng)[1]、Amazon公司的Dynamo系統(tǒng)、Hadoop的一個(gè)子項(xiàng)目Hbase、微軟的Live Mesh系統(tǒng)等等。無論是Bigtable還是Hbase都是采用通用的云端數(shù)據(jù)庫架構(gòu),只是核心技術(shù)不同。所以本文就以Google的Bigtable架構(gòu)為代表與傳統(tǒng)的關(guān)系數(shù)據(jù)庫架構(gòu)進(jìn)行比較和分析。
1關(guān)系數(shù)據(jù)庫
1.1關(guān)系數(shù)據(jù)庫概念及特點(diǎn)
關(guān)系數(shù)據(jù)庫在一個(gè)給定的應(yīng)用領(lǐng)域中,所有實(shí)體及實(shí)體之間聯(lián)系的關(guān)系的集合。它是建立在集合代數(shù)基礎(chǔ)上,應(yīng)用數(shù)學(xué)方法來處理數(shù)據(jù)庫中的數(shù)據(jù),現(xiàn)實(shí)世界中的各種實(shí)體以及實(shí)體之間的各種聯(lián)系均用關(guān)系模型來表示,也就是說關(guān)系數(shù)據(jù)庫是建立在關(guān)系模型基礎(chǔ)上的數(shù)據(jù)庫[2]。
關(guān)系數(shù)據(jù)庫具有數(shù)據(jù)結(jié)構(gòu)化、最低冗余度、較高的程序與數(shù)據(jù)獨(dú)立性、易于擴(kuò)充、易于編制應(yīng)用程序等優(yōu)點(diǎn),目前較大的應(yīng)用軟件系統(tǒng)都是建立在結(jié)構(gòu)化數(shù)據(jù)庫設(shè)計(jì)之上的。
1.2關(guān)系數(shù)據(jù)庫系統(tǒng)的架構(gòu)
關(guān)系數(shù)據(jù)庫的架構(gòu)包括六個(gè)部分[3]:
1) 查詢語言接口
查詢語言接口通過使用SQL語言對數(shù)據(jù)庫進(jìn)行特設(shè)查詢數(shù)據(jù)。
2)交互式查詢工具
交互式查詢工具是用于訪問,修改以及更新一個(gè)或多個(gè)關(guān)聯(lián)的數(shù)據(jù)表,并以視圖的方式返回給用戶。
3) 核心軟件
該核心軟件用于控制查詢處理,存取數(shù)據(jù)路徑,用戶訪問管理,存儲管理,索引,交易處理和讀取/更新信息。
4) 公用機(jī)制
公用機(jī)制主要用于輸入/輸出/備份調(diào)整工具及參數(shù)/報(bào)告撰寫。
5) 存儲機(jī)制
存儲機(jī)制主要進(jìn)行數(shù)據(jù)庫寫入,歸檔,用戶管理器,服務(wù)器管理,重做日志文件。
6) 數(shù)據(jù)庫
數(shù)據(jù)庫的特點(diǎn)是以數(shù)據(jù)文件的方式對數(shù)據(jù)對象進(jìn)行物理存儲,包含了系統(tǒng)目錄即數(shù)據(jù)目錄,一個(gè)或多個(gè)數(shù)據(jù)文件以結(jié)構(gòu)化形式存儲組成集合即二維表,并將不同數(shù)據(jù)集通過主鍵和外鍵進(jìn)行關(guān)聯(lián)。
關(guān)系數(shù)據(jù)庫的架構(gòu)如圖1所示。
1.3關(guān)系數(shù)據(jù)庫的缺陷
通過對關(guān)系數(shù)據(jù)庫架構(gòu)的分析,可以發(fā)現(xiàn)關(guān)系數(shù)據(jù)庫的一些不足,概括如下四點(diǎn):
1) 數(shù)據(jù)類型表達(dá)能力差
因?yàn)殛P(guān)系數(shù)據(jù)庫所處理的是結(jié)構(gòu)化的數(shù)據(jù),所以關(guān)系數(shù)據(jù)庫缺乏直接構(gòu)造與現(xiàn)代軟件應(yīng)用有關(guān)的信息的類型表達(dá)能力。隨著信息技術(shù)的飛速發(fā)展,圖像、視頻、音頻以及文檔等非結(jié)構(gòu)化的數(shù)據(jù)已被應(yīng)用到人們的日常生活當(dāng)中,利用關(guān)系數(shù)據(jù)庫來處理這些非結(jié)構(gòu)化的數(shù)據(jù)已經(jīng)顯得有點(diǎn)力不從心了。因此目前大多數(shù)RDBMS產(chǎn)品所采用的簡單類型在重構(gòu)復(fù)雜數(shù)據(jù)的過程中將會出現(xiàn)性能問題;數(shù)據(jù)庫設(shè)計(jì)過程中的額外復(fù)雜性;RDBMS產(chǎn)品和編程語言在數(shù)據(jù)類型方面的不協(xié)調(diào),需要通過較復(fù)雜的程序化進(jìn)行數(shù)據(jù)類型之間的轉(zhuǎn)換來達(dá)到數(shù)據(jù)類型的一致性。
對于工程應(yīng)用來說,關(guān)系數(shù)據(jù)庫不能支持復(fù)雜數(shù)據(jù)類型的典型結(jié)果就是需要額外地分解數(shù)據(jù)結(jié)構(gòu)工作,這些被分解的結(jié)構(gòu)不能直接表示應(yīng)用數(shù)據(jù),且從基本成分重構(gòu)時(shí)也非常繁瑣和費(fèi)時(shí)間。
2) 復(fù)雜查詢功能比較差
在關(guān)系數(shù)據(jù)庫中,利用SQL語言進(jìn)行查詢數(shù)據(jù)。雖然SQL語言為數(shù)據(jù)查詢提供了很好的定義方法,但是當(dāng)用于復(fù)雜信息的查詢時(shí)可能會非常繁瑣。這是由于在工程應(yīng)用時(shí)規(guī)范化的過程通常會產(chǎn)生大量的簡單表,從而降低數(shù)據(jù)的冗余度。那么在這種環(huán)境下由存取信息產(chǎn)生的查詢必須處理大量的表和復(fù)雜主鍵和外鍵之間的聯(lián)系以及連接運(yùn)算,會影響系統(tǒng)的查詢效率。
3) 支持長事務(wù)能力差
由于RDBMS記錄鎖機(jī)制的顆粒度限制,對于支持多種記錄類型的大段數(shù)據(jù)的登記和檢查來說,簡單的記錄級的鎖機(jī)制是不夠的,但基于鍵值關(guān)系的較復(fù)雜的鎖機(jī)制來說卻很難推廣也難以實(shí)現(xiàn)。
4) 環(huán)境應(yīng)變能力差
在要求系統(tǒng)改變的環(huán)境下,關(guān)系數(shù)據(jù)庫從一種系統(tǒng)移植到另一個(gè)系統(tǒng)上的成本高且修改困難。再加上,關(guān)系數(shù)據(jù)庫和編程語言所提供的數(shù)據(jù)類型的不一致,使得從一個(gè)環(huán)境轉(zhuǎn)換到另一個(gè)環(huán)境時(shí)需要多至30%的附加代碼。
正是由于關(guān)系數(shù)據(jù)庫的這些缺陷,才推動(dòng)了數(shù)據(jù)庫技術(shù)的發(fā)展,產(chǎn)生了云端數(shù)據(jù)庫技術(shù),進(jìn)而彌補(bǔ)了關(guān)系數(shù)據(jù)庫的不足。
2 云端數(shù)據(jù)庫
2.1 Bigtable的介紹
Google在 2004 年初就開始研發(fā)了BigTable,到了2005年大概有100個(gè)左右的服務(wù)使用BigTable。BigTable 讓Google在提供新服務(wù)時(shí)的運(yùn)行成本降低,最大限度地利用了計(jì)算能力。
Bigtable是一個(gè)大型,容錯(cuò),自我管理的分布式存儲系統(tǒng),并用于管理分布在成千上萬臺服務(wù)器上的結(jié)構(gòu)化數(shù)據(jù)[4]。它是建立在GFS分布式文件系統(tǒng)[5]、Scheduler分布式集群調(diào)度、Lock Service分布式的鎖服務(wù)[6]和 MapReduce編程模式[7]基礎(chǔ)之上的系統(tǒng)。
2.2 Bigtable的架構(gòu)
1) Bigtable的數(shù)據(jù)模型
一個(gè)Bigtable(大表)是一個(gè)稀疏的,分布的,持續(xù)的以及多維的排序的數(shù)據(jù)映射。這個(gè)映射由行主鍵,列主鍵和時(shí)間戳進(jìn)行索引[4]。每一項(xiàng)值在映射中是一系列不被解釋的字節(jié)元組即(row:string,column:string,timestamp:int64)string。
在Bigtable的數(shù)據(jù)模型中,所有的數(shù)據(jù)都存放在表格單元中,每一行表示一個(gè)事物的數(shù)據(jù)內(nèi)容,其所在列表示這個(gè)事物的唯一標(biāo)志,其所對應(yīng)的時(shí)間戳表示這個(gè)事物在某個(gè)時(shí)間上的狀態(tài)即具體的數(shù)據(jù)內(nèi)容。關(guān)系數(shù)據(jù)庫只能反映當(dāng)前時(shí)間上事物所處的狀態(tài),而Bigtable不僅能顯示事物當(dāng)前所處的狀態(tài),而且還可以記錄某個(gè)事物的過去某個(gè)時(shí)間所處狀態(tài)。Bigtable的數(shù)據(jù)模型如圖2所示。
2) Bigtable的架構(gòu)
與目前的關(guān)系數(shù)據(jù)庫類似,BigTable也是客戶端和服務(wù)器端的聯(lián)合設(shè)計(jì),使得性能能夠最大程度地符合應(yīng)用的需求。
BigTable系統(tǒng)依賴于集群系統(tǒng)的底層結(jié)構(gòu),一個(gè)是 Google的分布式文件系統(tǒng)(GFS),一個(gè)是分布式的集群任務(wù)調(diào)度(scheduler),還有一個(gè)分布式的鎖服務(wù)(Lock Service)。BigTable使用Lock Service來保存根數(shù)據(jù)表格的指針,即客戶端用戶可以首先從Lock Service鎖服務(wù)器中獲得根表的位置,進(jìn)而對數(shù)據(jù)進(jìn)行訪問。BigTable使用一臺服務(wù)器作為主服務(wù)器,用來保存和操作元數(shù)據(jù)。主服務(wù)器除了管理元數(shù)據(jù)之外,還負(fù)責(zé)對tablet服務(wù)器(即一般意義上的數(shù)據(jù)服務(wù)器)進(jìn)行遠(yuǎn)程管理與負(fù)載調(diào)配??蛻舳送ㄟ^編程接口與主服務(wù)器進(jìn)行元數(shù)據(jù)通信,與tablet服務(wù)器進(jìn)行數(shù)據(jù)通信[8]。
Bigtable的架構(gòu)由Bigtable master、Bigtable tablet servers和Bigtable client library三部分組成,如圖3所示。
Bigtable master存儲了許多由大量的tablets組成的表。主要負(fù)責(zé)指派tablet到tablet的各個(gè)服務(wù)器上,并檢測tablet服務(wù)器的增減和服務(wù)程序裝載滿與否,進(jìn)行實(shí)時(shí)的分配任務(wù),使tablet服務(wù)器負(fù)載均衡并回收GFS文件系統(tǒng)中的垃圾文件。此外,它還處理模式更改,如表和列簇的創(chuàng)建。
每一個(gè)tablet服務(wù)器用于管理一部分tablets,通常有10-1000個(gè)tablet和處理客戶端用戶的讀/寫請求。tablet是由大表以行為單位分隔而成的。每個(gè)tablet保存了連續(xù)的行,然后別分配到各個(gè)tablet服務(wù)器上。
Bigtable client library是客戶端用戶和Bigtable服務(wù)器通信的接口。用戶通過Bigtable client library接口來讀數(shù)據(jù)和寫數(shù)據(jù)等操作。
3 關(guān)系數(shù)據(jù)庫與云端數(shù)據(jù)庫的比較
3.1 兩者架構(gòu)的區(qū)別
關(guān)系數(shù)據(jù)庫架構(gòu)與云端數(shù)據(jù)庫中的Bigtable架構(gòu)主要區(qū)別如表1所示。
3.2 基于架構(gòu)的比較分析
通過對關(guān)系數(shù)據(jù)庫架構(gòu)和云端數(shù)據(jù)庫中的Bigtable架構(gòu)的分析,可以從以下幾個(gè)方面對兩者進(jìn)行比較:
1) 數(shù)據(jù)模型
在關(guān)系數(shù)據(jù)庫中創(chuàng)建的表是一張二維表包括行和列,使用簡單的數(shù)據(jù)類型對結(jié)構(gòu)化的數(shù)據(jù)進(jìn)行存儲。但對于非結(jié)構(gòu)化的數(shù)據(jù)的存儲,因?yàn)殛P(guān)系數(shù)據(jù)庫要保持?jǐn)?shù)據(jù)冗余度低這一優(yōu)點(diǎn),所以關(guān)系數(shù)據(jù)庫的設(shè)計(jì)會比較復(fù)雜且困難。而Bigtable創(chuàng)建的類似于二維表,但事實(shí)上不是二維表,它是由行主鍵、列主鍵、時(shí)間戳三個(gè)域組成的多維map。雖然Bigtable存儲數(shù)據(jù)的冗余度比較高,但是Bigtable比關(guān)系數(shù)據(jù)庫的二維表多了一個(gè)域――時(shí)間戳域,時(shí)間戳域可以記錄事物的不同時(shí)間時(shí)的狀態(tài)。另外Bigtable是以一條記錄為原子對數(shù)據(jù)進(jìn)行操作的,所以Bigtable不僅可以對事物的當(dāng)前狀態(tài)進(jìn)行更新,還可以對事物的過去狀態(tài)進(jìn)行查詢。在這一點(diǎn)上,關(guān)系數(shù)據(jù)庫是不支持歷史查詢的。
2) 數(shù)據(jù)的存取方式
在關(guān)系數(shù)據(jù)庫中用戶對數(shù)據(jù)進(jìn)行查詢、添加、修改及刪除等的操作是使用SQL語言。對于處理海量及復(fù)雜數(shù)據(jù)時(shí),使用SQL語言對多個(gè)關(guān)聯(lián)表進(jìn)行操作就可能會顯得非常繁瑣。Bigtable并非支持SQL語言的數(shù)據(jù)庫,而是以map 函數(shù)方式的,以列導(dǎo)向的數(shù)據(jù)庫。Bigtable對數(shù)據(jù)的存取是以一行記錄為原子進(jìn)行的,不必關(guān)聯(lián)其他的表,那么數(shù)據(jù)存取的速率要比關(guān)系數(shù)據(jù)庫要高。
3) 數(shù)據(jù)遷移能力
關(guān)系數(shù)據(jù)庫提供了一些簡單的數(shù)據(jù)類型,在環(huán)境發(fā)生變化比如應(yīng)用平臺或者是編程語言所提供的數(shù)據(jù)類型與關(guān)系數(shù)據(jù)庫所提供的不一致時(shí),那么數(shù)據(jù)之間的轉(zhuǎn)化過程將會相當(dāng)復(fù)雜而且還會增加成本。而Bigtable所提供的數(shù)據(jù)類型只有字符串類型,所有數(shù)據(jù)都是以字符串的形式進(jìn)行處理,因此Bigtable在進(jìn)行數(shù)據(jù)遷移時(shí)相比關(guān)系數(shù)據(jù)庫要容易并且成本也要比關(guān)系數(shù)據(jù)庫要低得多。
4) 支持事務(wù)
關(guān)系數(shù)據(jù)庫為了保持?jǐn)?shù)據(jù)的完整性和一致性,提供了事務(wù)處理功能。關(guān)系數(shù)據(jù)庫在處理簡單事務(wù)方面,顯現(xiàn)出了關(guān)系數(shù)據(jù)庫的優(yōu)勢。但是在處理繁瑣的事務(wù)方面,比如執(zhí)行了n條SQL語句來對多個(gè)關(guān)聯(lián)的數(shù)據(jù)表進(jìn)行處理,執(zhí)行效率就會顯得比較低。目前,Bigtable還不支持事務(wù)處理功能,但是Google已經(jīng)考慮到了該功能,一旦Bigtable支持了多行數(shù)據(jù)的事務(wù)支持,執(zhí)行效率將會大大提高。
總之,云端數(shù)據(jù)庫在處理非結(jié)構(gòu)化數(shù)據(jù)時(shí)要比關(guān)系數(shù)據(jù)庫的效率高,更適宜在多節(jié)點(diǎn)的服務(wù)器集群上工作,比關(guān)系數(shù)據(jù)庫更適應(yīng)環(huán)境的變化,最大的優(yōu)點(diǎn)是使用成本比關(guān)系數(shù)據(jù)庫要低得多。
4 結(jié)束語
本文通過對關(guān)系數(shù)據(jù)庫架構(gòu)和云端數(shù)據(jù)庫架構(gòu)的比較分析,可以得出云端數(shù)據(jù)庫在許多方面要比關(guān)系數(shù)據(jù)庫占優(yōu)勢,也就是說云端數(shù)據(jù)庫技術(shù)具有很大的發(fā)展前景。雖然云端數(shù)據(jù)庫技術(shù)還不夠成熟,再加上各大關(guān)系數(shù)據(jù)庫供應(yīng)商對關(guān)系數(shù)據(jù)庫技術(shù)的不斷改進(jìn)以及對查詢算法進(jìn)行優(yōu)化,但是隨著云端數(shù)據(jù)庫技術(shù)的不斷成熟,將會得到廣泛的應(yīng)用,進(jìn)而逐步會取代關(guān)系數(shù)據(jù)庫成為數(shù)據(jù)庫中的主流。
參考文獻(xiàn):
[1] Chang F,Dean J,Ghemawat S,Hsieh WC,Wallach DA,Burrows M,Chandra T,Fikes A,Gruber RE.Bigtable:A distributed storage system for structured data.In:Proc.of the 7th USENIX Symp.on Operating Systems Design and Implementation.Berkeley:USENIX Association,2006:205-218.
[2] 瞿裕忠 胡偉 鄭東棟 仲新宇. 關(guān)系數(shù)據(jù)庫模式和本體間映射的研究綜述[J].計(jì)算機(jī)研究與發(fā)展,2008,45(2):300-309.
[3] Fay Chang,Jeffrey Dean,Sanjay Ghemawat,Wilson C.Hsieh,Deborah A.Wallach Mike Burrows, Tushar Chandra, Andrew Fikes,Robert E.Gruber.Bigtable: A Distributed Storage System for Structured Data,OSDI,2006:1-5.
[4] Ghemawat S,Gobioff H,Leung ST.The Google file system.In:Proc.of the 19th ACM Symp.on Operating Systems Principles.New York:ACM Press,2003.29-43.
中圖分類號:TP311文獻(xiàn)標(biāo)識碼:A 文章編號:1009-3044(2008)16-21188-02
On Optimization Method for Query in Relational Database
YIN Mei-gui
(Heyuan Polytechnic, Heyuan 517000, China)
Abstract: In the database application MIS, query process is the most frequent. Whether query process is good or bad will directly affect the performance of database application system. Therefore, query in database should be optimized. This article suggests some methods of how to realize the optimization by making use of the technology of query in relational database.
Key words: RDBMS; query optimization; methods
1 引言
數(shù)據(jù)庫系統(tǒng)是管理信息系統(tǒng)的核心,基于數(shù)據(jù)庫的聯(lián)機(jī)事務(wù)處理(OLTP)以及聯(lián)機(jī)分析處理(OLAP)是企業(yè)、銀行、政府部分最為重要的計(jì)算機(jī)應(yīng)用之一。從大多數(shù)數(shù)據(jù)庫系統(tǒng)的應(yīng)用實(shí)例來看,查詢操作是所有數(shù)據(jù)庫操作中所占據(jù)比重最大的操作。當(dāng)數(shù)據(jù)庫系統(tǒng)積累到一定程度(如稅務(wù)系統(tǒng)的賬戶達(dá)到上百萬甚至上千萬條記錄),全表掃描一次往往需要數(shù)十分鐘,甚至數(shù)小時(shí)。如果采用比全表掃描更好的查詢策略,往往能降低查詢時(shí)間。如何設(shè)計(jì)數(shù)據(jù)庫,采取什么樣的查詢方法,提高查詢效率,這就是查詢優(yōu)化要解決的問題。
2 合理使用索引
索引是數(shù)據(jù)庫一個(gè)常用的數(shù)據(jù)庫對象,優(yōu)化查詢的重要方法是建立索引,也是數(shù)據(jù)庫同時(shí)預(yù)先將數(shù)據(jù)分類導(dǎo)入到多表格的方式。在關(guān)系數(shù)據(jù)庫的表上建立合適的索引,可以提高數(shù)據(jù)庫數(shù)據(jù)查詢的速度,改善數(shù)據(jù)庫的性能。除了集簇索引,每一索引的使用都以磁盤容量作為代價(jià),當(dāng)使用一個(gè)索引,數(shù)據(jù)庫引擎必須執(zhí)行兩個(gè)數(shù)據(jù)讀取,這兩個(gè)數(shù)據(jù)讀取是數(shù)據(jù)庫記錄所必需的,第一個(gè)數(shù)據(jù)被讀取到實(shí)際數(shù)據(jù)指針的索引,第二個(gè)數(shù)據(jù)被讀入到指針指定的位置。因此創(chuàng)建索引時(shí)必須要與實(shí)際應(yīng)用系統(tǒng)的查詢需求密切結(jié)合,才能達(dá)到優(yōu)化查詢的目的。
2.1 建索引的必要性
判斷索引必要性的最終標(biāo)準(zhǔn)是判斷這些索引是否對數(shù)據(jù)庫的工作效率有所幫助。在實(shí)際的應(yīng)用過程中,應(yīng)該為優(yōu)化工作做以下幾點(diǎn)準(zhǔn)備:
首先觀察數(shù)據(jù)庫應(yīng)用程序中所有的SQL語句,并從中統(tǒng)計(jì)出常用且可能對性能有影響的部分語句,然后分析、歸納出作為Where條件子句的字段及其各種組合方式;在這一基礎(chǔ)上可以初步判斷出哪些表的哪些字段應(yīng)該建立索引。其次,必須了解應(yīng)用程序,要了解哪些表是數(shù)據(jù)操作頻繁的表;哪些表經(jīng)常與其他表進(jìn)行連接;哪些表中的數(shù)據(jù)量可能很大;數(shù)據(jù)量大的表中各個(gè)字段的數(shù)據(jù)分布情況如何等等。對于滿足上述條件的這些表,必須重點(diǎn)關(guān)注。因?yàn)榻⒃谶@些表上的索引,將對SQL語句的性能產(chǎn)生舉足輕重的影響。
2.2 使用索引的規(guī)則
索引的使用要恰到好處,其使用原則如下:
(1)在經(jīng)常進(jìn)行連接,但是沒有指定為外鍵的列上建立索引,而不經(jīng)常連接的字段則由優(yōu)化器自動(dòng)生成索引。
(2)在主鍵索引方面,不應(yīng)有超過25%列成為主鍵,而普通列很少,這會浪費(fèi)索引空間。
(3)在條件表達(dá)式中經(jīng)常用到的不同值較多的列上建立檢索,在不同值少的列上不要建立索引。
(4)在頻繁進(jìn)行排序或分組(即進(jìn)行g(shù)roup by 或 order by 操作)的屬性上建立索引。
(5)在作為最小值等聚集函數(shù)的屬性上考慮建立索引。
索引的建立、維護(hù)和使用都需要付出代價(jià),應(yīng)合理使用索引。錯(cuò)誤的索引不會使數(shù)據(jù)庫性能得到預(yù)期的提高,往往還會產(chǎn)生一些負(fù)面影響。
3 SQL語句優(yōu)化
要對查詢進(jìn)行優(yōu)化,一個(gè)簡單直接有效的方法是對SQL語句進(jìn)行調(diào)整,減少計(jì)算量,提高查詢的效率。以下是一些書寫SQL的一些經(jīng)驗(yàn)。
3.1 避免相關(guān)子查詢
查詢嵌套層數(shù)每增加一層,查詢的效率成幾何級的降低。要想提高嵌套語句的執(zhí)行效率,則應(yīng)減少嵌套語句的嵌套的層次。所以在實(shí)際應(yīng)用中,若可以用連接查詢代替的子查詢,則用連接查詢實(shí)現(xiàn)。
例:查詢選修了“3-105”號課程的學(xué)生基本信息
用子查詢的方法如下所示:
SELECT * FROM student WHERE SNO IN (SELECT sno FROM sc WHERE cno=’3-105’)
改寫成連接查詢?nèi)缦拢?/p>
SELECT student.* FROM student,sc WHERE stuent.sno=sc.sno AND cno=’3-105’
3.2 用UNION替換OR
合理建立索引有助于提高查詢效率。有時(shí)盡管在所有的檢索列上都有索引,但有些形式SELECT查詢語句可能不會促使查詢優(yōu)化器使用索引,從而降低查詢效率。如果對查詢語句進(jìn)行改寫,用UNION替換OR,可以強(qiáng)迫優(yōu)化器按索引路徑處理。如:假定分別在“職工”關(guān)系中的“年齡”和“月工資”字段上創(chuàng)建了索引,對以下SQL語句
SELECT 姓名,年齡,月工資 FROM 職工 WHERE 年齡>45 OR 月工資
可替換為:
SELECT 姓名,年齡,月工資 FROM 職工 WHERE 年齡>45
UNION
SELECT 姓名,年齡,月工資 FROM 職工 WHERE月工資
3.3 使用臨時(shí)表優(yōu)化查詢
在涉及相關(guān)查詢的某些情形中,構(gòu)造臨時(shí)關(guān)系可以提高查詢效率。如:查詢每個(gè)部門中月工資最高的“職工號”
SELECT 職工號 FROM 職工 AS e1 WHERE 月工資=(SELECT MAX(月工資)FROM 職工 AS e2 WHERE e1.部門號=e2.部門號)
以上的查詢對于外層的職工關(guān)系e1中的每一個(gè)元組,都要對內(nèi)層的整個(gè)職工關(guān)系e2進(jìn)行檢索,因此查詢效率不高。可以構(gòu)建臨時(shí)關(guān)系提高查詢效率。
SELECT MAX(月工資) AS 最高工資,部門號 INTO temp FROM職工 GROUP BY 部門號
SELECT 職工號 FROM 職工,temp WHERE 月工資=最高工資 AND 職工.部門號=temp.部門號
3.4 避免在索引列上使用計(jì)算
WHERE子句中,如果索引列是函數(shù)的一部分。優(yōu)化器不使用索引而使用全表掃描。如
SELECT * FROM職工 WHERE 月工資*12>20000
可改為:
SELECT * FROM 職工 WHERE 月工資>20000/12
3.5 謂詞的等價(jià)變換
由于執(zhí)行引擎對各種謂詞的處理方法不同,把邏輯表達(dá)式重寫成等價(jià)的且效率較高的表達(dá)式是提高效率的有效方法,同時(shí)也是切實(shí)可行的。針對執(zhí)行引擎對各種謂詞執(zhí)行效率的不同,總結(jié)如下謂詞轉(zhuǎn)換規(guī)則:
1)將BETWEEN轉(zhuǎn)化為AND 連接的謂詞
把BETWEEN...AND...形式改寫為用AND連接的兩個(gè)謂詞,效率往往
有一定的提高。
例如:月工資 BETWEEN 1000 AND 2000 改為: 月工資>=1000 AND 月工資
2)避免使用In語句
當(dāng)查詢語句中有In關(guān)鍵詞時(shí),優(yōu)化器采用OR并列條件。
如:職工號IN (‘1001’,’2001’) 改為:職工號=’1001’ OR 職工號=’2001’
4 結(jié)束語
查詢處理是數(shù)據(jù)管理系統(tǒng)的核心,而查詢優(yōu)化技術(shù)是查詢處理的關(guān)鍵技術(shù)。查詢優(yōu)化就要抓住關(guān)鍵問題。在數(shù)據(jù)庫的開發(fā)和維護(hù)過程中,查詢優(yōu)化設(shè)計(jì)可以提高系統(tǒng)的性能,尤其對于數(shù)據(jù)量大的數(shù)據(jù)庫系統(tǒng)最為重要。本文提到一些優(yōu)化方法是根據(jù)自己的經(jīng)驗(yàn),并查閱了大量的資料。在具體的使用時(shí)候要根據(jù)實(shí)際情況,才能合理制定出良好的優(yōu)化方法,實(shí)現(xiàn)快速、高效的數(shù)據(jù)查詢。
參考文獻(xiàn):
一、關(guān)系數(shù)據(jù)庫關(guān)鍵詞查詢概述
關(guān)系數(shù)據(jù)庫通常通過結(jié)構(gòu)化查詢語言SQL來訪問。SQL訪問方式不但要求用戶知道并理解關(guān)系數(shù)據(jù)庫模式,也要懂得書寫復(fù)雜的SQL查詢語言,因此,它一般適合于專業(yè)用戶使用。普通用戶一般通過定制的關(guān)系數(shù)據(jù)庫查詢接口程序RQI(Relational databases Query Interface)或者關(guān)系數(shù)據(jù)庫應(yīng)用程序RAP(Relational databases Application Program)來訪問關(guān)系數(shù)據(jù)庫。RQI訪問方式雖然不要求用戶書寫復(fù)雜SQL查詢語言,但是要求用戶知道并理解關(guān)系數(shù)據(jù)庫模式,對于不同的關(guān)系數(shù)據(jù)庫需要使用不同的RQI,而且定制的RQI也往往不能滿足靈活多變的用戶查詢需求,當(dāng)RQI不能滿足用戶查詢需求時(shí),就需要應(yīng)用開發(fā)人員來修改RQI,由此,使用RQI訪問方式則需要較高的開發(fā)費(fèi)用和維護(hù)費(fèi)用。
隨著Internet和Web技術(shù)的快速發(fā)展和應(yīng)用,一方面用戶越來越習(xí)慣于使用簡單的查詢關(guān)鍵詞通過Web搜索引擎如Google,Baidu等來搜索信息;另一方面,越來越多的關(guān)系數(shù)據(jù)庫到Web上面向廣大普通用戶,形成所謂的“Deep Web”問題,使得普通用戶也期望能夠使用簡單的關(guān)鍵詞來查詢關(guān)系數(shù)據(jù)庫數(shù)據(jù)。
二、相關(guān)定義
定義1:關(guān)系數(shù)據(jù)庫模式Sdb(Relational Database Schema)假設(shè)關(guān)系數(shù)據(jù)庫的模式,Sdb=(R,FK),R={R1,R2,…,Rk}是一組關(guān)系模式,FK是R中關(guān)系模式間引用關(guān)系的映射,FK:RR,如果FK(Ri)=Rj,記為RiRj(1≤i,j≤n),它表示Rj一個(gè)外鍵引用了Ri主鍵。
定義2:關(guān)系數(shù)據(jù)庫模式圖Gs(Relational Database Schema Graph)假設(shè)Gs=(V,E)表示模式Sdb=(R,FK)的關(guān)系數(shù)據(jù)庫對應(yīng)的模式圖。Gs是一個(gè)有向圖,將關(guān)系數(shù)據(jù)庫中的每一個(gè)關(guān)系模式Rk(1≤k≤n)看作是Gs的一個(gè)節(jié)點(diǎn),當(dāng)且僅當(dāng)關(guān)系模式Ri∈Gs,關(guān)系模式Rj∈Gs,(RiRj)∈FK時(shí),(Ri,Rj)∈E。
定義3:連接元組樹Jt(Joning Tree of Tuples)給定一個(gè)關(guān)系數(shù)據(jù)庫的模式圖Gs=(V,E),Jt是以數(shù)據(jù)庫中的元組tl為結(jié)點(diǎn)的一棵樹,其中tl(1≤l≤m)是關(guān)系rk(1≤k≤m)中元組,關(guān)系rk(1≤k≤m)是關(guān)系模式Rk(1≤k≤n)上的實(shí)例,如果(Ri,Rj)∈E且(ti tj)∈(ri rj),那么,(ti,tj)是Jt的一條邊,其中ti∈ri,tj∈rj,(1≤i, j≤n),稱Jt為一棵連接元組樹。
定義4:關(guān)鍵詞查詢Kq(Keyword Query)把關(guān)鍵詞查詢定義為查詢函數(shù)f:KqT,其中Kq是一個(gè)集合,其元素ki(1≤i≤m)為關(guān)鍵詞,T是一個(gè)集合,其元素Jti(1≤i≤n)為一個(gè)關(guān)鍵詞查詢結(jié)果。
定義5:關(guān)鍵詞查詢結(jié)果T(Keywords Qeury Results)關(guān)鍵詞查詢結(jié)果是OR語義,Kq是一個(gè)集合,其元素為ki(1≤i≤m)為關(guān)鍵詞,一個(gè)查詢結(jié)果是至少含有Kq中一個(gè)ki(1≤i≤m)且每個(gè)葉結(jié)點(diǎn)都至少含有Kq中一個(gè)ki(1≤i≤m) 的連接元組樹。
關(guān)鍵詞查詢結(jié)果是AND語義,Kq是一個(gè)集合,其元素為ki(1≤i≤m)為關(guān)鍵詞,一個(gè)查詢結(jié)果是Kq中的每一個(gè)的關(guān)鍵詞ki(1≤i≤m)都必須出現(xiàn)在結(jié)果中,并且每個(gè)葉子節(jié)點(diǎn)都至少含有一個(gè)Kq中的關(guān)鍵詞ki(1≤i≤m)的連接元組樹。
三、體系結(jié)構(gòu)
(1)系統(tǒng)設(shè)置系統(tǒng)啟動(dòng)模塊,做一些系統(tǒng)初始化工作,如系統(tǒng)的參數(shù)配置
(2)模式圖生成器從系統(tǒng)配置文件讀入數(shù)據(jù)庫模式圖的模式配置信息,生成數(shù)據(jù)庫模式圖。
(3)用戶查詢該模塊為用戶查詢接口,接受用戶輸入的查詢關(guān)鍵詞,
提交后續(xù)模塊處理。
(4)元組集生成器該模塊利用由關(guān)系數(shù)據(jù)庫的全文檢索功能建立的IR引擎,將關(guān)系數(shù)據(jù)庫中具有文本屬性的每個(gè)關(guān)系生成元組集,只有那些與某個(gè)查詢關(guān)鍵詞或者查詢關(guān)鍵詞組合相關(guān)的非空的元組集保留下來,稱為非自由元組集,每個(gè)非自由元組集都是其源表(即生成該元組集的表)的一個(gè)子集,每個(gè)非自由元組集實(shí)際上也是一個(gè)臨時(shí)表,繼承其源表的主外鍵關(guān)系。
(5)候選網(wǎng)絡(luò)生成器候選網(wǎng)絡(luò)生成器利用元組集生成器生成的非自由元組集擴(kuò)展模式圖,形成元組集圖,然后對該元組集圖進(jìn)行擴(kuò)展,生成結(jié)點(diǎn)不超過預(yù)定最大允許結(jié)點(diǎn)數(shù)的候選網(wǎng)絡(luò)。所謂候選網(wǎng)絡(luò),也稱元組集連接樹,也是可以看做是要用來產(chǎn)生關(guān)鍵詞查詢潛在結(jié)果的JOIN表達(dá)式。
(6)候選網(wǎng)絡(luò)執(zhí)行器候選網(wǎng)絡(luò)執(zhí)行器完全執(zhí)行所有候選網(wǎng)絡(luò)得到全部結(jié)果,或者采用某種top-k算法執(zhí)行候選網(wǎng)絡(luò),以得到top-k查詢結(jié)果。
四、查詢處理
系統(tǒng)啟動(dòng)時(shí),首先會生成數(shù)據(jù)庫模式圖,這個(gè)過程非常短,然后系統(tǒng)接收到用戶提交的查詢關(guān)鍵詞。當(dāng)用戶提交查詢關(guān)鍵詞時(shí),元組集生成器利用IR引擎生成元組集,然后,候選網(wǎng)絡(luò)產(chǎn)生器利用非自由元組集擴(kuò)展Gs生成元組集圖,廣度優(yōu)先遍歷元組集圖生成候選網(wǎng)絡(luò),最后,候選網(wǎng)絡(luò)執(zhí)行器執(zhí)行全部候選網(wǎng)絡(luò)?;蛘卟捎媚撤Ntop-k查詢算法執(zhí)行候選網(wǎng)絡(luò),生成最終查詢結(jié)果返回給用戶。通過介紹SDSG系統(tǒng),可以發(fā)現(xiàn)SDSG系統(tǒng)存在的優(yōu)點(diǎn):數(shù)據(jù)庫模式圖占用內(nèi)存少;缺點(diǎn):候選網(wǎng)絡(luò)產(chǎn)生器執(zhí)行效率低、候選網(wǎng)絡(luò)執(zhí)行效率低、缺少語義查詢。
參考文獻(xiàn)
[1] 施伯樂,丁寶康,汪衛(wèi).數(shù)據(jù)庫系統(tǒng)教程.第二版.高等教育出版社,2003:1-359
2)德克薩斯大學(xué)的Sunitha Ramanujam提出了“Bi-directional Translation of Relational Data into Virtual RDF Stores”[5],即關(guān)系數(shù)據(jù)和RDF間的雙向轉(zhuǎn)換,并在D2R的基礎(chǔ)上開發(fā)了工具D2RQ++。
3)中科院國家科學(xué)圖書館成都分館的Shihan Yang等人提出“半自動(dòng)化地從關(guān)系數(shù)據(jù)庫中構(gòu)建本體”,文中提出了利用中間件來實(shí)現(xiàn)關(guān)系數(shù)據(jù)庫到本體轉(zhuǎn)化的方法,并且提出了W-graph的中間件語言,W-graph映射語義使用與關(guān)系數(shù)據(jù)庫和本體都無關(guān)的雙向模擬等價(jià)圖表示。中間件模式是動(dòng)態(tài)的,當(dāng)數(shù)據(jù)庫模式或本體頻繁變化時(shí),該方法因此有很好的適應(yīng)性。此方法不僅可以處理數(shù)據(jù)庫模式而且也可以處理數(shù)據(jù)庫中存儲的實(shí)例。圖形語義編輯工具的開發(fā),提高了方法的可用性。
4)許卓明提出 “一種從關(guān)系數(shù)據(jù)庫學(xué)習(xí)OWL本體的方法”,開發(fā)出了關(guān)系數(shù)據(jù)庫模式到OWL本體轉(zhuǎn)換原型工具DB2WO,并給出了實(shí)例驗(yàn)證。該研究首先給出了關(guān)系數(shù)據(jù)庫模式和OWL本體的定義,其次定義了關(guān)系數(shù)據(jù)庫模式到OWL本體的一組映射規(guī)則,然后開發(fā)了轉(zhuǎn)換工具DB2WO。關(guān)系數(shù)據(jù)庫模式信息通過讀取關(guān)系數(shù)據(jù)庫字典來提取。
5)陳和平等人提出“基于關(guān)系數(shù)據(jù)庫的本體生成器的設(shè)計(jì)與實(shí)現(xiàn)”[6] 。該研究中首先指出需要解決的2個(gè)關(guān)鍵問題:(1)如何提取關(guān)系數(shù)據(jù)庫的ER模式(2)如何定義由ER模式到OWL本體的映射規(guī)則。然后給出ER模式的提取一般可以通過查詢該關(guān)系數(shù)據(jù)庫的數(shù)據(jù)字典或應(yīng)用數(shù)據(jù)庫的逆向工程工具,接著給出了ER模式到OWL本體的10多條轉(zhuǎn)化規(guī)則。最后,給出了本體生成器OWLFROMDB的功能模塊結(jié)構(gòu)圖,并給出了實(shí)例驗(yàn)證。
6)中國人民理工大學(xué)的Peng Liu等人在2010第九屆國際網(wǎng)格和云計(jì)算會議提出“基于關(guān)系數(shù)據(jù)庫的本體自動(dòng)構(gòu)建”[7]。其思想跟前述許卓明、陳和平等一致:通過分析關(guān)系數(shù)據(jù)庫模式,建立一系列的從關(guān)系數(shù)據(jù)模式到OWL的轉(zhuǎn)換規(guī)則,然后給出了算法和流程圖,最后給出了生成的本體的層次圖。
7)W3C成立了 RDB2RDF研究組,致力于提供一個(gè)從關(guān)系數(shù)據(jù)庫RDB到本體描述語言RDF的規(guī)范性的映射標(biāo)準(zhǔn),到目前為止,該研究小組提出了幾個(gè)關(guān)于RDB到RDF映射語言的內(nèi)部草稿,還未成為標(biāo)準(zhǔn)。
3 研究瓶頸及建議
現(xiàn)在,基于關(guān)系數(shù)據(jù)庫生成本體的研究已經(jīng)引起越來越多研究者的興趣?;舅悸窡o非是從關(guān)系數(shù)據(jù)庫中提取出數(shù)據(jù)模式,然后設(shè)定數(shù)據(jù)模式轉(zhuǎn)化為本體的規(guī)則,然后編程實(shí)現(xiàn)。每個(gè)研究人員都提出了自己的轉(zhuǎn)化規(guī)則,而并沒有人對規(guī)則的可行性給出評價(jià)結(jié)果。至今,尚未有研究者或機(jī)構(gòu)給出權(quán)威的轉(zhuǎn)換規(guī)則。轉(zhuǎn)換規(guī)則的可行性和合理性應(yīng)該是未來研究的重點(diǎn)。
4 結(jié)束語
利用關(guān)系數(shù)據(jù)庫中結(jié)構(gòu)化的數(shù)據(jù)作為數(shù)據(jù)源來構(gòu)建本體的方法,已經(jīng)引起了眾多研究人員的重視,而隨著W3C的介入, 必將使這種轉(zhuǎn)換規(guī)范化。
參考文獻(xiàn):
[1] /RDF[EB/OL].
[2] /TR/owl-features[EB/OL].
[3] Du Xiaoyong, Li Man, Wang Shan. A Survey on Ontology Learning Research[J] .Journal of Software, 2006,17(9): 1837-1847.
[4] Sunitha Ramanujam ,VaibhavKhadilkar.Bi-directional Translation of Relational Data into Virtual RDF Stores[C].2010 IEEE Fourth International Conference on Semantic Computing,2010,61:268-276.
關(guān)鍵詞:關(guān)系數(shù)據(jù)庫 關(guān)鍵詞查詢 數(shù)據(jù)庫索引
1 系統(tǒng)總體設(shè)計(jì)
人們在求解一個(gè)復(fù)雜問題時(shí),通常采用的是逐步分解、分而治之的方法。也就是把一個(gè)大問題分解成若干個(gè)比較容易求解的小問題,然后分別求解。設(shè)計(jì)一個(gè)復(fù)雜的系統(tǒng)時(shí),往往也是把整個(gè)系統(tǒng)劃分為若干個(gè)功能較為單一的功能模塊,然后分別予以設(shè)計(jì)、實(shí)現(xiàn),這就是模塊化設(shè)計(jì)。本系統(tǒng)也采用這種模塊化設(shè)計(jì)方式。
■
圖1 面向關(guān)系數(shù)據(jù)庫關(guān)鍵字查詢系統(tǒng)框圖
2 數(shù)據(jù)庫設(shè)計(jì)
本系統(tǒng)為面向關(guān)系數(shù)據(jù)庫的關(guān)鍵字查詢系統(tǒng),在實(shí)驗(yàn)中本文選取了IMDB 數(shù)據(jù)集,為了進(jìn)行實(shí)驗(yàn),將數(shù)據(jù)集整理為以下七個(gè)表數(shù)據(jù)結(jié)構(gòu)。
實(shí)驗(yàn)數(shù)據(jù)集(電影信息數(shù)據(jù)庫):
create table Actor( //演員表
actorname varchar(50) Primary Key ; //演員姓名key
sex varchar(2); //性別
mvname varchar(50); //出演電影或電視劇名
mvyear varchar(10); //電影上映時(shí)間
mvactorname varchar(10); //電影中人物姓名
position varchar(20); //電影中人物排名
made varchar(10); //TV 或是Video
setname varchar(50); //出演電視劇集名
episode varchar(10); //出演電視劇集
date varchar(10); //電視劇播出日期
classification varchar(30); //(achieve football)
)
creat table Consume( //設(shè)計(jì)師
consumename varchar(20) Primary Key; //設(shè)計(jì)師姓名key
mvname varchar(20); //電影名或電視劇名
mvyear varchar(10); //上映日期
setname varchar(20); //電視劇集名
episode varchar(10); //電視劇集
productiondate varchar(10); //電視劇播放日期
classification varchar(30); //(as M...)
made varchar(10); ///(V/TV/uncredited)
)
creat table Director( //導(dǎo)演信息
directorname varchar(20) Primary Key; //導(dǎo)演姓名key
mvname varchar(20); //電影或電視劇名
mvyear varchar(10); //上映日期
setname varchar(20); //電視劇集名
episode varchar(20); //電視劇集
made varchar(10); //(V/TV/VG)
explantaion varchar(30); //(as M...)
)
creat table Business( //投資
mvname varchar(20) Primary Key; //電影名key
productiondate varchar(20); //拍攝日期
company varchar(50); //出品公司
studiodate varchar(50); //上映日期
masterpiece varchar(1000);///OW
budget varchar(20); //預(yù)算
ad varchar(50); ///AD
general_revenue varchar(20); //收入
wg varchar(50); //WG
)
editorname varchar(20) Primary Key; //編輯名
mvname varchar(20); //電影或電視劇名key
mvyear varchar(10); //上映日期
made varchar(10); //(V/TV/video)
setname varchar(20); //電視劇集名key
episode varchar(20); //電視劇集key
explantaion varchar(30); //(as M...)
)
creat table Color { //顏色信息
mvname varchar(20); //電影或電視劇名key
mvyear varchar(10); //上映日期
setname varchar(20); //電視劇集名key
episode varchar(20); //電視劇集key
color varchar(20); //顏色分類color或black and white
explantaion varchar(10); //顏色分類之后的()中有(HD)等,(HD)是高清
Primary Key(mvname,setname,episode);
}
creat table Keyword( //關(guān)鍵詞
mvname varchar(20); //電影或電視劇名key
mvyear varchar(10); //上映日期
setname varchar(20); //電視劇集名key
episode varchar(10); //電視劇集key
keyword varchar(50); //關(guān)鍵詞
Primary Key(mvname,setname,episode);
)
3 數(shù)據(jù)庫索引設(shè)計(jì)
由于關(guān)系型數(shù)據(jù)庫對于文本屬性上全文索引的支持,所以在文本屬性可以直接利用數(shù)據(jù)庫中的全文索引。對于給定的關(guān)鍵字k,全文索引能檢索出查詢關(guān)鍵字所在位置。
對于數(shù)據(jù)庫中的表屬性,構(gòu)建索引的方式比較簡單,依賴于DBMS的IR索引。對于數(shù)據(jù)庫中具有文本屬性的列,在該列上建立全文索引。在進(jìn)行關(guān)鍵字查詢時(shí),對于給定的關(guān)鍵字,通過數(shù)據(jù)庫的全文索引,會返回包含該關(guān)鍵字的元組集合。
在進(jìn)行關(guān)鍵字查詢的時(shí)候,對于用戶給定查詢關(guān)鍵字,系統(tǒng)首先要對給定的關(guān)鍵字進(jìn)行定位,確定關(guān)鍵字所匹配的信息是模式項(xiàng)還是數(shù)值項(xiàng)。
例如,關(guān)鍵字{“Color”“Director”}的索引結(jié)構(gòu)如表1所示。
表1 關(guān)鍵字{“Color”“Director”}的索引結(jié)構(gòu)
■
4 關(guān)鍵字檢索設(shè)計(jì)
在搜索引擎行業(yè),所謂關(guān)鍵字,就是用戶在使用搜索引擎時(shí)輸入的、能夠最大程度概括用戶所要查找的信息內(nèi)容的字或者詞,是信息的概括化和集中化。關(guān)鍵字檢索作為一種易于使用的檢索方式,為大量普通用戶所喜愛。本文從關(guān)鍵字個(gè)數(shù)角度介紹現(xiàn)有的關(guān)鍵字檢索技術(shù)中最常見的單關(guān)鍵字查詢和多關(guān)鍵字查詢這兩種關(guān)鍵字檢索形式。
5 結(jié)果生成設(shè)計(jì)
在本文中,將查詢結(jié)果定義為元組連接樹。
元組連接樹(Joined Tuple Tree)是給定一個(gè)數(shù)據(jù)庫模式圖GS,一個(gè)元組連接樹T是一棵元組樹。其中,T中的每一條邊(ti,tj)(ti∈Ri,tj∈Rj)滿足以下兩個(gè)要求:
①(Ri,Rj)∈RS,
②ti∞tj∈Ri∞Rj。
同時(shí)這些元組連接樹滿足以下條件:
①完整性:用戶提交的所有關(guān)鍵字均出現(xiàn)在元組連接樹上;
②最小性:從元組連接樹中移除任何元組后的元組連接樹都不具有完整性。
6 結(jié)束語
通過分析相關(guān)檢索系統(tǒng)的實(shí)現(xiàn)策略,設(shè)計(jì)了支持關(guān)鍵字檢索的系統(tǒng)架構(gòu)和核心構(gòu)成組件,主要包括數(shù)據(jù)庫索引、數(shù)據(jù)庫模式圖、關(guān)鍵字檢索和結(jié)果生成。
參考文獻(xiàn):
中圖分類號:TP391
文獻(xiàn)標(biāo)識碼:A 文章編號:16727800(2014)002012703
0引言
工作流是公文流轉(zhuǎn)系統(tǒng)的重要組成部分,不同于一般概念上的工作流,公文流轉(zhuǎn)中的工作流具有自身特點(diǎn)和要求。本文提出的公文工作流模型基于關(guān)系數(shù)據(jù)庫,降低了業(yè)務(wù)系統(tǒng)與公文流轉(zhuǎn)系統(tǒng)集成的復(fù)雜度,減輕了復(fù)雜工作流引擎帶來的系統(tǒng)負(fù)擔(dān),使公文流轉(zhuǎn)系統(tǒng)能夠適應(yīng)不同的公文業(yè)務(wù)需求。
1工作流技術(shù)
通常把工作中具有固定程序的活動(dòng)集合叫做工作流。它把工作活動(dòng)細(xì)分成定義良好的角色、任務(wù)、過程和規(guī)則來完成工作的監(jiān)控和執(zhí)行,從而提高了工作效率和生產(chǎn)組織水平。國際工作流管理聯(lián)盟(Workflow Management Coalition,WFMC)對工作流的概念進(jìn)行了定義[1]:工作流是指在計(jì)算機(jī)支持下的整個(gè)或部分經(jīng)營過程的全自動(dòng)或半自動(dòng)化。通常,工作流由計(jì)算機(jī)軟件系統(tǒng)控制其執(zhí)行。它包括一組活動(dòng)以及活動(dòng)之間的順序關(guān)系、一系列過程和對每個(gè)活動(dòng)的具體描述以及活動(dòng)的啟動(dòng)和終止條件。通過分離應(yīng)用邏輯和過程邏輯,可以在只修改過程模型而不修改具體功能的前提下改變系統(tǒng)功能,實(shí)現(xiàn)對生產(chǎn)經(jīng)營過程部分或全部的自動(dòng)化管理,合理、有效地把人、應(yīng)用和信息組織在一起,實(shí)現(xiàn)了“在合理的時(shí)間把適當(dāng)?shù)男畔鬟f給正確的人”的要求。
2公文流轉(zhuǎn)工作流
2.1公文流轉(zhuǎn)工作流定義
WMFC 給工作流做出了如下定義: 按照事先定義好的規(guī)則,文檔、任務(wù)或者信息在參與者之間進(jìn)行傳遞,從而完成整個(gè)業(yè)務(wù)過程的自動(dòng)化處理。依據(jù)公文流轉(zhuǎn)的特點(diǎn),公文流轉(zhuǎn)中的工作流包括如下4 個(gè)要素: 多人參與、同一個(gè)業(yè)務(wù)目標(biāo)、每個(gè)參與者通過動(dòng)作來完成自己的任務(wù)、按照一定的順序和規(guī)則傳遞。公文流轉(zhuǎn)通過多個(gè)參與者完成的一系列任務(wù)達(dá)到業(yè)務(wù)目標(biāo)。由工作流的要素可知,在定義公文流轉(zhuǎn)中的工作流時(shí)應(yīng)考慮以下5方面定義:傳遞的公文文檔定義、角色定義、活動(dòng)定義、路線定義和事件定義。下面用一個(gè)公文流轉(zhuǎn)過程來描述和定義公文流轉(zhuǎn)中的工作流 [2],如圖1 所示。
(1)活動(dòng)節(jié)點(diǎn):實(shí)際上代表了組成一個(gè)實(shí)際過程所需要的任務(wù),包括不可分割的原子級任務(wù)和套嵌的公文工作流過程。公文工作流主要依靠流轉(zhuǎn)過程中各個(gè)節(jié)點(diǎn)的實(shí)現(xiàn)來達(dá)到公文流轉(zhuǎn)的目的。
(2)事件節(jié)點(diǎn):主要是用于確認(rèn)流程是否推動(dòng),如果滿足條件則流程繼續(xù),否則繼續(xù)等待。
(3)控制節(jié)點(diǎn):用于控制相鄰活動(dòng)節(jié)點(diǎn)的先序關(guān)系??刂茥l件一般在活動(dòng)中定義,由繼續(xù)流轉(zhuǎn)條件、停止流轉(zhuǎn)條件、退改條件組成。繼續(xù)流轉(zhuǎn)條件表示進(jìn)入這個(gè)活動(dòng),是這個(gè)活動(dòng)被激活的前提或準(zhǔn)備條件;退改條件表示如果活動(dòng)沒有滿足某個(gè)特定條件,則重復(fù)執(zhí)行,一直到滿足繼續(xù)流轉(zhuǎn)條件為止。
2.2公文流轉(zhuǎn)工作流分析
2.2.1公文流轉(zhuǎn)工作流程
按照公文流轉(zhuǎn)中節(jié)點(diǎn)處理的時(shí)間先后順序,可以把工作流程分為串行和并行兩類。串行流程中所有節(jié)點(diǎn)呈“一”字型排列,后一個(gè)節(jié)點(diǎn)的啟動(dòng)時(shí)間為前一個(gè)節(jié)點(diǎn)的完成時(shí)間;并行流程中兩個(gè)或者兩個(gè)以上節(jié)點(diǎn)并排排列,節(jié)點(diǎn)可在同一時(shí)刻工作。典型的串行流程和并行流程如圖2(a)和圖2(b)所示。
一般情況下,并行流程和串行流程的各種不同組合構(gòu)成一個(gè)復(fù)雜的公文流程,如圖2(c)所示。
2.2.2公文流轉(zhuǎn)并行工作流程
傳統(tǒng)意義上的紙制公文只有一份,在同一時(shí)間只能交給一個(gè)人來處理,因此不會有流程分支的情況。公文電子化后,突破了紙制公文只有一份的限制,使流程分支成為可能。但是,公文系統(tǒng)業(yè)務(wù)要求保留每個(gè)處理過程的修改痕跡,如果將同一份電子文檔交給多人同時(shí)修改,不僅會造成文檔修改時(shí)的邏輯混亂,也會帶來文檔的存取問題。同一時(shí)間一份文檔只能交給一個(gè)人處理和修改,某一用戶處理和修改文檔時(shí),文檔是被鎖的,其它用戶要使用此文檔,必須等到該用戶處理完畢。針對以上問題,本文提出了文檔版本的思想來實(shí)現(xiàn)公文流轉(zhuǎn)中的并行工作。
用戶A對公文擬稿后,點(diǎn)擊提交按鈕,進(jìn)入公文流轉(zhuǎn)流程,流程流轉(zhuǎn)到步驟2。此時(shí),系統(tǒng)自動(dòng)在工作流表中插入一條記錄,F(xiàn)LOW_STATE狀態(tài)為1,表示流程正在流轉(zhuǎn),公文電子文檔被保存到公文文檔表中。同時(shí)在工作流步驟表中插入步驟1和步驟2兩條記錄:步驟1為文件起草,F(xiàn)LOWSTEPS_STATE為2,表示公文已處理;步驟2為B處理過程,F(xiàn)LOWSTEPS_STATE為1,表示公文待處理。在工作流人員表中插入對應(yīng)步驟1和步驟2的兩條記錄:步驟1的執(zhí)行者為A,F(xiàn)LOWPERSON_OPTION字段為提交;步驟2的執(zhí)行者為B, FLOWPERSON_OPTION字段為未知,表示還未處理。在工作流事件表中插入步驟1的執(zhí)行事件,事件為提交。流程流轉(zhuǎn)到步驟2后,B用戶可選擇的事件有同意、退還、否決。如果B用戶同意,則流程進(jìn)入步驟3,在工作流步驟表中插入步驟3的記錄,同時(shí)把步驟2的狀態(tài)改為2,步驟3的狀態(tài)標(biāo)為1。在工作流人員表中插入步驟3的執(zhí)行者記錄為C,同時(shí)更改B的FLOWPERSON_OOPTION為提交。如果用戶B退還,則流程回到步驟1,同時(shí)刪除步驟1后的所有記錄,把步驟1的狀態(tài)改為1,表示公文待處理。如果用戶B否決,則流程終止流轉(zhuǎn),并把公文流轉(zhuǎn)表中的FLOW_STATE改為終止。
4.2同一任務(wù)多人處理策略
在同一任務(wù)多人處理流程中,一個(gè)任務(wù)可能需要多個(gè)執(zhí)行者參與,沒有明確的先后順序(即并行流程)。某任務(wù)的多人處理流程如圖6所示。
用戶A對公文擬稿后,點(diǎn)擊提交按鈕,進(jìn)入公文流轉(zhuǎn)流程,流程流轉(zhuǎn)到步驟2。此時(shí)判斷出步驟2的任務(wù)為兩個(gè)人處理,在工作流人員表中對應(yīng)于步驟2插入兩條記錄,執(zhí)行者分別為B和C,同時(shí)生成文檔版本b和文檔版本c,存入公文文檔表,分別由FLOW_ID、FLOWSTEPD_ID和FLOWPERSONS_ID三個(gè)字段進(jìn)行約束。待用戶B和C都提交后,流程流轉(zhuǎn)到步驟3。 D用戶綜合B和C的修改意見,生成版本d。
4.3系統(tǒng)實(shí)現(xiàn)
本文采用以上技術(shù),研制開發(fā)了一套以公文流轉(zhuǎn)為核心的辦公自動(dòng)化系統(tǒng)。該系統(tǒng)基于B/S結(jié)構(gòu),以IIS 為Web服務(wù)器。系統(tǒng)的開發(fā)平臺為ASP. NET,關(guān)系數(shù)據(jù)庫為Oracle9i,通過數(shù)據(jù)模型實(shí)現(xiàn)對數(shù)據(jù)庫的訪問。系統(tǒng)界面如圖7 所示。
5結(jié)語
本文提出了一種基于關(guān)系數(shù)據(jù)庫的公文流轉(zhuǎn)系統(tǒng)實(shí)現(xiàn)方法,采用與其它業(yè)務(wù)系統(tǒng)相一致的主流數(shù)據(jù)庫將工作流及公文數(shù)據(jù)存儲在結(jié)構(gòu)開放的關(guān)系數(shù)據(jù)庫中,大大降低了公文流轉(zhuǎn)系統(tǒng)與其它業(yè)務(wù)系統(tǒng)集成的復(fù)雜度,同時(shí)減輕了復(fù)雜工作流引擎帶給系統(tǒng)的負(fù)擔(dān)。
參考文獻(xiàn):