摘要: 近日,阿里云宣布高性能时间序列数据库 (High-Performance Time Series Database , 简称 HiTSDB) 正式商业化。

近日,阿里云宣布高性能时间序列数据库 (High-Performance Time Series Database , 简称 HiTSDB) 正式商业化。

先跟大家聊一下什么叫时序数据。简单的说,就是时间上分布的一系列数值,关键字是数值,我们一般认为的时序数据是什么时间发生了什么事情,但是在时序数据这个领域里定义的时序数据全都是跟数值有关的。也就是说,如果只是一个带有时间戳的一条数据并不能叫做时序数据。举个例子,比如像我早上8点半上楼吃了个饭这条记录,相当于一个日志,这个本身不构成一个时序数据,但是如果某个餐厅早上8点半同时有50个人在那里吃饭,这个50加上餐厅的信息再加这个时间点就构成了一个时序数据。

单值与多值建模

实际上通用的建模方式有两种,其中的一种是单值。实际上我们是针对不同的东西来建模的,多值的模型是针对数据源建模,我们每一行数据针对的是一个数据源,它的三个被测量的指标在同一列上,所以每一个数据源,数据的来源在每一个时间点上都有一行,这就是多值的模型。

还有一种模型是单值的模型,单值的模型我们是把它测量的精确到时间序列上,也就在时间序列的每个时间点上只有一个值,所以是个单值,也就是说对于多值模型来说它每一行数据对应的是一个数据源,对于单值模型来说它对应的是一个时间序列,实际上多值模型对应的是一个数据源在一个时间点上就会产生一行数据,而在单值模型里一个数据源上面的每一个指标会产生一行数据。

什么是插值和降精度?

如上前面所讲,时间序列会分布在一些时间线上,数据源和测量指标确定了的话,时间序列是随着时间轴往后分布的,实际上它的采样在一个典型的场景里是固定时间间隔的,它中间一些点做处理会牵扯到插值和降精度处理。比如说中间丢失了一个点,比较简单的方法是中间插一个值,常用的方法是线性插值,就是在时间轴上画一个直线中间的点就插出来了。

另一个叫降精度,例如我们有个按秒采样的时间序列,显示时间范围是一年的数据,为了便于查看,需要把时间精度降到一天。比如我们只选这一天中的最大值或者最小值或者平均值,作为这一天的气温,也就是最高气温,最低气温和平均气温的概念。用算法或者把时序数据转换成精度比较低的时间序列以便于观察和理解它,这是在传统数据库里没有的一种方式。

再一个就是数据聚合,也是非常典型的基于设备的数据统计,比如这里有很多设备指标数据构成的时间线,时序数据的聚合是在时间线的维度上的,而不是按点的,在处理平时处理的空间聚合的话,一般是把很多数据点按照一个个聚合起来,而实际数据处理的时候一般会把它抽象的点连成线就是刚才看的时间序列,每个数据源在一个测量值上会产生一行时间线,加上时间序列,如果是根据某一个维度上的测量的话,在同一维度就能调成线就把时间序列处理出来了。

举个例子, 智慧园区的业务系统需要查看一个楼宇的某盏灯的耗电量情况,那么就需要把这盏灯的耗电量数据从数据库中查询并展示出来,如果由于采集的故障导致某个时刻用电量数据缺失,那么需要通过特定算法来近似的估算出这个数据,这个计算补全数据的过程就是“插值”。而当需要查看这盏灯一年的耗电趋势情况时,通常只需要计算出每一天的耗电量,进行查看,而不需要把每一个时刻采集的数据全部输出出来,这个将原始精度转化为业务需求精度的过程就是“降精度”。而如果要统计某一个楼层或者楼宇的用耗电量整体趋势数据时,就需要将所有统计范围内的灯具的耗电量数据做“合并统计”,这个类似的统计过程就是Aggregation。

时序数据降精度是在时间序列维度上做的。对于关系数据库来说,首先要把时间序列维度拿出来,然后在中间插值,而实际上 SQL 是按点来操作的。所以如果要做降精度的话,需要用一个值查询把整条时间序列上的数据查询出来,插好值之后才能做时间序列之间的聚合,那么服务和 SQL 服务器之间的吞吐量非常大,相当于 SQL 只是一个数据通道需要把所有值都拉出来运算一遍,这个查询性能会非常慢,并且每一次计算都需要重新拉取数据,相对 HiTSDB,这个性就能差了几百倍,在空间聚合 Aggregator 支持也非常全面,支持 ADhoc 查询,HiTSDB 通过引入倒排索引和数据分片提升检索时间序列的效率,通过并行计算架构,整体计算性能提升非常明显。

HiTSDB高压缩技术 存储成本降低90%

物联网领域是最典型的时序数据产生和应用的场景,这些场景具备一些特征,技术数据量特别大,比如某个智能设备的温度传感器,首先第一是时间序列会持续的产生大量的数据,持续的产生什么意思呢?因为我们往往对时间序列来说是定时采样功能,如果每秒测量一次,一天是86400秒,如果24小时都要用,平均每一个传感器仪表在一个时间点上产生一个数据点,一个仪表就产生86400个数据,如果把全国各个县都布一个采样点,那一天数据就上亿了,实际上大家作为气象采样来说每一个县对应一个温度传感器显然有点不够的,可能我们是每一个街道甚至每个小区都有这样的传感器,那么这个数据加起来实际上是一个非常惊人的数字。

利用HiTSDB 的高压缩技术,相比较 OpenTSDB 提升10倍左右,通常原始时序数据的大小在 200-300 Byte,OpenTSDB 单数据点消耗约20 Byte,HiTSDB 单数据点消耗约 2Byte,通过 HiTSDB 可以节约90%以上的数据库存储成本。

对于物联网平台企业可以利用HiTSDB 和阿里云的产品能力基于如下的架构构建云上的物联网平台。

HiTSDB 除了在云上提供高效的时序数据服务能力,企业可以也可以利用HiTSDB 结合阿里云工业大脑和城市大脑的大数据方案实现智能制造生产和智慧城市。 利用HiTSDB 的“边缘+ 中心”的解决方案,可以满足工业物联网IoT尤其是电力能源行业的数据边缘端本地存储分析,逐级数据上报 ,以及网络不稳态的数据数据稳定上报和中心端的全局设备数据监控分析,打通智慧大脑的数据通道。

转载于:https://my.oschina.net/yunqi/blog/1648709

为物联网而生:高性能时间序列数据库HiTSDB商业化首发!的更多相关文章

  1. 时间序列数据库(TSDB)初识与选择

    时间序列数据库(TSDB)初识与选择 本文作者由 MageByte 团队的 「借来方向」编写,关注公众号 给你更多硬核技术 背景 这两年互联网行业掀着一股新风,总是听着各种高大上的新名词.大数据.人工 ...

  2. 时间序列数据库(TSDB)初识与选择(InfluxDB、OpenTSDB、Druid、Elasticsearch对比)

    背景 这两年互联网行业掀着一股新风,总是听着各种高大上的新名词.大数据.人工智能.物联网.机器学习.商业智能.智能预警啊等等. 以前的系统,做数据可视化,信息管理,流程控制.现在业务已经不仅仅满足于这 ...

  3. 重新定义数据库历史的时刻——时间序列数据库Schwartz认为InfluxDB最有前途,Elasticsearch也不错

    转自:http://www.infoq.com/cn/news/2017/04/redefine-database-history 提起VividCortex公司的创建者兼CEO Baron Schw ...

  4. [转帖]时间序列数据库 (TSDB)

    时间序列数据库 (TSDB) https://www.jianshu.com/p/31afb8492eff 0.3392019.01.28 10:51:33字数 5598阅读 4030 背景 2017 ...

  5. Android高性能ORM数据库DBFlow入门

    DBFlow,综合了 ActiveAndroid, Schematic, Ollie,Sprinkles 等库的优点.同时不是基于反射,所以性能也是非常高,效率紧跟greenDAO其后.基于注解,使用 ...

  6. Akumuli时间序列数据库——列存储,LSM,MVCC

    Features Column-oriented time-series database. Log-structured append-only B+tree with multiversion c ...

  7. OpenTSDB介绍——基于Hbase的分布式的,可伸缩的时间序列数据库,而Hbase本质是列存储

    原文链接:http://www.jianshu.com/p/0bafd0168647 OpenTSDB介绍 1.1.OpenTSDB是什么?主要用途是什么? 官方文档这样描述:OpenTSDB is ...

  8. 时间序列数据库选型——本质是列存储,B-tree索引,抑或是搜索引擎中的倒排索引

    时间序列数据库最多,使用也最广泛.一般人们谈论时间序列数据库的时候指代的就是这一类存储.按照底层技术不同可以划分为三类. 直接基于文件的简单存储:RRD Tool,Graphite Whisper.这 ...

  9. 时间序列数据库武斗大会之 KairosDB 篇

    [编者按] 刘斌,OneAPM后端研发工程师,拥有10多年编程经验,参与过大型金融.通信以及Android手机操作系的开发,熟悉Linux及后台开发技术.曾参与翻译过<第一本Docker书> ...

随机推荐

  1. find的基本查询命令《一》

    一. find的基本查询命令 find命令最常用的是查找某个文件,如: find ./ -name "abc.txt" 则会在当前目录及子目录下查找abc.txt文件 更常用的是查 ...

  2. Win 10 C 盘突然爆满,怎么清理?

    Win 10 C 盘突然爆满,怎么清理? 使用windows的小伙伴们都知道,C盘是安装系统的,有时候不知道为啥突然就爆满了,查看我的电脑,C盘显示红色的.是不是感觉狠揪心,想删除一些东西有不敢删除, ...

  3. Tkinter 控件

    文章更新于:2020-02-19 待翻译跟进 In this part of the Tkinter tutorial, we will cover some basic Tkinter widget ...

  4. hicharts中treemap添加超链接

    <!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8&quo ...

  5. Struts2-学习笔记系列(7)-PreResultListener

    在action处理完成之后,系统转入实际的物理试图之间被回调. Action,拦截器都可以添加该监听器.拦截器添加了该监听器后,该监听器会对该拦截器所有拦截的action其作用 public Stri ...

  6. 列表推导式和seed()的理解

    Table of Contents generated with DocToc 列表推导式和seed()的理解 对seed()的理解 列表推导式 第一种用法 第二种用法 列表推导式和seed()的理解 ...

  7. 微信小程序与H5数据传递

    这的场景是 小程序webview 加载 H5应用 需求点: 1. 小程序的登录code 需要与H5应用的sessionId建立绑定关系 2.H5内发起微信小程序支付,支付参数传递到小程序,支付结果传递 ...

  8. stand up meeting 12/8/2015

    part 组员 今日工作 工作耗时/h 明日计划 工作耗时/h UI 冯晓云  --------------    --  -----------  -- PDF Reader 朱玉影         ...

  9. 跨行程序员Java进阶--基础语法

    1.基础语法 Hello Wolrd 首先定义类 -- public class 类名 在类定义之后加上一对大括号 -- {} 在大括号中间添加一个主(main)方法/函数 -- public sta ...

  10. Gatling脚本编写技巧篇(一)

    一.公共类抽取 熟悉Gatling的同学都知道Gatling脚本的同学都知道,Gatling的脚本包含三大部分: http head配置 Scenario 执行细节 setUp 组装 那么针对三部分我 ...