任會民,楊旭輝,劉憲紅,劉飛
?
關(guān)于混凝土行業(yè)MongoDB數(shù)據(jù)庫應(yīng)用的研究
任會民,楊旭輝,劉憲紅,劉飛
(中建商品混凝土有限公司,湖北 武漢 430074)
隨著移動互聯(lián)網(wǎng)、云計算、大數(shù)據(jù)、物聯(lián)網(wǎng)等信息技術(shù)的廣泛應(yīng)用,混凝土行業(yè)信息系統(tǒng)使用的數(shù)據(jù)庫也有了更多的選擇。MongoDB是當(dāng)前比較流行的NoSQL數(shù)據(jù)庫之一。很多情況下,MongoDB數(shù)據(jù)庫可用于替代混凝土行業(yè)傳統(tǒng)的關(guān)系型數(shù)據(jù)庫。為了提高混凝土行業(yè)的管理水平,針對混凝土企業(yè)常見的業(yè)務(wù),結(jié)合MongoDB數(shù)據(jù)庫的特點,對MongoDB數(shù)據(jù)庫進(jìn)行了研究,并分析出MongoDB數(shù)據(jù)庫在混凝土行業(yè)適用的場景。MongoDB數(shù)據(jù)庫適用于大多數(shù)混凝土企業(yè)。
互聯(lián)網(wǎng);混凝土;MongoDB數(shù)據(jù)庫;分布式架構(gòu)
在互聯(lián)網(wǎng)時代,我們的社會結(jié)構(gòu)、生活方式、工作場景、思維范式等都呈現(xiàn)出全新的特點,一切傳統(tǒng)的思維和習(xí)慣都面臨著重塑?;炷疗髽I(yè)正加緊向“互聯(lián)網(wǎng)+”轉(zhuǎn)型,業(yè)務(wù)電商化、管理智能化、產(chǎn)業(yè)鏈生態(tài)化等成為混凝土市場新的主力場。
混凝土行業(yè)需要使用新的信息技術(shù)來滿足互聯(lián)網(wǎng)+的需求。MongoDB是最近流行的NoSql數(shù)據(jù)庫中的一種,MongDB數(shù)據(jù)庫的存儲方式、查詢方法、架構(gòu)、數(shù)據(jù)處理方式等特點,在混凝土行業(yè)使用可以起到更好的效果。
NoSQL(NoSQL=Not Only SQL),即“不僅僅是SQL”。
NoSQL,指的是非關(guān)系型的數(shù)據(jù)庫。NoSQL有時被稱為Not Only SQL的縮寫,它是與傳統(tǒng)關(guān)系數(shù)據(jù)庫不同的數(shù)據(jù)庫管理系統(tǒng)的通用術(shù)語。NoSQL用于超大規(guī)模數(shù)據(jù)的存儲。例如,谷歌或Facebook每天為其用戶收集數(shù)萬億比特的數(shù)據(jù)。這些類型的數(shù)據(jù)存儲不需要固定模式,并且可以橫向擴(kuò)展。NoSQL這個術(shù)語最早出現(xiàn)于1998年,是一個由Carlo Strozzi開發(fā)的輕量級、開源、非SQL啟用的關(guān)系數(shù)據(jù)庫。NoSQL最常見的解釋是“非關(guān)聯(lián)”,強(qiáng)調(diào)Key-Value Stores和文檔數(shù)據(jù)庫的優(yōu)勢[1]。
MongoDB是一個基于分布式文件存儲的數(shù)據(jù)庫,屬于非關(guān)系數(shù)據(jù)庫,用C++語言編寫而成,旨在為Web應(yīng)用程序提供可擴(kuò)展的高性能數(shù)據(jù)存儲解決方案。
MongoDB是一個高性能、開源、無模式的文檔數(shù)據(jù)庫,是比較流行的NoSql數(shù)據(jù)庫之一。MongoDB是處于關(guān)系數(shù)據(jù)庫和非關(guān)系數(shù)據(jù)庫之間的產(chǎn)品。他支持的數(shù)據(jù)結(jié)構(gòu)非常寬松,類似于Json的Bjson格式,因此它可以存儲更復(fù)雜的數(shù)據(jù)類型[2]。
MongoDB的最大特點是支持的查詢語言功能非常強(qiáng)大,其語法有些類似于面向?qū)ο蟮牟樵冋Z言。幾乎所有單表查詢的功能(如關(guān)系數(shù)據(jù)庫)都可以實現(xiàn),并且還支持?jǐn)?shù)據(jù)索引。MongoDB服務(wù)器在Linux、Windows或Mac OS X平臺上運(yùn)行,并支持32位和64位應(yīng)用程序。建議在64位平臺上運(yùn)行,因為MongoDB在32位模式下運(yùn)行時支持的最大文件大小為2 GB。
MongoDB具有高性能、易于部署和使用、用戶可以輕松存儲數(shù)據(jù)等優(yōu)點。主要功能特性有:①對于集合存儲,很容易存儲對象類型的數(shù)據(jù);②模式自由;③支持動態(tài)查詢;④支持完全索引,包含內(nèi)部對象;⑤支持查詢;⑥支持復(fù)制和故障恢復(fù);⑦使用高效的二進(jìn)制數(shù)據(jù)存儲,包括大對象(如視頻);⑧自動處理碎片以支持云計算層次結(jié)構(gòu)的可伸縮性;⑨支持RUBY、PYTHON、JAVA、C++、PHP、C#等多種語言;⑩文件存儲格式為BSON(一種JSON的擴(kuò)展);?可通過網(wǎng)絡(luò)訪問。
國外的應(yīng)用案例很多,在MongoDB的官網(wǎng)上有詳細(xì)說明,涉及金融、傳統(tǒng)等各類行業(yè),下面主要來說一下國內(nèi)的案例。
奇虎360技術(shù)有限公司是大家非常熟悉的病毒軟件防護(hù)公司,同時為網(wǎng)絡(luò)以及移動平臺提供產(chǎn)品。2011年起,奇虎360成為MongoDB的用戶,至今奇虎已經(jīng)在MongoDB上構(gòu)建了100多個不同的應(yīng)用,其中包括新服務(wù)以及從傳統(tǒng)數(shù)據(jù)庫Mysql上遷移過來的服務(wù)。每天都會在MongoDB上運(yùn)行超過1 000多個實例,并且支持200億次查詢。
中國東方航空2015開始開發(fā)全新航空電商系統(tǒng),選用了可橫向擴(kuò)展的NoSQL數(shù)據(jù)庫MongoDB。預(yù)估將來要能承載一天10億次數(shù)據(jù)查詢。東方航空開始先評估了Oracle關(guān)聯(lián)式數(shù)據(jù)庫。
東方航空航班數(shù)據(jù)庫每秒鐘都要接收幾百筆的數(shù)據(jù)更新,數(shù)據(jù)來自中國全球分銷系統(tǒng)GDS,航班數(shù)據(jù)一有變更就需要馬上同步,整個過程必須經(jīng)過查詢、比較、計算以及插入等動作,他們評估的Oracle數(shù)據(jù)庫顯然無法加載,因此他們選擇了MongoDB數(shù)據(jù)庫。
攜程國際機(jī)票數(shù)據(jù)的緩存數(shù)據(jù),從Redis上遷移到MongoDB數(shù)據(jù)庫上后,可以緩存數(shù)百億條國際機(jī)票查詢記錄,并能夠做到實時處理高并發(fā)的增刪改查。遷移完成之后,數(shù)據(jù)準(zhǔn)確度提高了20%,速度提高80%.
MongoDB在高德得到廣泛應(yīng)用,AOS、云圖、收藏夾等業(yè)務(wù)都使用了MongoDB數(shù)據(jù)庫,考慮到schema free、開發(fā)成本低以及高可用等特性,結(jié)合高德的發(fā)展需要,高德選擇了MongoDB。
根據(jù)MongoDB數(shù)據(jù)庫的特點,MongoDB適合以下場景:數(shù)據(jù)量大、讀寫次數(shù)高、需求多變、數(shù)據(jù)模型無法確認(rèn),需要對接多個數(shù)據(jù)源等。結(jié)合混凝土行業(yè)特征,MongoDB可用于下列范圍。
MongoDB數(shù)據(jù)庫適合需求多變的ERP系統(tǒng)設(shè)計。在經(jīng)濟(jì)新常態(tài)下,隨著國家和地方的經(jīng)濟(jì)轉(zhuǎn)型升級和結(jié)構(gòu)調(diào)整,預(yù)拌混凝土行業(yè)的經(jīng)營環(huán)境和市場形勢都發(fā)生著劇烈變化,特別是信息技術(shù)與互聯(lián)網(wǎng)技術(shù)的創(chuàng)新和應(yīng)用,對預(yù)拌混凝土企業(yè)的傳統(tǒng)商業(yè)模式、經(jīng)營方式、管理手段等方面,都提出了更大的挑戰(zhàn)?;炷列袠I(yè)為了順應(yīng)、把握和引領(lǐng)新時勢下的經(jīng)營與發(fā)展,進(jìn)行了大量的探索和實踐,特別是在精細(xì)化改革與建設(shè)方面,投入很大精力,開展了一系列攻堅工作。精細(xì)化改革離不開信息化手段的支撐,混凝土行業(yè)ERP需要隨著行業(yè)大環(huán)境適時進(jìn)行調(diào)整、優(yōu)化,MongoDB數(shù)據(jù)庫結(jié)構(gòu)靈活,表結(jié)構(gòu)更改比較自由,適合混凝土行業(yè)ERP系統(tǒng)設(shè)計。
MongoDB數(shù)據(jù)庫適用于存儲大容量混凝土生產(chǎn)消耗數(shù)據(jù)。材料消耗是混凝土企業(yè)的主要成本之一,混凝土ERP系統(tǒng)中需要對消耗數(shù)據(jù)進(jìn)行采集、存儲、分析?;炷料囊员P次為單位,區(qū)分不同的貨倉材料,平均1車混凝土3~4盤,12種不同的貨倉材料,按1個中型廠站,月產(chǎn)量3×104m3,僅僅消耗一項,1個月約產(chǎn)生14.4萬條數(shù)據(jù),長久以往,將產(chǎn)生數(shù)百萬級的數(shù)據(jù),對系統(tǒng)造成較大的壓力,增加維護(hù)難度。可以將消耗存儲與ERP系統(tǒng)主數(shù)據(jù)庫分開,單獨存放于MongoDB數(shù)據(jù)庫中,MongoDB非常適合實時查詢、修改、新增,它具有網(wǎng)站實時數(shù)據(jù)存儲所需的可重復(fù)性和高靈活性,適用于具體生產(chǎn)消費(fèi)數(shù)據(jù)的存儲[4]。
MongoDB適合多個系統(tǒng)之間數(shù)據(jù)對接?;炷翑嚢枵敬嬖贓RP、工業(yè)控制系統(tǒng)、質(zhì)量管理系統(tǒng)、磅房稱重系統(tǒng)等多種信息系統(tǒng)。多個系統(tǒng)之間可以采用webservice、WCF等技術(shù)進(jìn)行數(shù)據(jù)對接。MongoDB以文檔方式進(jìn)行數(shù)據(jù)存儲,文檔以BSON格式存在,這是一種JSON類文檔的二進(jìn)制編碼格式,該結(jié)構(gòu)類似于嵌套的鍵值對,每個文檔都有唯一的標(biāo)識符。MongoDB可以支持豐富的查詢表達(dá)式、可以方便使用webservice技術(shù)在各個系統(tǒng)之間進(jìn)行數(shù)據(jù)對接。
MongoDB可以存儲系統(tǒng)日志、配置信息。影響混凝土攪拌站管理的因素有:①混凝土攪拌站工控的品牌較多,有思偉、中建機(jī)械、三和、三一等多種品牌;②每個地區(qū)的實際情況不一樣,如環(huán)保等,有的地區(qū)有特殊要求;③每個區(qū)域公司會根據(jù)自身發(fā)展情況制定不同的管理要求等?;炷列畔⑾到y(tǒng)設(shè)計時需要考慮通用性,在系統(tǒng)前臺增加響應(yīng)功能,并根據(jù)不同情況進(jìn)行配置,滿足通用性的要求。由于其高性能,MongoDB適合作為信息系統(tǒng)的緩存層。
混凝土對生產(chǎn)實時性要求較高,并要求信息系統(tǒng)有較高的穩(wěn)定性,一旦出現(xiàn)故障,要求能快速排查,迅速解決問題;同時,需要對后續(xù)原因進(jìn)行總結(jié)和分析,以避免后續(xù)的類似故障?;炷疗髽I(yè)內(nèi)部運(yùn)行的各類信息系統(tǒng)會產(chǎn)生大量的運(yùn)行及訪問日志,日志里會包含一些錯誤、警告及用戶行為等各類信息,通常系統(tǒng)會以文本的形式記錄日志信息,但當(dāng)產(chǎn)生大量的日志之后,要想從大量日志里挖掘出有價值的內(nèi)容,則需要對數(shù)據(jù)進(jìn)行進(jìn)一步的存儲和分析,文本方式就難以滿足要求。當(dāng)信息系統(tǒng)發(fā)生故障時,日志可以存儲在MongoDB數(shù)據(jù)庫中,這樣日志數(shù)據(jù)的價值就可以實現(xiàn)最大化,并加速問題的處理[5]。
MongoDB支持分布式文件存儲。針對混凝土行業(yè)對數(shù)據(jù)安全性要求較高、數(shù)據(jù)量較大的特點,MongoDB可以將數(shù)據(jù)同步在多個服務(wù)器。MongoDB的復(fù)制技術(shù)提供數(shù)據(jù)的冗余備份,并跨多個服務(wù)器存儲數(shù)據(jù)副本,從而提高數(shù)據(jù)可用性并確保數(shù)據(jù)安全。
MongoDB分片技術(shù)可以滿足MongoDB數(shù)據(jù)量的巨大增長。當(dāng)MongoDB存儲大量數(shù)據(jù)時,一臺機(jī)器可能不足以存儲數(shù)據(jù),并且可能不足以提供可接受的讀寫吞吐量。此時,我們可以通過在多臺機(jī)器上拆分?jǐn)?shù)據(jù)來使數(shù)據(jù)庫系統(tǒng)存儲和處理更多數(shù)據(jù)[3]。
隨著信息化技術(shù)的不斷發(fā)展,MongoDB在混凝土行業(yè)ERP系統(tǒng)數(shù)據(jù)庫設(shè)計、大容量數(shù)據(jù)存儲、分布式系統(tǒng)設(shè)計、日志存儲、配置信息存儲等方面可以發(fā)揮巨大的作用,提高混凝土行業(yè)信息化水平。
[1]陳浩.非關(guān)系型與關(guān)系型空間數(shù)據(jù)庫協(xié)同應(yīng)用探究[J].電子測試,2014(12).
[2]吳鵬,劉恒旺,丁慧君.基于本體和NoSQL的機(jī)械產(chǎn)品方案設(shè)計的知識表示與存儲研究[J].情報學(xué)報,2017(3).
[3]劉彬.分布式數(shù)據(jù)注冊中心數(shù)據(jù)分區(qū)存儲策略研究[D].成都:成都理工大學(xué),2016.
[4]金鑫.商品水泥攪拌站管理決策及控制系統(tǒng)研究[D].重慶:重慶大學(xué),2008.
[5]張迪.基于NoSQL的大規(guī)模Web日志分析系統(tǒng)的設(shè)計與實現(xiàn)[D].上海:復(fù)旦大學(xué),2013.
2095-6835(2018)20-0038-02
F426.92
A
10.15913/j.cnki.kjycx.2018.20.038
任會民(1974—),男,湖北人,本科,工程師,研究方向為信息化管理。楊旭輝(1989—),男,湖北人,本科,研究方向為信息化管理。劉憲紅(1982—),男,湖北人,本科,研究方向為信息化管理。劉飛(1992—),男,安徽人,碩士,研究方向為城市計算、現(xiàn)代電子商務(wù)。
〔編輯:嚴(yán)麗琴〕