文档章节

时间序列数据的存储和计算 - 开源时序数据库解析(一)

乱蓬头
 乱蓬头
发布于 2017/06/16 14:04
字数 977
阅读 443
收藏 2

#程序员薪资揭榜#你做程序员几年了?月薪多少?发量还在么?>>>

摘要: 开源时序数据库   如图是17年6月在db-engines上时序数据库的排名,我会挑选开源的、分布式的时序数据库做详细的解析。前十的排名中,RRD是一个老牌的单机存储引擎,Graphite底层是Whisper,可以认为是一个优化的更强大的RRD数据库。

开源时序数据库

image

  如图是17年6月在db-engines上时序数据库的排名,我会挑选开源的、分布式的时序数据库做详细的解析。前十的排名中,RRD是一个老牌的单机存储引擎,Graphite底层是Whisper,可以认为是一个优化的更强大的RRD数据库。kdb+、eXtremeDB和Axibase都未开源,不做解析。InfluxDB开源版和Prometheus的底层都是基于levelDB自研的单机的存储引擎,InfluxDB的商业版支持分布式,Prometheus的roadmap上也规划了分布式存储引擎的支持计划。
  综合看下来,我会选择OpenTSDB、KairosDB和InfluxDB做一个详细的解析。我对OpenTSDB比较熟悉,研究过它的源码,所以对OpenTSDB会描述的格外详细,而对其他时序数据库了解的没那么深入,如果有描述错的地方,欢迎指正。

OpenTSDB

  OpenTSDB是一个分布式、可伸缩的时序数据库,支持高达每秒百万级的写入能力,支持毫秒级精度的数据存储,不需要降精度也可以永久保存数据。其优越的写性能和存储能力,得益于其底层依赖的HBase,HBase采用LSM树结构存储引擎加上分布式的架构,提供了优越的写入能力,底层依赖的完全水平扩展的HDFS提供了优越的存储能力。OpenTSDB对HBase深度依赖,并且根据HBase底层存储结构的特性,做了很多巧妙的优化。关于存储的优化,我在这篇文章中有详细的解析。在最新的版本中,还扩展了对BigTable和Cassandra的支持。

架构

image
  如图是OpenTSDB的架构,核心组成部分就是TSD和HBase。TSD是一组无状态的节点,可以任意的扩展,除了依赖HBase外没有其他的依赖。TSD对外暴露HTTP和Telnet的接口,支持数据的写入和查询。TSD本身的部署和运维是很简单的,得益于它无状态的设计,不过HBase的运维就没那么简单了,这也是扩展支持BigTable和Cassandra的原因之一吧。

数据模型

  OpenTSDB采用按指标建模的方式,一个数据点会包含以下组成部分:

  • metric:时序数据指标的名称,例如sys.cpu.user,stock.quote等。
  • timestamp:秒级或毫秒级的Unix时间戳,代表该时间点的具体时间。
  • tags:一个或多个标签,也就是描述主体的不同的维度。Tag由TagKey和TagValue组成,TagKey就是维度,TagValue就是该维度的值。
  • value:该指标的值,目前只支持数值类型的值。

存储模型

  OpenTSDB底层存储的优化思想,可以参考这篇文章,简单总结就是以下这几个关键的优化思路:

  • 对数据的优化:为Metric、TagKey和TagValue分配UniqueID,建立原始值与UniqueID的索引,数据表存储Metric、TagKey和TagValue对应的UniqueID而不是原始值。
  • 对KeyValue数的优化:如果对HBase底层存储模型十分了解的话,就知道行中的每一列在存储时对应一个KeyValue,减少行数和列数,能极大的节省存储空间以及提升查询效率。
  • 对查询的优化:利用HBase的Server Side Filter来优化多维查询,利用Pre-aggregation和Rollup来优化GroupBy和降精度查询。

本文转载自:http://click.aliyun.com/m/23441/

乱蓬头
粉丝 0
博文 382
码字总数 2595
作品 0
私信 提问
加载中

评论(0)

大数据|监控 - 浅析时间序列数据

时间序列是一个在IT基础设施组件、物联网传感器的每个业务流程中以及在应用程序中功能强大的等待被解锁的强大武器。利用好它可以揭示可操作的趋势,模式,可变性,变化,共变,周期异常,异常...

力谱宿云
2016/08/16
2K
2
百度的TSDB——可针对tag查询,应该类似kairosDB

天工架构 目前,天工平台的服务主要由物接入、物解析、物管理、规则引擎和时序数据库组成,并可无缝对接百度云天算智能大数据平台及基础平台产品,可提供千万级设备接入的能力,百万数据点每...

桃子红了呐
2017/11/15
0
0
阿里云发布时间序列数据库TSDB,关于时序你了解多少?

概要介绍 时间序列数据是一种表示物理设备,系统、应用过程或行为随时间变化的数据,广泛应用于物联网,工业物联网,基础运维系统等场景。阿里云TSDB 时间序列数据库可以解决大规模时序数据的...

lyrewu
2018/09/30
0
0
基于时序数据库的直播业务监控实践

本文根据DBAplus社群第108期线上分享整理而成。 主题简介: 大家好,我是张观石,目前在虎牙直播负责直播业务运维工作。之前看到社群发了一篇href="http://mp.weixin.qq.com/s?biz=MzI4NTA1M...

张观石
2017/06/28
0
0
云栖深度干货 | 打造“云边一体化”,时序时空数据库TSDB技术原理深度解密

本文选自云栖大会下一代云数据库分析专场讲师自修的演讲——《TSDB云边一体化时序时空数据库技术揭秘》 自修 —— 阿里云智能数据库产品事业部高级专家 认识TSDB 第一代时序时空数据处理工具...

阿里云官方博客
2019/10/11
99
0

没有更多内容

加载失败,请刷新页面

加载更多

在Git存储库中查找并恢复已删除的文件 - Find and restore a deleted file in a Git repository

问题: Say I'm in a Git repository. 假设我在Git存储库中。 I delete a file and commit that change. 我删除文件并提交更改。 I continue working and make some more commits. 我继续工作......

javail
24分钟前
15
0
基于Centos7系统一键部署EFK服务

最近平台EFK版本均作了升级,平台采用EFK(ElasticSearch-7.6.2 + FileBeat-7.6.2 + Kibana-7.6.2)架构。这里建议三个组件主次版本保持一致。考虑到服务器比较多,所以写成脚本来批量部署。 ...

linuxprobe2020
今天
23
0
检查键是否存在于JavaScript对象中? - Checking if a key exists in a JavaScript object?

问题: How do I check if a particular key exists in a JavaScript object or array? 如何检查JavaScript对象或数组中是否存在特定键? If a key doesn't exist, and I try to access it, ......

fyin1314
今天
27
0
jasypt-spring-boot提示Failed to bind properties

1 问题描述 在Spring Boot中使用jasypt-spring-boot进行加密,但是提示: Description:Failed to bind properties under 'spring.datasource.password' to java.lang.String: Reason:......

氷泠
今天
29
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部