InfluxDB简介与使用

InfluxDB是一款开源的时序型数据库,适用于存储带时间戳的大量数据,尤其适合监控和日志场景。其特点包括无模式、支持多种聚合函数和类SQL查询。本文介绍了InfluxDB的名词解释,如database、measurement、point等,详细讲解了存储组件如Cache、WAL、TSM File和Compactor的工作原理,以及安装、操作命令、JAVA API使用和数据保留策略等内容。
摘要由CSDN通过智能技术生成

简介

InfluxDB是用Go语言编写的一个开源时序型数据库,使用时无需外部依赖,用于存储大量带有时间戳的数据。特别适合大型分布式系统的监控系统,存储日志和监控数据,简单理解为按时间序列记录一些数据(常用的指标数据、统计数据等)。
主要特点

  • 数据无结构(无模式):列的数量可以任意
  • 支持min, max, sum, count, mean, median等一系列聚合函数
  • 原生的HTTP支持,内置HTTP API
  • 强大的类SQL语法
  • 自带管理界面,方便使用

注意:自带管理界面与集群功能在1.2版之后,将不再提供。

名词解释

  1. database — 数据库,同传统数据库中的数据库概念
  2. measurement — 数据表,同传统数据库中的table概念
  3. point — 数据表里的一行数据,由time(时间戳)、tag(标签)、field(数据)组成。详细如下表:
    time(时间戳) 每条数据的记录时间,是数据库中的主索引(可以自动生成)
    tag(标签) 有索引的值:如系统名称、服务名称等,”key-value”形式。其中表名+tag构成索引。
    field(字段、数据) 没有索引的记录值:如耗时,是否成功等,”key-value”形式。

注意:

  • 在influxdb中,field字段必须存在。field是没有索引的,如果使用field中字段作为查询条件,会扫描符合查询条件的所有字段值,性能不及tag。
  • tag是可选的,但是强烈建议适度使用,因为tag是有索引的,tag相当于SQL中的有索引的列。tag value只能是string类型。
  1. series — 序列,一些数据的集合。在同一个 database 中,retention policy、measurement、tags完全相同的数据同属于一个 series,同一个 series的数据在物理上会按照时间顺序排列存储在一起。
    举个简单的例子,service_record的数据如下:
    在这里插入图片描述
    service_record的series如下:
    在这里插入图片描述
  2. retention policy — 数据保留策略,定义数据保留的时长,可以当作清理策略使用。每个数据库可以有多个数据保留策略,但只能有一个默认策略。
  3. shard
    shard 和 retention policy 相关联。每一个存储策略下会存在许多 shard,每一个 shard 存储一个指定时间段内的数据,并且不重复;
    例如 7点-8点 的数据落入 shard0 中,8点-9点的数据则落入 shard1 中。

存储组件

TSM 存储引擎主要由几个部分组成: cache、wal、tsm file、compactor。

Cache

cache 相当于是 LSM Tree 中的 memtable。插入数据时,实际上是同时往 cache 与 wal 中写入数据,可以认为 cache 是 wal 文件中的数据在内存中的缓存。当 Infl

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值