`
baobeituping
  • 浏览: 1068711 次
  • 性别: Icon_minigender_1
  • 来自: 长沙
社区版块
存档分类
最新评论

influx基本操作

 
阅读更多

1、数据格式

在 InfluxDB 中,我们可以粗略的将要存入的一条数据看作一个虚拟的 key 和其对应的 value(field value)。格式如下:

1
cpu_usage,host=server01,region=us-west value=0.64 1434055562000000000

虚拟的 key 包括以下几个部分: database, retention policy, measurement, tag sets, field name, timestamp。

  • database: 数据库名,在 InfluxDB 中可以创建多个数据库,不同数据库中的数据文件是隔离存放的,存放在磁盘上的不同目录。
  • retention policy: 存储策略,用于设置数据保留的时间,每个数据库刚开始会自动创建一个默认的存储策略 autogen,数据保留时间为永久,之后用户可以自己设置,例如保留最近2小时的数据。插入和查询数据时如果不指定存储策略,则使用默认存储策略,且默认存储策略可以修改。InfluxDB 会定期清除过期的数据。
  • measurement: 测量指标名,例如 cpu_usage 表示 cpu 的使用率。
  • tag sets: tags 在 InfluxDB 中会按照字典序排序,不管是 tagk 还是 tagv,只要不一致就分别属于两个 key,例如 host=server01,region=us-west 和 host=server02,region=us-west 就是两个不同的 tag set。
  • tag--标签,在InfluxDB中,tag是一个非常重要的部分,表名+tag一起作为数据库的索引,是“key-value”的形式。
  • field name: 例如上面数据中的 value 就是 fieldName,InfluxDB 中支持一条数据中插入多个 fieldName,这其实是一个语法上的优化,在实际的底层存储中,是当作多条数据来存储。
  • timestamp: 每一条数据都需要指定一个时间戳,在 TSM 存储引擎中会特殊对待,以为了优化后续的查询操作。

2、与传统数据库中的名词做比较

influxDB中的名词 传统数据库中的概念
database 数据库
measurement 数据库中的表
points 表里面的一行数据

3、Point

Point由时间戳(time)、数据(field)、标签(tags)组成。

Point相当于传统数据库里的一行数据,如下表所示:

 

Point属性 传统数据库中的概念
time 每个数据记录时间,是数据库中的主索引(会自动生成)
fields 各种记录值(没有索引的属性)
tags 各种有索引的属性

4、Series

       Series 相当于是 InfluxDB 中一些数据的集合,在同一个 database 中,retention policy、measurement、tag sets 完全相同的数据同属于一个 series,同一个 series 的数据在物理上会按照时间顺序排列存储在一起。

5、Shard

       Shard 在 InfluxDB 中是一个比较重要的概念,它和 retention policy 相关联。每一个存储策略下会存在许多 shard,每一个 shard 存储一个指定时间段内的数据,并且不重复,例如 7点-8点 的数据落入 shard0 中,8点-9点的数据则落入 shard1 中。每一个 shard 都对应一个底层的 tsm 存储引擎,有独立的 cache、wal、tsm file。

6、组件

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

1)Cache:cache 相当于是 LSM Tree 中的 memtabl。插入数据时,实际上是同时往 cache 与 wal 中写入数据,可以认为 cache 是 wal 文件中的数据在内存中的缓存。当 InfluxDB 启动时,会遍历所有的 wal 文件,重新构造 cache,这样即使系统出现故障,也不会导致数据的丢失。

cache 中的数据并不是无限增长的,有一个 maxSize 参数用于控制当 cache 中的数据占用多少内存后就会将数据写入 tsm 文件。如果不配置的话,默认上限为 25MB,每当 cache 中的数据达到阀值后,会将当前的 cache 进行一次快照,之后清空当前 cache 中的内容,再创建一个新的 wal 文件用于写入,剩下的 wal 文件最后会被删除,快照中的数据会经过排序写入一个新的 tsm 文件中。

2)WAL:wal 文件的内容与内存中的 cache 相同,其作用就是为了持久化数据,当系统崩溃后可以通过 wal 文件恢复还没有写入到 tsm 文件中的数据。

3)TSM File:单个 tsm file 大小最大为 2GB,用于存放数据。

4)Compactor:compactor 组件在后台持续运行,每隔 1 秒会检查一次是否有需要压缩合并的数据。

主要进行两种操作,一种是 cache 中的数据大小达到阀值后,进行快照,之后转存到一个新的 tsm 文件中。

另外一种就是合并当前的 tsm 文件,将多个小的 tsm 文件合并成一个,使每一个文件尽量达到单个文件的最大大小,减少文件的数量,并且一些数据的删除操作也是在这个时候完成。

7、目录与文件结构

InfluxDB 的数据存储主要有三个目录。默认情况下是 meta, wal 以及 data 三个目录。

meta 用于存储数据库的一些元数据,meta 目录下有一个 meta.db 文件。

wal 目录存放预写日志文件,以 .wal 结尾。

data 目录存放实际存储的数据文件,以 .tsm 结尾。

上面几张图中,_internal为数据库名,monitor为存储策略名称,再下一层目录中的以数字命名的目录是 shard 的 ID 值。

存储策略下有两个 shard,ID 分别为 1 和 2,shard 存储了某一个时间段范围内的数据。再下一级的目录则为具体的文件,分别是 .wal 和 .tsm 结尾的文件。

 

InfluxDB基本操作

InfluxDB提供多种操作方式:

1)客户端命令行方式

2)HTTP API接口

3)各语言API库

4)基于WEB管理页面操作

 

客户端命令行方式操作

进入命令行

1
influx -precision rfc3339

 

1、InfluxDB数据库操作

  • 显示数据库
1
show databases

  • 新建数据库
1
create database shhnwangjian

  • 删除数据库
1
drop database shhnwangjian

  • 使用指定数据库
1
use shhnwangjian

 

2、InfluxDB数据表操作

在InfluxDB当中,并没有表(table)这个概念,取而代之的是MEASUREMENTS,MEASUREMENTS的功能与传统数据库中的表一致,因此我们也可以将MEASUREMENTS称为InfluxDB中的表。

  • 显示所有表
1
SHOW MEASUREMENTS
  • 新建表

InfluxDB中没有显式的新建表的语句,只能通过insert数据的方式来建立新表。

1
insert disk_free,hostname=server01 value=442221834240i

其中 disk_free 就是表名,hostname是索引(tag),value=xx是记录值(field),记录值可以有多个,系统自带追加时间戳

 

或者添加数据时,自己写入时间戳

1
insert disk_free,hostname=server01 value=442221834240i 1435362189575692182

  • 删除表
1
drop measurement disk_free

 

3、数据保存策略(Retention Policies)

influxDB是没有提供直接删除数据记录的方法,但是提供数据保存策略,主要用于指定数据保留时间,超过指定时间,就删除这部分数据。

  • 查看当前数据库Retention Policies
1
show retention policies on "db_name"

  • 创建新的Retention Policies
1
create retention policy "rp_name" on "db_name" duration 3w replication 1 default

rp_name:策略名;

db_name:具体的数据库名;

3w:保存3周,3周之前的数据将被删除,influxdb具有各种事件参数,比如:h(小时),d(天),w(星期);

replication 1:副本个数,一般为1就可以了;

default:设置为默认策略

  • 修改Retention Policies
1
alter retention policy "rp_name" on "db_name" duration 30d default
  • 删除Retention Policies
1
drop retention policy "rp_name" on "db_name"

 

4、连续查询(Continuous Queries)

InfluxDB的连续查询是在数据库中自动定时启动的一组语句,语句中必须包含 SELECT 关键词和 GROUP BY time() 关键词。

InfluxDB会将查询结果放在指定的数据表中。

目的:使用连续查询是最优的降低采样率的方式,连续查询和存储策略搭配使用将会大大降低InfluxDB的系统占用量。而且使用连续查询后,数据会存放到指定的数据表中,这样就为以后统计不同精度的数据提供了方便。

  • 新建连续查询
1
2
3
4
5
CREATE CONTINUOUS QUERY <cq_name> ON <database_name>
[RESAMPLE [EVERY <interval>] [FOR <interval>]]
BEGIN SELECT <function>(<stuff>)[,<function>(<stuff>)] INTO <different_measurement>
FROM <current_measurement> [WHERE <stuff>] GROUP BY time(<interval>)[,<stuff>]
END

 样例:

1
CREATE CONTINUOUS QUERY wj_30m ON shhnwangjian BEGIN SELECT mean(connected_clients), MEDIAN(connected_clients), MAX(connected_clients), MIN(connected_clients) INTO redis_clients_30m FROM redis_clients GROUP BY ip,port,time(30m) END

在shhnwangjian库中新建了一个名为 wj_30m 的连续查询,每三十分钟取一个connected_clients字段的平均值、中位值、最大值、最小值 redis_clients_30m 表中。使用的数据保留策略都是 default。

不同database样例:

1
CREATE CONTINUOUS QUERY wj_30m ON shhnwangjian_30 BEGIN SELECT mean(connected_clients), MEDIAN(connected_clients), MAX(connected_clients), MIN(connected_clients) INTO shhnwangjian_30.autogen.redis_clients_30m FROM shhnwangjian.autogen.redis_clients GROUP BY ip,port,time(30m) END

 

  • 显示所有已存在的连续查询
1
SHOW CONTINUOUS QUERIES

  • 删除Continuous Queries
1
DROP CONTINUOUS QUERY <cq_name> ON <database_name>
分享到:
评论

相关推荐

    Python库 | influx-rp-generator-0.0.7.tar.gz

    一旦熟悉了这些基本操作,Influx-RP-Generator提供的API和方法就能帮助我们更高效地完成工作。例如,我们可以使用`create_rp()`函数创建新的保留策略,或者使用`drop_rp()`函数删除不再需要的策略。此外,库还提供了...

    Laravel开发-laravel-influx-provider

    以上就是使用`laravel-influx-provider`在Laravel中集成InfluxDB的基本步骤和操作。通过这种方式,我们可以充分利用Laravel的强大功能,同时享受到InfluxDB在处理时序数据方面的高效性能。记得根据具体需求调整配置...

    influx2-api-v1:将v1 API配置为默认存储桶的Influx2

    在实际操作时,务必确保遵循特定环境的指导。 通过这种方式,即使在InfluxDB 2.x中,旧的v1 API应用程序也可以无缝地访问数据,而无需进行大量的代码迁移。然而,这并不意味着应该长期依赖v1 API,因为新API提供了...

    Python库 | influx_si-5.0-py3-none-any.whl

    关于Python库的管理和安装,了解pip的基本操作是必要的。pip不仅可以安装`.whl`文件,还能处理`.tar.gz`、`.zip`等其他格式的源码包,以及从PyPI(Python Package Index)上查找并安装开源库。 Python库的开发通常...

    influxDB的增删改查操作,全部测试通过了

    本篇文章将深入探讨如何在InfluxDB中执行基本的CRUD(创建Create、读取Read、更新Update、删除Delete)操作,并已通过全面的测试。 **创建(Create)** 在InfluxDB中创建数据主要涉及到写入数据点(Points)。数据点...

    NavicatPremium连接各种数据库的管理工具

    5. **查询构建器**:内置图形化的SQL构建器,让没有深厚SQL基础的用户也能轻松编写复杂的查询语句。 6. **备份与恢复**:提供数据库备份和恢复功能,确保数据的安全性,防止意外数据丢失。 7. **数据导入导出**:...

    influxDB2.0基本使用以及相关jar

    influxDB2.0基本使用以及相关jar 导入CSV文件以及查询数据,内置生成CSV数据工具

    InfluxDB数据库管理工具

    了解了基本的InfluxQL操作后,我们来看看"查看库、表结构"。在InfluxDB中,"库"指的是数据库,"表"则称为测量(measurements)。你可以使用`SHOW DATABASES`来列出所有数据库,`USE mydb`切换到mydb数据库,然后用`...

    influxdb详解-从入门到精通

    一、InfluxDB的安装和简介二、InfluxDB安装后web页面无法访问的解决方案三、InfluxDB在windows下的安装和配置四、InfluxDB的关键概念五、InfluxDB的基本操作六、InfluxDB的HTTP API写入操作七、InfluxDB数据保留策略...

    (20200419)influxdb基础常用命令

    在本文中,我们将深入探讨InfluxDB的一些基础常用命令,包括用户管理、数据库操作、数据插入与查询、连续查询以及数据保留策略。 1. **用户管理**: - **创建用户**:你可以使用 `CREATE USER` 命令创建新的用户,...

    C#读写Influxdb代码例子

    首先,了解InfluxDB的基本概念是必要的。它支持数据写入(Points)和查询(Queries),具有时间序列数据的高效存储和检索能力。InfluxDB的数据模型由Database、Measurement、Tag Set、Field Set和Timestamp组成。 ...

    influxdb-1.8.9_windows

    通过以上介绍,我们可以了解到InfluxDB 1.8.9在Windows上的安装、配置及基本操作。在实际应用中,它能够高效地处理时序数据,广泛应用于监控、物联网、大数据分析等领域。了解并熟练掌握这些知识点,将有助于我们在...

    tsg:用于Influx的D3图形

    D3.js的强大在于它允许开发者直接操作DOM(Document Object Model),根据数据绑定元素并驱动它们的属性。通过数据驱动的方法,D3.js可以生成复杂的图表,实现数据与视觉元素的无缝映射。它的功能包括布局算法、过渡...

    Influxdb,win10,linux。基础学习资料+程序部署

    度量是数据的基本单位,标签用于分类,字段则包含具体的数值数据。 2. 数据写入:InfluxDB支持使用Line Protocol进行数据写入,这是一种紧凑且高效的文本格式,允许同时插入多条时间序列数据。 3. 查询语言:...

    InfluxDB查询 导出数据 mybatis SpringBoot

    - **socket.docx**:Socket是网络编程的基础,用于建立和维护网络连接,这里可能是讨论Java的Socket编程。 - **Service.docx**:在SpringBoot中,Service层负责业务逻辑,可能是关于InfluxDB查询和数据导出的业务...

    Grafana的入门级使用-自制教程-结合InfluxDB使用

    通过上述步骤,你可以快速搭建起一个基本的监控系统,展示实时数据变化。随着对 Grafana 的深入理解和实践,你可以创建更复杂、更定制化的监控仪表板,满足不同场景的需求。记住,了解官方文档...

    datax读取InfluxDB组件

    每个数据源的读写操作都通过对应的插件来实现,这使得DataX具备了极高的扩展性。对于InfluxDB,DataX提供了名为`influxdbreader`的读取插件,用于从InfluxDB中读取数据并导入到其他数据存储中。 接下来,我们详细...

    influxdb-part2.zip

    《InfluxDB 深入解析与实践》 InfluxDB 是一款专为时间序列数据设计的开源数据库,尤其在监控、...深入了解这些组件,结合源码学习,不仅可以提升数据库的运维能力,也能为开发基于时间序列数据的应用提供坚实的基础。

    rapidscada-Modinfluxdb2.0(按需导出数据).zip

    这通常涉及阅读模块文档、配置文件编辑以及对InfluxDB数据库的基本操作。 综上所述,这个压缩包提供的工具使用户能够充分利用InfluxDB 2.0的特性,增强RapidSCADA系统的数据分析和存储能力,对于需要实时监控和分析...

    influx+grafana自定义python采集数据和一些坑的总结

    - 尽管配置细节会根据具体需求而有所不同,但基本流程是首先连接数据源,然后使用Grafana提供的查询语言构建数据查询,并将查询结果通过不同的图表形式展示出来。 5. 后台运行与独立线程的考虑: - 对于需要长...

Global site tag (gtag.js) - Google Analytics