《时序数据库扫盲.pptx》由会员分享,可在线阅读,更多相关《时序数据库扫盲.pptx(38页珍藏版)》请在优知文库上搜索。
1、时序数据库时序数据库 内容内容 什么是时序数据、时序数据库 时序数据库的分类 时序数据库应用场景 时序数据库的特点 时序数据库InfluxDB、Prometheus、OpenTSDB存储引擎介绍 为什么时序数据库插入快 为什么时序数据库查询比较快 InfluxDB 安装使用数据格式里包含 timestamp 字段的数据。比如股票市场的价格,环境中的温度,主机的 CPU 使用率等。 如何去查询它。在查询的时候,对于时间序列我们总是会带上一个时间范围去过滤数据。同时查询的结果里也总是会包含 timestamp 字段。有什么数据是不包含 timestamp 的呢?几乎所有的数据都可以打上一个 tim
2、estamp 字段对比传统数据库仅仅记录了数据的当前值,时序数据库则记录了所有的历史数据。同时时序数据的查询也总是会带上时间作为过滤条件。时序数据库时序时空数据库(Time Series & Spatial Temporal Database,简称 TSDB)是一种高性能、低成本、稳定可靠的在线在线服务服务,广泛应用于物联网(IoT)设备监控系统、企业能源管理系统(EMS)、生产安全监控系统和电力检测系统等行业场景;除此以外,还提供时空场景的查询和分析的能力。TSDB 具备。 一般数据量:一般数据量:1、直接基于文件的简单存储:RRD Tool,Graphite Whisper。这类工具附属于
3、监控告警工具,底层没有一个正规的数据库引擎。只是简单的有一个二进制的文件结构。2、基于 K/V 数据库构建:opentsdb(基于hbase),blueflood,kairosDB(基于cassandra),influxdb,prometheus(基于leveldb)3、基于关系型数据库构建:mysql,postgresql 都可以用来保存时间序列数据超大数据量(超大数据量(从十亿条里取百万记录出来从十亿条里取百万记录出来 上面的数据库是无法完成的上面的数据库是无法完成的 ):(要完成实时聚合就不是一个产品可以完成的)检索:基于Lucene构建的“搜索引擎”:Elasticsearch, Cr
4、ate.io(虽然是基于Elasticsearch,但是聚合逻辑是自己实现的),Solr;加载 :列式存储数据库:Vertica(C-store的后裔)Actian(Monetdb的后裔)等;Druid.io。分布式计算Hadoop和spark。类型一类型一 : 其表结构是这样的:metric_name timestamp value其优化的查询方式是: SELECT value FROM metric WHERE metric_name=”A” AND timestamp = B AND timestamp = B AND timestamp C GROUP BY d2想要在在查询阶段做数据
5、的聚合和转换,需要能够支持以下三点。1、用索引检索出行号:能够从上亿条数据中快速过滤出几百万的数据。2、从主存储按行号加载:能够快速加载这过滤出的几百万条数据到内存里。3、分布式计算:能够把这些数据按照 GROUP BY 和 SELECT 的要求计算出最终的结果集。 时序数据高效读写TSDB 提供时序数据的高效读写。对于百万数据点的读取,响应时间小于 5 秒,且最高可以支撑每秒千万数据点的写入。数据写入TSDB 支持通过 HTTP 协议 和 TSDB Java Client 两种方式进行数据写入。数据查询TSDB 支持通过 HTTP 协议、TSDB Java Client 以及 TSDB 控制
6、台三种方式进行数据的查询操作。用户也可以通过 TSDB 产品控制台的数据查询功能进行数据分组、降采样、空间聚合的可视化数据查询展现。数据管理数据时效设置您可以通过控制台或者 API 设置数据的有效期。数据时效开启并设置完成后,系统对于定义的过期数据将立即标记失效,并在特定时间进行自动化清理。数据清理您可以在控制台上根据度量(Metric)进行数据清理,或者通过 API 进行更灵活的数据清理。高效压缩存储TSDB 使用高效的数据压缩技术,将单个数据点的平均使用存储空间降为12个字节,可以降低90%存储使用空间,同时加快数据写入的速度。时序数据计算能力TSDB 提供专业全面的时序数据计算函数,支持
7、降采样、数据插值和空间聚合计算,能满足各种复杂的业务数据查询场景。监控运维TSDB 提供实例运维系统,让您可以实时的掌握实例的运行情况、性能指标和存储空间使用情况,并通过设置报警通道,实时发现资源瓶颈。时序数据库的特点物联网设备监控分析物联网设备监控分析 电力化工及工业制造监控分析电力化工及工业制造监控分析物联网设备无时无刻不在产生海量的设备状态数据和业务消息数据,这些数据有助于进行设备监控、业务分析预测和故障诊断。设备将原始数据通过 MQTT 协议发送到物联网套件,经由物联网套件将数据转发到消息服务系统,继而通过流计算系统对这些数据进行实时计算处理后写入到 TSDB 中存储,或者经由物联网套
8、件直接将原始数据写入 TSDB 中存储。前端的监控系统和大数据处理系统会利用 TSDB 的数据查询和计算分析能力进行业务监控和分析结果的实时展现。系统运维和业务实时监控系统运维和业务实时监控通过对大规模应用集群和机房设备的监控,实时关注设备运行状态、资源利用率和业务趋势,实现数据化运营和自动化开发运维。通过日志或者其他方式对原始指标数据进行采集和实时计算,最后将实时计算的结果数据存储到 TSDB,实现监控和分析的展现。InfluxDBInfluxDB是一款专门处理高写入和查询负载的时序数据库,用于存储大规模的时序数据并进行实时分析,包括来自DevOps监控、应用指标和IoT传感器上的数据。主要
9、特点InfluxDB是帮助您处理时序数据的一个绝佳选择,目前有以下特点:专为时间序列数据量身订造高性能数据存储。TSM引擎提供数据高速读写和压缩等功能。简单高效的HTTP API写入和查询接口。针对时序数据,量身订造类似SQL的查询语言,轻松查询聚合数据。允许对tag建索引,实现快速有效的查询。数据保留策略(Retention policies)能够有效地使旧数据自动失效。InfluxDB is a trademark registered by InfluxData Inc. which is not affiliated with, and does not endorse, TSDB f
10、or InfluxDB.OpenTSDB 数据模型hbase表结构表结构hbase写入写入系统如何找到某个row key (或者某个 row key range)所在的regionbigtable 使用三层类似B+树的结构来保存region位置。第一层是保存zookeeper里面的文件,它持有root region的位置。第二层root region是.META.表的第一个region其中保存了.META.z表其它region的位置。通过root region,我们就可以访问.META.表的数据。.META.是第三层,它是一个特殊的表,保存了hbase中所有数据表的region 位置信息。hb
11、ase 寻址寻址Prometheus Prometheus 是一套开源的系统监控报警框架。它启发于 Google 的 borgmon 监控系统,由工作在 SoundCloud 的 Google 前员工在 2012 年创建,作为社区开源项目进行开发,并于 2015 年正式发布。2016 年,Prometheus 正式加入 Cloud Native Computing Foundation,成为受欢迎度仅次于 Kubernetes 的项目。作为新一代的监控框架,Prometheus 具有以下特点:强大的多维度数据模型:i.时间序列数据通过指标 (metric) 名和键值对 (key/value p
12、airs) 来识别。ii.所有的指标 (metric) 都可以设置任意的多维标签 (label)。iii.数据模型更随意,不需要刻意设置为以点分隔的字符串。iv.可以对数据模型进行聚合,切割和切片操作。v.支持双精度浮点类型,标签可以设为全 unicode。灵活而强大的查询语言 PromQL, 在同一个查询语句,可以对多个指标 (metrics) 进行乘法、加法、连接、取分数位等操作。使用拉取 (pull) 模式采集时间序列数据,避免有问题的服务器推送有问题的指标 (metrics)。可以兼容采用推送 (push) 模式,利用 Pushgateway 把时间序列数据推送至 Prometheus
13、 服务。可以通过服务发现或者静态配置去获取监控的目标 (targets)。有多种可视化图形界面。Prometheus metric 名字:该名字应该具有语义,一般用于表示 metric 的功能,例如:http_requests_total, 表示 http 请求的总数。其中,metric 名字由 ASCII 字符,数字,下划线,以及冒号组成,且必须满足正则表达式 a-zA-Z_:a-zA-Z0-9_:*。标签:使同一个时间序列有了不同维度的识别。例如 http_requests_totalmethod=Get 表示所有 http 请求中的 Get 请求。当 method=post 时,则为新的
14、一个 metric。标签中的键由 ASCII 字符,数字,以及下划线组成,且必须满足正则表达式 a-zA-Z_:a-zA-Z0-9_:*。样本:实际的时间序列,每个序列包括一个 float64 的值和一个毫秒级的时间戳。格式:=, ,例如:http_requests_totalmethod=POST,endpoint=/api/tracks。Prometheus OpenTSDB的数据模型几乎与普罗米修斯相同:时间序列由一组任意键值对(OpenTSDB标签是Prometheus标签)标识。度量标准的所有数据都 存储在一起,从而限制了度量标准的基数。但是有一些细微差别:Prometheus允许标
15、签值中的任意字符,而OpenTSDB则更具限制性。OpenTSDB还缺少完整的查询语言,只允许通过其API进行简单的聚合和数学运算。存储存储OpenTSDB的存储是在Hadoop和HBase之上实现的 。这意味着可以轻松地水平扩展OpenTSDB,但您必须接受从一开始就运行Hadoop / HBase集群的整体复杂性。Prometheus最初可以更简单地运行,但是一旦超过单个节点的容量就需要显式分片。与Prometheus一样,InfluxDB数据模型将键值对作为标签,称为标签。此外,InfluxDB还有第二级标签称为字段,其使用范围更为有限。InfluxDB支持高达纳秒分辨率的时间戳,以及f
16、loat64,int64,bool和字符串数据类型。相比之下,Prometheus支持float64数据类型,对字符串和毫秒分辨率时间戳的支持有限。InfluxDB使用日志结构合并树的变体进行存储,其中包含按时间分片的预写日志。这比事件记录更适合于每个时间序列方法的Prometheus附加文件。几种时序数据库的对比 时序数据库为什么插入快 LSM tree包括内存里的数据结构和磁盘上的文件两部分。分别对应Hbase里的MemStore和HLog;对应Cassandra里的MemTable和sstable。 LSM tree操作流程如下:1. 数据写入和更新时首先写入位于内存里的数据结构。为了避免数据丢失也会先写到WAL文件中。2. 内存里的数据结构会定时或者达到固定大小会刷到磁盘。这些磁盘上的文件不会被修改。3. 随着磁盘上积累的文件越来越多,会定时的进行合并操作,消除冗余数据,减少文件数量。 可以看到LSM tree核心思想就是通过内存写和后续磁盘的顺序写入获得更高的写入性能,避免了随机写入。但同时也牺牲了读取性能,因为同一个key的值可能存在于多个HFile中。为了获取更好的读取性