華為雲GaussDB(for Influx):讓智慧電網時序資料處理更高效

路過的憨憨發表於2022-11-24

1. 電網場景中的時序資料

今天 在手機上就可以直接交電費、檢視剩餘電量、電量不足還可以發出告警提醒、以及分析過去的用電情況、預估未來用電情況等等。再也不用去繳費點繳費,也不用人工去每個電錶上抄每家的使用情況,這些都基於我們國家的智慧電網建設,而以上只是對消費者帶來的一些便利。智慧電網在電網線路監控、電力排程、配電等方面發揮著越來越重要的作用。

 

智慧電網是由許多部分組成,包括智慧變電站,線路輸送,智慧互動終端,智慧電錶,智慧中央系統等等。每個部分都整合了大量的感測器,這些分佈在全網各節點的感測器無時無刻不在收集各類資料。隨著中國智慧電網建設的不斷完善,其測點的規模越來越大,達到數千萬級以上,並且單個測點將以分鐘級甚至秒級的頻率產生資料。 將會產生海量的監控資料,而且這些資料大部分屬於時序資料。

因此在針對智慧電網構建集中式資料中心時, 如何儲存、處理、分析海量的監控資料成為一個難點 ,具體包括以 下面三個方面

·  資料規模超大,分佈密集 ,資料儲存難

智慧電網中 WAMS 系統為例,每秒需要處理的時序資料記錄數可達到一千萬, 因此需要支撐每秒千萬級別的寫入。 常規的資料處理方式根本無法 滿足需求。

·  資料處理實時性需求高

針對數千萬的電錶終端,客戶在充值後要立即生效,客戶產生的電量要實時的計費,並反饋給客戶等場景,都需要實時的處理海量資料

針對數千公里的電網線路監控,如果出現異常,要能及時告警等,

·  資料價值挖掘困難

電網檢測點多,檢測資訊密集,在如此海量的資料中挖掘出有價值的資訊也會遇到很大的挑戰。

1.1 智慧電網裝置中的時序資料

智慧電網中的時序資料一般是指由裝置/儀表產生,由感測器進行收集,與某一裝置具體相關,在時間上前後存在關聯性的一類資料。如上圖所示,對於電網中的電錶裝置,其電壓、電流值就是典型的時序資料。

一條時序資料記錄一般可定義為三元組: <DevicelD, Timestamp, Value>

·  DeviceID : 產生該條資料的物理裝置/感測器

·  TimeStamp 為記錄產生的時間戳

·  Value : 為裝置測點具體的值。

在智慧電網裝置執行中,需要儲存的資料包括狀態量和模擬量。狀態量反應裝置的執行狀態和告警狀態,一般透過事件順序(Sequence of Event SOE )記錄可滿足對資料的檢索和分析需求。電流、電壓和功率等模擬量會隨著裝置執行時刻變化,具有明顯的時序特性,需要進行時序儲存。透過在選定的時間內查詢 SOE 記錄,可以將狀態量和模擬量進行關聯分析。智慧電網監控系統中,已對斷路器、隔離開關,變壓器、負荷和聯絡線等電網裝置進行建模,資料模型包括狀態量和模擬量,其中模擬量包括電壓、電流、有功、無功和頻率等,不同的裝置型別需要採集和儲存的模擬量不同。以智慧電錶為例子,智慧電錶是組成智慧電網的基礎設施,通常安裝在使用者樓宇,用於收集每戶產生的電力負荷資料,智慧電錶至少每天將這些資訊反饋給中央系統。智慧電網時間序列資料主要由大量的時間戳 / 值對組成,且通常一次寫入,多次查詢,很少修改或刪除,但可追加,根據智慧電網應用場景,一般訪問一段時間內或某一時間點的資料。

下面我們可以具體看一下不同的電網裝置採集和儲存時序資料也大有不同。

1.2 各類智慧電網裝置時序資料測點舉例

·  線路輸送裝置資料儲存需求

智慧電網線路裝置主要包括母聯,母線,變壓器,容抗器,聯絡線,負荷和發電機,這些裝置採集和觀測的指標也各有不同。

·  智慧電錶裝置資料儲存需求

主要指安裝在使用者樓宇的智慧電錶收集的電力負荷資料,本質上是時間序列資料。以固定的短暫的時間間隔為單位持續記錄,並實時反饋給中央監控系統。其對於客戶和電網公司非常重要,因其可被用於許多電網服務,比如跟蹤電能消耗和預測電力負荷。除此之外,

電能表凍結電量值 - 電能表定時凍結,瞬時凍結,日凍結,整點凍結也是很重要的指標,用於計費使用者用電量和管理梯度用電使用情況。一般會對電能表定時凍結,瞬時凍結,日凍結,整點凍結資料儲存和查詢,方便對年度、季度、月度的電量進行計算查詢。

 

 

1.3 電網資料常用的查詢場景

智慧電網資料採集及監控系統(SCADA )作為智慧電力物聯網的一部分, 對於時序資料處理有著多種維度查需和資料聚合需求, 不僅需要實時監控,需要歷史資料分析,例如歷史 PDR 反演和事故分析。

因此智慧電網行業應用場景對時序資料的訪問方式主要有三種

·  折線查詢 獲取指定裝置一段時間內的相關量測值, 如查詢特定使用者智慧電錶在一段連續時間內的有功電能量。即測量物件為正向有功尖能量 (fd.shark.electricity) ,測量屬性為 user= lvsejiayuan.A.unit2.603 dtype=ammeter ,需查詢 2014.09.01 這一天的正向有功尖電能量。  

對於折線查詢,物件為監測的裝置或關注的指標,特徵集可標識為 FSet = <(t1,v1), (t2,v2), ......, (tn,vn)> ,其中 (t1, t2, t3, ......, tn) 為特定的時間序列,使用基於時間戳的偏移表示; (v1, v2, v3, ......, vn) 為與時間序列相對應的量測值。  

·  斷面查詢 獲取特定時間點特定區域內所有裝置的相關量測值,如查詢特定時間點某地區所有使用者智慧電錶的有功電能量。及測量物件為正向有功尖能量 (fd.shark.electricity) ,測量屬性 dtype=ammeter , 時間戳為 1409529600 (2014.09.01 08:00:00) ,需查詢某地區特定時刻所有智慧電錶的正向有功尖電能量。

對於斷面查詢,物件為關注的區域/ 邏輯物件 ( 如街道 / 生活區 / 電廠 ) ,特徵集可標識為 FSet = <(d1,v1), (d2,v2), ......, (dn,vn)> ,其中 (d1, d2, d3, ......, dn) 為區域 / 邏輯物件所包含的裝置 / 測點, (v1, v2, v3, ......, vn) 為對應的裝置 / 測點在指定時間戳的值。

·  裝置最新狀態查詢 : 這種場景類似於斷面查詢,只是針對最新最近的資料。通常用於檢測裝置是否正常工作。

2. 電網時序資料儲存探索

 

最早的時候,智慧電網相關應用系統中,一般使用 Oracle Db2 等關係型資料庫處理時序資料。

然而, 傳統的實體關係模型在應對時序資料時存在如下問題

·  資料儲存孤立分離。按照實體關係模型, 一條時序資料記錄被儲存為單獨的一行,因此連續 時間段內的資料被孤立分離地儲存在資料庫中。

·  資料的訪問速度與資料量的大小成反比。 隨著資料量的增加,訪問速度越來越慢。同時,大多數關係型資料庫為了提升查詢效能,針對大量資料建立索引,由此消耗大量的系統資源。

·  無法滿足時序資料的實時處理需求。對於海量時序資料,關係型資料庫無法高速的載入並滿足處理需求。

 

後來,電力系統內的普遍做法轉向使用商業時序資料庫軟體,如 OSIsoft Pi eDNA 等作為時序資料的儲存和讀取工具。利用實時資料庫進行時序資料處理。

然而實時資料庫在應對智慧電網大資料時存在如下問題: 

·  無法支援大規模測點管理。對於國家級或省級智慧電網而言,需要支援上億甚至上十億的測點規模。然而,無論 PI eDNA ,均無法為大規模測點管理提供支撐。  

·  擴充套件能力不足。實時資料庫一般只支援單機部署,無法叢集部署,無法支撐大規模資料應用。 

·  高可用與資料安全性不足。實時資料庫一般不具備高可用特性,對於所儲存的資料的安全性,也完全依賴於硬體與資料庫軟體本身,不支援資料冗餘備份,無法應對大資料分析場景。

 

隨著大資料技術的發展,近年來也有一些基於開源的 HBase Cassandra NoSQL 資料庫處理時序資料的研究和應用。

這些分散式 NoSQL 資料庫雖然解決了擴充套件能力,但是其通用的資料組織方式並不完全適合智慧電網行業對時序資料儲存和查詢需求,使用者必須根據實際應用場景,進行特殊設計甚至大量資料冗餘儲存才能較好的利用資源處理請求。

大部分僅提供的單個測點的資料儲存介面,無法將裝置模型資料與離散測點結合,難以支撐歷史潮流分析、故障分析和 WAMS 等智慧電網高階應用。除此之外,它們的資料模型單一,對於讀取一定時間範圍內的資料記錄效率較高,但對於定位某個時間點的多條記錄,過濾,組合等一系列操作將浪費大量 I/O 資源。其次,二維資料模型中的每個儲存單元由主鍵和列限定符唯一表示,因而大部分磁碟都浪費在儲存重複的主鍵,存在大量冗餘資訊,儲存效率低。同時,由於智慧電網場景 對於時序資料處理有著多種維度查需和資料聚合需求 ,通用 KV 資料庫往往需要結合 ElasticSearch / Solr 等搜尋引擎進行加速或者需要開發巧妙設計 KV 結構才能達到很好的效果,但是這樣大幅度提升了開發員人的學習和運維成本。

 

針對電網場景中時序資料,專業的分散式時序資料庫是最好的選擇,因為他們具備以下重要的特性

 

·  靈活多變的資料模型 : 使用者根據業務需求,透過標籤組合的方式自由定義資料模型,同時也可以根據業務變化和演進進行變更。

·  高寫入吞吐量 分散式時序資料庫解決大規模叢集的橫向擴充套件問題,保證高效能平穩寫入的需求。

在一些大規模的應用效能監控、物聯網場景,海量的裝置持續產生時序資料,例如省域級別的電網用電測量資料,9000 萬數量級的電錶裝置,原來每個月採集一次,後續業務升級後 15 分鐘採集一次,每秒需要處理的時序資料點數達到數百萬甚至千萬資料點,需要龐大且可以橫向水平擴充套件的叢集來支撐全量的業務寫入。

·  高效的時序資料查詢與分析 時序資料庫支援多維時間線檢索、並具備流式處理、預計算等能力,滿足大規模 APM 、物聯網,工業物聯網等業務場景的典型查詢需求。

在典型的監控場景,通常需要對長週期的資料進行查詢分析,比如針對某些指標最近1 天、 3 天、 7 天、 1 個月的趨勢分析、報表等;而在物聯網場景,有一類比較典型的斷面查詢需求,例如查詢某個省指定時間所有電錶的用電量量明細資料,查詢某個品牌空調的某個時間的平均執行溫度;這些查詢要掃描大量的叢集資料才能拿到結果,同時查詢的結果集也可能非常大。

·  低成本的時序資料儲存 時序資料庫充分利用好時序資料量大、冷熱訪問特徵明顯,進行計算、儲存資源的解耦,透過低成本儲存介質、壓縮編碼、冷熱分離、高效 TTL 等技術將資料儲存成本降低到極致。

在車聯網場景,20000 輛車每小時就產生近百 GB 的車輛指標資料。如果要儲存一年的執行資料就需要 PB 級的資料儲存規模。由於資料規模巨大,對儲存的低成本要求很高,另外時序資料的冷熱特徵明顯。

·  豐富的生態協同 時序資料庫與資料視覺化平臺、大資料處理、流式分析系統等對接,與周邊生態形成協同來創造業務價值。

在物聯網、工業網際網路等場景,時序資料通常有進一步做運營分析處理的需求,在很多情況下時序資料只是業務資料的一部分,需要與其他型別的資料組合來完成查詢分析。

3. 智慧電網資料模型

下面我們具體看一下智慧電網中的資料模型,從而進一步體現為什麼時序資料庫是智慧電網場景中資料處理的最佳選擇。

3.1  統一標準 SG-CIM 

針對現在電力行業各企業業務資料模型多樣化,非統一,互動困難等問題, 國家電網公司透過分析整合,提出了一個新型的企業公共資料模型(SG-CIM ), 形成了統一的資訊檢視,實現多企業多業務應用系統間的資料互動共享。 SG-CIM 和時序資料庫模型非常匹配。

在智慧電網管理平臺中,SG-CIM 資料模型中的每個葉子節點稱為測量物件,葉子節點標籤稱為測量屬性,它由一個或多個鍵值對組成,用於進一步刻畫補充測量物件的屬性資訊,根至葉子節點的全路徑稱為使用者屬性,作為一個特殊屬性處理。

測量物件+ 時間戳 + 測量屬性 + 測量值的組合稱為一條時間序列資料記錄,也稱電力負荷資料測點。 以某樓宇中某居民使用者安裝的智慧電錶為例,描述 SG-CIM 資料模型在海量資料管理平臺中的應用,如下圖所示。

 

根據 SG-CIM 資料模型,一條時間序列資料記錄由如下幾部分組成

·  測量物件 (obj) :  一個被定量測量物件的名稱,比如電能量,吞吐量等。

·  時間戳 (timestamp) :  UNIX 時間表示(秒或毫秒),用於標識這條時間序列被記錄 / 儲存的時間。

·  測量屬性 (tag) :  鍵值對,用於區分或組組織測量物件相同,但來自不同源或相關實體的相似資料點,增加靈活性。

·  測量值 (value) :  該測量物件在當前時刻的實際測量值,整型或浮點型。 

測量物件 (obj) SG-CIM 資料模型中的每個葉子節點來刻畫,例如正向有功尖能量 (fd.shark.electricity)

測量屬性 (tag) SG-CIM 資料模型中葉子節點的屬性:使用者 (user) 和裝置型別 (dtype) 等屬性來描述,例如 user= lvsejiayuan.A.unit2.603 dtype=ammeter user 是一個特殊的屬性,用根至葉子節點的全路徑刻畫。

3.2 根據 SG-CIM 模型進行時序資料模型設計 - 多值模型和單值模型

·  單值模型即對測點建模,以單個測點對測點定義時序取樣。

按裝置將每個裝置的測量值屬性分別定義到時序資料庫中。

這種儲存方式資料定義、變化值提交和歷史值查詢都相對簡單。

缺點同樣明顯,儲存在時序資料庫中資料沒有關聯性,如需同時查詢線路的有功和電流,則需要分兩次查詢,查詢效能較低,同時也不利於做關聯性分析。

OpenTSDB Prometheus 時序資料庫採用的是單值模型。

·  多值模型即對裝置 / 資料來源進行建模,例如基於智慧電網裝置建模。

在時序資料庫中,將同一個裝置採集的不同測點屬性儲存在一張表的不同域。

這要只需要一次查詢,即可得到一個裝置的所有量測,查詢效率和資料同步行都相對較高。

線路設別在時序資料庫中的記錄可定義為八元組:<oid,timestamp, i_value, i_status, p_value, p_status, q_value, q_status>

GaussDB(for Influx), InfluxDB TimeScaleDB 等時序資料庫採用的是多值模型。

 

4. GaussDB(for Influx)  如何支撐龐大的智慧電網資料

4.1 GaussDB(for Influx) 

 

 

雲原生分散式時序資料庫 GaussDB(for Influx) 採用儲存計算分離架構。

·  叢集能力方面 : 具備非常平滑快速的彈性擴縮容能力。叢集可以輕鬆擴充套件至每秒千萬點寫入吞吐量, PB 界別的儲存支援。

·  服務和資料高可用方面 : 資料三副本儲存確保資料可用性;叢集跨 AZ 可用區容災部署,叢集最大支援 N - 1 節點故障,同時資料自動負載均衡避免熱點。

·  時序資料儲存方面 : 深度最佳化儲存引擎,確保穩定的高吞吐量寫入;同時時序資料的自適應壓縮能力,讓時序資料壓縮比達到 20 : 1 ;自動的資料冷熱分層儲存,進一步降低資料儲存成本。

·  時序資料計算方面 : 整合了豐富的資料聚合,降取樣,插值,預算,異常檢測等運算元。同時支援邊雲同步能力,實現資料邊雲一體化。

·  在生態和開源相容方面 : 支援多種開源時序資料庫協議,例如 Prometheus Graphite OpenTSDB ,同時完全相容 InfluxDB 生態。

4.2 基於 GaussDB(for Influx) 的電網資料模型設計

GuassDB(for Influx) 在生態和協議方面完美相容 InfluxDB InfluxDB 靈活多變的 Schema-Free 行協議可以完美匹配 SG-CIM 模型。

資料寫入時候,不需要提前建立 Schema 定義,同時支援 Tags Fields 欄位自由擴充套件,未來有需要新增維度的時候,可以動態進行增加。

可以參考下面簡單的例子

我們以智慧電網中線路裝置資料為例子,根據行協議如何將 SG-CIM 模型轉化成 GaussDB(for Influx) 資料模型

·  Measurement : stbl_line ,相當於關係型資料庫中的表概念。

·  Fields : SG-CIM 模型中的多個 測量物件 (Obj) ,即 線路裝置採集和上報的指標項,後期可以動態擴充套件。

i_value, i_status : 電流相關指標

p_value, p_status : 電壓相關指標

q_value, q_status : 功率相關指標

其中各個指標項採集的值是 測量值 (value) 

·  Tags : SG-CIM 模型中的 測量屬性 (Tag) 表示線路裝置靜態屬性標籤,可以根據系統需要自定義和擴充套件

deviceId : 裝置標識 ID

deviceType : 裝置型別標識

line : 線路標識 ID

·  Timestamp : SG-CIM 模型中 時間戳項。

 

stbl_line , line = XXX線路 , deviceType = XXX , deviceId = E08995   i_value = X , i_status = X , p_value = X , p_status = X , q_value = X , q_status = X   1663121437010000000

5. 總結  

GaussDB(for Influx) 是一款基於計算儲存分離架構,完全相容 InfluxDB 生態的雲原生時序資料庫。依託於華為雲端計算平臺高效能,高可靠,高安全,可彈性伸縮的基礎上, GaussDB(for Influx) 提供時序資料高效儲存、分析、展示功能,同時具有高寫入效能、靈活擴容、高壓縮率和高查詢效能等特點 GaussDB(for Influx) 可以廣泛應用於各種時序資料處理場景,例如工業物聯網,車聯網,物聯網,運維監控,銀行金融等。

 


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/70023321/viewspace-2925066/,如需轉載,請註明出處,否則將追究法律責任。

相關文章