暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

时序型数据库InfluxDB简介(一)

灵感来了一半的灵感 2021-08-09
4198

0、前言

    我一个搞风资源的,为什么不好好考风水先生从业资格证书,不好好想着如何升职为战略投资大师,而在这里搞什么数据库呢?因为宝宝苦啊,专业热门话题后评估,谁敢不盯着?既然自诩为先锋,那就要舍了这满头青丝,留下一地残发。这不,盯着SCADA那一堆秒级数据,总得想办法处理成基本的10min数据吧,大数据中心就那么几个人,每天忙的要死,为了不增加兄弟部门的负担,那就扛过兄弟的枪,自己上咯。所以啊,等我老了,给儿孙吹牛逼的时候,开头一定要有:“人啊,都是被逼出来滴!”

    至于为什么要用InfluxDB,那必须是时序数据库中的龙头老大呀,关键是开源,不用钱。可恨的是,提起1的时候,说是和MySQL很像,刚好手上有个MySQL的教程,就吭哧吭哧地先啃下了这个教程,结果才发现,InfluxDB更新到2了,和1完全不是一个语法了好吧,好像是JavaScript的语法。不过,反正掉坑里了,那就看官方教程咯。跟侬讲哦,那就是一堆坑货,不能直接执行,都没法好好练习了。

    好啦,先给参考资料网址,开始学习……

    https://docs.influxdata.com/influxdb/v2.0/process-data/get-started/

    https://github.com/influxdata/

一、InfluxDB基础配置

1.1安装

    这里我用的是虚拟机中的Ubuntu系统,安装教程参考:

    https://docs.influxdata.com/influxdb/v2.0/install/?t=Linux

    感觉这个教程完全够用,这里就不多介绍了,反正可选不可选的我都试了一遍,最后能用,有兴趣的可以深入研究一下,我是感觉到了有些步骤好像多余了。

1.2配置账户

   官方提供了UI(user interface,用户界面交互)和CLI(command line interface,指令行交互)两种方式,小白推荐用UI,跟玩游戏注册一样,CLI可以后面感兴趣的时候深究,未来还有客户端等方式可以玩。

    这里简单介绍一下,在终端开启了influxd以后,在浏览器中输入localhost:8086,进入游戏大厅用户界面,然后开始征程:注册用户名、密码、组织名称、Bucket名称(就是一个数据库名称),继续……

二、写入数据

    数据库最重要的操作就是增删改查,教程里把MySQL语言分为了数据定义语言DDL、数据操作语言DML、数据查询语言DQL和数据控制语言DCL。其中,数据定义语言主要用于创建、修改和删除数据库中的各种因素;数据操作语言主要包括插入、更新、删除数据;数据查询语言含单表查询、多表查询和子查询等;数据控制语言用于数据库访问权限和安全级别。InfluxDB教程主要关注写数据、查数据、处理数据和可视化等,上面提到的内容中,跟数据库权限等相关的都可以在UI中设置,写数据和查询数据则建议使用代码。本章节内容参考:

    https://docs.influxdata.com/influxdb/v2.0/write-data/

2.1数据基础

2.1.1数据层级

    这里拿MySQL与InfluxDB的数据层级进行对比:

层级MySQLInfluxDB
数据库databasebucket
表名tablemeasurement
记录rowspoint
字段columnstime+tag+field

2.1.2数据来源

    主要包括静态固定数据、实时监控数据、爬虫数据等,跟一般的数据来源一样。其中,InfluxDB配套的实时数据工具为Telegraph,爬虫工具为InfluxDB自己的Scraper。

2.1.3数据需求

    提交数据库信息时,需要提供organization组织、bucket数据库、token认证令牌、InfluxDB URL网址。

2.2开发者工具

    开发者工具包括Flux、CLI和客户端。提到开发者工具,我就想起自己找了半天都没有找到的语言输入的地方,上面提到的Flux一方面可以在UI中操作--如下图所示,但语言和帮助文档中不太相符,初学者很容易懵圈;也可以配置Flux REPL操作,可以参考下面链接的内容,我这一块是失败了的,好像是go没配置好,不过我对go不感兴趣,所以就放弃了。CLI不太推荐,毕竟我们是要处理大批量数据的。客户端我用的是python客户端,完了好好复盘。这里就不再详细描述Flux如何写入数据了,我的做法是用python读取文件、组合DataFrame,然后再通过写入API传入InfluxDB,具体做法放到InfluxDB_python_client中详述,这里比较急的朋友,可以先看帮助文件试着操作一下。

    https://docs.influxdata.com/influxdb/v2.0/tools/repl/

2.3删除数据

    一般而言,不推荐删除数据,大型的专门数据库管理平台一般也不会对普通操作者开放删除数据权限,这里因为是学习,所以简要说一下。

    InfluxDB删除数据有CLI和API两种方式,CLI方法例子如下;API的方法我是通过客户端实现的,可以参考下面的链接:

https://github.com/influxdata/influxdb-client-python/blob/master/influxdb_client/client/delete_api.py

    influx delete --bucket example-bucket \
    --start '1970-01-01T00:00:00Z' \
    --stop $(date +"%Y-%m-%dT%H:%M:%SZ") \
    --predicate '_measurement="example-measurement" AND exampleTag="exampleTagValue"'

    2.4优化

    2.4.1模式设计

    2.4.2优化写入

    2.4.3处理重复的数据点

    -------------------------------------中场休息--------------------------------

        好了,2021.7.2晚看样子是不能一鼓作气拿下这份教程了,InfluxDB简介部分还有查询数据、处理数据和可视化3个部分的内容,陆陆续续补上好了。那,今晚就到这了。

    文章转载自灵感来了一半的灵感,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

    评论