Getting started with InfluxDB OSS

安装 InfluxDB开源(OSS)后,您就可以开始做一些很棒的事情了. 在本节中,我们将使用influx 命令行界面 (CLI),它包含在所有InfluxDB软件包中,并且是与数据库进行交互的轻量级简单方法. 默认情况下,CLI通过在端口8086上向InfluxDB API发出请求来直接与InfluxDB通信.

注意:也可以通过发出原始HTTP请求来使用数据库. 有关curl应用程序的示例,请参见写入数据查询数据 .

Creating a database

If you’ve installed InfluxDB locally, the influx command should be available via the command line. Executing influx will start the CLI and automatically connect to the local InfluxDB instance (assuming you have already started the server with service influxdb start or by running influxd directly). The output should look like this:

$ influx -precision rfc3339
Connected to http://localhost:8086 version 1.7.x
InfluxDB shell 1.7.x
>

Notes:

  • 默认情况下,InfluxDB API在端口8086上运行. 因此,默认情况下, influx将连接到端口8086localhost . 如果需要更改这些默认值,请运行influx --help .
  • -precision参数指定任何返回的时间戳的格式/精度. 在上面的示例中, rfc3339告诉InfluxDB以RFC3339格式YYYY-MM-DDTHH:MM:SS.nnnnnnnnnZ )返回时间戳.

命令行现在准备好以Influx查询语言(aka InfluxQL)语句的形式接受输入. 要退出InfluxQL Shell,请键入exit并按回车键.

全新安装的InfluxDB没有数据库(系统_internal ),因此创建数据库是我们的首要任务. 您可以使用CREATE DATABASE <db-name> InfluxQL语句CREATE DATABASE <db-name> ,其中<db-name>是您要创建的数据库的名称. 数据库名称可以包含任何unicode字符,只要该字符串被双引号引起来即可. 如果名称包含ASCII字母,数字或下划线并且不以数字开头,则也可以不加引号.

在本指南中,我们将使用数据库名称mydb

> CREATE DATABASE mydb
>

注意:按下Enter键后,会出现一个新的提示,并且不显示其他任何内容. 在CLI中,这意味着该语句已执行,没有错误可显示. 如果出现问题,将始终显示错误. 没有消息就是好消息!

现在已经创建了mydb数据库,我们将使用SHOW DATABASES语句显示所有现有数据库:

> SHOW DATABASES
name: databases
name
----
_internal
mydb

>

注意: _internal数据库由InfluxDB创建并用于存储内部运行时指标. 稍后进行检查,以有趣地了解InfluxDB的性能如何.

SHOW DATABASES不同,大多数InfluxQL语句必须针对特定数据库进行操作. 您可以为每个查询显式命名数据库,但是CLI提供了一个便利声明USE <db-name> ,它将自动为将来的所有请求设置数据库. 例如:

> USE mydb
Using database mydb
>

现在,将来的命令将仅在mydb数据库上运行.

Writing and exploring data

现在我们有了数据库,InfluxDB准备好接受查询和写入.

首先,简要介绍一下数据存储. InfluxDB中的数据按"时间序列"进行组织,其中包含一个测量值,例如" cpu_load"或"温度". 时间序列有零到许多points ,每个度量的离散样本一个. 点包括time (时间戳), measurement (例如" cpu_load"),至少一个键值field (测量值本身,例如" value = 0.64"或" temperature = 21.2")和零包含许多有关该值的任何元数据的键值tags (例如" host = server01"," region = EMEA"," dc = Frankfurt").

从概念上讲,您可以将measurement视为一个SQL表,其中的主要索引始终是时间. tagsfields实际上是表中的列. tags已建立索引,而fields未建立索引. 区别在于,使用InfluxDB,您可以进行数百万次的测量,无需预先定义架构,也不会存储空值.

使用InfluxDB行协议将点写入InfluxDB,该协议遵循以下格式:

<measurement>[,<tag-key>=<tag-value>...] <field-key>=<field-value>[,<field2-key>=<field2-value>...] [unix-nano-timestamp]

以下几行都是可以写入InfluxDB的点的所有示例:

cpu,host=serverA,region=us_west value=0.64
payment,device=mobile,product=Notepad,method=credit billed=33,licenses=3i 1434067467100293230
stock,symbol=AAPL bid=127.46,ask=127.48
temperature,machine=unit42,type=assembly external=25,internal=37 1434067467000000000

注意:有关InfluxDB线路协议的详细信息,请参阅InfluxDB线路协议语法页面.

要使用CLI将单个时间序列数据点插入InfluxDB,请输入INSERT然后输入一个点:

> INSERT cpu,host=serverA,region=us_west value=0.64
>

现在将具有测量名称cpu以及标签hostregion写入数据库,测量value 0.64 .

现在,我们将查询刚刚编写的数据:

> SELECT "host", "region", "value" FROM "cpu"
name: cpu
---------
time		    	                     host     	region   value
2015-10-21T19:28:07.580664347Z  serverA	  us_west	 0.64

>

注意:编写我们的观点时,我们没有提供时间戳. 如果没有为某个点提供时间戳,则在摄取该点时,InfluxDB会分配本地当前时间戳. 这意味着您的时间戳将有所不同.

让我们尝试存储另一种类型的数据,其中两个字段处于同一度量中:

> INSERT temperature,machine=unit42,type=assembly external=25,internal=37
>

要使用查询返回所有字段和标签,可以使用*运算符:

> SELECT * FROM "temperature"
name: temperature
-----------------
time		                        	 external	  internal	 machine	type
2015-10-21T19:28:08.385013942Z  25	        	37     		unit42  assembly

>

警告:在大型数据库上使用*不带LIMIT子句可能会导致性能问题. 您可以使用Ctrl+C取消响应时间太长的查询.

InfluxQL具有许多此处未涵盖的功能和关键字 ,包括对Go风格的正则表达式的支持. 例如:

> SELECT * FROM /.*/ LIMIT 1
--
> SELECT * FROM "cpu_load_short"
--
> SELECT * FROM "cpu_load_short" WHERE "value" > 0.9

这就是您需要将数据写入InfluxDB并进行查询的全部. 要了解有关InfluxDB写协议的更多信息,请查看有关写数据的指南. 要进一步探索查询语言,请查看有关查询数据的指南. 有关InfluxDB概念的更多信息,请查看" 关键概念"页面.

本文档是开源的 . 看到错字了吗? 请打开一个问题 .


需要启动和运行的帮助吗? Get Support

by  ICOPY.SITE