文档章节

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

乱蓬头
 乱蓬头
发布于 2017/06/16 14:04
字数 977
阅读 125
收藏 2
点赞 0
评论 0

摘要: 开源时序数据库   如图是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
大数据|监控 - 浅析时间序列数据

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

力谱宿云 ⋅ 2016/08/16 ⋅ 2

百度的TSDB——可针对tag查询,应该类似kairosDB

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

桃子红了呐 ⋅ 2017/11/15 ⋅ 0

基于时序数据库的直播业务监控实践

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

张观石 ⋅ 2017/06/28 ⋅ 0

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

2017云栖大会HBase专场,阿里巴巴高级技术专家悠你带来题为HBase在时间序列数据库中的应用的演讲。本文主要从时序数据和数据库说起,着重分享了HiTSDB针对时序场景的优化,最后分析了HBase作...

云迹九州 ⋅ 01/11 ⋅ 0

阿里云产品头条(2018年3月刊)

阿里云新产品发布 1、 弹性裸金属服务器 正式商用 (国内站、国际站) 弹性裸金属服务器是一款同时兼具虚拟机弹性和物理机性能及特性的新型计算类产品,是基于阿里云完全自主研发的下一代虚拟...

云攻略小攻 ⋅ 04/26 ⋅ 0

百度大规模时序数据存储(二)| 存储选型及数据模型设计

作者简介 运小尧 百度高级研发工程师 负责百度运维大数据存储平台的设计和研发,致力于追求大规模存储系统的高性能和高可用。 干货概览 在百度大规模时序数据存储(一)| 监控场景的时序数据...

g2v13ah ⋅ 2017/11/09 ⋅ 0

互联网新型数据库,阿里三大数据存储技术抢先看

过去 10 年,随着互联网技术的快速发展,数据库呈现井喷式发展,出现了各式各样的产品,如文件存储数据库、列存储数据库、NewSQL 数据库。之所有如此,归结于数据量不断快速膨胀,传统数据库...

达尔文 ⋅ 2017/09/24 ⋅ 3

HiTSDB高性能时间序列数据库产品解析

2018云栖大会武汉峰会IOT物联网专场,阿里巴巴数据库产品专家艾乐强带来题为HiTSDB高性能时间序列数据库产品解析的演讲。主要内容从四个方面进行解说,首先介绍了物联网数据特征和数据库困境...

云迹九州 ⋅ 05/29 ⋅ 0

阿里云新推出 HiTSDB + IoT套件 物联网设备上云步入快车道

喜欢看科幻电影的人一定熟悉这样的场景,未来的人们生活在没有地面的立体空间,靠高速轨道和飞行器出行。复制人、机器人和各种人工智能随处可见,它们不但可以成为人类的帮手甚至还能做女友。...

中间件小哥 ⋅ 01/12 ⋅ 0

OpenTSDB —— 分布式/可伸缩的时间序列数据库

开源监控系统 OpenTSDB,用 hbase 存储所有的时序(无须 采样)来构建一个分布式、可伸缩的时间序列数据库。

oschina ⋅ 2015/12/23 ⋅ 3

没有更多内容

加载失败,请刷新页面

加载更多

下一页

JAVA RMI

什么是JAVA RMI Java RMI (Remote Method Invocation) 远程方法调用,能够让客户端像使用本地调用一样调用服务端 Java 虚拟机中的对象方法。RMI 是面向对象语言领域对 RPC (Remote Proced...

saulc ⋅ 28分钟前 ⋅ 0

Linux系统工程狮养成记

如今的社会,随着时代的发展,出现了很多职业,像电子类,计算机类的专业,出现了各种各样的工程师,有算法工程师,java工程师,前端工程师,后台工程师,Linux工程师,运维工程师等等,不同...

linux-tao ⋅ 38分钟前 ⋅ 0

进入编辑模式 vim命令模式 vim实践

1.

oschina130111 ⋅ 38分钟前 ⋅ 0

mysql用户管理、常用sql语句、mysql数据库备份恢复

1. mysql用户管理 mysql默认有一个root超级管理员账户,实际工作环境中不可能每个人都用此root权限,防止误操作、误删除,可以给单独的用户进行授权。 Mysql创建用户以及授权: grant all on...

laoba ⋅ 38分钟前 ⋅ 0

类型后面三个点(String...)和数组(String[])的区别

类型后面三个点(String…),是从Java 5开始,Java语言对方法参数支持一种新写法,叫可变长度参数列表,其语法就是类型后跟…,表示此处接受的参数为0到多个Object类型的对象,或者是一个Obj...

流氓兔- ⋅ 44分钟前 ⋅ 0

JEPLUS表格组件之表格合并——JEPLUS软件快速开发平台

JEPLUS表格组件之表格合并 我们在列表配置时会遇见这样的一种情况,需要对个人的数据进行统一化,对一些数据进行归类,这样展示出来美观又直观,在这篇笔记中我来给大家介绍下如何配置出来专...

JEPLUS ⋅ 45分钟前 ⋅ 0

golang 并发中全局唯一操作

package main// go 携程共享 数据// 加锁解锁操作// 同步锁import ("sync""fmt")// 创建Once结构var once = sync.Once{}func computed(data *int, lock *sync.Mut...

304158 ⋅ 46分钟前 ⋅ 0

Mobx入门之二:asynchronous actions

这一节主要看mobx怎么实现asynchronous actions 1 要实现的demo功能 输入地名,查询天气,利用openweathermap api 2 思想 observable观察数据:location地点、temperature温度 observer响应式...

pengqinmm ⋅ 49分钟前 ⋅ 0

【2018.0620学习笔记】【linux高级知识 13.4-13.6】

13.4 mysql用户管理 创建用户并授权: grant all on *.* to '用户名'@'ip' identified by '密码' //all是操作权限,*.*是库.表,指定格式是'用户名'@'localhost'才能用socket登录本地 gra...

lgsxp ⋅ 今天 ⋅ 0

Java强弱引用示例

package jdk;import java.lang.ref.PhantomReference;import java.lang.ref.ReferenceQueue;import java.lang.ref.SoftReference;import java.lang.ref.WeakReference;public ......

月下狼 ⋅ 今天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部