内容简介:所有时序数据就是基于时间而产生的一系列数据,在有时间坐标的坐标体系中,按照时间将这些数据点连成线,可以揭示其趋势与规律,如果对这些时序数据加以分析处理,可以用以训练机器学习模型,从而实现对未来的预测与预警。了解了时序数据,时序数据库也就不难理解,就是用来存放时序数据的数据库。因为时序数据具有实时性与体量大的特点,所有时序数据库也就必须具备写入快的特性,同时为了方便查询,也就必须具备持久化与多维度聚合查询的特性。在 Mac 系统中安装 influxDB 还是比较简单的
所有时序数据就是基于时间而产生的一系列数据,在有时间坐标的坐标体系中,按照时间将这些数据点连成线,可以揭示其趋势与规律,如果对这些时序数据加以分析处理,可以用以训练机器学习模型,从而实现对未来的预测与预警。
时序数据库
了解了时序数据,时序数据库也就不难理解,就是用来存放时序数据的数据库。因为时序数据具有实时性与体量大的特点,所有时序数据库也就必须具备写入快的特性,同时为了方便查询,也就必须具备持久化与多维度聚合查询的特性。
核心概念
数据点(point)
度量(measurement)
时间戳(timestamp)
度量字段(field)
标签(tag)
在 Mac 系统中安装 influxDB 还是比较简单的
安装
- 在 Mac OS 系统中可以通过
brew
来进行安装
brew install influxdb 复制代码
- 安装成功后,我们可以注册开机启动
ln -sfv /usr/local/opt/influxdb/*.plist ~/Library/LaunchAgents 复制代码
更多关于 launchd
可以查看 Mac OSX的开机启动配置
启动
我们可以通过 launchctl
来使用上面异步添加的定时任务来启动
launchctl load load ~/Library/LaunchAgents/homebrew.mxcl.influxdb.plist 复制代码
更多关于 lanuchctl
可以查看 Mac中的定时任务利器:launchctl
也可以直接读取安装好的配置文件来启动
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 的组成语法如下
<measurement>[,<tag-key>=<tag-value>...] <field-key>=<field-value>[,<field2-key>=<field2-value>...] [unix-nano-timestamp] 复制代码
举个例子:chestnut:
实践 insert & select
接下来就是开始实践 ~
插入数据
INSERT cpu,host=serviceA,region=us_west value=0.64 复制代码
结果如下:
注意空格在 influxql 中是具有特殊意义的,所以,在书写时 ,
逗号后面是不可以再包含空格的,上图第一次执行插入的时候 cpu,
后面有一个空格,所以插入失败。
从上面的执行语句我们可以看到,我们在执行的时候并没有添加任何时间戳,知识后数据库是会为我们自动插入运行数据库的系统的本地时间戳的。
查询数据
SELECT "host", "region", "value" from cpu 复制代码
执行结果如下:
OK! 大功告成 ~ 接下来我们就可以开始学习 influxQL 的语法,进行更多高级操作了 ~
以上所述就是小编给大家介绍的《InfluxDB 入手第一集》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!
猜你喜欢:- Traefik 入手及简单配置
- 如何入手卷积神经网络
- iOS快速入手语音识别、评测
- 源码阅读:Masonry(一)——从使用入手
- 从源码入手分析SpringMVC的原理
- 分析开源项目源码,我们该如何入手分析?
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。