官术网_书友最值得收藏!

1.3 物聯網工程和時序數據庫

和IT類工程一樣,系統中存在數據庫。和傳統數據庫不一樣的是,物聯網數據具備以下特點。

? 采集的所有數據都是時序數據,即和時間強關聯,每一個數據都有時間戳。

? 數據是結構化的,不存在非結構化數據(如文件、圖像等)。

? 一個數據采集點產生唯一的時序流,按照采集點進行時間組織。

? 很少有數據更新或刪除操作。

? 一般是按到期日期刪除數據。

? 數據以寫操作為主,讀操作為輔。

? 數據流量平穩,可以較為準確地計算。

? 數據都有統計、聚合等實時計算操作。

? 一定是在指定時間段和指定區域查找數據。

? 數據量巨大,一天的數據量就超過100億條。

由于這些特點,如果用傳統的關系數據庫(如Oracle、SQL Server、MySQL)處理物聯網數據,將非常困難,性能也得不到保證。同時,這些不間斷產生的數據最終需要進行一些分析,因此需要在不斷寫入的情況下進行數據抽取,合并其他業務數據進行數據分析工作,如:綜合所有的溫濕度傳感器的數據并配合辦公場地的考勤數據進行統一分析,得到實時調節空調新風的方案。同時,海量數據處理面臨挑戰,如一臺設備每秒上報一條數據,每條數據中包含10個參數,則一天產生864000個數據點,一年約產生3.15億個數據點。再假設一個車間部署1000個設備,每年就產生3150億個數據點,3.4TB數據,100個車間則需要處理340TB數據,存儲5年則為1720TB數據。因此面對物聯網的新型環境,數據庫面臨的挑戰是如何實現高效寫入、高效查詢、存儲空間動態擴展、水平擴展、簡單易用和安全可靠。

在物聯網場景下,傳統的數據庫存在以下缺陷。

? 關系數據庫:海量時序數據讀寫性能低,分布式支持差,數據量越大,查詢越慢。典型場景包括低頻監控場景、業務管理系統。典型產品包括Oracle、SQL Server、MySQL。

? 傳統工業實時庫:架構陳舊,無分布式方案,無法水平擴展、依賴Windows等環境、分析能力弱,而且往往是封閉系統,無法云化部署。典型場景包括SCADA系統、生產監控系統。典型產品包括Wonderware、Siemens SIMATIC WinCC、Rockwell Auto mation FactoryTalk、GE Digital iFIX等。

? Hadoop大數據平臺:組件多而雜,架構臃腫,支持分布式但單節點效率低,硬件維護、人力成本非常高。典型場景包括輿情大數據分析、電商大數據分析。

? NoSQL數據庫:計算實時性差,查詢慢,計算內存、CPU開銷巨大,無針對時間關系的優化措施。典型場景包括非結構化數據存儲、爬蟲數據。典型產品包括MongoDB等。

在此背景下,市面上出現了一類新的數據庫:時序數據庫。時序數據庫是一種專門用于存儲、管理和查詢時間序列數據的數據庫系統。時間序列數據是按照時間順序采集的數據,通常包括時間戳和與該時間相關聯的值,如傳感器數據、日志、監控數據等。時序數據庫優化了時間序列數據的存儲和檢索,以滿足對這類數據的高效處理需求。

以下是一些時序數據庫的特點。

? 高效存儲和壓縮:時序數據庫采用特定的存儲結構和壓縮算法,以最小化數據存儲空間,并提高數據寫入和讀取的效率。

? 快速查詢和分析:提供高效的查詢引擎,能夠快速檢索和分析大量的時間序列數據,支持常見的聚合、計算、過濾等操作。

? 時間索引和劃分:時間序列數據按時間進行索引和劃分,以便快速定位和訪問。

? 實時數據流采集和處理:支持實時數據流處理和采集,并實時存儲。

? 數據質量和一致性控制:提供機制確保數據的質量和一致性,包括重復數據檢測、缺失數據處理等。

? 擴展性和分布式架構:具備良好的橫向擴展能力,可以分布式存儲和處理大規模數據。

? API和集成:提供豐富的API,方便開發人員輕松地對時序數據庫完成存儲、抽取等各種數據操作。

一些常見的時序數據庫系統如下。

? InfluxDB:一款高性能的開源時序數據庫,專注于快速存儲和查詢大量時間序列數據。

? TDengine:一款高性能、高可靠的國內開源時序數據庫系統,專門用于存儲和處理大規模時間序列數據。它被廣泛用于物聯網、金融、工業監控、智能制造等領域,以滿足大數據量、高寫入頻率、實時查詢和分析的需求,查詢性能上已經超過In-fluxDB。

? Apache IoTDB:一款開源、高性能的時序數據庫系統,專門用于存儲、管理和查詢大規模物聯網領域的時間序列數據,是由清華大學數據庫研究團隊于2015年發起的開源時序數據庫項目,在2019年向Apache軟件基金會提交并被接納為Apache頂級項目,提供了可擴展、靈活、高性能的時間序列數據管理解決方案。

? Prometheus:開源的監控系統和時序數據庫,用于記錄和查詢實時監控數據。

? KairosDB:開源的分布式時序數據庫,用于大規模時間序列數據的存儲和分析。

? Graphite:一款開源的時間序列數據存儲和可視化系統,用于監控和度量。

? OpenTSDB:基于HBase的開源時序數據庫,用于大規模、高性能的時間序列數據存儲和查詢。

從2013年開始,物聯網時序數據庫得到了高速發展。從DB-Engines的專業統計可以看出,2020年是發展最為迅速的一年,如圖1-8所示。

圖1-8 時序數據庫發展趨勢

商用物聯網工程需要選擇一個合適的時序數據庫作為基礎,通過Node-RED和時序數據庫的專用節點進行對接,或者按照時序數據庫的接口進行自定義節點開發。目前,In-fluxDB在Node-RED中的節點名字為node-red-contrib-influxdb,可以通過節點名字搜索實現安裝。

主站蜘蛛池模板: 上高县| 灌阳县| 前郭尔| 阿拉善右旗| 大同县| 松溪县| 新乐市| 汉沽区| 镇江市| 论坛| 五华县| 封丘县| 濉溪县| 获嘉县| 通城县| 彭山县| 托克逊县| 海兴县| 万州区| 两当县| 唐海县| 洪泽县| 延津县| 桦南县| 县级市| 龙州县| 余江县| 宁河县| 仁化县| 乌审旗| 九寨沟县| 安徽省| 乐亭县| 贞丰县| 喀喇沁旗| 安乡县| 和田县| 仙桃市| 墨脱县| 新闻| 周宁县|