

本文作者 彭冬
微博广告基础架构团队负责人、技术专家,商业大数据平台及智能监控平台发起人,目前负责广告核心引擎基础架构、Hubble智能监控系统、商业基础数据平台(D+)等基础设施建设。关注计算广告、大数据、人工智能、高可用系统架构设计、区块链等方向。在加入微博之前,曾就职于百度负责大数据平台建设,曾担任趣点科技联合创始人兼CTO等职位。毕业于西北工业大学,曾在国内外知名期刊发表多篇学术论文,拥有9项发明专利。
什么是时序数据
在介绍时序数据库之前,我们先来看看什么是时序数据。时序数据就是基于时间排序的数
据,再通过时间坐标将这些数据连接起来,形成一个折线图,直观地展示一个指标在过去一段时间内的走势和规律,帮助定位数据异常点。
时序数据库就是用来存储这些时序数据的数据库。与传统数据库相比,时序数据库需要能
够长时间保存数据,且需要实时展示,这就要求时序数据库能做到持久化存储,以及数据读写的高性能。此外,对于一些复杂的场景,比如广告业务的多维度多指标,时序数据库还需要做到多维查询、指标聚合等。图 8-1 展示了某服务最近 6 小时的 QPS 走势。

图8-1 QPS走势图
时序数据库的特点
数据写入
数据实时写入。
高并发写入。
无须更新或删除操作(除了修复数据)。
连续性:时序数据会按照指定的时间粒度持续写入。
数据读取
写多读少:时序数据的写入是持续的,但是一般并不会持续地读取数据,只有在需要
的时候才会查询最近一段时间内的指定维度指标。
多时间粒度读取:一般来说,我们会对最近 7 天的数据以一个比较细的时间粒度来存储一个相对精确的值,而对于 7 天或者一个月以前的数据,通常会把它们聚合成一个比较粗的时间粒度存储,比如按照小时或者天来存储,以便节省磁盘空间,提高读取历史数据的效率。
指定维度读取:在广告业务中,时序数据存储的维度可能有成百上千个,那么在读取
数据时不会把所有的维度都读取出来,因为这样做不仅没必要,而且对系统的 I/O 也是一个极大的考验。所以,只会选择读取所需要的维度和指标。
实时聚合:通常实时的时序数据存储的是不同维度下的一个比较细的时间粒度数据,
查询时需要在不同维度下对一个或多个指标进行各种聚合的操作,如 sum、max、avg
等。
数据存储
按列存储:通过数据的查询特征,可以发现时序数据更适合将一个指标放在一起存储,任何列都能被作为索引。在读取数据时,只会读取所需要的维度所在的列,这样就可以大大减小 I/O 的损耗和内存的使用,提高执行效率。
以不同的时间粒度存储:数据的读取特征决定了可以将历史数据聚合成一个比较粗的
粒度存储,将最近的数据以一个比较细的粒度存储,这样可以大大减少磁盘的使用空
间。
冷热存储:通常我们只会查询最近一天或者 7 天的数据,而半年或一年以前的数据使
用率很低,因此可以把历史的冷数据和最近的热数据分开存储,以提高读取数据的效
率,减少磁盘的使用空间。
时序数据库的特性
上面介绍的时序数据库的这些特点,决定了时序数据库具有以下特性。
高并发、高吞吐量,实时写入和读取数据。
高可用性、高可靠性,分布式架构、数据分片。
支持海量数据存储,一般时序数据都是 TB 或 PB 级别的体量。
支持数据聚合分析,满足实时的多维聚合分析。
时序数据库的组成(不同的数据库定义可能不一样)
Timestamp:这是时序数据库的关键所在,因为是以时间排序的数据,所以需要记录所
有数据的时间。
Metric:需要存储的指标数据有很多,比如在广告业务中,分析用到的指标更是成千上万,那么在时序数据库中就需要通过Metric 字段来标识每个指标数据,如 QPS、Status 等
Dimension:数据的属性,比如数据类型、地域、年龄、性别等。而一般指标的结果都
是基于单维度或多维度分析得到的。比如在广告业务中,一个指标有时需要上百个维
度经过不同的组合得到不同的结果。
时序数据库的模型
表 8-1 显示了在同一个时间、不同维度下 QPS 的变化情况。其中地域和性别就是Dimension,北京、上海等就是地域维度的类别,QPS 就是 Metric,QPS 列的数据就是 QPS 指标每秒钟在地域和性别组合维度下的值。
表 8-1 时序数据库模型

时序数据库的对比
目前,市面上的时序数据库种类繁多,比较老牌的有 Graphite、RRD Tool 等,后起之秀有InfluxDB、OpenTSDB、Prometheus 等,还有一些虽然不能定位为时序数据库,但是可以轻松实现时序数据存储的功能,支持海量数据做实时聚合运算,且功能强大,比如 Druid、Elasticsearch、ClickHouse 等。表 8-2 对比了目前主流时序数据库的优缺点。
表 8-2 主流时序数据库的优缺点


————
本文新作《智能运维:从0搭建大规模分布式AIOps系统》。本书来自作者在智能运维岗位上一路打怪升级的数载经验、心得,既有切肤之痛,也不乏高屋建瓴,更有国内一线AIOps团队的酷炫打法,还有面向未来的高瞻远瞩与精辟阐析。互联网车轮滚滚前行,如若不想让自己的脚步放慢,请直击下方阅读原文,颠覆固有的思想,智能化自己的技能。
内容简介:《智能运维:从0搭建大规模分布式AIOps系统》结合大企业的智能运维实践,全面完整地介绍智能运维的技术体系,让读者更加了解运维技术的现状和发展。同时,帮助运维工程师在一定程度上了解机器学习的常见算法模型,以及如何将它们应用到运维工作中。《智能运维:从0搭建大规模分布式AIOps系统》共分4篇。第1篇运维发展史,重点阐述当前运维的发展现状及面临的技术挑战;第2篇智能运维基础设施,重点讲述大数据场景下的数据存储、大数据处理和分析的方法与经验,以及海量数据多维度多指标的处理分析技术;第3篇智能运维技术详解,重点关注在新时期大数据时代下智能化的运维技术,包括数据聚合与关联、数据异常点检测、故障诊断和分析、趋势预测算法;第4篇技术案例详解,为大家梳理了通过开源框架ELK快速构建智能监控系统的整体方案,还将分享微博平台和微博广告两个不同业务场景下智能监控系统的技术实践。《智能运维:从0搭建大规模分布式AIOps系统》适合运维、开发、架构、DevOps工程师及广大互联网技术爱好者研读和借鉴。


长按二维码,关注“前沿技墅”,抢先接收新知、了解书讯、结识大咖。
任何伟大,无不起步于不经意间,你可以选择不经意错过,或不经意开始……





