張捷
(凱邁〔洛陽〕機(jī)電有限公司,河南 洛陽 471000)
基于java的分庫數(shù)據(jù)專利技術(shù)在工業(yè)離散式數(shù)據(jù)庫中的應(yīng)用
張捷
(凱邁〔洛陽〕機(jī)電有限公司,河南 洛陽471000)
分庫數(shù)據(jù)專利技術(shù)是將集中存放、管理的數(shù)據(jù)離散式存放,解決大數(shù)據(jù),減輕數(shù)據(jù)庫負(fù)載,提高系統(tǒng)響應(yīng)速度,滿足大型系統(tǒng)需求的技術(shù)之一。工業(yè)生產(chǎn)數(shù)據(jù)大多是離散式存放于各個工控機(jī)當(dāng)中,目前鮮有在集中管理工業(yè)數(shù)據(jù)方面的應(yīng)用。而分庫數(shù)據(jù)技術(shù)本著逆向思維,將原本離散的數(shù)據(jù)進(jìn)行邏輯上的集中管理,并通過相關(guān)邏輯判斷,進(jìn)行數(shù)據(jù)管理、分析與運(yùn)算,實(shí)現(xiàn)了離散式數(shù)據(jù)的統(tǒng)一管理。本論文首先就此工業(yè)數(shù)據(jù)與分庫數(shù)據(jù)技術(shù)的應(yīng)用現(xiàn)狀進(jìn)行了詳細(xì)論述,并針對性研究實(shí)現(xiàn)工業(yè)數(shù)據(jù)統(tǒng)一管理的具體方式和算法,還對該技術(shù)在工業(yè)領(lǐng)域的應(yīng)用前景作了分析。
分庫數(shù)據(jù);工業(yè)數(shù)據(jù);離散式;分布式;云存儲
隨著工業(yè)信息化程度的提升,對于網(wǎng)絡(luò)、數(shù)據(jù)庫等技術(shù)的應(yīng)用也逐漸深入。越來越多的工業(yè)軟件習(xí)慣采用Oracle、SQLServer、Mysql等數(shù)據(jù)庫進(jìn)行數(shù)據(jù)存儲,認(rèn)為一方面促使工業(yè)數(shù)據(jù)結(jié)構(gòu)化,同時(shí)也便于日后數(shù)據(jù)的管理。然而,其中也存在一定的問題。比如,多個工業(yè)數(shù)據(jù)庫中的數(shù)據(jù)如何統(tǒng)一管理。尤其是針對相同設(shè)備、數(shù)據(jù)格式相同、需要就數(shù)據(jù)進(jìn)行管理、分析與比對等等情況,這些工業(yè)設(shè)備往往都離散放置在各處,便給數(shù)據(jù)管理造成了極大的困難。
目前,一般的解決方案是利用第三方軟件或利用數(shù)據(jù)庫同步數(shù)據(jù)功能來實(shí)現(xiàn)數(shù)據(jù)同步。第三方軟件將離散式的數(shù)據(jù)集中存放在統(tǒng)一的數(shù)據(jù)庫當(dāng)中,而后再進(jìn)行相關(guān)數(shù)據(jù)處理,如syncnavigator,rsync,HASH Tree……,其所基于的思想是數(shù)據(jù)的同步、備份、高可用性等,但這往往也會并存一定的問題。最棘手的是當(dāng)工業(yè)終端數(shù)據(jù)庫的表在不斷增加的情況下,以上兩種方案均無法自動解決,仍需人工手動去變更配置程序。況且,同步后集中存放于同一服務(wù)器中的數(shù)據(jù)依然是分庫存放,沒有改變其原有架構(gòu),只是將離散的數(shù)據(jù)從物理形式上同一存放、管理而已。
此外,在大型系統(tǒng)中,數(shù)據(jù)庫中的數(shù)據(jù)量未必是可控的。在未進(jìn)行分庫分表[1]的情況下,隨時(shí)間和業(yè)務(wù)的堆積,庫中的表會愈發(fā)增多,表中的數(shù)據(jù)量也會相應(yīng)增大,難免會悄然增加數(shù)據(jù)操作、增刪改查的開銷。此外,由于無法進(jìn)行分布式部署,而一臺服務(wù)器的資源(CPU、磁盤、內(nèi)存、IO等)也是有限的,最終數(shù)據(jù)庫所能承載的數(shù)據(jù)量、數(shù)據(jù)處理能力都將遭遇瓶頸。因此,在大型數(shù)據(jù)庫中,分庫技術(shù)應(yīng)用非常廣泛。而在工業(yè)設(shè)備相對離散的情況下,傳統(tǒng)的解決方案可靠性較低,可操作性也不強(qiáng)。
隨著企業(yè)信息化的深入,企業(yè)中相關(guān)的應(yīng)用系統(tǒng)也基本已經(jīng)上線,可以利用現(xiàn)有系統(tǒng),增加工業(yè)數(shù)據(jù)管理模塊,管理相關(guān)工業(yè)級數(shù)據(jù),并進(jìn)行相關(guān)數(shù)據(jù)處理。
分庫數(shù)據(jù)專利技術(shù)基于數(shù)據(jù)的分布式管理與云存儲,在離散式數(shù)據(jù)庫[2]中的應(yīng)用屬于一種可從本源上解決離散數(shù)據(jù)集中管理的問題,旨在從邏輯上靈活地管理離散的數(shù)據(jù)庫數(shù)據(jù),降低用戶的軟件維護(hù)成本,切實(shí)提高用戶的體驗(yàn)度。它將分布式存儲的理念逆向思維使用在工業(yè)數(shù)據(jù)管理上,一定程度上也促進(jìn)了互聯(lián)網(wǎng)技術(shù)與工業(yè)技術(shù)的互相融合,有助于提高工業(yè)設(shè)備數(shù)據(jù)分析效率。
1.1 工業(yè)數(shù)據(jù)管理現(xiàn)狀
工業(yè)數(shù)據(jù)與其他領(lǐng)域數(shù)據(jù)不同,有著數(shù)據(jù)量大、結(jié)構(gòu)復(fù)雜、離散式分布等特點(diǎn)。然而,由于工業(yè)領(lǐng)域的計(jì)算機(jī)技術(shù)的遲后性,一部分工業(yè)數(shù)據(jù)往往仍采用記事本、excel等方式存儲,對數(shù)學(xué)的管理辦法無非是將數(shù)據(jù)集中存放在一處,很難進(jìn)行統(tǒng)一管理,這不僅導(dǎo)致數(shù)據(jù)沒有結(jié)構(gòu)化,更難對數(shù)據(jù)進(jìn)行系統(tǒng)的統(tǒng)計(jì)、分析和處理。隨著信息化的逐步深入,工業(yè)數(shù)據(jù)逐步采用數(shù)據(jù)庫的存儲方式,漸變式將數(shù)據(jù)結(jié)構(gòu)化[3],但這些數(shù)據(jù)仍分散存放于工業(yè)的各個設(shè)備中,不便于充分利用已有數(shù)據(jù),發(fā)揮其應(yīng)有的潛在價(jià)值。正所謂沒有統(tǒng)一的數(shù)據(jù)管理,更談不上對數(shù)據(jù)的統(tǒng)計(jì)、分析和挖掘。
部分企業(yè)在信息化的過程中已經(jīng)意識到這點(diǎn),逐步推進(jìn)采用數(shù)據(jù)庫同步、主從同步、第三方軟件等模式來解決工業(yè)數(shù)據(jù)離散式存放的問題,但使用以上解決方案均存在以下問題:
①終端設(shè)備較多,如每個終端都安裝數(shù)據(jù)同步軟件,故障點(diǎn)大量增加;
②根據(jù)終端設(shè)備的一致性,存儲在集中數(shù)據(jù)庫中需創(chuàng)建多個與之對應(yīng)的數(shù)據(jù)庫表,在集中數(shù)據(jù)庫中也是分表存儲,難以實(shí)現(xiàn)集中存儲管理的要求;
③如果終端設(shè)備的數(shù)據(jù)庫表不斷變化,相應(yīng)第三方軟件也需不斷配置,增加了管理的復(fù)雜度;
④由于終端設(shè)備數(shù)據(jù)庫較多,采購第三方軟件也是一筆不小的開支。
1.2 分庫分表的思想
分庫分表(sharding)[4],是指把一個數(shù)據(jù)庫切分成多個部分放到不同的數(shù)據(jù)庫(server)上,從而緩解單一數(shù)據(jù)庫的性能問題。對于海量數(shù)據(jù)的數(shù)據(jù)庫,如果是因?yàn)楸矶喽鴶?shù)據(jù)多,這時(shí)候適合使用垂直切分,即把關(guān)系緊密(比如同一模塊)的表切分出來放在一個server上。如果表本身并不多,而每張表的數(shù)據(jù)又非常多,這時(shí)候適合水平切分,即把表的數(shù)據(jù)按某種規(guī)則(比如按ID散列)切分到多個數(shù)據(jù)庫(server)上。
分庫分表原是為解決大數(shù)據(jù)集中存放在一處,致使硬件、網(wǎng)絡(luò)、數(shù)據(jù)庫負(fù)載過高等問題而產(chǎn)生。針對工業(yè)數(shù)據(jù)的特點(diǎn),分庫分表欲將原有已分散的數(shù)據(jù)集中管理,通過逆向思維[5]解決工業(yè)數(shù)據(jù)現(xiàn)存的問題,利用云存儲的分布式數(shù)據(jù)管理思維,從邏輯上將離散式的數(shù)據(jù)進(jìn)行統(tǒng)一管理。
隨著信息化程度的提高,企業(yè)會出現(xiàn)大量的信息系統(tǒng),在業(yè)務(wù)上、設(shè)備上、資源上……進(jìn)行相關(guān)管理,而往往與工業(yè)設(shè)備、業(yè)務(wù)相關(guān)的系統(tǒng)又不止一個,如果能基于現(xiàn)有系統(tǒng),將離散式的工業(yè)設(shè)備數(shù)據(jù)管理起來,進(jìn)行設(shè)備、設(shè)備數(shù)據(jù)的整合,即可達(dá)成即可切實(shí)提高設(shè)備使用率,深度挖掘現(xiàn)有數(shù)據(jù)的隱含信息,又能實(shí)現(xiàn)將多條數(shù)據(jù)進(jìn)行對比,從邏輯上將分布式的離散數(shù)據(jù)統(tǒng)一管理起來。
現(xiàn)有管理系統(tǒng)有90%以上都采用java編程語言,針對此現(xiàn)狀,以下將基于java語言的流行框架SpringMVC[5]提出一套工業(yè)數(shù)據(jù)集中管理解決方案。根據(jù)分庫數(shù)據(jù)庫的結(jié)構(gòu)和java語言的程序特點(diǎn),解決方案過程如圖1所示.
具體步驟如下:
①終端設(shè)備并入網(wǎng)絡(luò)
圖1 離散數(shù)據(jù)庫采用分庫技術(shù)過程
終端設(shè)備基于TCP/IP技術(shù)[6](安裝了TCP/IP協(xié)議),網(wǎng)線接口需遵循RJ45,RJ45是10BASE-T網(wǎng)絡(luò)標(biāo)準(zhǔn)中的接口形式,已被廣泛使用,其內(nèi)部有8個線槽,線槽含義遵循EIA/TIA 568國際標(biāo)準(zhǔn)[7],在10BASE-T網(wǎng)絡(luò)中1、2線為發(fā)送線,3、6線為接收線。在雙機(jī)進(jìn)行連接的時(shí)候,其中的1、3、2、6線需要對調(diào)。采用A類或B類雙絞線并入企業(yè)局域網(wǎng)或互聯(lián)網(wǎng),在網(wǎng)卡中配置相應(yīng)的網(wǎng)絡(luò)IP,以使現(xiàn)有管理系統(tǒng)與終端設(shè)備進(jìn)行通信。
②終端設(shè)備數(shù)據(jù)庫準(zhǔn)備
在數(shù)據(jù)庫中,往往會配置多個用戶,每個用戶不同的相應(yīng)權(quán)限來對數(shù)據(jù)庫系統(tǒng)進(jìn)行管理?,F(xiàn)有的管理系統(tǒng)若需訪問終端數(shù)據(jù)庫,將離散的數(shù)據(jù)在邏輯上進(jìn)行統(tǒng)一管理,終端設(shè)備數(shù)據(jù)庫則需要做以下準(zhǔn)備工作:創(chuàng)建數(shù)據(jù)庫用戶,為其設(shè)置密碼;開放其用戶對于數(shù)據(jù)庫遠(yuǎn)程訪問權(quán)限,以便于數(shù)據(jù)的訪問管理;設(shè)置TCP/IP端口與系統(tǒng)遠(yuǎn)程訪問系統(tǒng)設(shè)置相對應(yīng)。
③管理系統(tǒng)程序中數(shù)據(jù)庫接口配置
由于企業(yè)中當(dāng)前使用的管理系統(tǒng),大部分采用java語言的編程方式,而web系統(tǒng)中框架技術(shù)[8]有很多,如Struts、Spring、Hibernate、Mybatis……,下面將根據(jù)較為流行的框架技術(shù)SpringMVC,在管理系統(tǒng)中配置數(shù)據(jù)源,設(shè)置對應(yīng)的數(shù)據(jù)庫訪問驅(qū)動、用戶名、密碼、數(shù)據(jù)庫IP地址,及數(shù)據(jù)傳遞的編碼方式,而真正的數(shù)據(jù)庫訪問的配置參數(shù)寫入相對應(yīng)的ini文件中,使之能訪問工業(yè)設(shè)備中離散的數(shù)據(jù)庫。SpringMVC架構(gòu)配置多數(shù)據(jù)源文件如圖2所示。
④根據(jù)邏輯判斷自動切換至相應(yīng)數(shù)據(jù)庫
每個設(shè)備的數(shù)據(jù)庫存放數(shù)據(jù)時(shí),根據(jù)業(yè)務(wù)需求,存儲數(shù)據(jù)的表名是根據(jù)設(shè)備編號而命名或沒有具體區(qū)分的標(biāo)示,這樣在查詢數(shù)據(jù)的時(shí)候系統(tǒng)會根據(jù)邏輯判斷,自動切換相應(yīng)的數(shù)據(jù)庫中查詢數(shù)據(jù),進(jìn)行數(shù)據(jù)管理。相關(guān)思路類似于騰訊、阿里企業(yè)系統(tǒng)中對大數(shù)據(jù)“取?!保?]的思維方式:首先需要根據(jù)輸入信息進(jìn)行分類判斷,判斷其應(yīng)該切換鏈接至相應(yīng)的數(shù)據(jù)庫,然后再去做相應(yīng)業(yè)務(wù)處理,而后需關(guān)閉數(shù)據(jù)庫鏈接,釋放資源,切換至默認(rèn)數(shù)據(jù)源,以防止干擾原有系統(tǒng)的正常使用。切換數(shù)據(jù)源的代碼如圖3所示。
圖2 SpringMVC架構(gòu)多數(shù)據(jù)源配置文件
⑤工業(yè)數(shù)據(jù)的管理
根據(jù)相關(guān)的業(yè)務(wù)需求,管理相應(yīng)設(shè)備數(shù)據(jù)庫,在系統(tǒng)中以多種形式進(jìn)行數(shù)據(jù)顯示,自動獲取數(shù)據(jù)形式,并可根據(jù)數(shù)據(jù)進(jìn)行相關(guān)數(shù)據(jù)分析、挖掘、導(dǎo)出報(bào)表等……可以根據(jù)查詢命令進(jìn)行數(shù)據(jù)的簡單查詢,例如(以SQL Server數(shù)據(jù)庫為例)
查詢數(shù)據(jù)庫所有表的表名:
查詢表名查詢表結(jié)構(gòu):
以上是查詢數(shù)據(jù)庫表名和根據(jù)表名查詢表結(jié)構(gòu)的sql語句,可根據(jù)業(yè)務(wù)需求進(jìn)行數(shù)據(jù)的統(tǒng)計(jì)分析,深度挖掘等。
圖3 切換數(shù)據(jù)源代碼
原有工業(yè)設(shè)備的數(shù)據(jù)管理為離散式數(shù)據(jù)管理,設(shè)備數(shù)據(jù)之間無法進(jìn)行比較、統(tǒng)計(jì)分析等橫向操作,孤立存放使得數(shù)據(jù)很難進(jìn)行有效的數(shù)據(jù)管理,設(shè)備數(shù)據(jù)不僅僅形成一個個數(shù)據(jù)孤島,無法發(fā)揮其潛在作用,還會導(dǎo)致設(shè)備額外使用,增加設(shè)備損耗,給企業(yè)帶來巨大的成本。本方法利用互聯(lián)網(wǎng)技術(shù),將互聯(lián)網(wǎng)技術(shù)與工業(yè)設(shè)備相融合,不僅符合國家大力倡導(dǎo)的“中國制造2025”和“工業(yè)4.0”概念,也確實(shí)解決了工業(yè)設(shè)備中數(shù)據(jù)孤立存儲,無法進(jìn)行統(tǒng)一管理的問題,極大程度上減少了不必要的設(shè)備使用,提高設(shè)備使用率,減少設(shè)備損耗。
使用分庫數(shù)據(jù)技術(shù)后,離散、孤立的設(shè)備數(shù)據(jù)通過網(wǎng)絡(luò)得到統(tǒng)一管理。而且,可以根據(jù)不同的數(shù)據(jù)庫,在配置文件中配置不同的數(shù)據(jù)庫驅(qū)動,以實(shí)現(xiàn)不同設(shè)備、不同數(shù)據(jù)庫之間的數(shù)據(jù)統(tǒng)一管理,不僅可以根據(jù)查詢條件查詢不同數(shù)據(jù)庫中的數(shù)據(jù),導(dǎo)出查詢數(shù)據(jù)的報(bào)表等一些簡單數(shù)據(jù)操作,而且可以對離散數(shù)據(jù)進(jìn)行統(tǒng)計(jì)分析以及對數(shù)據(jù)的深度挖掘。由于管理系統(tǒng)為web架構(gòu),使用人員可以在任意聯(lián)網(wǎng)計(jì)算機(jī)中對設(shè)備中的數(shù)據(jù)進(jìn)行管理,不僅提高工作效率,結(jié)束了原始人工導(dǎo)出數(shù)據(jù),移動存儲設(shè)備進(jìn)行數(shù)據(jù)遷移的工作模式,也極大降低了設(shè)備感染病毒的概率。
下面為統(tǒng)計(jì)設(shè)備8類使用狀態(tài)分析結(jié)果,如圖4所示。
圖4 設(shè)備8類使用狀態(tài)的分析結(jié)果
本系統(tǒng)基于現(xiàn)有管理系統(tǒng),將獨(dú)立的工業(yè)設(shè)備通過客制化的方法,利用大型系統(tǒng)中分庫的思想,逆向地對離散的設(shè)備數(shù)據(jù)進(jìn)行統(tǒng)一管理,以達(dá)到就多次設(shè)備數(shù)據(jù)進(jìn)行統(tǒng)計(jì)分析、數(shù)據(jù)挖掘。將設(shè)備數(shù)據(jù)管理掛載在現(xiàn)有的系統(tǒng)中,可以利用當(dāng)前系統(tǒng)的安全機(jī)制與管理模式,減小系統(tǒng)開發(fā)周期,提高系統(tǒng)的穩(wěn)定性與可靠性。開發(fā)中利用數(shù)據(jù)源自動切換,設(shè)置默認(rèn)數(shù)據(jù)源,數(shù)據(jù)源切換處理數(shù)據(jù)后,自動恢復(fù)到默認(rèn)數(shù)據(jù)源,避免影響原有系統(tǒng)。該技術(shù)將工業(yè)技術(shù)與互聯(lián)網(wǎng)技術(shù)巧妙融合在一起,解決了工業(yè)設(shè)備數(shù)據(jù)離散存放,無法集中管理的問題,使離散的數(shù)據(jù)進(jìn)行統(tǒng)一管理,這不僅提高了工作效率,也大大降低設(shè)備的重復(fù)使用及損耗。
[1]王英杰,溫沁潤,劉秀海.攝影評審系統(tǒng)中數(shù)據(jù)庫的分庫設(shè)計(jì)[J].統(tǒng)計(jì)與管理,2013(2):166-167.
[2]孫曉東.基于物聯(lián)網(wǎng)的離散制造車間制造數(shù)據(jù)管理關(guān)鍵技術(shù)的研究[D].南京:南京航空航天大學(xué),2012.
[3]胡珊珊.面向云存儲的非結(jié)構(gòu)化數(shù)據(jù)存儲研究與應(yīng)用[D].廣州:廣東工業(yè)大學(xué),2014.
[4]李海磊.垂直劃分分布數(shù)據(jù)的多維關(guān)聯(lián)規(guī)則挖掘研究[D].秦皇島:燕山大學(xué),2013.
[5]劉漢民.論逆向思維[J].重慶工學(xué)院學(xué)報(bào),2005(9):96-100.
[6]王曉華.基于TCP/IP和數(shù)據(jù)庫技術(shù)的遠(yuǎn)程監(jiān)控系統(tǒng)的研究[D].杭州:浙江工業(yè)大學(xué),2007.
[7]馮馳,趙旦峰,張宇,劉昕.綜合布線標(biāo)準(zhǔn)EIA/TIA-568A [J].黑龍江電子技術(shù),1996(4):29-31.
[8]王鳳嶺.基于MVC的主流Web框架技術(shù)研究[J].南寧職業(yè)技術(shù)學(xué)院學(xué)報(bào),2011(3):94-97.
[9]許鑫,李順東.大整數(shù)取模的快速運(yùn)算[J].計(jì)算機(jī)工程與應(yīng)用,2014(22):136-140.
The Application Based on the Java Sharding Technology Patent in Industrial Discrete Data
Zhang Jie
(CAMA〔LuoYang〕Electromechanic Co.LTD,Luoyang Henan 471000)
The data bank technology patent is the centralized storage management, data discrete storage, big data, alleviating database load and improve the response speed of the system, meet the system requirements. One of the large-scale industrial production data are stored in each discrete IPC, the little in the centralized management of industrial data and data bank application. Through the technology of reverse thinking, the original discrete data, central - ized management logic, and through the relevant logic, data management, analysis, operation, to achieve a unified discrete data management.Discusses the application status of the industrial data and the data bank technology, on the way to realize the unified management of the industry the data and algorithm, and the application prospect of the technology in the industrial field.
datasharding;industrial data;discretetype;DDBS;cloudstorage
TP311.13
A
1003-5168(2016)06-0081-04
2016-5-24
張捷(1988-),男,本科,工程師,研究方向:信息技術(shù)在工業(yè)領(lǐng)域中的應(yīng)用。