时序数据库扫盲.pptx

上传人:李司机 文档编号:4617704 上传时间:2023-05-01 格式:PPTX 页数:38 大小:2.84MB
返回 下载 相关 举报
时序数据库扫盲.pptx_第1页
第1页 / 共38页
时序数据库扫盲.pptx_第2页
第2页 / 共38页
时序数据库扫盲.pptx_第3页
第3页 / 共38页
时序数据库扫盲.pptx_第4页
第4页 / 共38页
时序数据库扫盲.pptx_第5页
第5页 / 共38页
点击查看更多>>
资源描述

《时序数据库扫盲.pptx》由会员分享,可在线阅读,更多相关《时序数据库扫盲.pptx(38页珍藏版)》请在三一办公上搜索。

1、时序数据库,内容,什么是时序数据、时序数据库时序数据库的分类时序数据库应用场景时序数据库的特点时序数据库InfluxDB、Prometheus、OpenTSDB存储引擎介绍 为什么时序数据库插入快为什么时序数据库查询比较快InfluxDB 安装使用,什么是时序数据,数据格式里包含 timestamp 字段的数据。比如股票市场的价格,环境中的温度,主机的 CPU 使用率等。如何去查询它。在查询的时候,对于时间序列我们总是会带上一个时间范围去过滤数据。同时查询的结果里也总是会包含 timestamp 字段。有什么数据是不包含 timestamp 的呢?几乎所有的数据都可以打上一个 timestam

2、p 字段对比传统数据库仅仅记录了数据的当前值,时序数据库则记录了所有的历史数据。同时时序数据的查询也总是会带上时间作为过滤条件。,什么是时序数据库,时序时空数据库(Time Series&Spatial Temporal Database,简称 TSDB)是一种高性能、低成本、稳定可靠的在线时序时空数据库服务,提供高效读写、高压缩比存储、时序数据插值及聚合计算等服务,广泛应用于物联网(IoT)设备监控系统、企业能源管理系统(EMS)、生产安全监控系统和电力检测系统等行业场景;除此以外,还提供时空场景的查询和分析的能力。TSDB 具备秒级写入百万级时序数据的性能,提供高压缩比低成本存储、预降采样

3、、插值、多维聚合计算、可视化查询结果等功能,解决由设备采集点数量巨大、数据采集频率高造成的存储成本高、写入和查询分析效率低的问题。,按照底层技术分类,一般数据量:1、直接基于文件的简单存储:RRD Tool,Graphite Whisper。这类工具附属于监控告警工具,底层没有一个正规的数据库引擎。只是简单的有一个二进制的文件结构。2、基于 K/V 数据库构建:opentsdb(基于hbase),blueflood,kairosDB(基于cassandra),influxdb,prometheus(基于leveldb)3、基于关系型数据库构建:mysql,postgresql 都可以用来保存时

4、间序列数据超大数据量(从十亿条里取百万记录出来 上面的数据库是无法完成的):(要完成实时聚合就不是一个产品可以完成的)检索:基于Lucene构建的“搜索引擎”:Elasticsearch,Crate.io(虽然是基于Elasticsearch,但是聚合逻辑是自己实现的),Solr;加载:列式存储数据库:Vertica(C-store的后裔)Actian(Monetdb的后裔)等;Druid.io。分布式计算Hadoop和spark。,一般数据量的的查询特点,类型一:其表结构是这样的:metric_name timestamp value其优化的查询方式是:SELECT value FROM m

5、etric WHERE metric_name=”A”AND timestamp=B AND timestamp C,超大数据量的的查询特点,另外一类数据库其表结构是:timestamp d1 d2.dn v1 v2.vn其优化的查询方式不限于查询原始数据,而是可以组合查询条件并且做聚合计算,比如:SELECT d2,sum(v1)/sum(v2)FROM metric WHERE d1=“A”AND timestamp=B AND timestamp C GROUP BY d2,实时聚合需要的能力,想要在在查询阶段做数据的聚合和转换,需要能够支持以下三点。1、用索引检索出行号:能够从上亿条数

6、据中快速过滤出几百万的数据。2、从主存储按行号加载:能够快速加载这过滤出的几百万条数据到内存里。3、分布式计算:能够把这些数据按照 GROUP BY 和 SELECT 的要求计算出最终的结果集。,时序数据高效读写TSDB 提供时序数据的高效读写。对于百万数据点的读取,响应时间小于 5 秒,且最高可以支撑每秒千万数据点的写入。数据写入TSDB 支持通过 HTTP 协议 和 TSDB Java Client 两种方式进行数据写入。数据查询TSDB 支持通过 HTTP 协议、TSDB Java Client 以及 TSDB 控制台三种方式进行数据的查询操作。用户也可以通过 TSDB 产品控制台的数据

7、查询功能进行数据分组、降采样、空间聚合的可视化数据查询展现。数据管理数据时效设置您可以通过控制台或者 API 设置数据的有效期。数据时效开启并设置完成后,系统对于定义的过期数据将立即标记失效,并在特定时间进行自动化清理。数据清理您可以在控制台上根据度量(Metric)进行数据清理,或者通过 API 进行更灵活的数据清理。高效压缩存储TSDB 使用高效的数据压缩技术,将单个数据点的平均使用存储空间降为12个字节,可以降低90%存储使用空间,同时加快数据写入的速度。时序数据计算能力TSDB 提供专业全面的时序数据计算函数,支持降采样、数据插值和空间聚合计算,能满足各种复杂的业务数据查询场景。监控运

8、维TSDB 提供实例运维系统,让您可以实时的掌握实例的运行情况、性能指标和存储空间使用情况,并通过设置报警通道,实时发现资源瓶颈。,时序数据库的特点,应用场景,物联网设备监控分析 电力化工及工业制造监控分析物联网设备无时无刻不在产生海量的设备状态数据和业务消息数据,这些数据有助于进行设备监控、业务分析预测和故障诊断。设备将原始数据通过 MQTT 协议发送到物联网套件,经由物联网套件将数据转发到消息服务系统,继而通过流计算系统对这些数据进行实时计算处理后写入到 TSDB 中存储,或者经由物联网套件直接将原始数据写入 TSDB 中存储。前端的监控系统和大数据处理系统会利用 TSDB 的数据查询和计

9、算分析能力进行业务监控和分析结果的实时展现。,系统运维和业务实时监控通过对大规模应用集群和机房设备的监控,实时关注设备运行状态、资源利用率和业务趋势,实现数据化运营和自动化开发运维。通过日志或者其他方式对原始指标数据进行采集和实时计算,最后将实时计算的结果数据存储到 TSDB,实现监控和分析的展现。,应用场景,InfluxDB,InfluxDB是一款专门处理高写入和查询负载的时序数据库,用于存储大规模的时序数据并进行实时分析,包括来自DevOps监控、应用指标和IoT传感器上的数据。主要特点InfluxDB是帮助您处理时序数据的一个绝佳选择,目前有以下特点:专为时间序列数据量身订造高性能数据存

10、储。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 for InfluxDB.,OpenTSDB 数据模型,hbase表结构,hbase写入,系统如何找到某个row k

11、ey(或者某个 row key range)所在的regionbigtable 使用三层类似B+树的结构来保存region位置。第一层是保存zookeeper里面的文件,它持有root region的位置。第二层root region是.META.表的第一个region其中保存了.META.z表其它region的位置。通过root region,我们就可以访问.META.表的数据。.META.是第三层,它是一个特殊的表,保存了hbase中所有数据表的region 位置信息。,hbase 寻址,Prometheus,Prometheus 是一套开源的系统监控报警框架。它启发于 Google 的

12、borgmon 监控系统,由工作在 SoundCloud 的 Google 前员工在 2012 年创建,作为社区开源项目进行开发,并于 2015 年正式发布。2016 年,Prometheus 正式加入 Cloud Native Computing Foundation,成为受欢迎度仅次于 Kubernetes 的项目。作为新一代的监控框架,Prometheus 具有以下特点:强大的多维度数据模型:i.时间序列数据通过指标(metric)名和键值对(key/value pairs)来识别。ii.所有的指标(metric)都可以设置任意的多维标签(label)。iii.数据模型更随意,不需要刻意

13、设置为以点分隔的字符串。iv.可以对数据模型进行聚合,切割和切片操作。v.支持双精度浮点类型,标签可以设为全 unicode。灵活而强大的查询语言 PromQL,在同一个查询语句,可以对多个指标(metrics)进行乘法、加法、连接、取分数位等操作。使用拉取(pull)模式采集时间序列数据,避免有问题的服务器推送有问题的指标(metrics)。可以兼容采用推送(push)模式,利用 Pushgateway 把时间序列数据推送至 Prometheus 服务。可以通过服务发现或者静态配置去获取监控的目标(targets)。有多种可视化图形界面。,Prometheus,metric 名字:该名字应该

14、具有语义,一般用于表示 metric 的功能,例如:http_requests_total,表示 http 请求的总数。其中,metric 名字由 ASCII 字符,数字,下划线,以及冒号组成,且必须满足正则表达式 a-zA-Z_:a-zA-Z0-9_:*。标签:使同一个时间序列有了不同维度的识别。例如 http_requests_totalmethod=Get 表示所有 http 请求中的 Get 请求。当 method=post 时,则为新的一个 metric。标签中的键由 ASCII 字符,数字,以及下划线组成,且必须满足正则表达式 a-zA-Z_:a-zA-Z0-9_:*。样本:实际的

15、时间序列,每个序列包括一个 float64 的值和一个毫秒级的时间戳。格式:=,,例如:http_requests_totalmethod=POST,endpoint=/api/tracks。,Prometheus,OpenTSDB的数据模型几乎与普罗米修斯相同:时间序列由一组任意键值对(OpenTSDB标签是Prometheus标签)标识。度量标准的所有数据都 存储在一起,从而限制了度量标准的基数。但是有一些细微差别:Prometheus允许标签值中的任意字符,而OpenTSDB则更具限制性。OpenTSDB还缺少完整的查询语言,只允许通过其API进行简单的聚合和数学运算。存储OpenTSD

16、B的存储是在Hadoop和HBase之上实现的。这意味着可以轻松地水平扩展OpenTSDB,但您必须接受从一开始就运行Hadoop/HBase集群的整体复杂性。Prometheus最初可以更简单地运行,但是一旦超过单个节点的容量就需要显式分片。,与Prometheus一样,InfluxDB数据模型将键值对作为标签,称为标签。此外,InfluxDB还有第二级标签称为字段,其使用范围更为有限。InfluxDB支持高达纳秒分辨率的时间戳,以及float64,int64,bool和字符串数据类型。相比之下,Prometheus支持float64数据类型,对字符串和毫秒分辨率时间戳的支持有限。Influ

17、xDB使用日志结构合并树的变体进行存储,其中包含按时间分片的预写日志。这比事件记录更适合于每个时间序列方法的Prometheus附加文件。,几种时序数据库的对比,时序数据库为什么插入快,LSM tree包括内存里的数据结构和磁盘上的文件两部分。分别对应Hbase里的MemStore和HLog;对应Cassandra里的MemTable和sstable。LSM tree操作流程如下:1.数据写入和更新时首先写入位于内存里的数据结构。为了避免数据丢失也会先写到WAL文件中。2.内存里的数据结构会定时或者达到固定大小会刷到磁盘。这些磁盘上的文件不会被修改。3.随着磁盘上积累的文件越来越多,会定时的进

18、行合并操作,消除冗余数据,减少文件数量。可以看到LSM tree核心思想就是通过内存写和后续磁盘的顺序写入获得更高的写入性能,避免了随机写入。但同时也牺牲了读取性能,因为同一个key的值可能存在于多个HFile中。为了获取更好的读取性能,可以通过bloom filter和compaction得到,这里限于篇幅就不详细展开。,时序数据库面向的是海量数据的写入存储读取,单机是无法解决问题的。所以需要采用多机存储,也就是分布式存储。用多机存储,也就是分布式存储。,时序数据库为什么查询快,关系型数据库的查询策略 Btree bit tree scan index 数据超过了一定量 就不使用索引扫描了,

19、因为大量的随机读会把磁盘搞死的opentsdb influxdb 后台分布式比关系型数据库处理更多的数据 b+Tree索引,。lucence 反向索引 二级索引(btree+bittree)跳跃表 让主存储的随机读操作变得很快,从而可以充分利用索引,而不用惧怕从主存储里随机读加载几百万行带来的代价关键词 文章号出现频率 出现位置 guangzhou 12 3,6 he 21 1 i 11 4 live 12 2,5,21 2 shanghai 21 3 tom 11 1,Lucene 的 inverted index 可以比 mysql 的 b-tree 检索更快。在 Mysql 中给两个字段

20、独立建立的索引无法联合起来使用,必须对联合查询的场景建立复合索引。而 lucene 可以任何 AND 或者 OR 组合使用索引进行检索。Elasticsearch 支持 nested document,可以把一批数据点嵌套存储为一个 document block,减少需要索引的文档数。Opentsdb 不支持二级索引,只有一个基于 hbase rowkey 的主索引,可以按行的排序顺序 scan。这使得 Opentsdb 的 tag 实现从检索效率上来说很慢。Mysql 如果经过索引过滤之后仍然要加载很多行的话,出于效率考虑 query planner 经常会选择进行全表扫描。所以 Mysql

21、 的存储时间序列的最佳实践是不使用二级索引,只使用 clustered index 扫描主表。类似于 Opentsdb。,influxdb的部署模式,独立模式:独立的服务器,可以通过REST API、或基于语言的驱动等访问分布式模式:企业版,下载和安装linux版本,可以将度量看作SQL表,其中主索引总是time。标签和字段实际上是表中的列。标签是索引的,而字段不是。不同之处在于,使用fuluxdb数据库,您可以有数百万个度量,您不必预先定义模式,并且不存储空值。,=.=,=.unix-nano-timestamp,CREATE RETENTION POLICY ON DURATION REP

22、LICATION SHARD DURATION DEFAULTDURATION 保存时间REPLICATION 复制数量(集群)SHARD DURATION 每个分片持续的时间(时间段内所有Point保存在该分片中),SHARD为InfuxDB存储单元如果未指定该值,将按照如下规则创建:从单机版本中可以一窥其存储方案:在单机上InfluxDB采取类似于LSM tree的存储结构TSM;而分片的方案InfluxDB先通过+(事实上还要加上retentionPolicy)确定ShardGroup,再通过+的hash code确定到具体的Shard。这里timestamp默认情况下是7天对齐,也就是

23、说7天的时序数据会在一个Shard中。,安装 启动,rootsmdw#influx-precision rfc3339Connected to http:/localhost:8086 version 1.7.7InfluxDB shell version:1.7.7 use mydbUsing database mydb INSERT cpu,host=serverA,region=us_west value=0.64 select*from cpuname:cputime host region value-2019-07-20T02:57:30.901438336Z serverA us

24、_west 0.64 INSERT temperature,machine=unit42,type=assembly external=25,internal=37 select*from temperature;name:temperaturetime external internal machine type-2019-07-20T02:58:01.623299345Z 25 37 unit42 assembly,客户端访问方式,SELECT passengers,complaints FROM bus_dataname:bus_data-time passengers complain

25、ts2016-08-28T07:00:00Z 5 92016-08-28T07:15:00Z 8 92016-08-28T07:30:00Z 8 92016-08-28T07:45:00Z 7 92016-08-28T08:00:00Z 8 92016-08-28T08:15:00Z 15 72016-08-28T08:30:00Z 15 72016-08-28T08:45:00Z 17 72016-08-28T09:00:00Z 20 7#执行按每1小时保存 CREATE CONTINUOUS QUERY cq_basic ON transportation BEGIN SELECT mea

26、n(passengers)INTO average_passengers FROM bus_data GROUP BY time(1h)END#结果 SELECT*FROM average_passengersname:average_passengers-time mean2016-08-28T07:00:00Z 72016-08-28T08:00:00Z 13.75,influx-import-path=NOAA_data.txt-precision=s-database=NOAA_water_database,查询数据加载,/etc/default/influxdb/etc/logrot

27、ate.d/influxdb/etc/rc.d/init.d/influxdb/etc/influxdb:influxdb.conf/usr/lib/influxdb:scripts/usr/lib/influxdb/scripts:influxdb.service init.sh/var/log/influxdb:influxd.log/var/run/influxdb:influxd.pid/var/lib/influxdb:data meta wal/var/lib/influxdb/data:chronograf _internal mydb NOAA_water_database telegraf/var/lib/influxdb/data/mydb/_series:00 01 02 03 04 05 06 07/var/lib/influxdb/data/mydb/_series/00:0000/var/lib/influxdb/wal:chronograf _internal mydb NOAA_water_database telegraf,文件目录结构,Web UI:Console,Web UI:Console,Web UI:Console,Web UI:Console,Web UI:Console,

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号