TSDB 起步知识

查看原文

TSDB (Time Series Database) 是一种专为时间戳或时间序列的数据优化的数据库。如果非要想象的话,它存储的是 [[timestamp, value], [timestamp, value], ...] 这样的数据,额外加上一些标签啊,名字啊,索引啊之类的特性。它使用的场景是监控,各种类型的监控:Host / APM /Network / User Behaviors / Sales, etc。如果不优化,数据库的 IO 很有可能出现瓶颈,CPU 做聚合运算的时候出现运力不足;你当然可以通过攒机器扩展来解决,但有了 TSDB,单机可以解决很大一部分问题。

TSDB 并不是什么新东西,它的概念也很简单,只是后端服务进入服务化阶段,各种指标都会冒出来,有来自应用的,有来自业务的,也有来自机器或网络本身。我们需要一个现代的 TSDB 来优化存储,已经查询这些监控得到的数据点。

TSDB 的使用体验相比关系型数据库简单多了,灌数据进去,做的最多的查询可能是求和,取均值或取样。但是它基于的数据会基于一大段时间,甚至可能数月。

流行的 TSDB 有 InfluxDB, Kdb+, RRDTool, Graphite, OpenTSDB, Prometheus, ... 这里面 InfluxDB 开源版用的是 MIT,Prometheus 用的是 APLv2,其它不少是商业授权的。我们可以看到 TSDB 在过去的两年里面搜索量节节攀升超过图数据库,搜索数据库和关系型数据库。

Graphite 用的很广泛,缺点是指标不好做聚合,元信息占空间太多。OpenTSDB 分布式,缺点是它的设计基于 HBase,场景有限。Riak TS 就是,,,公司破店了。InfluxDB 自己提供了整套 TICK 架构。

衍生思考:TSDB 是专为监控领域定制的工具,可以多看看它的设计要点,了解这个领域面临的挑战,以及每种 TSDB 都是怎么解决这些挑战的。