influxdb作为数据库,它存储的数据结构是怎样的?与时间有什么关系?有什么特点?如何存取数据?
=======================================================================
学习一个新技术,上手使用是首要目标,类比学习或许是一个不错的学习方式。与熟悉的mysql等关系型数据库相比,influxdb也有数据库,数据表的概念。
| mysql | influx | 备注 |
| — | — | — |
| database | database | 数据库 |
| table | measurement | 数据表 |
| record | point | 一行数据记录 |
数据库也叫database
,只是表名变了,measurement
测量值的含义更能体现influxdb
的特点,存储的数据是在时间的刻度上统计测量的结果,并不是一些冷冰冰的数值。正因为如此,数据记录的概念也有所不同,influxdb
的一行记录称之为point
,一个点。point
由3部分组成time+fields+tags
。
| point的属性 | 备注 |
| — | — |
| time | 每行记录都有一列time,主索引,记录时间戳,单位纳秒,时区UTC(东八区减8小时) |
| fields | 普通列,key-value结构,value数据类型支持型(float、integer、string、boolean) |
| tags | 索引列,key-value结构,value数据类型只支持string |
fields和tags key名称严格区分大小写。
fields数据类型注意:
| 类型 | 备注 |
| — | — |
| float | influxdb的fields默认是float浮点型 |
| integer | 整型,insert语句如需写入field是整型,需在数值后面加个i |
| string | 字符串,insert语句如需写入field是字符串,需英文双引号包含数值 |
| boolean | 布尔型,真可以用 t , T , true , True , TRUE表示;假可以用 f , F , false , False 或者 FALSE表示 |
一般情况下,经常作为查询条件的列,在初始时设置为tag,即索引,fields不常作为查询条件,更甚者,在复杂查询语法中,聚合语句group by
后面只能是time
和tags
。
=======================================================================
influxdb在一些语法方面也和mysql非常类似:
查看所有数据库
show databases
建库
create database dbname
删库
drop database daname
切换使用数据库
use dbname
查看所有表
show measurements
建表+插入数据,无需单独建表,插入数据的同时建表
insert xxx,tag1=1,tag2=www.aaa.com,tag3=2 field1=12i,field2&#