`
大涛学长
  • 浏览: 105919 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

云栖深度干货 | 打造“云边一体化”,时序时空数据库TSDB技术原理深度解密

阅读更多
> 本文选自云栖大会下一代云数据库分析专场讲师**自修**的演讲——《TSDB云边一体化时序时空数据库技术揭秘》  
> 自修 —— 阿里云智能数据库产品事业部高级专家

 

![vbox11015_561A6408_102654_small.JPG](https://ucc.alicdn.com/pic/developer-ecology/9d3e4c094604422cbff4d5933296d7f3.jpg)

认识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在技术方面不断吸纳时序领域各家之长,逐步形成了高性能低成本,免运维,易用性逐步提升,边云一体化,生态丰富等产品优势。

技术揭秘
----

 

![vbox11015_561A6418_102843_small.JPG](https://ucc.alicdn.com/pic/developer-ecology/e4adee1d55ac4b108b5648e76b2f13f4.jpg)

### 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算子。优化前后的关系算子如下图所示:

 

![1.png](https://ucc.alicdn.com/pic/developer-ecology/e627f4d46bcc47fca9ef7b55d929bbf8.png)

**时空计算引擎**

在通用数据库中,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数据节点的高可用组。

 

![2.png](https://ucc.alicdn.com/pic/developer-ecology/dfcaa59634544347acc61ec67c0c40f1.png)

**全局内存管理**

1.  阿里云influxDB®通过对influxDB代码的优化,实现了全局内存管理,可以通过动态调整内存使用
2.  全局内存管理支持阿里云influxDB创建任意多个database
3.  全局内存管理实现了数据写入以及数据查询的内存管理,可以非常显著的防止由于OOM引发的稳定性问题,提高整个系统的可用性

**TICK生态兼容**

1.  阿里云influxDB全面兼容TICK生态,支持对接telegraf,chronograf以及kapacitor
2.  除此之外,阿里云influxDB支持对接grafana,用户能够使用更加丰富的图形化工具展示influxDB中的数据
3.  阿里云influxDB提供“一键式”的数据采集工具,用户可以非常方便的安装、启动数据采集工具,并且在阿里云管理平台上管理数据采集工具

 

![3.png](https://ucc.alicdn.com/pic/developer-ecology/3620f460deca471483a7837a6e4653a1.png)

阿里云influxDB不但提供高可用、集群方案,更加稳定性的服务以及拥抱开源生态,也积极集成数据采集,可视化以及告警等功能,同时提供全自动监控,全托管“无运维”的服务。

Prometheus是K8S开源监控报警系统和时序列数据库,阿里云也提供Prometheus服务。相对于开源Prometheus,阿里云Prometheus有以下特性:

 

![4.png](https://ucc.alicdn.com/pic/developer-ecology/150bcd1d54904db19b830cf5a71c7472.png)

 
**原生态对接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

[原文链接](https://yq.aliyun.com/articles/720358?utm_content=g_1000079644)

本文为云栖社区原创内容,未经允许不得转载。
分享到:
评论

相关推荐

    计算机行业周报:云栖大会将至,云化重构格局.rar

    【标题】:“计算机行业周报:云栖大会将至,云化重构格局”这份文档,作为一份行业报告,聚焦了当前计算机领域的重要趋势——云化技术的发展及其对行业格局的深刻影响。云栖大会,作为云计算领域的盛事,通常会展示...

    2017年云栖大会ppt

    这些PPT内容的深度和广度都反映了云栖大会作为行业盛会的影响力,对于理解2017年阿里云的战略布局和技术实力具有重要参考价值。解压后,可以通过`2017云栖大会部分ppt`文件深入了解这些内容。虽然没有提供具体的PPT...

    阿里云-云栖大会

    ### 阿里云-云栖大会:关键技术与服务概览 #### 一、阿里云产品及服务介绍 ##### 高速通道ExpressConnect - **功能简介**:为用户提供跨越地理障碍的高速网络连接,即使在地理位置相距甚远的情况下也能提供如同...

    2019杭州云栖大会-云时代数据库容灾解决方案

    2019杭州云栖大会是一场聚焦云计算领域,尤其是云时代数据库容灾解决方案的高级技术盛会。在这次会议中,阿里云智能的资深技术专家关羽作为主讲人,深入探讨了在云时代背景下,灾备建设的重要性以及面临的机遇。 灾...

    阿里云_云栖大会2021精粹.zip

    阿里云在2021年的云栖大会上展示了其在云计算、大数据、人工智能等领域的最新发展与洞察,这些资料集合了对未来技术趋势和行业动向的深入解析。通过以下几个重点文件,我们可以了解到阿里云及其合作伙伴在相关领域的...

    2017云栖大会-云数据库Redis版的开源之路

    2017云栖大会的“云数据库Redis版的开源之路”,技术内容不是特别深,可以作为了解

    深圳云栖大会阿里云IoT物联网套件开发实战

    阿里云IoT物联网套件是阿里云推出的一款强大的服务,旨在帮助开发者轻松构建物联网应用。在"深圳云栖大会阿里云IoT物联网套件开发实战"中,我们聚焦于利用JavaScript进行开发,深入探讨如何利用这个套件进行设备管理...

    袋鼠云基于阿里云RDS的数据库架构实践.pdf

    袋鼠云-数据库服务总监 俊达在2017杭州云栖大会中做了题为《袋鼠云基于阿里云RDS的数据库架构实践》的分享,就余额宝项目,轻松筹分布式改造,金融云迁移做了深入的分析。

    云栖大会2022云计算云原生最新技术和产业趋势资料合订本

    【云原生技术详解】 ...总之,云栖大会2022揭示了云原生技术在推动企业数字化转型中的关键作用,通过阿里巴巴的实践,我们看到了云原生如何在降低成本、提高效率、增强可靠性的同时,推动技术创新和业务发展。

    藏经阁-云栖商学院-打造“技术+管理”新范式.pdf

    云栖商学院旨在打造“技术+管理”新范式,结合阿里云大学,旨在培养具有技术驱动商业发展的新型企业家和管理者。通过云计算、大数据、中间件技术等课程,帮助企业实现数字化转型和升级。 一、技术驱动商业的发展 ...

    HBase在时间序列数据库中的应用

    数据库高级技术专家 悠你在2017杭州云栖大会中做了题为《HBase在时间序列数据库中的应用》的分享,就时序数据和时序数据库介绍,HiTSDB针对时序场景的优化,HBase作为底层存储的优势做了深入的分析。

    2019年阿里巴巴云栖大会PPT合集1692页.pdf

    总之,2019年阿里巴巴云栖大会深入探讨了云技术的最新进展,展示了大数据、AI、物联网以及图神经网络等领域的创新成果,为参会者提供了丰富的学习和交流机会,推动了信息技术在各行各业的应用和发展。

    2021杭州·云栖大会123份完整版打包(PPT汇总).zip

    云栖大会是阿里云一年一度的开发者大会,10 月 19 日至 22 日,2021 云栖大会将在杭州云栖小镇举办。今年云栖大会以“前沿探索想象力”为主题,回归线下并免费向公众开放,设置近千场主题演讲和四万平米科技展,将...

    深度学习在线下场景的探索与实践-云栖大会.pdf

    根据提供的文件信息,可以提取出以下与深度学习相关的知识点: 一、深度学习在智能芯片和硬件领域的探索 智能芯片是深度学习技术在实际应用中不可或缺的一部分。智能芯片通过硬件加速深度学习模型的训练和推断过程...

    云栖大会人工智能专场PPT

    在本次“云栖大会人工智能专场PPT”中,专家们深入探讨了人工智能这一前沿科技在各行各业的应用及其模型。云栖大会作为阿里巴巴主办的全球顶级科技盛会,汇集了众多业界精英,共同分享最新的技术和研究成果,而人工...

    2016杭州·云栖大会 电商专场

    1-14 - 2016杭州·云栖大会 - 阿里电商云介绍与实践 1-15 - 2016杭州·云栖大会 - 同程带您云端翱翔 1-16 - 2016杭州·云栖大会 - 电商端到端数据精细化运营 1-17 - 2016杭州·云栖大会 - 数字营销助力传统企业通往...

    阿里云首届分享日×云栖大会六大嘉宾PPT+数据保护倡议书和生态路线图

    阿里云首届分享日与云栖大会是一场集技术交流、行业洞察和未来展望于一体的盛会,汇聚了多位重量级嘉宾,他们通过PPT分享了各自领域的专业知识。这些分享涵盖了云计算的多个核心方面,包括技术创新、企业架构、数据...

Global site tag (gtag.js) - Google Analytics