博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
InfluxDB 入手第一集
阅读量:5737 次
发布时间:2019-06-18

本文共 2398 字,大约阅读时间需要 7 分钟。

什么是时序数据库

时序数据

所有时序数据就是基于时间而产生的一系列数据,在有时间坐标的坐标体系中,按照时间将这些数据点连成线,可以揭示其趋势与规律,如果对这些时序数据加以分析处理,可以用以训练机器学习模型,从而实现对未来的预测与预警。

时序数据库

了解了时序数据,时序数据库也就不难理解,就是用来存放时序数据的数据库。因为时序数据具有实时性与体量大的特点,所有时序数据库也就必须具备写入快的特性,同时为了方便查询,也就必须具备持久化与多维度聚合查询的特性。

核心概念

数据点(point)

度量(measurement)

时间戳(timestamp)

度量字段(field)

标签(tag)

在 Mac 系统中安装 influxDB 还是比较简单的

安装

  • 在 Mac OS 系统中可以通过 brew 来进行安装
brew install influxdb复制代码
  • 安装成功后,我们可以注册开机启动
ln -sfv /usr/local/opt/influxdb/*.plist ~/Library/LaunchAgents复制代码

更多关于 launchd 可以查看

启动

我们可以通过 launchctl 来使用上面异步添加的定时任务来启动

launchctl load load ~/Library/LaunchAgents/homebrew.mxcl.influxdb.plist复制代码

更多关于 lanuchctl 可以查看

也可以直接读取安装好的配置文件来启动

influxd -config /usr/local/etc/influxdb.conf复制代码

启动后,influxdb 会监听两个端口:

  • 8086 用来提供 client/server 的交互(通过 http api)

  • 8088 用来提供备份和还原的 RPC 服务使用

启动好 influxdb 后,我们就可以在终端通过 influx 命令来与数据库来进行交互了 (默认连接到 8086 端口)

玩起来

到目前为止没有还没有对 influxDB 有更深入的了解,什么 measurement, 什么 point, 但是就算如此,我们也可以先玩起来,看看 influxdb 到底是何物?

连接 influxdb OSS

influx -precision rfc3339复制代码

-precision 用来自定 timestamp 的格式标准 rfc3339 (YYYY-MM-DDTHH:MM:SS.nnnnnnnnnZ)

其实现在我们就可以按照 influxQL 语法,输入查询语句与 influx 数据存储服务进行交互了。

创建数据库

CREATE DATABASE logdb复制代码

这里我们将创建一个名叫 logdb 的数据库, 需要注意的是在 cli 中操作成功后并不会有什么反馈,但是失败了肯定会有提示,用官方的描述来形容就是 没有消息就是好消息

查看数据库

SHOW DATABASES复制代码

结果如下图

其中 logdb 就是我们创建的数据库,_internal 则是 influxDB 内部使用的数据库。

选择数据库

influxDB 执行的每条语句都必须指定一个固定的数据库作为其执行的上下文,所以我们要不就是在编写每条语句的时候都显示的选择一个数据库,要不就先选择一个数据库后续的语句都默认在这个数据库上执行操作。

USE logdb复制代码

执行结果如下:

打脸总是来的那么快,上面还说任何操作成功后都没有反馈 ~~ 也许 USE 指令是一个特例吧 ~~

概念实践

从前面的概念介绍我们可以了解到,influxdb 是通过时间序列(time series)来组织存储数据的。那这个时间序列到底长什么样呢?

Time series 其实就是一个概念,是存储在 influxdb 中所有数据集合的概念,可以包含 0 ~ ∞ 条数据,在 influxDB 中一条数据又叫一条 point

point

一条 point 代表了一个度量维度的一组散列样本 measurement, 所以 point = measurement + time

measurement 度量维度

一个 measurement 由至少一个 key-value 对的 field 和 0 ~ ∞ 个 tag 组成。

  • field 表示都是 measurement 的一个具体的值。

  • tag 表示的是 measurement 的元数据,具体在查询的时候的过滤条件。

所以 point 的组成语法如下

[,
=
...]
=
[,
=
...] [unix-nano-timestamp]复制代码

举个例子?

实践 insert & select

接下来就是开始实践 ~

插入数据

INSERT cpu,host=serviceA,region=us_west value=0.64复制代码

结果如下:

注意空格在 influxql 中是具有特殊意义的,所以,在书写时 , 逗号后面是不可以再包含空格的,上图第一次执行插入的时候 cpu, 后面有一个空格,所以插入失败。

从上面的执行语句我们可以看到,我们在执行的时候并没有添加任何时间戳,知识后数据库是会为我们自动插入运行数据库的系统的本地时间戳的。

查询数据

SELECT "host", "region", "value" from cpu复制代码

执行结果如下:

OK! 大功告成 ~ 接下来我们就可以开始学习 influxQL 的语法,进行更多高级操作了 ~

转载地址:http://eewzx.baihongyu.com/

你可能感兴趣的文章
(转)规划从 OpenGL ES 2.0 到 Direct3D 的移植
查看>>
(转)为什么国外 MMORPG 中不采用自动寻路等功能?
查看>>
[Linux] 关于Unix哲学
查看>>
[A类会议] 国内论文检索
查看>>
uva 12296 Pieces and Discs (Geometry)
查看>>
hdu 4009 Transfer water(最小树形图生成森林)
查看>>
List,Set,Map用法以及区别(转)
查看>>
RxJava 详解——简洁的异步操作(一)
查看>>
linux 基础 文件系统 用户权限
查看>>
git用法
查看>>
Microsoft Visual C++ 2005 Redistributable 无法卸载问题解决办法
查看>>
java开发_生成/解析自己的QRCode二维码
查看>>
C#中return、break和continue语句
查看>>
二叉排序树
查看>>
SQL SERVER 2008别名设置和应用
查看>>
haproxy对redis进行负载均衡
查看>>
【Linux基本操作】系列02:vim的常用操作
查看>>
Android自适应不同分辨率或不同屏幕大小
查看>>
hdu4198(优先队列+bfs)
查看>>
另辟蹊径——使用 Photoshop 制作网页线框图
查看>>