楊進(jìn)釗(唐山工業(yè)職業(yè)技術(shù)學(xué)院,河北 唐山 063299)
?
學(xué)校應(yīng)用系統(tǒng)數(shù)據(jù)庫設(shè)計研究
楊進(jìn)釗
(唐山工業(yè)職業(yè)技術(shù)學(xué)院,河北 唐山 063299)
摘 要:學(xué)校數(shù)據(jù)庫系統(tǒng)是學(xué)校業(yè)務(wù)應(yīng)用的核心組件,它的設(shè)計至關(guān)重要。為了保障數(shù)據(jù)庫系統(tǒng)經(jīng)濟(jì)、高效、可靠的運(yùn)行,要盡量減少數(shù)據(jù)庫類型和數(shù)據(jù)庫實例。在目前大多數(shù)數(shù)據(jù)中心采用了虛擬化技術(shù)之后,以O(shè)racle為例,從數(shù)據(jù)庫性能和數(shù)據(jù)庫集群部署方式兩方面闡述應(yīng)如何設(shè)計。
關(guān)鍵詞:Oracle數(shù)據(jù)庫;性能;集群部署方式
學(xué)校數(shù)據(jù)庫系統(tǒng)(例如Oracle、DB2、SQLServer)是學(xué)校業(yè)務(wù)應(yīng)用的核心組件,數(shù)據(jù)庫中存放著很多業(yè)務(wù)數(shù)據(jù),而數(shù)據(jù)是學(xué)校的重要資產(chǎn),所以保障數(shù)據(jù)庫系統(tǒng)經(jīng)濟(jì)、高效、可靠的運(yùn)行至關(guān)重要。
然而在傳統(tǒng)信息化建設(shè)的時候,絕大部分都是采取每個應(yīng)用系統(tǒng)對應(yīng)一個專有的數(shù)據(jù)庫,并且不同的應(yīng)用有針對自己的一系列的數(shù)據(jù)庫的需求,從而導(dǎo)致不同類型、不同版本、不同補(bǔ)丁的數(shù)據(jù)庫以及不同的維護(hù)流程;從而使許多應(yīng)用都擁有自己獨自的數(shù)據(jù)庫甚至獨立的服務(wù)器和存儲。這帶來成本的上升,以及其它一系列的問題出現(xiàn),例如數(shù)據(jù)庫維護(hù)復(fù)雜化。下面就根據(jù)工作實踐,發(fā)表個人見解,供同仁參考。
現(xiàn)在學(xué)校絕大部分應(yīng)用運(yùn)行在服務(wù)器上,服務(wù)器的利用率不高,可以通過服務(wù)器虛擬化技術(shù)進(jìn)行整合,解決服務(wù)器利用率低下、硬件基礎(chǔ)設(shè)施運(yùn)維麻煩、耗電、占地空間大等一系列問題,并且能夠在虛擬化技術(shù)的支撐下很方便的創(chuàng)建出開發(fā)測試環(huán)境,從而使應(yīng)用系統(tǒng)能夠更快、更方便地進(jìn)行測試。
對于數(shù)據(jù)庫系統(tǒng)來說,不同類型、不同版本、不同補(bǔ)丁的數(shù)據(jù)庫以及不同的維護(hù)流程,給管理者帶來很大麻煩,所以我們要轉(zhuǎn)變思想,即減少數(shù)據(jù)庫類型和減少數(shù)據(jù)庫實例的數(shù)量。
1.1 減少數(shù)據(jù)庫類型
與應(yīng)用提供商溝通,根據(jù)業(yè)務(wù)需求由提供商在他們產(chǎn)品的基礎(chǔ)上進(jìn)行二次開發(fā)。這樣就由提供商來確定數(shù)據(jù)庫類型(例如選擇Oracle/DB2/SQL Server/MySQL),但是我們可以決定他們使用的數(shù)據(jù)庫版本。
對于上級單位下發(fā)的應(yīng)用,應(yīng)用數(shù)據(jù)庫類型雖不可變,但我們可以決定他們使用的數(shù)據(jù)庫版本。由學(xué)校自己開發(fā)或外包給應(yīng)用開發(fā)商進(jìn)行開發(fā)的應(yīng)用,我們可完全決定使用數(shù)據(jù)庫的類型和版本。
雖說一個學(xué)校的信息化建設(shè)所依賴的數(shù)據(jù)庫系統(tǒng)采用一個數(shù)據(jù)庫的某個版本(例如Oracle Database 11G R2)是一種非常好的情況,但很多情況下會受到各方面的影響,只采用一個數(shù)據(jù)庫的某個版本可能不大現(xiàn)實。所以我們設(shè)定以下幾個基本原則:
1)對于商用的數(shù)據(jù)庫:我們只選擇主流的商用數(shù)據(jù)庫(Oracle、DB2、SQL Server),根據(jù)學(xué)校的現(xiàn)實情況,例如我們只選擇Oracle Database 11g R2某個穩(wěn)定合適的補(bǔ)丁版本,不要出現(xiàn)數(shù)據(jù)庫是同一個類型但各個數(shù)據(jù)庫的小版本不一樣。
如果新的應(yīng)用開發(fā)需要用到新版本數(shù)據(jù)庫的特定功能,則新的應(yīng)用可以使用新版本的數(shù)據(jù)庫,例如Oracle Database 12c。
如果我們的數(shù)據(jù)庫運(yùn)行很穩(wěn)定,盡量不要對數(shù)據(jù)庫進(jìn)行升級。
2)對于開源的數(shù)據(jù)庫:我們建議只選擇現(xiàn)在最成熟、最流行的MySQL 數(shù)據(jù)庫的某個合適版本。
3)操作系統(tǒng)的選擇:數(shù)據(jù)庫運(yùn)行在Linux操作系統(tǒng)上,除非一些情況必須選擇其它操作系統(tǒng)。
通過上面的闡述,業(yè)務(wù)應(yīng)用系統(tǒng)所依賴的數(shù)據(jù)庫從不同類型、不同版本的情況下進(jìn)行相應(yīng)的統(tǒng)一,對運(yùn)維管理有很大的意義。
1.2 減少數(shù)據(jù)庫實例
數(shù)據(jù)庫實例數(shù)過多,對數(shù)據(jù)庫的管理、備份/恢復(fù)、優(yōu)化等還是比較麻煩的。所以我們需要進(jìn)行進(jìn)一步的優(yōu)化。
在理想情況下,只建設(shè)一個高可靠、高性能的數(shù)據(jù)庫集群系統(tǒng)來支撐所有業(yè)務(wù)應(yīng)用系統(tǒng)是最好的。但考慮到現(xiàn)實應(yīng)用架構(gòu)體系的設(shè)計和相應(yīng)的其它管控等因素,這樣做是不現(xiàn)實的。
對于一個大類業(yè)務(wù)應(yīng)用系統(tǒng),如果不涉及安全管控等因素,則各個業(yè)務(wù)應(yīng)用系統(tǒng)共享一個數(shù)據(jù)庫集群。
如果在一個大類業(yè)務(wù)能力的各個業(yè)務(wù)應(yīng)用系統(tǒng)中還存在相應(yīng)的安全管控因素的話,則繼續(xù)進(jìn)行相應(yīng)的拆分,但是必須要控制住實例數(shù)目。
1.3 對整個虛擬硬件基礎(chǔ)設(shè)施和數(shù)據(jù)庫做好監(jiān)控
業(yè)務(wù)應(yīng)用系統(tǒng)可靠、高性能的運(yùn)行是業(yè)務(wù)運(yùn)營成功的保證,而保障這些需要一個完善的覆蓋虛擬資源(計算、存儲、網(wǎng)絡(luò))、數(shù)據(jù)庫、中間件的端到端的監(jiān)控解決方案,從而可以及時的發(fā)現(xiàn)問題和警告、修正問題、從而讓系統(tǒng)可靠、高性能的運(yùn)行。我們必然建立統(tǒng)一監(jiān)控解決方案來進(jìn)行支撐,從而可以實時故障排除。
以O(shè)racle 數(shù)據(jù)庫、虛擬化軟件以(Vmware)為例,對其它數(shù)據(jù)庫(例如DB2等)也具有參考意義。
2.1 Oracle 數(shù)據(jù)庫性能等方面的設(shè)計規(guī)范
對于SQL 語句以及對應(yīng)數(shù)據(jù)庫的設(shè)計(例如索引、表分區(qū)等),如果SQL語句和相應(yīng)的數(shù)據(jù)庫設(shè)計實現(xiàn)的質(zhì)量很高的話,它所體現(xiàn)出來的性能很有可能比一個比較差的SQL語句和相應(yīng)的數(shù)據(jù)庫設(shè)計會高一個數(shù)量級別,并且還會帶來對CPU、內(nèi)存、I/O的要求也降低從而可以讓系統(tǒng)可以承受更多的工作負(fù)載。SQL 語句非常關(guān)鍵,但是相應(yīng)的Oracle數(shù)據(jù)庫方面的設(shè)計也非常關(guān)鍵。
2.1.1 操作系統(tǒng)方面
Oracle 數(shù)據(jù)庫依賴于操作系統(tǒng),所以對于操作系統(tǒng)來說就會有相應(yīng)的很多要求,由于操作系統(tǒng)運(yùn)行在VM中,這樣的話間接對VM也具有相應(yīng)的要求。
1)對于Guest OS 啟用 Large Memory Pages for Hypervisor and Guest Operating System。
2)啟用打開硬件輔助虛擬化功能(Hardware-Assisted Virtualization)。
3)打開NUMA,并對NUMA進(jìn)行設(shè)置。
4)特定場景下啟用Latency-Sensitivity Feature
5)關(guān)系型數(shù)據(jù)庫安裝到VM中會具有相應(yīng)的VMDK文件,然而數(shù)據(jù)庫的數(shù)據(jù)和日志是采用VMDK還是RDM? 現(xiàn)在建議采用VMDK,并且必須使用“半虛擬化 SCSI HBA”機(jī)制,不能使用缺省值。對于分配給VM的內(nèi)存,設(shè)置Reservation。
操作系統(tǒng)調(diào)優(yōu)需要以下步驟:
1)在操作系統(tǒng)中啟用Large Memory Pages支持
3)調(diào)整系統(tǒng)內(nèi)核參數(shù)
4)限制Oracle 用戶資源
2.1.2 Oracle數(shù)據(jù)庫方面
Oracle數(shù)據(jù)庫方面的一些優(yōu)化設(shè)計規(guī)則非常關(guān)鍵,經(jīng)過相應(yīng)的優(yōu)化讓物理的I/O次數(shù)、隨機(jī)I/ O的次數(shù)越少越好,因為數(shù)據(jù)庫的瓶頸永遠(yuǎn)在I/O,我們需要借助其它機(jī)制來減少。
1)Oracle 數(shù)據(jù)庫相應(yīng)的參數(shù)調(diào)優(yōu),例如SGA、PGA、Shared Pool、Database Buffer Cache等等方面。
2)Oracle 數(shù)據(jù)庫的信息采集。當(dāng)Oracle 數(shù)據(jù)庫性能出現(xiàn)問題時,要進(jìn)行正取的數(shù)據(jù)采集,建議峰值期間按照15分鐘為周期塊進(jìn)行采集。
2.1.3 Oracle 數(shù)據(jù)庫的物理結(jié)構(gòu)設(shè)計方面
Oracle數(shù)據(jù)庫的物理結(jié)構(gòu)對性能產(chǎn)生比較大的影響的關(guān)鍵點是Data Files和Redo Log Files。
一般情況下,大多數(shù)Oracle 沒有數(shù)據(jù)庫性能訴求或者訴求不高,并且都指望依賴存儲設(shè)備來解決。存儲設(shè)備的高性能很重要,但是數(shù)據(jù)庫的設(shè)計更重要,應(yīng)該是由數(shù)據(jù)庫的設(shè)計來決定存儲設(shè)備的設(shè)計和規(guī)劃。
在本實驗教學(xué)中,教師先創(chuàng)設(shè)情境,展示過氧化氫溶液,提出問題:“在哪些條件下可以加快過氧化氫分解?”以問題引導(dǎo)學(xué)生回憶其分解過程,調(diào)動已有知識基礎(chǔ),思考、分析并得出結(jié)論:過氧化氫在加熱、加入催化劑FeCl3溶液和過氧化酶時均能加快分解,且不同條件下分解速率不同。由此明確實驗課題——比較過氧化氫在不同條件下的分解速率。
1)啟用Oracle數(shù)據(jù)庫中自動存儲管理功能ASM。
2)Data Files(數(shù)據(jù))和Redo Log Files(日志)的I/O必須分離,即分配給Redo Log Files、Data Files的磁盤必須是不同的。
3)Redo Log Files(日志文件)的要求:建議給Redo Log Files分配SSD,并且做RAID1+0(條帶化、鏡像、可恢復(fù)), 啟用歸檔模式Archivclog。
4)Data Files(數(shù)據(jù))的要求:建議給Data Files 分配HDD,并且做RAID5,在一些情況下也可以使用存儲設(shè)備提供的SSD+HDD的混合陣列功能以加速數(shù)據(jù)I/O。
一定要把數(shù)據(jù)(Data)表空間和索引(Index)表空間給分開對應(yīng)不同的RAID5磁盤組,也就意味著在數(shù)據(jù)庫中必須至少要有兩個表空間,一個是數(shù)據(jù)表空間來存儲表的業(yè)務(wù)數(shù)據(jù),一個是索引表空間來存儲索引數(shù)據(jù)。
合適的索引設(shè)計:根據(jù)監(jiān)控所發(fā)現(xiàn)的執(zhí)行比較慢的SQL語句以及執(zhí)行頻率非常高的SQL語句,需要分析這些SQL語句的執(zhí)行計劃,從而決定出建設(shè)什么合適的索引,不是索引越多約好,而是根據(jù)實際建設(shè)合適的索引才是最好。
數(shù)據(jù)碎片重組和降低高水位線:在數(shù)據(jù)庫運(yùn)行較長時間后,必然出現(xiàn)相應(yīng)的碎片以及高水位線(HWM)會較高,這將大大降低數(shù)據(jù)庫的查詢性能。
對超大型表進(jìn)行分區(qū)以提升高性能和可用性:Oracle的分區(qū)技術(shù)(Partitioning Option)是一種處理超大型表的技術(shù)。分區(qū)是一種“分而治之”的技術(shù),通過將大表和索引分成可以管理的小塊,從而避免了對每個表作為一個大的、單獨的對象進(jìn)行管理,為大量數(shù)據(jù)提供了可伸縮的性能。分區(qū)通過將操作分配給更小的存儲單元,減少了需要進(jìn)行管理操作的時間,并通過增強(qiáng)的并行處理提高了性能。通過屏蔽故障數(shù)據(jù)的分區(qū),還增加了可用性。
2.1.4 Oracle 數(shù)據(jù)庫的安全方面
通過減少數(shù)據(jù)庫實例數(shù)目的整合后,不可能給各個應(yīng)用系統(tǒng)提供Oracle數(shù)據(jù)庫的超級用戶權(quán)限或者DBA權(quán)限的,所以需要根據(jù)應(yīng)用系統(tǒng)的不同需求提供合適的權(quán)限。
2.1.5 Oracle 數(shù)據(jù)庫的備份方面
數(shù)據(jù)庫的備份至關(guān)重要,我們一定要做好數(shù)據(jù)庫備份,以避免以外發(fā)生時可以挽回重大損失,甚至實現(xiàn)災(zāi)備。
2.2 Oracle 數(shù)據(jù)庫集群部署方式的設(shè)計規(guī)范建議
實現(xiàn)一個高可靠、高性能的數(shù)據(jù)庫集群一般可以采取以下三種方式:
2.2.1 HA方式
即通過相應(yīng)的HA軟件或者vSphere HA機(jī)制以實現(xiàn)數(shù)據(jù)庫的高可用性,保證數(shù)據(jù)庫運(yùn)行的服務(wù)器/OS出現(xiàn)意外時,備機(jī)可以接管。
2.2.2 Active DataGuard方式
通過Oracle 數(shù)據(jù)庫的Active DataGuard方式可以實現(xiàn)數(shù)據(jù)庫的高可用性,以及相應(yīng)的讀寫分離機(jī)制以提高性能。甚至可以采用Active DataGuard實現(xiàn)數(shù)據(jù)庫的容災(zāi)。
2.2.3 RAC方式
通過采用RAC集群機(jī)制(利用多臺機(jī)器),從而實現(xiàn)數(shù)據(jù)庫的高可靠性和高性能。
本文以O(shè)racle數(shù)據(jù)庫為例,在設(shè)計思路上盡量減少數(shù)據(jù)庫類型和實例。在現(xiàn)實應(yīng)用過程中要考慮在虛擬化環(huán)境下,數(shù)據(jù)庫的性能優(yōu)化及集群部署方式。這樣才能使數(shù)據(jù)庫系統(tǒng)經(jīng)濟(jì)、高效、可靠的運(yùn)行。該方案在學(xué)校信息化建設(shè)過程中建設(shè)應(yīng)用系統(tǒng)數(shù)據(jù)庫有所幫助。
【參考文獻(xiàn)】
[1]何坤源.構(gòu)建高可用VMware vSphere 5.X虛擬化架構(gòu)[M].北京:人民郵電出版社,2014:56-70,86.
[2]侯松.高并發(fā)oracle數(shù)據(jù)庫系統(tǒng)的架構(gòu)與設(shè)計[M].北京:機(jī)械工業(yè)出版社,2014:319-366.
[3]饒冰,裴征峰,高文博.Oracle云管理平臺——企業(yè)管理器12c實戰(zhàn)指南[M].北京:清華大學(xué)出版社,2013: 102-203.
[4]楊傳輝.大規(guī)模分布式存儲系統(tǒng):原理解析與架構(gòu)實戰(zhàn)[M].北京.機(jī)械工業(yè)出版社,2013:96-204.
[5]王春海.VMware vSphere企業(yè)運(yùn)維實戰(zhàn)[M].北京:人民郵電出版社,2014:38-70,96.
[6](巴西)Gustavo A.A.Santana.數(shù)據(jù)中心虛擬化技術(shù)權(quán)威指南[M].張其光,袁強(qiáng),薛潤忠,譯.北京:人民郵電出版社,2015:323-364.
The Research on College Applied System Database Design
YANG Jingzhao
(Tangshan Polytechnic College, Tangshan 063299, China)
Abstract:College database system is the core component of college office work, which plays a vital role in college operation.In order to keep its high efficiency and stability, database should reduce its types and examples.Nowadays most database center use virtual technology.This article will set an example of Oracle to illustrate how to design the database.Two ways will be discussed: database property and way of cluster distribution.
Key words:Oracle database;property;way of cluster distribution
作者簡介:楊進(jìn)釗(1973-),男,河北唐山人,高級講師,信息網(wǎng)絡(luò)技術(shù)中心副主任,主研方向為網(wǎng)絡(luò)技術(shù)。
收稿日期:2015-11-30
中圖分類號:TP315
文獻(xiàn)標(biāo)識碼:B
文章編號:1674-943X(2016)01-0013-03