未来会是时序数据库的天下吗?

时序数据简介

时序数据库最近正在爆发,各搜索引擎的搜索指数也都是呈上升趋势的。

DB-Engine 上的排名:

这份排行榜,都是时序数据库.

时序数据库的兴起是有原因的。就拿无人驾驶来说,无人车在运行时需要监控各种状态,包括坐标,速度,方向,温度,湿度等等,并且需要把每时每刻监控的数据记录下来,用来做大数据分析。每辆车每天就会采集将近8T的数据。如果只是存储下来不查询也还好(虽然已经是不小的成本),但如果需要快速查询“今天下午两点在北京路,速度超过60km/h的无人车有哪些”这样的多纬度分组聚合查询,那么时序数据库会是一个很好的选择。

比如,证券交易,智能家具,城市大脑等这些应用程序均依赖一种衡量事物随时间的变化的数据形式,这里的时间不只是一个度量标准,而是一个坐标的主坐标轴。

这就是时间序列数据,它渐渐在我们的世界中发挥更大的作用。目前,时间序列数据库(TSDB)已经成为增长最快的数据库类别。未来随着 5G 的到来,时序数据库将更加流行

时序数据的基本概念和意义

对时序数据进行建模的话,会包含三个重要部分,分别是:主体,时间点和测量值。套用这套模型,你会发现你在日常工作生活中,无时无刻不在接触着这类数据。

如果你是一个股民,某只股票的股价就是一类时序数据,其记录着每个时间点该股票的股价。

如果你是一个运维人员,监控数据是一类时序数据,例如对于机器的CPU的监控数据,就是记录着每个时间点机器上CPU的实际消耗值。

时序数据从时间维度上将孤立的观测值连成一条线,从而揭示软硬件系统的状态变化。孤立的观测值不能叫时序数据,但如果把大量的观测值用时间线串起来,我们就可以研究和分析观测值的趋势及规律。

时序数据的数学模型

数据的存储要考虑其数学模型和特点,时序数据当然也不例外。

下图为一段时序数据,记录了一段时间内的某个集群里各机器上各端口的出入流量,每半小时记录一个观测值。这里以图中的数据为例,介绍下时序数据的数学模型(不同的时序数据库中,基本概念的称谓有可能不同,这里以腾讯CTSDB为准):

  • measurement: 度量的数据集,类似于关系型数据库中的 table;

  • point: 一个数据点,类似于关系型数据库中的 row;
  • timestamp: 时间戳,表征采集到数据的时间点;
  • tag: 维度列,代表数据的归属、属性,表明是哪个设备/模块产生的,一般不随着时间变化,供查询使用;
  • field: 指标列,代表数据的测量值,随时间平滑波动,不需要查询。

这组数据的measurement为Network,每个point由以下部分组成:

  • timestamp:时间戳

  • 两个tag:host、port,代表每个point归属于哪台机器的哪个端口
  • 两个field:bytes_in、bytes_out,代表piont的测量值,半小时内出入流量的平均值

同一个host、同一个port,每半小时产生一个point,随着时间的增长,field(bytes_in、bytes_out)不断变化

时序数据特点

  • 数据模式:时序数据随时间增长,相同维度重复取值,指标平滑变化:这点从上面的Network表的数据变化可以看出。

  • 写入:持续高并发写入,无更新操作:时序数据库面对的往往是百万甚至千万数量级终端设备的实时数据写入(如摩拜单车2017年全国车辆数为千万级),但数据大多表征设备状态,写入后不会更新。
  • 查询:按不同维度对指标进行统计分析,且存在明显的冷热数据,一般只会频繁查询近期数据。

传统数据库在时序数据场景下存在的问题

当数据量少的时候在传统关系型数据库上加上时间戳一列就能作为时序数据库。但时序数据往往是由百万级甚至千万级终端设备产生的,写入并发量比较高,属于海量数据场景。

MySQL在海量的时序数据场景下存在如下问题:

  • 存储成本大:对于时序数据压缩不佳,需占用大量机器资源;
  • 维护成本高:单机系统,需要在上层人工的分库分表,维护成本高;
  • 写入吞吐低:单机写入吞吐低,很难满足时序数据千万级的写入压力;
  • 查询性能差:适用于交易处理,海量数据的聚合分析性能差。

Hadoop生态(Hadoop、Spark等)存储时序数据会有以下问题:

  • 数据延迟高:离线批处理系统,数据从产生到可分析,耗时数小时、甚至天级;
  • 查询性能差:不能很好的利用索引,依赖MapReduce任务,查询耗时一般在分钟级。

时序数据库需要解决以下几个问题:

  • 时序数据的写入:如何支持每秒钟上千万上亿数据点的写入。
  • 时序数据的读取:如何支持在秒级对上亿数据的分组聚合运算。
  • 成本敏感:由海量数据存储带来的是成本问题。如何更低成本的存储这些数据,将成为时序数据库需要解决的重中之重。

所以,时序数据库的诞生就是为了解决传统关系型数据库在时序数据存储和分析上的不足和缺陷的。

开源时序数据库对比

目前行业内比较流行的开源时序数据库产品有 InfluxDB、OpenTSDB、Prometheus、Graphite等,其产品特性对比如下图所示:

InfluxDB 是一个开源的时序数据库,使用 GO 语言开发,特别适合用于处理和分析资源监控数据这种时序相关数据,它目前是时序数据库中的佼佼者。

随着时间的推移,各大云厂商也都推出了自己的时序数据库。阿里巴巴的TSDB 团队自 2016 年第一版时序数据库落地后,逐步服务于 DBPaaS,Sunfire 等等集团业务,在 2017 年中旬公测后,于 2018 年 3 月底正式商业化。TSDB 在技术方面不断吸纳时序领域各家之长,开启了自研的时序数据库发展之路。

原文地址:https://www.cnblogs.com/bind/p/11622106.html

时间: 2024-08-04 01:27:40

未来会是时序数据库的天下吗?的相关文章

时序数据库深入浅出之存储篇——本质LSMtree

什么是时序数据库 先来介绍什么是时序数据.时序数据是基于时间的一系列的数据.在有时间的坐标中将这些数据点连成线,往过去看可以做成多纬度报表,揭示其趋势性.规律性.异常性:往未来看可以做大数据分析,机器学习,实现预测和预警. 时序数据库就是存放时序数据的数据库,并且需要支持时序数据的快速写入.持久化.多纬度的聚合查询等基本功能. 对比传统数据库仅仅记录了数据的当前值,时序数据库则记录了所有的历史数据.同时时序数据的查询也总是会带上时间作为过滤条件. 时序数据示例 p1- 北上广三地 2015 年气

时序数据库TSDB简单了解

由于项目需要,简单看来下时序数据库: 时序数据库是针对大量数据写入.主要用于记录时序数据的,使用于监控记录的场景:写多读少场景: 什么是时序数据.时序数据是基于时间的一系列的数据.在有时间的坐标中将这些数据点连成线,往过去看可以做成多纬度报表,揭示其趋势性.规律性.异常性;往未来看可以做大数据分析,机器学习,实现预测和预警. 时序数据库就是存放时序数据的数据库,并且需要支持时序数据的快速写入.持久化.多纬度的聚合查询等基本功能. 对比传统数据库仅仅记录了数据的当前值,时序数据库则记录了所有的历史

互联网级监控系统必备-时序数据库之Influxdb技术

时间序列数据库,简称时序数据库,Time Series Database,一个全新的领域,最大的特点就是每个条数据都带有Time列. 时序数据库到底能用到什么业务场景,答案是:监控系统. Baidu一下,互联网监控系统,大家会发现小米.饿了吗等互联网巨头都在用时序数据库实现企业级的互联网监控系统. 很多人会说,用Zabbix不就搞定了,其实不是这样的,简单的主机资源监控.网络监控.小规模的部署环境,Zabbix能搞定. 如果在IDC 上千台服务器环境下,分布式应用架构.各种中间件,这种情况下我们

深度解读Facebook刚开源的beringei时序数据库——数据压缩delta of delta+充分利用内存以提高性能

转自:https://yq.aliyun.com/topic/58?spm=5176.100239.blogcont69354.9.MLtp4T 摘要: Facebook最近开源了beringei时序数据库,其是用来解决其内部监控数据存储和查询需求的数据库,特点是读写速度快.beringei在压缩算法上有哪些独到之处?本文中阿里云数据库高级专家叶翔将为大家深度解读. Facebook最近开源了beringei时序数据库.beringei是用来解决其内部监控数据存储和查询需求的数据库,其特点是读写

互联网级监控系统必备-时序数据库之Influxdb集群及踩过的坑

上篇博文中,我们介绍了做互联网级监控系统的必备-Influxdb的关键特性.数据读写.应用场景: 互联网级监控系统必备-时序数据库之Influxdb 本文中,我们介绍Influxdb数据库集群的搭建,同时分享一下我们使用集群遇到的坑! 一.环境准备 同一网段内,3个CentOS 节点,相互可以ping通 3个节点CentOS配置Hosts文件,相互可以解析主机名 Azure 虚拟机启用root用户 influxdb-0.10.3-1.x86_64.rpm 设置端口8083 8086 8088 8

【转载】工业大数据漫谈12:实时数据库与时序数据库

转自:http://blog.csdn.net/guanhui1997/article/details/72840769 工业大数据漫谈12:实时数据库与时序数据库 在工业大数据数据库存储领域,除了传统的关系型数据库和分布式数据库以外,还有一种类型的数据库是非常常用,而且是非常有必要的,就是实时数据库和时序数据库. 实时数据库诞生于美国,主要是因为现代工业制造流程及大规模工业自动化的发展,导致大量的测量数据需要集成和存储,而采用关系数据库难以满足速度和容量的要求,因此在80年代中期,开始诞生了适

物联网系统开发如何选择时序数据库

在很多物联网系统中,都需要对联网的设备进行监控,并对监控采样到的数据进行持久化.对采样数据进行持久化,其实很多年前在工业领域已经有专门的数据库来完成这个任务了.在工业领域,这个叫实时数据库. 工业领域的实时数据库具有数据采集.实时数据缓存.数据回写(向设备发送指令).采样数据归档存盘等主要功能.目前工业领域实时数据库基本上被国外厂家所垄断,价格昂贵.以PI数据库为例,基础版本(只有5000个测点)就需要大约10万美元,每个数据采集接口需要6000美元.这个价格对新兴的物联网公司来说代价太大了.

时序数据库InfluxDB使用详解

InfluxDB是一个开源的时序数据库,使用GO语言开发,特别适合用于处理和分析资源监控数据这种时序相关数据.而InfluxDB自带的各种特殊函数如求标准差,随机取样数据,统计数据变化比等,使数据统计和实时分析变得十分方便.在我们的容器资源监控系统中,就采用了InfluxDB存储cadvisor的监控数据.本文对InfluxDB的基本概念和一些特色功能做一个详细介绍,内容主要是翻译整理自官网文档,如有错漏,请指正. 来源:https://www.jianshu.com/p/a1344ca86e9

时序数据库InfluxDB

一.什么是InfluxDB? InfluxDB是一款用Go语言编写的开源分布式时序.事件和指标数据库,无需外部依赖.该数据库现在主要用于存储涉及大量的时间戳数据,如DevOps监控数据,APP metrics, loT传感器数据和实时分析数据. InfluxDB特征: – 无结构(无模式):可以是任意数量的列(tags). – 可以设置metric的保存时间. – 支持与时间有关的相关函数(如min.max.sum.count.mean.median等),方便统计. – 支持存储策略:可以用于数