中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

云棲深度干貨 | 打造“云邊一體化”,時序時空數據庫TSDB技術原理深度解密

發布時間:2020-08-16 05:28:04 來源:ITPUB博客 閱讀:118 作者:大濤學長 欄目:關系型數據庫
本文選自云棲大會下一代云數據庫分析專場講師 自修的演講——《TSDB云邊一體化時序時空數據庫技術揭秘》 自修 —— 阿里云智能數據庫產品事業部高級專家



認識TSDB

第一代時序時空數據處理工具 雖然通用關系數據庫可以存儲時序數據,但是由于缺乏針對時間的特殊優化,比如按時間間隔存儲和檢索數據等等,因此在處理這些數據時效率相對不高。 第一代時序數據典型來源于監控領域,直接基于平板文件的簡單存儲工具成為這類數據的首先存儲方式。 以RRDTool,Wishper為代表,通常這類系統處理的數據模型比較單一,單機容量受限,并且內嵌于監控告警方案。
第二代面向時序時空領域的數據庫伴隨著大數據和Hadoop的發展,時序數據量開始迅速增長,系統業務對于處理時序數據的擴展性等方面提出更多的要求。 基于通用存儲而專門構建的時間序列數據庫開始出現,它可以按時間間隔高效地存儲和處理這些數據。像OpenTSDB,KairosDB等等。
這類時序數據庫在繼承通用存儲優勢的基礎上,利用時序的特性規避部分通用存儲的劣勢,并且在數據模型,聚合分析方面做了貼合時序的大量創新。 比如OpenTSDB繼承了HBase的寬表屬性結合時序設計了偏移量的存儲模型,利用salt緩解熱點問題等等。 然而它也有諸多不足之處,比如低效的全局UID機制,聚合數據的加載不可控,無法處理高基數標簽查詢等等。 隨著docker,kubernetes, 微服務等技術的發展,以及對于IoT的發展預期越來越強烈。
在數據隨著時間而增長的過程中,時間序列數據成為增長最快的數據類型之一。 高性能,低成本的垂直型時序數據庫開始誕生,以InfluxDB為代表的具有時序特征的數據存儲引擎逐步引領市場。 它們通常具備更加高級的數據處理能力,高效的壓縮算法和符合時序特征的存儲引擎。 比如InfluxDB的基于時間的TSMT存儲,Gorilla壓縮,面向時序的窗口計算函數p99,rate,自動rollup等等。 同時由于索引分離的架構,在膨脹型時間線,亂序等場景下依然面臨著很大的挑戰。
第三代云時序時空數據庫 從2016年開始,各大云廠商紛紛布局TSDB,2017.4 Microsoft發布時序見解預覽版,提供的完全托管、端到端的存儲和查詢高度情景化loT時序數據解決方案。強大的可視化效果用于基于資產的數據見解和豐富的交互式臨時數據分析。 針對數據類型分為暖數據分析和原始數據分析,按照存儲空間和查詢量分別計費。2018.11 Amazon在AWS re Invent大會發布Timestream預覽版。適用于 IoT 和運營應用程序等場景。 提供自適應查詢處理引擎快速地分析數據,自動對數據進行匯總、保留、分層和壓縮處理。 按照寫入流量,存儲空間,查詢數據量的方式計費,以serverless的形式做到最低成本管理。
阿里云智能TSDB團隊自2016年第一版時序數據庫落地后,逐步服務于DBPaaS,Sunfire等集團業務,在2017年中旬公測后,于2018年3月底正式商業化。 在此過程中,TSDB在技術方面不斷吸納時序領域各家之長,逐步形成了高性能低成本,免運維,易用性逐步提升,邊云一體化,生態豐富等產品優勢。

技術揭秘




1. 分布式流式聚合器

時序聚合運算是時序數據庫區別于通用數據庫的特色。TSDB的聚合器主要算子涵蓋了插值,降采樣,降維等等OpenTSDB協議中的計算函數。借鑒傳統數據庫執行模式,引入pipeline的執行模式(aka Volcano / Iterator 執行模式)。
Pipeline包含不同的執行計算算子(operator), 一個查詢被物理計劃生成器解析分解成一個DAG或者operator tree, 由不同的執行算子組成,DAG上的root operator負責驅動查詢的執行,并將查詢結果返回調用者。在執行層面,采用的是top-down需求驅動 (demand-driven)的方式,從root operator驅動下面operator的執行。這樣的執行引擎架構具有優點:
  • 這種架構方式被很多數據庫系統采用并證明是有效;
  • 接口定義清晰,不同的執行計算算子可以獨立優化,而不影響其他算子;
  • 易于擴展:通過增加新的計算算子,很容易實現擴展功能。比如目前查詢協議里只定義了tag上的查詢條件。如果要支持指標值上的查詢條件(cpu.usage <= 70% and cpu.usage <=90%),可以通過增加一個新的FieldFilterOp來實現
  • 從查詢優化器到生成執行計劃,把查詢語句重寫成子查詢后構建Operator Tree, 執行器驅動Operators完成聚合邏輯,執行Fragment順序:Filtering -> Grouping -> Downsampling -> Interpolation -> Aggregation -> Rate Conversion -> Functions
  • 區分不同查詢場景,采用不同聚合算子分別優化,支持結果集的流式讀取和物化, Operator的結果在包含None,dsOp等情況下采用流式聚合,而一些時間線之間的聚合仍然是物化運算。

2.時空數據的查詢和分析

在介紹時空數據的查詢分析之前,簡單介紹下什么是時空數據以及時空數據的特點。
大數據時代產生了大量的有時間和空間、標記對象個體行為的時空數據。
比如個人手機產生的信令數據、共享出行的司乘位置和訂單數據、車聯網和無人駕駛行業的實時車輛數據、物流的位置流數據,以及外賣小哥的送餐軌跡等,都是這類數據。
時空數據的特點之一是復雜性和目標的多樣性,存在許多時空分析方法,比如聚類,預測,變化檢測,頻繁模式挖掘,異常檢測和關系挖掘。
時空數據另外一個特點是數據量級呈指數型增長,也是時序數據的在高維空間的展開。傳統數據庫可伸縮性差,難以管理海量時空數據。高并發情況下,由于存儲和計算沒有分離,時空數據的檢索會是很大瓶頸,可能造成檢索性能急劇下降,響應時間超過數分鐘。
面對這樣的數據量、計算量和對分析延時要求的挑戰,時空數據庫TSDB從多個技術維度進行了突破。如存儲計算分離、高性能時空索引、時空SQL優化器、時空計算引擎、時空數據壓縮算法。
**時空過濾條件的識別與下推 ** 有別于通用數據的<,>和=關系,時空數據的查詢過濾條件通常是一些類似于st_contains(), st_intersects() 的空間分析函數。因此SQL優化器會解析識別過濾條件之中的時空過濾條件,根據存儲引擎的特性,決定哪些過濾條件可以下推,如果有無法下推的條件,則會將這些條件留在Filter算子之中,由計算引擎來進行過濾。而如果過濾條件可以被下推,則優化器會生成新的Filter算子。優化前后的關系算子如下圖所示:


時空計算引擎
在通用數據庫中,JOIN是兩張表之中某兩個列相等,對應的有NestedLoopJOIN、HashJOIN,SortMergeJOIN等算法。
對于時空數據而言,找到兩個相等的幾何對象幾乎不可能,多是基于st_contains()等空間位置關系或是st_distance()距離關系,來做JOIN。
比如找出云棲小鎮附近1公里的所有出租車,JOIN條件就是出租車位置要包含在云棲小鎮為圓心,半徑1公里的圓形空間范圍之內;比如找出離我最近的出租車,這就要用到KNN JOIN。而這些JOIN就超出了通用數據庫JOIN算法可以優化的范疇。
在時空數據庫TSDB之中,采用了專門的Scalable Sweeping-Based Spatial Join算法、時空索引、存儲層+計算層的Two level index進行優化。當SQL優化器識別到兩表JOIN的條件為時空分析函數時,如果參數等條件都符合要求,則SQL優化器會生成專門的時空JOIN算子,采用專門的JOIN算法來實現,這樣的算法比樸素的JOIN算子性能要高出很多。
開源生態
TSDB 提供開源influxDB 和 開源Prometheus 兩大生態的支持。 influxDB是DBengines上排名第一的時序數據庫,阿里云influxDB?在開源influxDB基礎之上提供一下功能:
1.水平可擴展集群方案 2.全局內存管理 3.全面兼容TICK生態
水平可擴展集群方案
  1. 使用raft實現influxDB數據節點的高可用,同時提供多個高可用方案,讓用戶可以在可用性和成本中選擇最適合自己的方案。
  2. 阿里云influxDB?支持根據數據量大小,動態增加influxDB數據節點的高可用組。



全局內存管理
  1. 阿里云influxDB?通過對influxDB代碼的優化,實現了全局內存管理,可以通過動態調整內存使用
  2. 全局內存管理支持阿里云influxDB創建任意多個database
  3. 全局內存管理實現了數據寫入以及數據查詢的內存管理,可以非常顯著的防止由于OOM引發的穩定性問題,提高整個系統的可用性
TICK生態兼容
  1. 阿里云influxDB全面兼容TICK生態,支持對接telegraf,chronograf以及kapacitor
  2. 除此之外,阿里云influxDB支持對接grafana,用戶能夠使用更加豐富的圖形化工具展示influxDB中的數據
  3. 阿里云influxDB提供“一鍵式”的數據采集工具,用戶可以非常方便的安裝、啟動數據采集工具,并且在阿里云管理平臺上管理數據采集工具


阿里云influxDB不但提供高可用、集群方案,更加穩定性的服務以及擁抱開源生態,也積極集成數據采集,可視化以及告警等功能,同時提供全自動監控,全托管“無運維”的服務。
Prometheus是K8S開源監控報警系統和時序列數據庫,阿里云也提供Prometheus服務。相對于開源Prometheus,阿里云Prometheus有以下特性:



原生態對接Prometheus
  1. 無縫對接InfluxDB
  2. 無需代碼修改、僅需修改配置
長期數據存儲
  1. InfluxDB通過Remote Storage長期存儲Prometheus數據
  2. InfluxDB遠程存儲可以實現“多寫一讀”的查詢模式,多個prometheus對接同一個influxDB,允許聯合查詢多個Prometheus,實現數據“全局化”查詢
高可用與高可靠
  1. InfluxDB高可用為Prometheus提供高可用存儲功能
  2. InfluxDB使用的云盤實現Prometheus數據高可靠,有效防止數據丟失
阿里云Prometheus充分使用阿里云InfluxDB的能力,增強阿里云Prometheus的能力,實現數據的長期存儲,高可用,高可靠,同時實現數據的“全局化”查詢。
總結
阿里云時序時空數據庫TSDB系列產品,聚焦于物聯網、監控APM、交通出行、車聯網、物流等行業,致力于打造云邊一體化的時序時空數據庫,歡迎各位開發者和企業客戶使用,給我們提出寶貴意見。
本文作者:Roin123
原文鏈接
本文為云棲社區原創內容,未經允許不得轉載。
向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

龙胜| 门头沟区| 洪洞县| 苍南县| 八宿县| 方正县| 兴宁市| 固安县| 合山市| 溧水县| 平南县| 垣曲县| 镇康县| 遵义市| 南木林县| 泽普县| 高青县| 丰台区| 福建省| 察哈| 镇平县| 资源县| 清涧县| 海晏县| 内丘县| 盐源县| 安化县| 荥经县| 临潭县| 文昌市| 丹江口市| 潍坊市| 卢龙县| 班玛县| 巫山县| 厦门市| 乌兰县| 鄂州市| 饶阳县| 兰考县| 嘉义县|