时序数据库-01-时序数据库有哪些?为什么要使用

打印 上一主题 下一主题

主题 888|帖子 888|积分 2664

时序数据库系列

时序数据库-01-时序数据库有哪些?为什么要使用
时序数据库-02-聊一聊时序数据库
时序数据库-03-pentsdb-分布式时序数据库
时序数据库-04-InfluxData-分布式时序数据库
时序数据库-05-TDengine 是一款开源、高性能、云原生的时序数据库 (Time-Series Database, TSDB)
时序数据库-05-TDengine Time-Series Database, TSDB
时序数据库-05-TDengine windows11 WSL 安装实战笔记 docker
时序数据库-06-01-vm VictoriaMetrics 快速、经济高效的监控解决方案和时间序列数据库
时序数据库-06-02-vm VictoriaMetrics install on docker 安装 vm
时序数据库-06-03-vm VictoriaMetrics java 整合
时序数据库-06-04-vm VictoriaMetrics storage 存储原理简介
时序数据库-06-05-vm VictoriaMetrics cluster 集群原理
时序数据库-06-06-vm VictoriaMetrics cluster 集群访问方式
3.基本特点

时序业务和普通业务在很多方面都有巨大的区别,归纳起来重要有如下几个方面:
3.1 持续产生海量数据,没有波峰波谷

举几个简单的例子,好比类似哨兵的监控系统,假如现在系统监控1w台服务器的各类指标,每台服务器每秒收罗100种metrics,如许每秒钟将会有100w的TPS。再好比说,现在比力流行的活动手环,假如当前有100w人佩戴,每个手环一秒只收罗3种metrcis(心跳、脉搏、步数),如许每秒钟也会产生300w的TPS。
3.2 数据都是插入操作,基本没有更新删除操作

时序业务产生的数据很少有更新删除的操作,基于如许的事实,在时序数据库架构设计上会有很大的简化。
3.3 近期数据关注度更高,未来会更关注流式处理这个环节,时间久远的数据极少被访问,甚至可以丢弃

这个很容易理解,哨兵系统我们通常最关心最近一小时的数据,最多看看最近3天的数据,很少去看3天从前的数据。随着流式计算的到来,时序数据在以后的发展中必然会更关注即时数据的价值,这部门数据的价值毫无疑问也是最大的。数据产生之后就可以根据某些规则进行报警是一个非经常见并重要的场景,报警时效性越高,对业务越有利。
3.4 数据存在多个维度的标签,每每需要多维度联合查询以及统计查询。

时序数据另一个非常重要的功能是多维度聚合统计查询,好比业务需要统计最近一小时广告主google发布在USA地区的广告点击率和总收入分别是多少,这是一个典范的多维度聚合统计查询需求。这个需求通常对实效性要求不高,但对查询聚合性能有比力高的要求。
4.TSDB焦点特性

总结起来TSDB需要关注的技术点重要有这么几个:
4.1 高吞吐量写入能力

这是针对时序业务持续产生海量数据这么一个特点量身定做的,当前要实现系统高吞吐量写入,必须要满足两个基本技术点要求:系统具有水平扩展性和单机LSM体系结构。系统具有水平扩展性很容易理解,单机肯定是扛不住的,系统必须是集群式的,而且要容易加节点扩展,说到底,就是扩容的时候对业务无感知,目前Hadoop生态系统基本上都可以做到这一点;而LSM体系结构是用来保证单台机器的高吞吐量写入,LSM结构下数据写入只需要写入内存以及追加写入日志,如许就不再需要随机将数据写入磁盘,HBase、Kudu以及Druid等对写入性能有要求的系统目前都采用的这种结构。
4.2 数据分级存储/TTL

这是针对时序数据冷热性质定制的技术特性。数据分级存储要求可以或许将最近小时级别的数据放到内存中,将最近天级别的数据放到SSD,更久远的数据放到更加廉价的HDD大概直接使用TTL过期淘汰掉。
4.3 高压缩率

提供高压缩率有两个方面的考虑,一方面是节省成本,这很容易理解,将1T数据压缩到100G就可以淘汰900G的硬盘开销,这对业务来说是有很大的勾引的。另一个方面是压缩后的数据可以更容易保证存储到内存中,好比最近3小时的数据是1T,我现在只有100G的内存,假如不压缩,就会有900G的数据被迫放到硬盘上,如许的话查询开销会非常之大,而使用压缩会将这1T数据都放入内存,查询性能会非常之好。
4.4 多维度查询能力

时序数据通常会有多个维度的标签来描画一条数据,就是上文中提到的维度列。怎样根据随机几个维度进行高效查询就是必须要解决的一个问题,这个问题通常需要考虑位图索引大概倒排索引技术。
4.5 高效聚合能力

时序业务一个通用的需求是聚合统计报表查询,好比哨兵系统中需要查看最近一天某个接口出现非常的总次数,大概某个接口执行的最大耗时时间。如许的聚合现实上就是简单的count以及max,问题是怎样能高效的在那么大的数据量的底子上将满足条件的原始数据查询出来并聚合,要知道统计的原始值大概因为时间比力久远而不在内存中哈,因此这大概是一个非常耗时的操作。目前业界比力成熟的方案是使用预聚合,就是在数据写进来的时候就完成基本的聚合操作。
未来技术点:非常实时检测、未来预测等等。
5.传统关系型数据库存储时序数据的问题

很多人大概认为在传统关系型数据库上加上时间戳一列就能作为时序数据库。数据量少的时候确实也没问题。但时序数据每每是由百万级甚至万万级终端装备产生的,写入并发量比力高,属于海量数据场景。
5.1 MySQL在海量的时序数据场景下存在如下问题:

存储成本大:对于时序数据压缩不佳,需占用大量机器资源;
维护成本高:单机系统,需要在上层人工的分库分表,维护成本高;
写入吞吐低:单机写入吞吐低,很难满足时序数据万万级的写入压力;
查询性能差:实用于交易处理,海量数据的聚合分析性能差。
5.2 使用Hadoop生态(Hadoop、Spark等)存储时序数据会有以下问题:

数据延迟高:离线批处理系统,数据从产生到可分析,耗时数小时、甚至天级;
查询性能差:不能很好的利用索引,依赖MapReduce任务,查询耗时一样平常在分钟级。
5.3 时序数据库需要解决以下几个问题:

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

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

河曲智叟

金牌会员
这个人很懒什么都没写!
快速回复 返回顶部 返回列表