《2019年專為物聯網而生的大數據平臺TDengine 的設計.pdf》由會員分享,可在線閱讀,更多相關《2019年專為物聯網而生的大數據平臺TDengine 的設計.pdf(37頁珍藏版)》請在三個皮匠報告上搜索。
1、TDengine專為物聯網而生的大數據平臺物聯網產業鏈芯片模組、終端數據采集網絡、IoT平臺邊緣計算數據引擎(存儲查詢計算)分析應用系統+IoT設備數量增長Gartner預計,2021年全球IoT設備數量將達250億,屆時,物聯網生成的總數據量將達到每年600ZBIoT物聯網市場增長2020年全球物聯網市場規模將達到1.7萬億美元,2023年,全球數據庫市場規??沙^500億美元通用大數據方案的挑戰:低效、復雜、高成本通常將開源的 Kafka,Redis,Hbase,MongoDB,Cassandra,ES,Hadoop,Spark,Zookeeper 等大數據軟件拼裝起來,利用集群來處理海量
2、數據。因牽涉到多種系統,每種系統有自己的開發語言和工具,開發精力花在了系統聯調上,而且數據的一致性難以保證。開發效率低非結構化數據技術來處理結構化數據,整體性能不夠,系統資源消耗大。因為多套系統,數據需要在各系統之間傳輸,造成額外的運行代價。運維效率差每個系統都有自己的運維后臺,帶來更高的運維代價,出問題后難以跟蹤解決,系統的不穩定性大幅上升。運維復雜集成復雜,得不到專業服務,項目實施周期長,導致人力攀升,利潤縮水。應用推向市場慢物聯網大數據的特點所有采集的數據都是時序的1數據都是結構化的2一個采集點的數據源是唯一的3數據很少有更新或刪除操作4數據一般是按到期日期來刪除的5數據以寫操作為主,讀
3、操作為輔6數據流量平穩,可以較為準確的計算7數據都有統計、聚合等實時計算操作8數據一定是指定時間段和指定區域查找的9數據量巨大,一天的數據量就超過100億條10TDengine 應運而生TDengine 提供的功能自帶消息隊列,無需 Kafka 或其他 MQ消息隊列所有設備最新記錄實時返回緩存實時數據庫,歷史數據庫,操作合一透明數據庫對一個或多個數據流實時聚合計算流式計算最新的數據可實時推送到應用數據訂閱物聯網數據的全棧解決方案TDengine 的整體架構集群管理、資源調度、系統監測TDengine各類數據源數據采集實時數據歷史數據分析引擎流式計算SQL 引擎元數據各類應用TDengine 技
4、術生態圖Shell:CommandLine InterfaceVisualization ToolGrafanaTime-series Data Processing EngineTDengineTDengineAnalytics,ML ApplicationsPython/Matlab/RJava/C/C+/RestfulIoT ApplicationTelegrafKafkaOPCData HubMQTTServerWeb BasedManagement ToolClusteredTDengine 的產品競爭力u定義了創新的時序數據存儲結構,通過采用無鎖設計和多核技術,TDengine 讓
5、數據插入和讀出的速度比現有通用數據庫高了10 倍10 倍以上。u單核一秒就可處理 2 萬以上插入請求,插入數百萬數據點,可從硬盤讀出一千萬以上數據點。u數據都有預聚合處理,多表聚合查詢保證只掃描一次數據文件,查詢速度數量級的提升。8 核服務器,100 億條記錄的平均值計算不到 2 秒。完整對比測試報告,請參閱:10 倍以上的性能提升TDengine 的產品競爭力完整對比測試報告,請參閱:u由于超強性能,計算資源不到通用大數據方案的 1/5;通過列式存儲和先進的壓縮算法,存儲空間不到通用數據庫的 1/10。u不用再集成 Kafka,Redis,Spark,Hbase 等系列軟件,系統架構大幅簡化
6、,產品研發成本大幅下降。u零管理,不用分庫分表、不分歷史庫、實時庫,數據實時備份,運維成本大幅下降??倱碛谐杀敬蠓陆礣Dengine 的產品競爭力零學習成本u安裝包僅僅1.5 MB1.5 MB,不依賴任何其他軟件。從下載、安裝到成功運行幾秒搞定u使用標準的SQL 語法SQL 語法,并支持 C/C+,JAVA,GO,Python,RESTful 接口,應用 API 與 MySQL 高度相似,讓學習成本幾乎為零u無論是十年前還是一秒鐘前的數據,指定時間范圍即可查詢。數據可在時間軸或多個設備上進行聚合。臨時查詢可通過Shell/Python/R/Matlab 隨時進行u與第三方工具 Telegra
7、f,Grafana,Matlab,R 等無縫鏈接create database demo;use demo;create table t1(ts timestamp,degree float);insert into t1 values(now,28.5);insert into t1 values(now,29.0);select*from t1;select avg(degree),count(*)from t1;CNC 應用場景.MQTTServerCNCCNCCNCCNC數 據輪 詢轉 換模 塊TDengineTDengine集 群App(最新狀態顯示)Mobile AppApp(分析
8、報表)關系數據庫,配置、設備、人員信息管理、以及報警信息統計ETL關鍵指標:相對MySQL,數據壓縮率提升18倍查詢速度提升20倍以上電力IDC運維監測場景Telegraf+TDengine+Grafana 組合:無需代碼、搭建一個高效的IT運維監測平臺GrafanaTelegraf CPURAMNETNGIXDB Telegraf CPURAMNETNGIXDBTDengineTDengine集 群 TDengine 應用場景上網記錄、通話記錄交易記錄、卡口數據智能電表、水表、氣表電網、管道、智慧城市服務器/應用監測用戶訪問日志、廣告點擊日志火車/汽車/出租/飛機自行車的實時監測電梯、鍋爐、
9、機床機械設備實時監測天氣、空氣、水文地質環境監測TDengine 技術介紹TDengine 對外接口C/C+Java、PythonClient 接口REST APIClient 接口SPARKHadoop接口Meter數據采集點DBA Tool引擎管理工具Meter數據采集點TDengineClusterTDengine 系統結構V0V1V3dnode 7V0V1V3M0V0V1V3V2V0V1V3V2dnode 0V0V1V3V2dnode1 dnode 2dnode 3V0V1V2dnode 4V0V1M1V2dnode 5V0V2V3V1dnode 6M2V3TDengine 一典型流程
10、appvnodemnode1:insert3:response2:get meta-data4:insert5:ack6:acktaosc使用 KV 或關系型 DB,在多個數據采集點存在的情況下難以保證一個采集點的數據在內存或硬盤上的連續性TDengine,一個采集點的數據在一個塊里是連續存放的,塊的大小可配置采取 Block Range Index,可快速定位要查找的數據所處的塊012345012345數據模型:一個設備一張表TDengine 數據寫入流程WriteWriteAppAppmemorydiskCommit logVnodeFILEFILEFILEFILEPeerPeerVnod
11、eVnodeFlushTDengine 數據壓縮u采取列式存儲,便于壓縮u不同數據類型采用不同的壓縮算法,包括 delta-delta 編碼、simple 8B 方法、zig-zag 編碼、LZ4等算法u二階段壓縮:壓縮的基礎上,用通用壓縮算法進行再壓縮與傳統關系型數據庫一樣,采用SQL語法,應用需先創建庫,然后建表,就可以插入、查詢create database demo;use demo;create table t1(ts timestamp,degree float);insert into t1 values(now,28.5);select*from t1;上述SQL 為一個溫度傳
12、感器創建一張表,并插入一條記錄、然后查詢TDengine 單個采集點數據插入、查詢示例STable(超級表)是表的集合,包含多張表,而且每張表的schema是一樣的。同一類型的采集設備可以是一個STable,除定義Schema外,還可定義多個標簽。標簽定義表的靜態屬性,如設備型號、顏色等。具體創建表時,指定使用哪個STable(采集點的類型),并指定標簽值。應用可以象查詢表一樣查詢STable,但可以通過標簽過濾條件查詢部分或全部數據采集點的記錄,并且可以做各種聚合、計算等,方便支持復雜查詢,應對業務需求。實際場景中,經常需要將多個采集點數據進行聚合處理,比如所有溫度傳感器采集的溫度的平均值。
13、因為一個傳感器就是一張表,這樣需要將多張表聚合。為減少應用的復雜性,TDengine引入STable概念。每個表(采集點)都有對應一行的標簽數據,保存在Meta節點,而且存放在內存并建有索引。標簽數據可以任意增加、刪除、修改。標簽數據與采集數據完全分離,大大節省存儲空間,并提高訪問效率。而且對于已經采集的歷史數據,事后可以打上新的標簽。TDengine 超級表:多個采集點的數據聚合create table thermometer(ts timestamp,degree float)tags(loc binary(20),type int);為溫度傳感器建立一個 STable,有兩個標簽:位置和
14、類型create table t1 using thermometer tags(beijing,1);create table t2 using thermometer tags(beijing,2);create table t3 using thermometer tags(tianjin,1);create table t4 using thermometer tags(tianjin,2);create table t5 using thermometer tags(shanghai,1);用 Stable 創建 5 張表,對應 5 個溫度傳感器,地理位置標簽為北京、天津、上海等se
15、lect max(degree),min(degree)from thermometer where loc=beijing or loc=tianjin;查詢北京和天津所有溫度傳感器記錄的最高值和最小值TDengine 超級表實例DataNode0DataNode1MetaNodeDriverDataNodeApp4-15-14-05-05-24-2TDengine 聚合計算流程實際場景中,經常需要將一段時間的數據進行聚合,比如downsampling,采樣頻率為一秒一次,但最終只記錄一分鐘的平均值。TDengine引入關鍵詞interval,以進行時間軸上的聚合操作。時間軸的聚合既可以針對
16、單獨一張表,也可以針對符合標簽過濾條件的一組表進行。select avg(degree)from t1 interval(5m);查詢溫度傳感器t1記錄的溫度每五分鐘的平均值select avg(degree)from thermometer where loc=beijing interval(5m);查詢北京所有溫度傳感器記錄的溫度每五分鐘的平均值TDengine 時間軸上的數據聚合目前支持Avg,Max,Min,Percentile,Sum,Count,Dev,First,Last,Diff,Scale,WAvg,Spread等操作。計算是針對時間段,同時可針對一張表或符合過濾條件的一組
17、表進行聚合。實時計算的衍生數據可以實時寫入新的表,方便后續的查詢操作。衍生數據還可以與其他原始數據或其他衍生數據進行各種聚合計算,生成新的數據。select avg(degree)from thermometer where loc=beijing interval(5m)sliding(1m);每隔一分鐘計算北京剛剛過去的五分鐘的溫度平均值create table d1 asselect avg(degree)from thermometer where loc=beijing interval(5m)sliding(1m);每分鐘計算一次北京剛過去的5分鐘的溫度平均值,并寫入新的表d1TD
18、engine 實時Stream計算數據插入吞吐量、延時與節點個數關系數據查詢吞吐量、延時與節點個數關系TDengine 水平擴展測試結果:完全線性類似流行的Kafka,應用可以訂閱數據流,只要數據有更新,應用將得到及時通知訂閱時,應用只要指定數據庫的表名和開始時間即可APP 1APP 2APP 3Meter數據采集點Meter數據采集點TDengineCluster數據訂閱不同類型、不同性能的服務器可以組建集群,系統根據物理機的配置,自動創建不同數量的虛擬節點通過 Spark/Hadoop Connector,可以與 Oracle,MySQL,Cassandra,MongoDB 并存,大數據分
19、析處理軟件不用做任何修改支持異構環境不存在分庫、分表不存在實時庫、歷史庫之分不存在檔案數據之說,只需要配置好多級存儲的存儲路徑擴容,加入新的節點,一條指令搞定系統根據資源情況,自動負載均衡,無需任何人工干預將副本數設置好,數據將自動實時備份TDengine 零管理:日常運維工作為零數據導入、導出:o支持按SQL腳本文件導入,支持按數據文件導入o在shell里按查詢結果直接導出到CSV文件o專用工具taosdump:導出所有數據庫、一個數據庫或者數據庫中的一張表,所有數據或一時間段的數據,甚至僅僅表的定義WEB管理工具:o在shell里的操作都可在web頁面上進行,更加友好o各種系統監測指標(插
20、入、查詢次數,服務器資源等)用圖表可視化o各種重要操作日志都可查詢與運維監測平臺無縫對接:o各種監測量和日志都存放在DB里,可用標準SQL獲取,便于對接第三方運維監測平臺TDengine 運維管理工具對于集群里每臺服務器,記錄了每個節點的IDC、以及機柜的ID組成一個虛擬節點組時,根據策略,可選不同機柜,不同IDC的節點組成節點組節點之間的數據是實時備份的,但用異步的方式進行,以降低網絡延時的影響一個節點組里Master宕機,節點組將實時檢測到,立即重新選Master如果一個IDC整個癱瘓,一秒以內,Master就會切換到另外的IDC無需購置其他第三方數據備份工具TDengine 異地容災、備
21、份對于副本數,用戶可以動態的調整,增加、減少都可以增加副本時,數據會立即同步到新的副本,而且服務不受中斷為防止同步消耗資源過多,TDengine控制了一個節點并發的同步數量。遷移IDC時,只需要做兩件事將新IDC機房的服務器加入集群,負載均衡將自動啟動,等待其完成將老的IDC機房,一臺一臺的關機。每關一臺,等新的副本在新IDC機房創建完畢,再關下一臺。IDC機房遷移過程中,TDengine能保證服務的正常運行TDengine IDC 遷移,可以無服務中斷進行1發明名稱:一種時序數據的高效存儲方法專利號:201810879112.72發明名稱:一種時序數據庫表結構改變處理方法專利號:201810
22、879113.13發明名稱:一種時序數據的聚合優化處理方法專利號:201810879115.04發明名稱:一種時序數據的存儲方法專利號:201910583172.9全部技術發明專利均已提交PCT專利申請TDengine 四項技術發明專利1.2019年7月12日發布開源社區版,將核心的存儲引擎、計算引擎、RPC等開源2.一周之內,在全球開發者社區GitHub的全球趨勢排行榜上連續幾天雄踞榜首,Star數超過5000,Fork數超過1200,一舉超過另外一款流行的時序數據庫Open TSDB3.目前,Star數已經超過10000,Fork數超過2700,Issue數超過590項目名字項目名字開源時間開源時間Star數據數據Fork數據數據InfluxDB5 年前17,0002,400OpenTSDB5 年前3,8001,100TimeScale3 年前7,300390TDengine 開源