Medusar's Blog
敬畏知识,谦逊前行
Toggle navigation
Medusar's Blog
主页
Booklist
Resources
About Me
归档
标签
InfluxDB入门
2016-11-21 23:02:50
600
0
0
medusar
#启动influxdb server `service influxd start` 或直接`influxd` #数据库操作 ## create db `CREATE DATABASE {dbname}` dbname可以是任意的unicode字符串,但需要放在引号里面,如果只包含ascii码,可以不用引号 ## 显示所有数据库 `show databases` 新安装的influxdb会默认创建一个名为`_internal`的数据库。 例如: ``` bash > show databases name: databases --------------- name _internal > ``` ## 选中数据库 `use {dbname}` 选中后表示接下来的操作就是针对选中后点数据库操作。 # Influxdb中的几个概念 influxdb中的数据以“时间序列”来存储,数据一般都是“measurement”,比如cpu负载和温度等。每一个时间序列都包含0个或多个“point”,每个“point”又包含一个“time”,一个测量值,至少一个“field”(测量值本身,比如“value=0.64”, or “temperature=21.2”),还有0个或多个“tag”,tag是用来描述测量值的元数据(比如“host=server01”, “region=EMEA”, “dc=Frankfurt”)。 概念上理解,可以把“测量值”看作是一张表,表的主键是时间,“field”和“tag”可以看作表中的列,但是它们的区别在于,“tag”是被索引等,而“field”没有索引。另外,在influxdb中你可以有成千上万的表,这些表不需要事先定义表结构。 点以Line Protocol写入的influxdb的,格式如下: `<measurement>[,<tag-key>=<tag-value>...] <field-key>=<field-value>[,<field2-key>=<field2-value>...] [unix-nano-timestamp]` 比如下面的数据: ``` 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 ``` 注意:tag与field如何区分? tag是通过逗号紧跟在measurement后面的,而field出现之前现有一个空格,并且field至少要有一个(因为field存的才是测量值,如果没有测量值,那么点就没有意义)。最后是时间戳,时间戳是可选的。 概念总结: 1)influxdb存储的是时间序列数据。时间序列是由多个点构成的。 2)每个点至少包含两部分:时间和测量值。 3)测量值存储在field中,而元数据(描述信息)存储在tag中。 4)不可以没有测量值,所以field至少要有一个,而元数据可以没有 5)时间可以为空,如果时间为空,则influxdb会默认以数据插入时的时间作为该点的时间。 6)LineProtol,注意区分tag和field,tag是紧跟在measurement之后。field开始之前有个空格,最后是时间戳。 # 数据操作 ## 基本操作 通过Demo查看即可: ```bash > INSERT cpu,host=serverA,region=us_west value=0.64 > select host,region,value from cpu name: cpu --------- time host region value 1479737018965807902 serverA us_west 0.64 > > INSERT temperature,machine=unit42,type=assembly external=25,internal=37 > select * from temperature name: temperature ----------------- time external internal machine type 1479737094555570080 25 37 unit42 assembly > ``` 另外,influxdb还支持go风格的正则表达式等其他功能,例如: ``` bash > SELECT * FROM /.*/ LIMIT 1 name: cpu --------- time external host internal machine region type value 1479737018965807902 serverA us_west 0.64 name: temperature ----------------- time external host internal machine region type value 1479737094555570080 25 37 unit42 assembly > SELECT * FROM "cpu_load_short" > SELECT * FROM "cpu_load_short" WHERE "value" > 0.9 > ``` influxQL语法参考官方文档: https://docs.influxdata.com/influxdb/v1.1/query_language/data_exploration/
上一篇:
Golang锁失效原因之value receiver
下一篇:
String.replaceAll方法以及java.util.regex.Matcher类的妙用
0
赞
600 人读过
新浪微博
微信
腾讯微博
QQ空间
人人网
Please enable JavaScript to view the
comments powered by Disqus.
comments powered by
Disqus
文档导航