《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 嵌入式技術(shù) > 設(shè)計應(yīng)用 > 面向工業(yè)4.0的多表架構(gòu)與NoSQL大數(shù)據(jù)集成 的數(shù)據(jù)存儲策略研究
面向工業(yè)4.0的多表架構(gòu)與NoSQL大數(shù)據(jù)集成 的數(shù)據(jù)存儲策略研究
2016年微型機與應(yīng)用第18期
文棒棒1,2,曾獻輝1,2
1. 東華大學(xué) 信息科學(xué)與技術(shù)學(xué)院,上海 201620;2.數(shù)字化紡織服裝技術(shù)教育部工程研究中心,上海 201620
摘要: 工業(yè)4.0環(huán)境下,生產(chǎn)現(xiàn)場的監(jiān)測數(shù)據(jù)除了需要實時顯示與分析外,還需要作為歷史記錄進行保存。面對海量的生產(chǎn)數(shù)據(jù),現(xiàn)有的數(shù)據(jù)庫技術(shù)已經(jīng)很難滿足該要求。提出了一種基于傳統(tǒng)數(shù)據(jù)庫多表架構(gòu)與NoSQL大數(shù)據(jù)庫相結(jié)合的新型數(shù)據(jù)存儲方案。該方案基于傳統(tǒng)數(shù)據(jù)庫的多表架構(gòu)實現(xiàn)實時數(shù)據(jù)的分布式存儲,同時將歷史數(shù)據(jù)遷移至NoSQL大數(shù)據(jù)庫,解決了工業(yè)4.0下的海量數(shù)據(jù)存儲問題。最后給出了某企業(yè)基于SQL Server和MongoDB的實際應(yīng)用,驗證了本文方法的正確性和有效性。
Abstract:
Key words :

  文棒棒1,2,曾獻輝1,2

 ?。?. 東華大學(xué) 信息科學(xué)與技術(shù)學(xué)院,上海 201620;2.數(shù)字化紡織服裝技術(shù)教育部工程研究中心,上海 201620)

       摘要:工業(yè)4.0環(huán)境下,生產(chǎn)現(xiàn)場的監(jiān)測數(shù)據(jù)除了需要實時顯示與分析外,還需要作為歷史記錄進行保存。面對海量的生產(chǎn)數(shù)據(jù),現(xiàn)有的數(shù)據(jù)庫技術(shù)已經(jīng)很難滿足該要求。提出了一種基于傳統(tǒng)數(shù)據(jù)庫多表架構(gòu)與NoSQL大數(shù)據(jù)庫相結(jié)合的新型數(shù)據(jù)存儲方案。該方案基于傳統(tǒng)數(shù)據(jù)庫的多表架構(gòu)實現(xiàn)實時數(shù)據(jù)的分布式存儲,同時將歷史數(shù)據(jù)遷移至NoSQL大數(shù)據(jù)庫,解決了工業(yè)4.0下的海量數(shù)據(jù)存儲問題。最后給出了某企業(yè)基于SQL Server和MongoDB的實際應(yīng)用,驗證了本文方法的正確性和有效性。

  關(guān)鍵詞:多表結(jié)構(gòu);NoSQL大數(shù)據(jù)庫;數(shù)據(jù)遷移;MapReduce分析

0引言

  進入21世紀以來,隨著網(wǎng)絡(luò)信息技術(shù)、智能科學(xué)的蓬勃發(fā)展,信息化和智能化正逐步融合到工業(yè)生產(chǎn)中,向人們展示著工業(yè)4.0時代的到來[1]。在工業(yè)4.0 時代,企業(yè)在生產(chǎn)過程中累積的大量與生產(chǎn)監(jiān)測相關(guān)的數(shù)據(jù)匯聚成數(shù)據(jù)的海洋,這些數(shù)據(jù)不僅種類繁多同時產(chǎn)生速度快、價值密度低。要充分利用這些數(shù)據(jù),就需要企業(yè)不僅能夠?qū)崿F(xiàn)這些數(shù)據(jù)的實時顯示與分析,同時又能夠?qū)Ξa(chǎn)生的歷史數(shù)據(jù)進行有效的存儲與分析。本文針對此問題,提出了一種基于傳統(tǒng)數(shù)據(jù)庫多表架構(gòu)和大數(shù)據(jù)相結(jié)合的數(shù)據(jù)存儲策略,該方法解決了工業(yè)數(shù)據(jù)的實時存儲,同時可實現(xiàn)對海量歷史數(shù)據(jù)的有效保存與分析,以幫助企業(yè)充分利用這些數(shù)據(jù)。

1工業(yè)數(shù)據(jù)存儲技術(shù)

  工業(yè)4.0時代的到來,也意味著工業(yè)生產(chǎn)大數(shù)據(jù)時代的到來[2]。一般意義上講,大數(shù)據(jù)具有數(shù)據(jù)量大、數(shù)據(jù)種類多、商業(yè)價值高、處理速度高等特點。在此基礎(chǔ)上,工業(yè)生產(chǎn)中的數(shù)據(jù)還有兩大特點:一是準確率高,二是實時性強。工業(yè)生產(chǎn)中重要的應(yīng)用場景是實時監(jiān)測、實時預(yù)警、實時控制。一旦數(shù)據(jù)的采集、傳輸和應(yīng)用等全處理流程耗時過長,就難以在生產(chǎn)過程中發(fā)揮其價值[3]。如圖1所示,在多個采集工作站進行數(shù)據(jù)采集時,每天產(chǎn)生的數(shù)據(jù)量都是非常大的,此時不僅要保證這些數(shù)據(jù)的實時性,同時還需要一種存儲技術(shù)能夠?qū)崿F(xiàn)這些數(shù)據(jù)的歷史保存。傳統(tǒng)的數(shù)據(jù)庫存儲技術(shù)主要有兩種:一種是采用數(shù)據(jù)直接存放的方式,即單一表格存儲;另一種則是采用數(shù)據(jù)庫多表架構(gòu)的方式,即多表存儲。

圖像 001.png

  1.1數(shù)據(jù)庫單表直接存放形式存儲

  傳統(tǒng)的數(shù)據(jù)庫存儲方法大多采用數(shù)據(jù)的直接存放形式,即單一表格形式。這種方法是將所有數(shù)據(jù)都直接存放在一個單表里,表中包括數(shù)據(jù)的所有字段和記錄。該方法的優(yōu)點是設(shè)計簡單,使用非常方便,能夠較好地實現(xiàn)數(shù)據(jù)的存儲。但是由于只是單個表格,當(dāng)單表數(shù)據(jù)量非常大時,數(shù)據(jù)庫的訪問速度會急劇下降,會使得系統(tǒng)變得相當(dāng)不穩(wěn)定,此時若繼續(xù)對數(shù)據(jù)進行查詢與插入,甚至可能出現(xiàn)死機等不能運作的情況。因此這種方法不適合大量數(shù)據(jù)的實時存儲。

  1.2數(shù)據(jù)庫多表分布式存儲

  不同于數(shù)據(jù)的直接存儲方式,分表,顧名思義,就是通過一系列的切分規(guī)則將數(shù)據(jù)分布到不同的表中,如按照自然時間來分,可分為按日生成表、按月生成表和按年生成表。分表不僅能夠更好地完成大量數(shù)據(jù)的分布式存儲,增大數(shù)據(jù)庫的存儲容量,而且減少了數(shù)據(jù)庫的負擔(dān),提高了數(shù)據(jù)庫的效率,特別是提高了單個表的增刪改查效率,能夠?qū)崿F(xiàn)數(shù)據(jù)的實時顯示與分析。但是,對于分表后存儲的歷史數(shù)據(jù),在對其進行統(tǒng)計分析時往往需要遍歷所有的表格進行多表之間的聯(lián)合,查詢速度會相當(dāng)慢,不便于實現(xiàn)歷史數(shù)據(jù)的有效分析。

  1.3NoSQL大數(shù)據(jù)庫存儲

  隨著工業(yè)生產(chǎn)數(shù)據(jù)的不斷增加,關(guān)系型數(shù)據(jù)庫在面對大量歷史數(shù)據(jù)的存儲和訪問等問題上逐漸暴露出一些不足之處。為了彌補這些不足,NoSQL數(shù)據(jù)庫應(yīng)運而生。NoSQL[4](Not Only SQL)是對傳統(tǒng)關(guān)系型數(shù)據(jù)庫以外的非關(guān)系型數(shù)據(jù)庫的統(tǒng)稱。NoSQL數(shù)據(jù)庫憑借其不固定的鍵值對結(jié)構(gòu)打破了傳統(tǒng)數(shù)據(jù)庫中表與表之間的關(guān)聯(lián)問題導(dǎo)致的性能瓶頸,大大減少了對歷史數(shù)據(jù)進行存儲、計算、查詢等操作在時間和空間上的開銷。但是,在實時數(shù)據(jù)的分析與顯示方面,NoSQL往往顯得力不從心,數(shù)據(jù)處理不夠快速,且不能直觀顯示處理后的結(jié)果。

2多表架構(gòu)與大數(shù)據(jù)集成的新的數(shù)據(jù)存儲策略

  面對工業(yè)生產(chǎn)上的實時數(shù)據(jù),不僅要求能夠?qū)ζ溥M行實時顯示與分析,同時還要將其作為歷史數(shù)據(jù)進行保存。對此,現(xiàn)有的數(shù)據(jù)庫方法已經(jīng)無法滿足。本文提出一種基于傳統(tǒng)數(shù)據(jù)庫多表架構(gòu)與NoSQL大數(shù)據(jù)庫相結(jié)合的新型數(shù)據(jù)存儲方案,該方案利用傳統(tǒng)數(shù)據(jù)庫的多表方法實現(xiàn)數(shù)據(jù)的實時存儲,并實現(xiàn)對數(shù)據(jù)的實時操作與查詢顯示。此外,對于累積的歷史數(shù)據(jù),則利用數(shù)據(jù)遷移技術(shù)遷移至

圖像 002.png

NoSQL數(shù)據(jù)庫進行歷史保存,不僅解決了海量數(shù)據(jù)的存儲問題,而且可以利用大數(shù)據(jù)技術(shù)對歷史數(shù)據(jù)進行深層次的分析處理,以實現(xiàn)生產(chǎn)數(shù)據(jù)的最大化利用。圖2所示為傳統(tǒng)數(shù)據(jù)庫與NoSQL大數(shù)據(jù)庫相結(jié)合的數(shù)據(jù)存儲方案的處理流程。

  2.1傳統(tǒng)多表架構(gòu)實現(xiàn)實時存儲與訪問

  利用傳統(tǒng)數(shù)據(jù)庫的多表架構(gòu)可以實現(xiàn)數(shù)據(jù)的實時存儲與訪問,而多表的實現(xiàn)則主要利用存儲過程方法。存儲過程,即一組預(yù)先寫好的能實現(xiàn)某種功能的一段程序,將其保存在數(shù)據(jù)庫中,以后若要實現(xiàn)該功能則直接可調(diào)用該程序來完成[5]。因此,只要預(yù)先定義好存儲過程,當(dāng)對數(shù)據(jù)進行存儲時則可直接進行調(diào)用,從而將數(shù)據(jù)實時地存儲在不同的表格里。而對于數(shù)據(jù)的訪問,同樣可以將相應(yīng)的操作通過建立存儲過程來實現(xiàn)。利用多表架構(gòu)一方面能夠保證數(shù)據(jù)的實時性存儲要求,另一方面將數(shù)據(jù)存儲在多個表里可以提高每個表的訪問速度,便于對表中的數(shù)據(jù)進行實時顯示與相應(yīng)的增刪改查處理。

  2.2大數(shù)據(jù)技術(shù)實現(xiàn)歷史記錄保存與分析

  數(shù)據(jù)庫多表架構(gòu)解決了數(shù)據(jù)的實時性問題。但是,對于如何將這些海量數(shù)據(jù)作為歷史記錄進行有效保存同時可以實現(xiàn)對其深層次的分析與利用,傳統(tǒng)的數(shù)據(jù)庫方法已經(jīng)無法滿足要求。此時,大數(shù)據(jù)存儲技術(shù)的優(yōu)勢則脫穎而出。NoSQL數(shù)據(jù)庫具有高水平擴展能力和低端硬件集群,可以很好地應(yīng)對海量數(shù)據(jù)的存儲問題。利用數(shù)據(jù)遷移技術(shù),即通過不同的接口函數(shù)訪問不同的數(shù)據(jù)庫,實現(xiàn)歷史數(shù)據(jù)從傳統(tǒng)數(shù)據(jù)庫向NoSQL大數(shù)據(jù)庫的遷移。而將數(shù)據(jù)存儲在NoSQL數(shù)據(jù)庫后,可利用大數(shù)據(jù)分析技術(shù)實現(xiàn)歷史記錄的分析處理。例如MapReduce[6-7],它是一種并行編程模型,用于大規(guī)模數(shù)據(jù)集的并行運算,其特點是簡單易學(xué),適用廣泛,能夠降低并行編程難度,程序員只需實現(xiàn)其中的map函數(shù)和reduce函數(shù),而具體操作則交由MapReduce自身的框架來處理。

3多表架構(gòu)與NoSQL大數(shù)據(jù)存儲策略的實現(xiàn)與應(yīng)用分析

  為了驗證本文所提出方案的正確性和有效性,本文結(jié)合了某智能制造廠在生產(chǎn)過程中機器產(chǎn)生的大量數(shù)據(jù)來對其進行分析與應(yīng)用。根據(jù)對智能制造廠生產(chǎn)現(xiàn)場的分析,得知其存在多個車間,且每個車間都有上千臺機器,每臺機器在工作時都會產(chǎn)生大量的數(shù)據(jù)。為了能夠充分利用這些數(shù)據(jù),首要的任務(wù)就是要解決如何把這些數(shù)據(jù)實時地存儲下來。通過比較分析,最終采用傳統(tǒng)的SQL Server數(shù)據(jù)庫對實時數(shù)據(jù)進行存儲,而對于歷史數(shù)據(jù)的存儲與分析則采用NoSQL數(shù)據(jù)庫中的MongoDB數(shù)據(jù)庫。

  3.1實時數(shù)據(jù)的存儲與分析

  在數(shù)據(jù)的實時存儲方面,采用SQL Server數(shù)據(jù)庫多表架構(gòu)的存儲方法。該方法首先將預(yù)先定義好的存儲過程存儲在SQL Server數(shù)據(jù)庫中,在對數(shù)據(jù)進行存儲之前,先調(diào)用存儲過程檢測數(shù)據(jù)庫是否連接,若未連接,則要求連接;連接以后獲取當(dāng)前時間檢測數(shù)據(jù)表是否存在,若不存在則調(diào)用其他存儲過程生成當(dāng)前時間的數(shù)據(jù)表;當(dāng)數(shù)據(jù)表存在后則可進行數(shù)據(jù)的實時性讀寫與插入。數(shù)據(jù)的整個存儲過程都是調(diào)用預(yù)先定義好的語句,通過存儲過程實現(xiàn)多表的按日生成,避免了傳統(tǒng)數(shù)據(jù)存儲時的繁瑣語句。同時若需要對數(shù)據(jù)進行實時查詢與顯示,同樣可通過定義好的SQL語句生成存儲過程實現(xiàn)對批量數(shù)據(jù)的增刪改查。圖3所示為利用存儲過程實現(xiàn)實時數(shù)據(jù)多表方式的存儲流程。

圖像 003.png

  3.2歷史數(shù)據(jù)的遷移與存放

  對實時數(shù)據(jù)進行SQL Server多表存儲和實時分析后,利用數(shù)據(jù)遷移技術(shù)將數(shù)據(jù)遷移至NoSQL數(shù)據(jù)庫進行存儲和分析。MongoDB[8]數(shù)據(jù)庫是NoSQL數(shù)據(jù)庫的一種,其存儲結(jié)構(gòu)為典型的key value鍵值對型,而且它最大的特點是具有強大的查詢功能,支持通用輔助索引和復(fù)合索引,能夠進行多種快速查詢,同時還支持各種分析工具,可以很好地對數(shù)據(jù)進行統(tǒng)計分析。因此,可以通過傳統(tǒng)數(shù)據(jù)庫的ADO技術(shù)來訪問SQL Server數(shù)據(jù)庫,將SQL Server中的數(shù)據(jù)轉(zhuǎn)移到MongoDB數(shù)據(jù)庫中,實現(xiàn)海量歷史數(shù)據(jù)的存儲。如圖4所示,首先進行SQL Server的連接,其連接形式為:

圖像 004.png

  string conStr = "server=(local); Initial Catalog = Textile; Integrated Security = true";

  SqlConnection connection = new SqlConnection(conStr);

  SqlCommand cmd = connection.CreateCommand();

  connection.Open();

  在連接數(shù)據(jù)庫后可自行設(shè)置SQL命令將數(shù)據(jù)庫中的數(shù)據(jù)轉(zhuǎn)移到MongoDB中,在此之前需要利用MongoDB Driver 進行MongoDB數(shù)據(jù)庫的連接,其實現(xiàn)方式為:

  string connString = "mongodb://127.0.0.1:27017";

  MongoServer server = MongoServer.Create(connString);

  MongoDatabase mydb = server.GetDatabase("mydb");

  MongoCollection test = mydb.GetCollection("test");

  3.3基于MapReduce的大數(shù)據(jù)分析

  MongoDB作為NoSQL大數(shù)據(jù)庫的一種,其除了可以實現(xiàn)海量歷史數(shù)據(jù)存儲以外,還提供了多種靈活和強大的數(shù)據(jù)聚合工具,其中就包括MapReduce。圖5所示為MapReduce在MongoDB數(shù)據(jù)庫中的操作流程。

圖像 005.png

  為了更清楚地了解MapReduce編程模型的強大之處,本文結(jié)合智能制造廠生產(chǎn)現(xiàn)場的監(jiān)測數(shù)據(jù),利用MapReduce,通過設(shè)備在10天內(nèi)的開關(guān)機狀態(tài)計算出設(shè)備的生產(chǎn)效率值,從而幫助企業(yè)更加合理地調(diào)度生產(chǎn)資源實現(xiàn)資源的最大化利用。圖6所示為處理流程圖。


圖像 006.png

4結(jié)論

  本文針對在工業(yè)4.0環(huán)境下生產(chǎn)過程中產(chǎn)生的大量數(shù)據(jù),提出一種基于傳統(tǒng)數(shù)據(jù)庫多表架構(gòu)和NoSQL大數(shù)據(jù)結(jié)合的新型存儲策略,不僅完成了生產(chǎn)數(shù)據(jù)的實時存儲與實時訪問,而且利用數(shù)據(jù)轉(zhuǎn)移技術(shù)將歷史數(shù)據(jù)轉(zhuǎn)移至NoSQL大數(shù)據(jù)庫,解決了海量歷史數(shù)據(jù)的存儲問題,同時通過大數(shù)據(jù)分析技術(shù)實現(xiàn)對歷史數(shù)據(jù)的有效分析。最后通過某智能制造廠生產(chǎn)現(xiàn)場的監(jiān)測數(shù)據(jù),驗證了本文提出方法的正確性和有效性。

  參考文獻

 ?。?] 程曉蕾. 工業(yè)4.0架構(gòu)下的工業(yè)大數(shù)據(jù)的需求、環(huán)境及服務(wù)化[J].赤峰學(xué)院學(xué)報, 2015,31(4):14 15.

 ?。?] 沈雁, 戴瑜興, 湯睿. 基于嵌入式數(shù)據(jù)庫的分布式大壩監(jiān)測數(shù)據(jù)匯聚器設(shè)計[J].電子技術(shù)應(yīng)用, 2011,37(5):39 41.

 ?。?] FAZIO M, CELESTI A, PULIAFITO A, et al. Big data storage in the cloud for smart environment monitoring[J]. Procedia Computer Science, 2015(5):500 506.

  [4] 潘洪志. 高性能NoSQL存儲系統(tǒng)的研究與實現(xiàn)[D .長春: 吉林大學(xué), 2014.

 ?。?] 丌文娟. 對SQL Server存儲過程的研究與應(yīng)用[J .廊坊師范學(xué)院學(xué)報, 2010,10(6):34 37.

  [6] 謝桂蘭, 羅省賢. 基于Hadoop MapReduce模型的應(yīng)用研究[J].微型機與應(yīng)用, 2010,29(8):4 7.

 ?。?] MAITREY S, JHA C K. MapReduce: simplified data analysis of big data[J]. Procedia Computer Science, 2015(7):563 571.

 ?。?] 呂林. 基于MongoDB的應(yīng)用平臺的研究與實現(xiàn)[D]. 北京:北京郵電大學(xué), 2015.


此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載。