導讀
從行業需求入手,分析如何通過新老技術的融合來解決傳統技術架構存在的問題,以適應工業互聯網新時期的需求;對時序數據庫今后的發展趨勢進行了研究,并對新技術在工業互聯網領域的應用提出一些通用的要求,為后續工業互聯網基礎技術的應用和發展打下理論基礎。
一、引言
互聯網的迅速發展帶動了一波技術革新,越來越多新的技術被運用到了行業中,以解決實際問題和需求。在工業界,工業互聯網、智能制造這些詞也隨之涌現,人們正在積極探索新技術在工業界的應用。但是否所有的新技術都適合在行業推廣應用?例如工業行業,有著更為復雜的環境,對于軟件系統有著額外的高要求,特別是系統的實時性、穩定性和安全性。多年來,工業系統一直都較為封閉,使得工業界的軟件形成了一套較為獨立且成熟的體系。
在工業場景中,80%以上的監測數據都是實時數據,且都是帶有時間戳并按順序產生的數據,這些來源于傳感器或監控系統的數據被實時地采集并反饋出系統或作業的狀態。在工業上,通常會使用實時/歷史數據庫作為核心樞紐,對這些數據進行采集、存儲以及查詢分析。
在工業領域之外,隨著移動互聯網、物聯網、車聯網、智能電網等新概念的迅速發展,也形成了對實時數據的分析處理需求,另一種全新架構的解決方案也悄然形成,被稱作時序數據庫,主要面向互聯網場景下海量數據的實時監控和分析需求,它和實時/歷史數據庫的功能如此相似,就好比是一對雙胞胎,被不同的家庭撫養長大卻還保持著相同的容貌。相比于傳統的工業方案,互聯網方案的擴展性更好,又天然能和大數據生態融合,無疑會對原有的技術架構形成挑戰。
二、傳統工業場景中對實時數據的處理
傳統工業控制領域,由于其自身的特殊性,有很多對實時數據處理的要求,特別是流程工業中,對各生產環節的監控要求十分嚴苛,需要通過監測數據實時反應出系統的狀態,所以對于實時數據的處理十分看重,并且經過長時間的積累已經形成了一套獨有的成熟的體系。對實時/歷史數據庫的應用是其中重要的一環,在工控領域已經有很多年的歷史,實時數據庫主要用于工業過程數據的采集、存儲以及查詢分析,以實現過程狀態的實時監控。工業上的實時數據有這些特征:都帶有時間戳,并且是按時間順序生成的;大多為結構化數據;采集頻率高、數據量大等。
工業上對軟件的要求從來都是非常嚴苛的,所以實時數據庫在被打磨后,形成了比較明顯的特征,如實用、嚴謹、穩定、高性能、封閉等。
以一個中等規模的工業企業為例,在流程監控的環節中,可能會涉及到5~10萬個傳感器測點,每天產出的數據量能達到上百GB。在通常情況下,工業企業都會要求數據能夠被長時間存儲,這樣可以隨時查詢到歷史趨勢。上述的需求顯示出了傳統實時數據庫需要具備的一些能力,如因為測點多、采集頻率高,所以要求非常高的寫入能力;因為要求長期存儲,所以需要強大的數據壓縮能力;因為數據量龐大,所以要求快速的查詢響應;同時最重要的是實時分析能力,能快速反映出系統的狀態。
表1是傳統工業項目中對實時數據庫的考核要求。
表1 工業項目中對實時數據庫的考核項
對于工業傳統的實時/歷史數據庫,總結特征如下:
(1)高速寫入性能:工業實時數據庫通常會對數據寫入的速度有很高的要求。以流程工業的場景為例,會在每個環節都設置傳感器,傳感器的數量眾多且采集頻率都很高,所以數據寫入的并發量會特別高,有時甚至會達到每秒上百萬的測點。除了對軟件的要求之外,也會選擇使用一些高性能的服務器來保證數據的寫入。
(2)快速的查詢響應:查詢的需求分為兩部分,一是要響應實時的查詢請求,用于及時反映系統的狀態;二是歷史數據要能快速被查詢,由于歷史數據量非常大,在查詢時需要對特定時間段的數據做聚合,需要做到即使是查一整年的數據情況,也能很快地反映出來。
(3)超強的數據壓縮能力:之前提到因為數據會被存儲很長時間,5年甚至10年都是常有的事,在存儲容量有限的情況下,就需要對數據做一定的壓縮。通常壓縮方式會分成無損壓縮和有損壓縮,相比而言,有損壓縮的壓縮比會更大一些,有時會達到1:30~1:40,這就需要設計合理的算法來保留數據中的細節,使數據在還原后仍能保留重要的特征。
(4)積累豐富的工具:傳統的實時數據庫的解決方案一般是從采集開始到可視化的一整套系統,有多年積累形成的豐富的工具包,比如會積攢上百種的協議,或者各種場景的數據模型,這些都是工業軟件的重要競爭力。
(5)追求極致穩定:工業上對軟件的穩定性要求特別高,除了使用主備機制來保證高可用外,一般完全由軟件的編寫質量來保證程序的持續運行。
三、工業互聯網時期的變化和問題
隨著互聯網、物聯網、云計算、大數據、人工智能為代表的新一代技術的逐步成熟,一輪新的科技革命和產業變革正在興起,一系列新的生產方式、組織方式和商業模式開始涌現,工業互聯網技術也在日趨成熟。工業互聯網是互聯網和新一代信息技術與工業系統全方位深度融合所形成的產業和應用生態,是工業智能化發展的關鍵綜合信息基礎設施。人們開始嘗試使用互聯網技術融入設計、生產、管理、服務等工業生產的各個環節,不論是自主探索或者是學習其他行業的成熟經驗,不可避免的就是新老技術的對接。
隨著物聯網技術逐步滲透工業,不斷增長的傳感器、飆升的數據量以及更高的大數據分析需求對原有的技術架構提出了挑戰。幾個問題必須直面:
(1)擴展性遇到瓶頸。傳統的技術架構雖然能保證單機具備極高的性能,也可以通過增加機器使性能線性擴展,但是不能像分布式系統那樣實現動態靈活的擴容和縮容,需要提前進行規劃。當業務升級需要系統擴容時,老架構的擴展性就很難滿足需求了。
(2)無法和大數據生態對接。數據采集的最終目的是被理解和使用,大數據產業中對于海量數據的存儲分析已經有很成熟的方案,不論是Hadoop還是Spark的生態圈,都面臨著新老技術的對接。很多工業企業因為想使用新的大數據分析技術,不得不對現有的系統進行升級或是替換。
(3)價格高昂。傳統的工業實時數據庫解決方案價格都十分昂貴,一般只有大型企業能接受。但是隨著新技術、新理念的普及,更多的中小企業也意識到數據的重要性,但考慮到資金投入,會傾向于尋找價格更低廉的方案。
四、從互聯網發展而來的時序數據庫
4.1 發展歷史
在進入互聯網飛速發展的時期之后,隨著通信技術的革新,數據通信成本的下降,掀起了一波又一波萬物互聯的熱潮。不僅是互聯網監控需要采集數據,人們每天接觸的手機、智能手環、共享自行車、汽車等,都在源源不斷地產生數據。人們實時地收集這些數據并發送到云端,用大數據技術進行分析,對業務進行監控和預測,以數據驅動企業降本增效,提高服務質量。
這些數據其實和工業領域大部分的實時數據有著一些相同的特征:單條數據不會很長,但是數據量很大;都帶有時間戳,且按順序生成;數據大部分都是結構化的,用于描述某個參數在某個時間點的特征;寫入的頻率會比查詢的頻率高很多;已存儲的數據很少有更新的需求;用戶會更關心一段時間的數據特征,而不是某一個時間點;數據的查詢分析大多基于某一個時間段或者某個數值范圍;需要進行統計和可視化的展示。
這些特征同樣可以對應到智能電表、環境監測設備、工業生產線產生的數據。但由于產生的時期和場景不同,工業上的解決方案會和互聯網的解決方案存在一定的差異(見表2)。
表2 兩種數據庫方案的差異
新架構下的時序數據庫在處理這些互聯網數據時的需求和傳統的實時數據庫有異曲同工之妙,可以說是同一種功能需求在不同領域的實現形式。互聯網新技術在向工業滲透的時候,會反映出一定的優勢和劣勢,而工業互聯網技術的發展也應順應雙方技術的互相滲透融合,互相吸收優點、彌補缺點,共同往更好的方向發展。
4.2 技術趨勢
隨著工業互聯網發展的需求日益清晰,在這兩種數據庫技術互相滲透的過程中,可以觀察到一些技術的發展趨勢。
(1)逐步向分布式架構轉變:傳統的實時數據庫多是主備的部署架構,通常要求有較高配置的機器,來追求單機極致的性能;同時,在穩定性方面,會對運行軟件的穩定性做極高的要求,完全由高質量的代碼來保證運行的穩定;由于存儲容量有限,也會要求超高的數據壓縮比。但時序數據庫的分布式架構,使得系統能夠輕松地進行水平擴展,讓數據庫不再依賴昂貴的硬件和存儲設備,以集群天然的優勢來實現高可用,不會出現單點的瓶頸或故障,在普通的x86服務器甚至是虛擬機上都可以運行,大大降低了使用成本。
(2)更靈活的數據模型:傳統的實時數據庫由于工業場景的特殊性,常使用的是單值模型,一個被監控的參數稱為一個測點,在寫入時會對每一個測點建一個模型,比如一個風機的溫度指標算一個測點,10個風機的10個指標就是100個測點,每個測點會附帶描述信息(名稱、精度、數據類型、開關量/模擬量等),查詢的時候就會針對每個測點去查詢數值。單值模型的寫入效率會很高。
而時序數據庫,開始采用多值模型,類似面向對象的處理方式,例如風機是一種數據模型,可以包括溫度、壓力等多個測量維度,還包括經緯度、編號等標簽信息,這樣對外提供服務時會更適合分析的場景。當然,單值模型和多值模型是可以互相轉換的,很多數據庫對外提供的服務為多值模型,但是底層存儲還是單值模型。
(3)SQL需求依然存在:目前大部分的時序數據庫都選擇了擴展性較好的NoSQL數據庫作為底層存儲,相比于關系型數據庫,NoSQL的數據模型更靈活,非常適合時序數據的多值模型;更易擴展,在資源受限或者需要提升性能的時候,可以輕易地增加機器;查詢效率高;開源軟件成本低。表3為開源時序數據庫使用的底層存儲模型。
表3 開源時序數據庫使用的底層存儲模型
使用NoSQL數據庫也會丟失一些特性,比如不支持事務,需要通過其他手段來保證數據一致性;比如不支持SQL,SQL作為一種標準查詢語句,已經被人們所習慣,是一種學習成本極低的操作,所以現在許多時序數據庫的廠家也在嘗試集成SQL引擎,降低產品使用的門檻。
(4)查詢要求以及表現形式更多樣化:在互聯網時代,查詢的要求已經不僅僅是滿足于一些基礎的條件查詢或是插值查詢,隨著物聯網場景的豐富以及人們對信息全面掌控的需求,基于地圖的應用越來越多,查詢會由時間的維度逐步擴展到空間的維度,除了保證實時性之外,更豐富的可視化的展現也是一大趨勢。
(5)逐步轉向云服務:傳統的工業場景處理實時數據出于安全和性能等原因都會使用私有化部署。機器、軟件以及后續的服務是一筆十分高昂的開銷,還需要配備專業的技術人員進行系統的維護。當服務逐步上云后,一方面省去了購置機器的成本,不需要特別安排維護機器和軟件系統的工程師,只需要懂得如何開發和維護業務就可以。另外,服務使用多少就購買多少,避免一次性購買服務造成的資源浪費或者資源不足再進行二次建設,可以為企業減少很大一筆開銷。隨著網絡和云計算技術的成熟,相關的性能和安全性也會不斷的升級,最終趨近于私有化部署的效果,服務上云已經成為了一個不可阻擋的趨勢。
(6)逐步向邊緣計算發展:工業領域是IoT的重要試驗田,工業互聯網的發展勢必會帶來更多傳感器的使用以及更多數據的采集。當數據過于龐大,集中化的處理方式就很難響應實時的數據分析需求,這就帶來了數據計算向邊緣的發展,需要實時響應的監控就通過邊緣設備及時的處理并反饋,需要用于大規模分析的數據再進行集中存儲,這種分級的處理方式能夠有效地提升時效性數據的價值,同時減輕存儲系統的負擔,所以許多時序數據庫正在研發邊緣計算版本,并配合流計算的能力使功能更加豐富。融合了邊緣計算的時序數據解決方案會更適合工業互聯網的處理場景(見圖1)。
圖1 使用邊緣計算技術實時處理數據的一種方案
五、產品調研
結合調研,總結了互聯網行業和工業企業中對實時/時序數據庫使用的一些共性要求,列出了33條細則,其中有7項設置為了可選項,不滿足不會影響正常的業務要求,滿足能為產品加分。
此次測試的目的是為了檢驗這些軟件架構上的不同是否會影響到基礎功能服務的提供,并進一步驗證數據庫應具備的技術要求。對國內7家提供實時/時序數據庫服務的廠家進行了一輪測試,參與者包括大型云服務提供商、傳統工業信息化解決方案提供商以及一些創業公司;產品覆蓋了NoSQL模型和關系模型、B/S架構和C/S架構、開源軟件和自主研發的軟件;部署模式涵蓋了本地化部署和云服務。
測試結果顯示,在25項必須具備的能力中,這些不同廠家的產品基本都能滿足,僅有一家產品不具備加密通信能力。由于服務的領域和場景不同,對于7個可選項,各家的產品展現出了一定的差異,以滿足不同的業務需求(見表4)。
表4 7家企業的測評情況
六、技術要求
在總結了業界的多款產品以及現階段的一些業務需求之后,總結了時序數據庫需要具備的一些技術要求,分為幾個層面:一是基礎功能,能保證數據庫具備可用性的一些最基礎的操作;其次是管理能力,決定產品的可管理性和易用性;再就是維護產品穩定運行和持續優化的一些特性,比如兼容能力、容錯能力、擴展性、安全性;最后是性能方面的一些考察項。
6.1 基礎功能
功能層面的要求決定了時序數據庫產品是否滿足最基礎的一些使用條件:涵蓋常用的額數據類型,如int、long、float、string、bool、bytearray等;數據的操作不丟失精度,支持毫秒精度數據讀寫;支持單域或多域寫入,提供單次和批量寫入接口;可以增加時間序列;支持單個時間序列和多個時間序列的查詢;支持按標簽進行過濾,包括精確匹配和模糊匹配;提供插值查詢能力,將數據補齊,并支持多種插值算法;支持按數值進行時間序列和數據點過濾;支持獲取最新數據點;提供多種維度的聚合查詢接口,包括時間窗口聚合、標簽分組,以及min、max、avg、count、sum等基本聚合函數;能夠實現可編程函數以滿足一些定制化的查詢要求;在物聯網的使用場景下,能進行基于地理位置的聚合查詢;支持按時間管理歷史數據,提供過期時間設置接口,可以高效清理歷史數據。
6.2 管理能力
完整和友好的管理能力可以有效地支撐時序數據庫的使用和維護,有助于數據庫的使用者和維護團隊有更好的使用體驗。具體指標包括:具備友好的部署能力或服務開通能力;全局范圍內的數據庫配置在線管理能力;能夠對數據庫狀態進行實時監控,并具備告警能力;支持用戶的新增、刪除等管理能力,支持為用戶分配不同的權限;數據庫具備在線組件升級功能;能夠查看時間序列的定義、標簽的定義、指標的定義;支持與其他類型數據庫間的數據導入和導出。
6.3 兼容能力
指數據庫產品能否與主流硬件、軟件及大數據生態對接的能力,具體包括:數據庫能夠在x86/x86-64等主流硬件上正常運行,異構硬件特別是不同CPU型號和主流操作系統能夠兼容;建議支持容器部署;能夠與Hadoop/Spark等大數據分析平臺對接。
6.4 容錯能力
時序數據庫應該具備一定的容錯能力,確保集群在硬件或軟件異常的情況下仍能保證數據與服務的完整性,內容包括:在發生硬件故障、操作系統故障或軟件服務故障時,運行中的服務不會受到影響;當請求超過集群能承載的壓力時,能夠通過一定的機制保證系統的可用性;能夠支持數據多副本存儲,在副本丟失時不影響查詢業務。
6.5 擴展性
時序數據庫應該具備良好的擴展性,能夠根據業務需求隨時進行集群的擴展和收縮,并保持數據的均衡:數據庫集群具備集群擴展能力,擴展前后保持數據均衡,且性能能夠隨之提升;數據庫集群具備集群縮減能力,縮減前后保持數據均衡。
6.6 安全性
時序數據庫應具備安全保障能力,主要包含:能夠對接入數據庫用戶進行身份認證工作;能夠對數據庫內操作進行審計工作;能夠支持客戶端與服務器端的加密通信,如HTTPS。
6.7 性能
時序數據庫應具備較高的處理性能,需要考察的內容包括:寫入吞吐量、寫入時延;查詢并發度、查詢時延;聚合操作時延;數據導入并發度、時延;數據壓縮的效率。
七、結束語
本文從幾個層面分析了工業中時序數據處理的挑戰,描述了工業領域傳統的處理方案,以及在互聯網領域發展出的新技術架構,并進行了對比。為了解決工業中新涌現的問題,兩種實現方案需要各取所長,互為補充,以使互聯網技術更好地在工業領域應用。并對產業界時序數據庫技術的發展方向進行了分析,通過對需求方和供給側的研究,總結出了一些在新時期對于時序數據庫的技術要求。這項工作對于工業數據應用的后續發展具有很重要的意義,還將繼續研究時序數據處理的性能要求,并研發適合工業場景數據特征的測試基準和工具。
作者簡介
王妙瓊:中國信息通信研究院云計算與大數據研究所大數據與區塊鏈部工程師。
聯系方式:wangmiaoqiong@caict.ac.cn
魏凱:中國信息通信研究院云計算與大數據研究所副所長,工業互聯網產業聯盟工業大數據特設組副主席,國際電信聯盟第十六研究國內對口組組長,國際電信聯盟分布式賬本標準組副主席,TC601大數據技術標準推進委員會常務副主席。
聯系方式:weikai@caict.ac.cn
姜春宇:中國信息通信研究院云計算與大數據研究所大數據與區塊鏈部副主任,工程師。
聯系方式:jiangchunyu@caict.ac.cn
來源:中國信通院