InfluxDB 时序数据库入门

InfluxDB是一款开源的分布式时序数据库,适用于性能监控、应用程序指标、物联网传感器数据及实时分析等场景。它支持高并发写入,具备数据压缩存储、低查询延时等特点。本文深入解析InfluxDB的概念、架构、特性及应用场景。

简述

  • 时间序列数据:从定义上来说,就是一串按时间维度索引的数据。
  • 时序数据库(TSDB)特点: 持续高并发写入、无更新; 数据压缩存储;
    低查询延时。
  • 常见 TSDB:influxdb、opentsdb、timeScaladb、Druid 等。

influxdb概念

  • influxdb是一个开源分布式时序、时间和指标数据库,使用 Go 语言编写,无需外部依赖。其设计目标是实现分布式和水平伸缩扩展,是InfluxData 的核心产品。
  • 应用:性能监控,应用程序指标,物联网传感器数据和实时分析等的后端存储。
  • influxdb 完整的上下游产业还包括:Chronograf、Telegraf、Kapacitor

与传统数据库相关区别

influxdb 中的概念传统数据库中的概念
database数据库
measurement数据库中的表
point表中的一行数据
  • point的数据结构由时间戳(time)、标签(tags)、数据(fields)三部分组成,具体含义如下:
point 属性含义
time数据记录的时间,是主索引(自动生成)
tags各种有索引的属性
fields–各种value值(没有索引的属性)–

保留策略(retention policy)

  • InfluxDB 会定期清除过期的数据。
  • 每个数据库可以有多个过期策略:
  • Shard 在 influxdb中是一个比较重要的概念,它和 retention policy 相关联

存储引擎(Timestamp-Structure Merge Tree)

TSM是在LSM的基础上优化改善的,引入了serieskey的概念,对数据实现了很好的分类组织。
TSM主要由四个部分组成: cache、wal、tsm file、compactor:

  • cache:插入数据时,先往 cache 中写入再写入wal中,可以认为 cache 是 wal 文件中的数据在内存中的缓存,cache
    中的数据并不是无限增长的,有一个 maxSize 参数用于控制当 cache 中的数据占用多少内存后就会将数据写入 tsm 文件。
  • wal:预写日志,对比MySQL的 binlog,其内容与内存中的 cache 相同,作用就是为了持久化数据,当系统崩溃后可以通过 wal
    文件恢复还没有写入到 tsm 文件中的数据,当 InfluxDB 启动时,会遍历所有的 wal 文件,重新构造 cache。
  • tsm file:每个 tsm 文件的大小上限是 2GB。当达到
    cache-snapshot-memory-size,cache-max-memory-size 的限制时会触发将 cache 写入 tsm 文件。
  • compactor:主要进行两种操作,一种是 cache 数据达到阀值后,进行快照,生成一个新的 tsm 文件。另外一种就是合并当前的 tsm 文件,将多个小的 tsm 文件合并成一个,减少文件的数量,并且进行一些数据删除操作。

相关特点

1) 基于时间序列,支持与时间有关的相关函数(如最大,最小,求和等);
2) 可度量性:你可以实时对大量数据进行计算;
3) 基于事件:它支持任意的事件数据;
4) 无结构(无模式):可以是任意数量的列;
5)支持min, max, sum, count, mean, median 等一系列函数;
6)内置http支持,使用http读写;
7)强大的类SQL语法;
8)自带管理界面,方便使用(新版本需要通过Chronograf)

访问方式

客户端命令行
HTTP API 接口
各语言API 库(对 go 语言 API 封装)
基于 WEB 管理页面操作

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值