写点什么

什么是时序数据库

  • 2022 年 5 月 30 日
  • 本文字数:2380 字

    阅读完需:约 8 分钟

什么是时序数据库

一、时序数据的基本概念

在了解时序数据库之前首先要了解什么是时序数据,Time Series Data 是指按照时间顺序记录系统、设备状态变化的数据,时序数据有如下几个维度:

●Measurement:度量,相当于关系型数据库中的 table

●Data point:数据点,相当于关系型数据库中的 row。

●Time:时间戳,代表数据点产生的时间。

●Field:度量下的不同字段。比如位置这个度量具有经度和纬度两个 field。一般情况下存放的是随时间戳而变化的数据。

●Tag:标签。一般存放的是不随时间戳变化的信息。timestamp 加上所有的 tags 可以视为 table 的 primary key。



二、时序数据库与其他数据存储的对比

●关系型数据库:尽管时序数据库中的 Measurement,Data Point,Filed,Tag 都似乎能在关系型数据库中找到对应,而且时序数据库还有类 SQL 的交互方式,但是对于关系型数据库中的 CRUD,时序数据库更侧重其中的 C 和 R 的高效,在海量数据聚合分析更强。


●Elasticseach:Elasticseach 虽然主打大数据量的搜索,但是高效的处理大量数据读写操作也可以起到时序数据库的作用。


三、使用场景

时序数据看起来就是一个时间轴,表明了一些数据维度随着时间的变化,通常这些数据以插入为主,没有什么更新操作。由于这些特点,时序数据库诞生了。时序数据库目标实现高性能的读写,实时分析。被广泛应用在物联网设备信息采集,金融数据分析及可视化等众多场景当中。其中,InfluxDB 是一个开源时序数据库诞生于 2013 年,起初设想应用于高性能的监控和告警,下面将以 InfluxDB 为例带大家体验时序数据库。


四、体验 InfluxDB


InfluxDB 是一个开源的时序数据库,而且 1.0 使用类 SQL 的语句查询,借用 InfluxDB 带大家体验一下时序数据库。


五、安装与启动


以 MacOS 为例下载地址:https://dl.influxdata.com/influxdb/releases/influxdb-1.8.10_darwin_amd64.tar.gz

解压后到/influxdb-1.8.10-1/usr/bin 目录下,执行可启动 sudo ./influxd -config ../../etc/influxdb/influxdb.conf


继续在 bin 目录下执行./influx 就可以进入 InfluxDB shell 直接食用类 sql 的语句进行操作。


六、数据库写入

创建数据库 CREATE DATABASE test

列出所有数据库 SHOW DATABASE test

使用数据库 USE test

插入数据使用 insert,后面解释具体的格式,这里我们做一条插入,使用 select 进行查询:

七、http 方式操作

InfluxDB 使用 HTTP 作为方便和广泛支持的数据传输协议,例如 GET /query


InfluxDB 插入数据格式

将数据写入 InfluxDB 需要按照一定的文本格式:


●Measurement:就是类似于结构数据的表明,在插入时是必须的。

●Tag set:数据的标签,有点类似于主键,可以没有或者多个,多组 Tag 之间写法上使用不带空格的逗号分开,写法为 Measurement ,<tag_key>=<tag_value>,<tag_key>=<tag_value>。注意:tag 是会加索引的。

●Field set:每行数据至少有一个 Field set 多组使用使用不带空格的分隔,格式为<field_key>=<field_value>。

●Timestamp 是可选字段,必须使用空格分开。Timestamp 时间戳虽然可选,但是不写将使用服务器时间进行填充。

●其中 Measurement 与 Tag set 使用逗号分隔,Measurement 或者 Tag set 与 Field Set 使用空格分隔,field set 与 Timestamp 使用空格分隔。

不同组件的数据格式

●Measurement,Tag keys,Tag values,Field keys 必须为 String 类型。

Field value 可以是整数、浮点数、字符串和布尔值。其中字符串使用双引号表示,布尔值使用 t,T,true,True,TRUE 表示 TRUE,f,F,false,False,FALSE 表示 FALSE。

●Timestamp 时间戳


数据主键

对于 InfluxDB,同一个 Measurement 下,Timestamp 加 Tags 作为唯一标识,相同的标识插入但是 FieldSet 不同会做合并,冲突部分以新的 Field 为准。


数据查询

查询语句类似 sql 查询方式

复杂操作

另外 InfluxDB 支持类如 group by,count 等等聚合以及 limit,offset 的分页操作。


八、使用 InfluxDB 需要注意的几个方面

1. 在 InfluxDB 中可以指定 retentionPolicy,不指定也会有默认的策略,特别注意如果中期调整策略,过期的数据会被立刻清除。

2. Tag 不是必须的,但是如果在查询中经常使用到或者使用到了 GroupBy 或者 InfluxQL 函数推荐使用 Tag,尤其注意 Tag Value 只能是字符串,如果字段 value 是数字类型则无法使用 Tag 存放。

3. InfluxDB 的数据存放在 shard 中,以 tsm 的文件形式存放在磁盘上,shard group 受 retentionPolicy 管理。

在 retentionPolicy 触发时会对应删除相应 shard,提高 shard group 的持续时间可以改善压缩,提高写入的速度。


九、总结

对于时序数据库,本文针对其特点和 InfluxDB1.0 做了简单的介绍,在 2.0 中 influxDB 又做了极大的改动,本文只是抛砖引玉,祝大家在数据存储上都能找到合适的工具,数据库永远稳定高效。


大家都遇到过哪些使用时序数据的场景呢?

欢迎评论区分享~


关于领创集团(Advance Intelligence Group)

领创集团成立于 2016 年,致力于通过科技创新的本地化应用,改造和重塑金融和零售行业,以多元化的业务布局打造一个服务于消费者、企业和商户的生态圈。集团旗下包含企业业务和消费者业务两大板块,企业业务包含 ADVANCE.AI 和 Ginee,分别为银行、金融、金融科技、零售和电商行业客户提供基于 AI 技术的数字身份验证、风险管理产品和全渠道电商服务解决方案;消费者业务 Atome Financial 包括亚洲领先的先享后付平台 Atome 和数字金融服务。2021 年 9 月,领创集团宣布完成超 4 亿美元 D 轮融资,融资完成后领创集团估值已超 20 亿美元,成为新加坡最大的独立科技创业公司之一。


往期回顾 BREAK AWAY

Spring data JPA 实践和原理浅析

如何解决海量数据更新场景下的 Mysql 死锁问题

企业级 APIs 安全实践指南 (建议初中级工程师收藏)

Cypress UI 自动化测试框架

serverless让我们的运维更轻松


▼ 如果觉得这篇内容对你有所帮助,有所启发,欢迎点赞收藏:

1、点赞、关注领创集团,获取最新技术分享和公司动态。

2、关注我们的公众号 & 知乎号「领创集团 Advance Group」或访问官方网站,了解更多企业动态。


发布于: 刚刚阅读数: 4
用户头像

智慧领创美好生活 2021.08.12 加入

AI技术驱动的科技集团,致力于以技术赋能为核心,通过科技创新的本地化应用,改造和重塑金融和零售行业,以多元化的业务布局打造一个服务于消费者、企业和商户的生态圈,带来个性化、陪伴式的产品服务和优质体验。

评论

发布
暂无评论
什么是时序数据库_领创集团Advance Intelligence Group_InfoQ写作社区