国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

氣象自動觀測集成平臺數(shù)據(jù)庫設(shè)計

2018-11-26 09:33闕艷紅吳冬麗李文雅朱東紅單大龍郭麗李炎朋
電腦知識與技術(shù) 2018年24期
關(guān)鍵詞:數(shù)據(jù)庫

闕艷紅 吳冬麗 李文雅 朱東紅 單大龍 郭麗 李炎朋

摘要:氣象自動觀測集成平臺數(shù)據(jù)庫需要兼容多種觀測業(yè)務的數(shù)據(jù),針對該觀測要素數(shù)據(jù)種類繁多、類型多樣、結(jié)構(gòu)復雜、數(shù)據(jù)量大的問題,以及數(shù)據(jù)庫架構(gòu)需要兼具可用性高、并發(fā)量大、擴展性強的特點,分析了幾種常用的數(shù)據(jù)庫高可用高并發(fā)架構(gòu)方案,提出了一種適用于平臺數(shù)據(jù)庫的分布式部署、垂直分區(qū)和水平分區(qū)相結(jié)合的架構(gòu)方案,并根據(jù)需求分析按照規(guī)范化的自下而上逐步細化的設(shè)計方法進行了數(shù)據(jù)庫表的設(shè)計,實現(xiàn)了平臺數(shù)據(jù)庫高可用、高并發(fā)、可擴展的目標。

關(guān)鍵詞:數(shù)據(jù)庫;高可用;高并發(fā);可擴展

中圖分類號:TP311 文獻標識碼:A 文章編號:1009-3044(2018)24-0004-03

Abstract:The meteorological automatic observation integration platform database needs to be compatible with data from a variety of observing services, and there are many kinds of observation element data, various types, complex structures, and large data volumes. And the database architecture needs to have the characteristics of high availability, large concurrent volume, and strong scalability. This paper analyzes several commonly used database high-availability and high-concurrency architecture solutions, and proposes an architecture solution that combines distributed deployment, vertical partitioning, and horizontal partitioning for the platform database. According to the requirement analysis, the database tables are designed in accordance with the standardized bottom-up design method, and the platform database is highly available, highly concurrent, and extensible. Several commonly-used database high-availability and high-concurrency architectures are analyzed. The solution proposes an architecture solution that combines distributed deployment, vertical partitioning, and horizontal partitioning for the platform database.

Key words:Data Base; High availability; High concurrency; Scalable

1 引言

氣象自動觀測集成平臺是為了解決不同廠家、不同設(shè)備協(xié)議適配,觀測要素多元化、業(yè)務定制化的問題而開發(fā)的一套平臺軟件。該平臺利用統(tǒng)一設(shè)計的RESTful API數(shù)據(jù)接口,實現(xiàn)在軟件邏輯層面上的觀測業(yè)務可定制,通過敏捷開發(fā)方式,構(gòu)建通信模塊類庫,統(tǒng)一數(shù)據(jù)交換格式,解決不同設(shè)備與平臺接口的協(xié)議適配。實現(xiàn)專業(yè)氣象領(lǐng)域同級觀測業(yè)務集約化運行的目標。

氣象自動觀測集成平臺收集多種觀測業(yè)務的所有觀測要素數(shù)據(jù),種類繁多、結(jié)構(gòu)復雜,且數(shù)據(jù)量大,因此,數(shù)據(jù)庫的邏輯結(jié)構(gòu)設(shè)計可靠安全與否,關(guān)系到平臺能否穩(wěn)定運行的重要環(huán)節(jié)。本文重點介紹了該平臺數(shù)據(jù)庫的需求分析、設(shè)計思路及設(shè)計方法,分析了幾種常用的數(shù)據(jù)庫高可用高并發(fā)方案,按照規(guī)范化的方法進行數(shù)據(jù)庫設(shè)計,滿足平臺需求的同時對數(shù)據(jù)庫性能進行了優(yōu)化提升[1]。

2 需求分析

氣象自動觀測集成平臺是一個涉及流動數(shù)據(jù)種類多樣,數(shù)目眾多的系統(tǒng)。不同的觀測業(yè)務所觀測的要素不同,涉及的各種狀態(tài)數(shù)據(jù)也不同。觀測設(shè)備采集要素數(shù)據(jù)上傳至數(shù)據(jù)收集系統(tǒng),接收到數(shù)據(jù)進行初加工后,發(fā)送至消息中間件,數(shù)據(jù)處理入庫系統(tǒng)從消息中間件中讀取消息,解析處理入庫,用戶通過瀏覽器或手機客戶端,瀏覽數(shù)據(jù)或發(fā)送指令。具體數(shù)據(jù)流程如圖1所示。

針對中心數(shù)據(jù)庫,具體功能需求分析如下:

(1) 對接入的監(jiān)測站點管理。包括監(jiān)測站點添加,查詢,刪除,修改。以及對監(jiān)測站點的參數(shù)信息設(shè)置等操作。

(2) 對所有觀測業(yè)務涉及的設(shè)備信息的管理。

(3) 對不同觀測業(yè)務涉及的觀測要素管理。包括觀測業(yè)務對應觀測要素的添加,查詢,刪除,修改。以及觀測業(yè)務所包含的接口及命令的管理。

(4) 對各種觀測要素數(shù)據(jù)的管理。包括來自不同觀測業(yè)務的不同觀測要素數(shù)據(jù)的添加、刪除等操作。

(5) 對各種狀態(tài)數(shù)據(jù)的管理。包括各種觀測業(yè)務所包含的各種狀態(tài)信息的添加、刪除、查詢、修改。

(6) 對注冊用戶的檔案管理。包括用戶信息的查詢、添加等。以及用戶操作日志的添加、查詢等。

(7) 對用戶角色權(quán)限的管理。包括用戶角色的權(quán)限添加、刪除等。

(8) 對用戶及管理員所有操作的日志記錄。

性能需求分析如下:

(1) 高可用。當數(shù)據(jù)存儲主服務器發(fā)生宕機時,可在短時間內(nèi)業(yè)務恢復正常數(shù)據(jù)存取。

(2) 高并發(fā)。數(shù)據(jù)庫存儲服務器支持5000以上的站點每分鐘存儲數(shù)據(jù),支持200以上的用戶并發(fā)讀取數(shù)據(jù),并在5秒內(nèi)做出響應。

(3) 可擴展。表結(jié)構(gòu)可擴展:當觀測業(yè)務增加或觀測要素增加時,能夠在不改變原有數(shù)據(jù)庫表結(jié)構(gòu)的同時,兼容新的業(yè)務或新的觀測要素存取;庫結(jié)構(gòu)可擴展:當原有的數(shù)據(jù)庫已不能滿足性能需求時,可進行庫拆分或表拆分。

2 方案設(shè)計

2.1 數(shù)據(jù)庫表設(shè)計

在之前的業(yè)務軟件數(shù)據(jù)庫設(shè)計中,一個觀測業(yè)務對應一個數(shù)據(jù)庫,且數(shù)據(jù)庫間表大量重復,既不方便數(shù)據(jù)庫擴展,也不利于數(shù)據(jù)應用。因此在該平臺的設(shè)計中,應盡量減少重復,方便應用且易于擴展,提高服務效率。依據(jù)平臺適用環(huán)境兼容性的特點,采用ORACLE數(shù)據(jù)庫作為本平臺的數(shù)據(jù)庫管理系統(tǒng)。根據(jù)需求分析,本平臺采用自下而上逐步細化的設(shè)計方式[2],將現(xiàn)實中的用戶、站點、設(shè)備、觀測數(shù)據(jù)、狀態(tài)信息等具體實物抽象為概念模型,生成E-R圖(如圖2所示),通過將概念模型調(diào)整優(yōu)化形成邏輯結(jié)構(gòu)模型,最終形成表結(jié)構(gòu)設(shè)計模型[3]。針對本平臺的數(shù)據(jù)庫表兼具擴展性的結(jié)構(gòu)特點,設(shè)計思路是分別建立觀測業(yè)務(表1)和觀測要素字典表(表2),觀測業(yè)務字典表包含所有該平臺可以接入的業(yè)務,當增加新的觀測業(yè)務時,在該字典表添加新的業(yè)務屬性。觀測要素字典表包含所有業(yè)務觀測的要素名稱。例如風向,風速,地溫,氣溫,氣濕等,如表3所示。每一種觀測要素單獨建表,另外建立觀測業(yè)務與觀測要素之間的關(guān)聯(lián)關(guān)系表,且保證該映射關(guān)系的唯一性。當平臺增加觀測業(yè)務時,只需從各個觀測要素數(shù)據(jù)表中選取觀測要素屬性進行組合寫入關(guān)聯(lián)表中(表4),關(guān)聯(lián)表中每一條記錄表示某種觀測業(yè)務下?lián)碛械挠^測要素信息(存儲時的字段名)和觀測要素的存儲位置信息(字段隸屬的表名),關(guān)聯(lián)關(guān)系以JSON字符串形式存儲在數(shù)據(jù)表中。該數(shù)據(jù)表設(shè)計思路既能滿足業(yè)務和要素的可擴展性,又能實現(xiàn)觀測業(yè)務間的松耦合。

另外,該數(shù)據(jù)庫各觀測要素表的設(shè)計避免了外鍵關(guān)聯(lián),使得表之間相對獨立,使得后續(xù)的分庫分表變得簡單,為數(shù)據(jù)庫分區(qū)提供基礎(chǔ)。

2.2 數(shù)據(jù)庫性能設(shè)計

根據(jù)平臺性能要求,高可用性是指服務的連續(xù)性,首先保證數(shù)據(jù)不丟失,其次確保不停機,使Oracle數(shù)據(jù)庫一直維持在正常的運行狀態(tài),避免停機給客戶帶來損失。高并發(fā)性是指提高多用戶訪問數(shù)據(jù)庫時的響應速度。因此高可用和高并發(fā)的最終目的是避免單點服務和提高資源響應效率。目前一般企業(yè)常用的方法主要有負載均衡(RAC)、分布式部署、垂直分區(qū)和水平分區(qū)。

負載均衡(RAC)是一種屬于雙機互備并行模式的高可用架構(gòu),即兩個服務器之間是一種并行運行的關(guān)系,當一臺機器出現(xiàn)問題,請求會自動轉(zhuǎn)發(fā)到另一臺機器,沒有任何一臺機器作為備用機一直不被使用,避免了雙機熱備模式下的備用機長期不被使用資源浪費的情況。RAC同樣也應用于集群中,集群最大的優(yōu)勢在于它的高可用性,通過使用RAC在一定程度上避免因為硬件或軟件故障引起的數(shù)據(jù)丟失和非計劃停機,并相對減少或排除計劃停機時間。因此,RAC的高可用主要體現(xiàn)兩點:一是實現(xiàn)負載均衡,二是故障切換[4]。

分布式部署是指數(shù)據(jù)庫服務器分別部署在不同的機器上,一主多從,主從復制,讀寫分離。Oracle的主從復制可以采用DataGuard技術(shù),DataGuard是Oracle數(shù)據(jù)庫自帶的數(shù)據(jù)同步功能,基本原理是將日志文件從主數(shù)據(jù)庫傳輸?shù)絺浞輸?shù)據(jù)庫,然后在備份數(shù)據(jù)庫上讀取這些日志文件,從而使備份數(shù)據(jù)庫與主數(shù)據(jù)庫保持同步。讀寫分離一般是指將業(yè)務模式上的分離,用戶服務執(zhí)行寫操作時訪問主庫,執(zhí)行讀操作時訪問備份數(shù)據(jù)庫,該模式大多適用于讀遠大于寫的場景[5]。

在主從部署的數(shù)據(jù)庫中,當寫操作占據(jù)資源50%左右份額的時候,就需要進行數(shù)據(jù)庫垂直分區(qū)。最簡單的垂直分區(qū)方式是將原來的數(shù)據(jù)庫中獨立的業(yè)務進行分拆,且分拆的部分與其他業(yè)務沒有關(guān)聯(lián)關(guān)系,分拆出的業(yè)務表單獨建庫。另外,將一個大的數(shù)據(jù)庫分成多個小的數(shù)據(jù)庫可提高查詢的性能,因為每個數(shù)據(jù)庫分區(qū)擁有自己的一小部分數(shù)據(jù),實現(xiàn)查詢的可擴展性。

水平分區(qū)是指將同一個數(shù)據(jù)庫表中的記錄通過特定的算法進行分離,分別保存在不同的數(shù)據(jù)庫表中,從而可以部署在不同的數(shù)據(jù)庫服務器上。水平分區(qū)不依賴什么特定的技術(shù),完全是邏輯層面的規(guī)劃,是經(jīng)驗和業(yè)務的細分,常用的分區(qū)方式有余數(shù)分區(qū)和映射關(guān)系分區(qū)。水平分區(qū)主要解決數(shù)據(jù)庫數(shù)據(jù)量大的問題,在數(shù)據(jù)庫單庫容量無法滿足系統(tǒng)要求時,可采用水平分區(qū)[6]。

綜上所述,根據(jù)平臺的實際應用情況,隨著觀測業(yè)務量的增加,數(shù)據(jù)庫單表容量越來越大的特點,采用分布式部署,垂直分區(qū)和水平分區(qū)相結(jié)合的架構(gòu)設(shè)計。

3 數(shù)據(jù)庫優(yōu)化設(shè)計

隨著觀測業(yè)務量和觀測要素的累加,數(shù)據(jù)庫資源占用空間越來越大,為了保證業(yè)務查詢效率的穩(wěn)定可靠[7],針對本平臺數(shù)據(jù)庫從以下幾點進行優(yōu)化:(1)使用Redis緩存。Redis是一個可以提供內(nèi)存和永久數(shù)據(jù)存儲的鍵值數(shù)據(jù)存儲系統(tǒng),也就是在內(nèi)存中存儲的數(shù)據(jù)備份,由于從內(nèi)存中讀取數(shù)據(jù)的速度要比從數(shù)據(jù)庫直接讀取快得多,所以當數(shù)據(jù)沒有發(fā)生本質(zhì)變化的時候,為避免數(shù)據(jù)的查詢操作直接連接數(shù)據(jù)庫,通過內(nèi)存中的緩存內(nèi)容讀取數(shù)據(jù),降低數(shù)據(jù)庫的讀寫次數(shù),從而提高查詢效率。(2)重點業(yè)務表分區(qū)。可以將觀測業(yè)務中的重點數(shù)據(jù)表分區(qū),表進行分區(qū)后,邏輯上表仍然是一張完整的表,只是將表中的數(shù)據(jù)在物理上存放到多個表空間(物理文件),這樣查詢數(shù)據(jù)時,不至于每次都掃描整張表,提高了查詢效率。(3)數(shù)據(jù)訪問優(yōu)化。SQL語句的優(yōu)化首先是盡最大力度降低系統(tǒng)對全表掃描的次數(shù),因此,應建立優(yōu)化數(shù)據(jù)庫索引,在對寫操作無影響的情況下,提升查詢的效率。同時,在查詢時,應減少影響查詢效率的操作,如DISTINCT、UNION等關(guān)鍵字[8]。

4 結(jié)論

綜上所述,本文首先根據(jù)平臺需求對數(shù)據(jù)庫的功能需求和性能需求進行了分析,其次對數(shù)據(jù)庫表進行了設(shè)計,以及根據(jù)性能要求,對高可用高并發(fā)方案進行了分析,最后對數(shù)據(jù)庫的優(yōu)化進行了幾點建議。最終設(shè)計并實現(xiàn)了氣象自動觀測集成平臺數(shù)據(jù)庫。另外,針對目前使用的ORACLE數(shù)據(jù)庫,也可以在后期考慮向當前流行的開源數(shù)據(jù)庫遷移,充分利用開源數(shù)據(jù)庫可定制化的特點,實現(xiàn)平臺應用的靈活多變、自由可擴展,當然這也是下一階段所研究的目標。

參考文獻:

[1] 蔡金芷.個人健康管理系統(tǒng)數(shù)據(jù)庫的設(shè)計與實現(xiàn)[J]. 計算機測量與控制, 2017,25(7):222-224.

[2] Control C, Morris S ,Database systems:design,implementation,& management[M]. Cengage Learning,2016.

[3] 包麗穎,孫秀秀,郁亞娟,等.農(nóng)業(yè)面源污染基礎(chǔ)信息數(shù)據(jù)庫的設(shè)計與實現(xiàn)[J].環(huán)境污染與防治,2014,36(2):96-99.

[4] 吳飛. Oracle Rac到開源數(shù)據(jù)庫演進方案的設(shè)計[J]. 自動化技術(shù)與應用, 2017,36(4):34-38.

[5] 吳尚,王萍,等.使用Oracle Active Data Guard 實現(xiàn)PMS2.0數(shù)據(jù)庫讀寫分離初探[J], 無線互聯(lián)科技, 2018.5:43-53.

[6] 陳炎龍,段紅玉,等.一種分布式數(shù)據(jù)庫查詢優(yōu)化算法的研究[J]. 科技通報, 2017(2):86-89.

[7] 楊瑩.基于Oracle數(shù)據(jù)庫大數(shù)據(jù)的檢索優(yōu)化分析與設(shè)計[J].數(shù)碼世界,2017(4):31-32.

[8] 陳洪偉.漫談ORACLE數(shù)據(jù)庫優(yōu)化設(shè)計方案[J],電腦迷,2016(5):51-52.

【通聯(lián)編輯:王力】

猜你喜歡
數(shù)據(jù)庫
超星數(shù)據(jù)庫錄入證
本刊加入數(shù)據(jù)庫的聲明
兩種新的非確定數(shù)據(jù)庫上的Top-K查詢
國外數(shù)據(jù)庫高被引論文排行TOP10
國內(nèi)主要期刊數(shù)據(jù)庫
奈曼旗| 常宁市| 永顺县| 渝中区| 新野县| 永登县| 双辽市| 永泰县| 达孜县| 长岭县| 福建省| 宁海县| 威海市| 邻水| 华坪县| 师宗县| 桑日县| 黑水县| 若尔盖县| 长沙县| 从化市| 广南县| 微山县| 肇东市| 三台县| 阜平县| 九龙坡区| 雷州市| 南江县| 朔州市| 邹城市| 丰原市| 栖霞市| 嘉禾县| 南江县| 康马县| 镇坪县| 磐石市| 星子县| 定南县| 凉城县|