首页天道酬勤阿里云时序数据库(试述HBase数据模型的概念视图)

阿里云时序数据库(试述HBase数据模型的概念视图)

admin 01-06 13:27 294次浏览

前言

数据,庞大的量或千亿级是整体量,是个笼统的概念,我们可以分开治疗。 通过所谓的集群方式实现。 庞大的监视数据的真正挑战,我认为在以下方面是:

实时性。 目前,笔者负责公司的监控工作,但笔者对此一无所知,除了知道一些开源名称外,什么也不知道。 但是,监测指标数据的实时性很重要,这位笔者还是很了解的。 分成集群后,各个业务的通信量大小、标签集的多少决定了查询的效率。 进行该查询优化的关键(公司目前面临的挑战)是如何针对监控数据写入少、成本低、敏感的特点设计高效的存储引擎。 在最大限度地发挥硬件性能的同时,有效地压缩存储,确保查询的效率。

简介

InfluxDB数据库是用于存储和分析时间序列数据的开源数据库。 集群模型的非开源)。 适用于资源监测数据等时序相关数据的处理和分析。 的各种特殊函数(标准偏差、随机采样、统计数据变化比)等,因此数据分析非常方便。

使用场景

物联网设备监控

Influxdb本来就是物联网崛起的数据库。 天生具有IOT的特性;

InfluxDB支持高性能的时序数据写入和分析,适用于物联网设备的监控场景。 在IoT平台上收集用户物联网设备的监控指标,将原始数据全部写入InfluxDB,利用其丰富的分析函数可以快速分析物联网设备生成的时序数据,输出到监控系统进行可视化监控。

互联网业务性能监控

除了物联网场景外,InfluxDB还可以用于日志数据的存储与分析、各种服务、软件与系统的监控数据的收集、分析与报警、金融数据的收集与分析等。

互联网服务的及时性和稳定性是服务能力的重要指标,InfluxDB适合存储和分析这类数据,将业务服务日志、系统监控指标写入Kafka,用Flink进行业务规则实时计算后,将计算结果写入InfluxDB

无论是

使用场景小结

,只要写多读少,无事务要求,满足大量高并发写、分时间段聚合分析和基于分时间段高速查询的数据,都可以使用InfluxDB。

设计的初衷

在同一时间点多次写入相同的数据,认为重复写入极少产生删除数据。 删除的数据基本上很少清除过期的数据来更新现有的数据,是无可争议的更新。 时间序列数据总是将新数据的大部分写入最新时间戳的数据,而数据按照时间的升序添加的数据规模非常大。 需要能够处理大量的读写操作,能够写入和查询数据比一致性的强度重要得多。 因为time series是非常短的存在,所以time series的数量很多。 没有那个point是太重要的

名词解释

与传统的数据库对比

InfluxDB传统数据库数据库度量数据表point表中的一行数据

influxdb数据库不需要像传统数据库那样创建各种表。 该表的创建主要在最初插入数据时自动完成。 point的数据结构由时间戳(time )、标签) tags )、数据) fields )三部分组成,具体含义如下。

点属性含义time数据记录时间是主索引(自动生成) tags各种带索引的属性fields各种value的值)无索引的属性)

特有的概念

系列(通常由retention policy、measurement和tagset组成)与measurement、tagset和retention policy为同一数据集的一个系列线路协议行协议格式线路协议如cpu_load_short、host=server02、region=us-west value=0. 551425688那样

cpu_load_short,direction=in,host=服务器r01,region=美国西部值=2.01422568543702900257

Tag:维列表示数据的归属、属性,表示由哪个设备/模块生成的,一般不随时间变化而用于查询。 上面的主机、区域是标签密钥、服务器02、美国-韦斯特是标签值、ta

g会建立索引,tag类型只能是字符串Field :指标列,代表数据的测量值,随时间平滑波动。上述行协议中value 就是filedname, 0.55是filed value,value用于数据展示,value支持类型包括:floats,integers,strings,booleansTimeStamp:格式是:RFC3339 UTC。默认精确到纳秒,可选Retention Policy 保留策略:保留策略包括设置数据保存的时间以及在集群中的副本个数。默认配置为:RP 是 autogen,保留时间是永久,副本为1。InfluxDB会定期清除过期的数据。

InfluxDB 特点

为时间序列数据专门编写的自定义高性能数据存储引擎(TSM)。Golang编写,没有其它的依赖。提供简单、高性能的写入、查询 http api。插件支持其它数据写入协议,例如 graphite、collectd、OpenTSDB。支持类sql查询语句。tags可以索引序列化,提供快速有效的查询。Retention policies自动处理过期数据。低成本存储,采样时序数据,压缩存储。Continuous queries自动聚合,提高查询效率。

InfluxDB的性能对比:https://zhuanlan.zhihu.com/p/80062750

InfluxDB的写性能是OpenTSDB的5倍,存储效率是OpenTSDB的16.5倍,查询效率是OpenTSDB的3.65倍。InfluxDB的写性能是MongoDB的2.4倍,存储效率是MongoDB的20倍,查询效率是MongoDB的5.7倍。InfluxDB的写性能是Graphite的12倍,存储效率是Graphite的6.3倍,查询效率是Graphite的9倍。InfluxDB的写性能是Cassandra的4.5倍,存储效率是Cassandra的2.1倍,查询效率是Cassandra的45倍。

InfluxDB 核心概念

http://hbasefly.com/2017/11/19/timeseries-database-2/

文章《时序数据库体系技术 – 时序数据存储模型设计》中提到时间线的概念,时序数据的时间线就是一个数据源采集的一个指标随着时间的流逝而源源不断地吐出数据,这样形成的一条数据线称之为时间线。如下图所示:

上图中有两个数据源,每个数据源会采集两种指标:butterflier和honeybees。InfluxDB中使用Series表示数据源,Series由Measurement和Tags组合而成,Tags组合用来唯一标识Measurement。Series是InfluxDB中最重要的概念,在接下来的内核分析中会经常用到。

InfluxDB 存储引擎

存储引擎将多个组件结合在一起,并提供用于存储和查询 series 数据的外部接口。他有许多组件组成,每个组件有特定的功能:

In-MemoryInde

内存中的索引是分片上的共享索引,可以快速访问measurement,tag和series。 引擎使用该索引,但不是特指存储引擎本身。

WAL

WAL是一种写优化的存储格式,允许写入持久化,但不容易查询。 对WAL的写入就是append到固定大小的段中

Cache

Cache是存储在WAL中的数据的内存中的表示。 它在运行时可以被查询,并与TSM文件中存储的数据进行合并

TSM Files

TSM Files中保存着柱状格式的压缩过的series数据

FileStore

FileStore可以访问磁盘上的所有TSM文件。 它可以确保在现有的TSM文件被替换时以及删除不再使用的TSM文件时,创建TSM文件是原子性的

Compactor

Compactor负责将不够优化的Cache和TSM数据转换为读取更为优化的格式。 它通过压缩series,去除已经删除的数据,优化索引并将较小的文件组合成较大的文件来实现

Compaction Planner

Compaction Planner决定哪个TSM文件已准备好进行压缩,并确保多个并发压缩不会彼此干扰

Compression

Compression由各种编码器和解码器对特定数据类型作处理。一些编码器是静态的,总是以相同的方式编码相同的类型; 还有一些可以根据数据的类型切换其压缩策略

Writers/Readers

每个文件类型(WAL段,TSM文件,tombstones等)都有相应格式的Writers和Readers

注意

性能

对于超过10万样本数据的查询操作而言,我们通过索引(即influxdb中的tag)查询将能够节省机器性能,大大降低查询时间。查询操作往往耗死机器的根本原因是:OOM(Out Of Memory)

那么在配置CQ时,应该:

尽可能使用tag;应该拿写好的CQ充分模拟线上环境的测试,证明性能没问题后再上线。retention policy

配置数据的留存策略好处是数据持久化,但数据量较大时劣势也非常明显,会占用很大的CPU,造成读写数据异常。所以配置RP时我们必须注意:

尽量在读写并发量较小的时刻去操作;可以在influxdb slave库中反复设置RP实践出最佳方式再上线。

参考

阿里云InfluxDB®高可用设计

阿里云InfluxDB® Raft HybridStorage实现方案

如何基于活动配置文件访问application-{profile}.properties文件python文件编译为pyc后运行怎么实现包含python音视频开发的词条
grafana数据源可以有哪些(transdroid详细设置) vcenter集群配置(docker containerd)
相关内容