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