《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 嵌入式技術(shù) > 設(shè)計(jì)應(yīng)用 > 面向工業(yè)4.0的多表架構(gòu)與NoSQL大數(shù)據(jù)集成 的數(shù)據(jù)存儲策略研究
面向工業(yè)4.0的多表架構(gòu)與NoSQL大數(shù)據(jù)集成 的數(shù)據(jù)存儲策略研究
2016年微型機(jī)與應(yīng)用第18期
文棒棒1,2,曾獻(xiàn)輝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ù)除了需要實(shí)時顯示與分析外,,還需要作為歷史記錄進(jìn)行保存。面對海量的生產(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)實(shí)現(xiàn)實(shí)時數(shù)據(jù)的分布式存儲,,同時將歷史數(shù)據(jù)遷移至NoSQL大數(shù)據(jù)庫,,解決了工業(yè)4.0下的海量數(shù)據(jù)存儲問題,。最后給出了某企業(yè)基于SQL Server和MongoDB的實(shí)際應(yīng)用,驗(yàn)證了本文方法的正確性和有效性,。
Abstract:
Key words :

  文棒棒1,2,,曾獻(xiàn)輝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ù)除了需要實(shí)時顯示與分析外,,還需要作為歷史記錄進(jìn)行保存。面對海量的生產(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)實(shí)現(xiàn)實(shí)時數(shù)據(jù)的分布式存儲,,同時將歷史數(shù)據(jù)遷移至NoSQL大數(shù)據(jù)庫,,解決了工業(yè)4.0下的海量數(shù)據(jù)存儲問題。最后給出了某企業(yè)基于SQL Server和MongoDB的實(shí)際應(yīng)用,,驗(yàn)證了本文方法的正確性和有效性,。

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

0引言

  進(jìn)入21世紀(jì)以來,隨著網(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)生速度快,、價(jià)值密度低,。要充分利用這些數(shù)據(jù),就需要企業(yè)不僅能夠?qū)崿F(xiàn)這些數(shù)據(jù)的實(shí)時顯示與分析,,同時又能夠?qū)Ξa(chǎn)生的歷史數(shù)據(jù)進(jìn)行有效的存儲與分析,。本文針對此問題,提出了一種基于傳統(tǒng)數(shù)據(jù)庫多表架構(gòu)和大數(shù)據(jù)相結(jié)合的數(shù)據(jù)存儲策略,,該方法解決了工業(yè)數(shù)據(jù)的實(shí)時存儲,,同時可實(shí)現(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è)價(jià)值高、處理速度高等特點(diǎn),。在此基礎(chǔ)上,,工業(yè)生產(chǎn)中的數(shù)據(jù)還有兩大特點(diǎn):一是準(zhǔn)確率高,二是實(shí)時性強(qiáng),。工業(yè)生產(chǎn)中重要的應(yīng)用場景是實(shí)時監(jiān)測、實(shí)時預(yù)警,、實(shí)時控制,。一旦數(shù)據(jù)的采集、傳輸和應(yīng)用等全處理流程耗時過長,,就難以在生產(chǎn)過程中發(fā)揮其價(jià)值[3],。如圖1所示,在多個采集工作站進(jìn)行數(shù)據(jù)采集時,,每天產(chǎn)生的數(shù)據(jù)量都是非常大的,,此時不僅要保證這些數(shù)據(jù)的實(shí)時性,同時還需要一種存儲技術(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)點(diǎn)是設(shè)計(jì)簡單,,使用非常方便,,能夠較好地實(shí)現(xiàn)數(shù)據(jù)的存儲。但是由于只是單個表格,,當(dāng)單表數(shù)據(jù)量非常大時,,數(shù)據(jù)庫的訪問速度會急劇下降,會使得系統(tǒng)變得相當(dāng)不穩(wěn)定,,此時若繼續(xù)對數(shù)據(jù)進(jìn)行查詢與插入,,甚至可能出現(xiàn)死機(jī)等不能運(yùn)作的情況。因此這種方法不適合大量數(shù)據(jù)的實(shí)時存儲。

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

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

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

  隨著工業(yè)生產(chǎn)數(shù)據(jù)的不斷增加,,關(guān)系型數(shù)據(jù)庫在面對大量歷史數(shù)據(jù)的存儲和訪問等問題上逐漸暴露出一些不足之處,。為了彌補(bǔ)這些不足,NoSQL數(shù)據(jù)庫應(yīng)運(yùn)而生,。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ù)進(jìn)行存儲,、計(jì)算,、查詢等操作在時間和空間上的開銷。但是,,在實(shí)時數(shù)據(jù)的分析與顯示方面,,NoSQL往往顯得力不從心,數(shù)據(jù)處理不夠快速,,且不能直觀顯示處理后的結(jié)果,。

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

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

圖像 002.png

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

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

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

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

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

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

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

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

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

圖像 003.png

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

  對實(shí)時數(shù)據(jù)進(jìn)行SQL Server多表存儲和實(shí)時分析后,,利用數(shù)據(jù)遷移技術(shù)將數(shù)據(jù)遷移至NoSQL數(shù)據(jù)庫進(jìn)行存儲和分析。MongoDB[8]數(shù)據(jù)庫是NoSQL數(shù)據(jù)庫的一種,,其存儲結(jié)構(gòu)為典型的key value鍵值對型,,而且它最大的特點(diǎn)是具有強(qiáng)大的查詢功能,支持通用輔助索引和復(fù)合索引,,能夠進(jìn)行多種快速查詢,,同時還支持各種分析工具,,可以很好地對數(shù)據(jù)進(jìn)行統(tǒng)計(jì)分析。因此,,可以通過傳統(tǒng)數(shù)據(jù)庫的ADO技術(shù)來訪問SQL Server數(shù)據(jù)庫,,將SQL Server中的數(shù)據(jù)轉(zhuǎn)移到MongoDB數(shù)據(jù)庫中,實(shí)現(xiàn)海量歷史數(shù)據(jù)的存儲,。如圖4所示,,首先進(jìn)行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 進(jìn)行MongoDB數(shù)據(jù)庫的連接,,其實(shí)現(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ù)庫的一種,其除了可以實(shí)現(xiàn)海量歷史數(shù)據(jù)存儲以外,,還提供了多種靈活和強(qiáng)大的數(shù)據(jù)聚合工具,,其中就包括MapReduce。圖5所示為MapReduce在MongoDB數(shù)據(jù)庫中的操作流程,。

圖像 005.png

  為了更清楚地了解MapReduce編程模型的強(qiáng)大之處,,本文結(jié)合智能制造廠生產(chǎn)現(xiàn)場的監(jiān)測數(shù)據(jù),利用MapReduce,,通過設(shè)備在10天內(nèi)的開關(guān)機(jī)狀態(tài)計(jì)算出設(shè)備的生產(chǎn)效率值,,從而幫助企業(yè)更加合理地調(diào)度生產(chǎn)資源實(shí)現(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í)時存儲與實(shí)時訪問,,而且利用數(shù)據(jù)轉(zhuǎn)移技術(shù)將歷史數(shù)據(jù)轉(zhuǎn)移至NoSQL大數(shù)據(jù)庫,解決了海量歷史數(shù)據(jù)的存儲問題,,同時通過大數(shù)據(jù)分析技術(shù)實(shí)現(xiàn)對歷史數(shù)據(jù)的有效分析,。最后通過某智能制造廠生產(chǎn)現(xiàn)場的監(jiān)測數(shù)據(jù),驗(yàn)證了本文提出方法的正確性和有效性,。

  參考文獻(xiàn)

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

 ?。?] 沈雁, 戴瑜興, 湯睿. 基于嵌入式數(shù)據(jù)庫的分布式大壩監(jiān)測數(shù)據(jù)匯聚器設(shè)計(jì)[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)的研究與實(shí)現(xiàn)[D .長春: 吉林大學(xué), 2014.

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

 ?。?] 謝桂蘭, 羅省賢. 基于Hadoop MapReduce模型的應(yīng)用研究[J].微型機(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)用平臺的研究與實(shí)現(xiàn)[D]. 北京:北京郵電大學(xué), 2015.


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