InfluxDB_0.9 之我见(一)

关于InfluxDB数据库,网上大多数是0.7/0.8的版本的介绍,对于当下的版本0.9,还有不少变更的地方,下面简单地说一下这几天学习InfluxDB的心得体会。

InfuxDB的具体是怎样的一个数据库不过多介绍,按官网说:“InfluxDB is a time series, metrics, and analytics database. It’swritten in Go and has no external dependencies. That means once you install itthere’s nothing else to manage。”


一、说在前面

浏览0.6/0.7版本的文档,在“Design Goals”一栏中,发现是这样描述的:“Here are some goals we’re targeting while building InfluxDB.”有些DesignGoals在那个版本中可能并没有实现。而到0.8/0.9版本时,“Design Goals”一栏变成了“Here are some goals we have as we’re building InfluxDB”,可以知道该数据库在早期版本时很多功能并不是很完善的。比如在v0.7中,有一条Design Goal这样说:“Can efficiently and automatically clear out raw data daily to freeup space. However, some time series will keep data forever, while others willkeep only a rolling window (like the last 30 days)”意思是说该数据库可以自动清除过期的数据来腾出空间,这对于一个存储大量数据的时序数据库来说很有帮助,但是该版本并没有很好的支持这个功能,到了v0.8时,在Advanced Topicà Underlying Storage and Shards的介绍中得知这个版本已经开始支持这个功能了(如配置"retentionPolicy": "7d",意为保留策略是7天)。而到了v0.9也就是最新版本,在Administrationà Retention Policy Management的介绍中已经明确地给出了保留策略的新增、修改、删除的具体方法,在后面还会谈到这点。


二、安装

那么我们从安装开始说起吧,建议安装最新的0.9版本,因为从v0.9和旧版本的API相差的比较大(至少,在浏览旧版本的Docs时,页面头部超大字体的“Warning! This version of InfluxDB is no longer in active development.Version0.9 is the most recent version of InfluxDB.”也会令你很烦躁的吧。)

还要说一点,0.9版目前仅支持64位。下载安装命令:

wgethttp://influxdb.s3.amazonaws.com/influxdb_0.9.2_amd64.deb
sudo dpkg -i influxdb_0.9.2_amd64.deb


这样,InfluxDB就安装好了,其中配置文件默认存放在/etc/opt/influxdb目录下,运行命令:

sudo /etc/init.d/influxdb start


则将数据库服务启动,在终端输入:

/opt/influxdb/influx

现在就可以使用命令行操作数据库了,比如创建一个数据库,使用:

> CREATE DATABASE <db-name>

这些和普通的sql语句很像(“>”符号不用手动输入)。


三、写数据

1、使用insert命令行写数据:

> INSERT cpu_load_short,host=server01,region=us-west value=0.64,value2=0.86 1434055562000000000

2、使用HTTP API写数据:

curl -i -XPOST'http://localhost:8086/write?db=mydb' --data-binary'cpu_load_short,host=server01,region=us-west value=0.64,value2=0.86 1434055562000000000'

除了命令关键字不同,数据部分基本相同,仅观察一下数据部分:

cpu_load_short,host=server01,region=us-west value=0.64,value2=0.86 1434055562000000000

这行数据含有两个空格,将之分为三个部分

第一部分:“cpu_load_short,host=server01,region=us-west”

第一部分称为key,key中包含了measurement name和tags(tags又分为tag key和tag value,tags可以有多个),例子中的“cpu_load_short”就是measurement name,“host”和“reginon”是tag key,“server01”和“us-west”是对应的tag value。在我看来,measurement name和MySQL数据库的表名是等同的。

另外,在tag value中的空格应以“\”加上空格表示,若有多个tag value,可以使用逗号隔开,但是应以“\”加逗号表示。


第二部分:“value=0.64,value2=0.86”

第二部分称为Field,同样和tags的形式相同,都是键值对的形式,但是tags中的值必须是string类型,而Field中的值可以为Integer、float、Boolean、string类型,若为Integer类型,则值后必须加“i”,否则该值为float类型,比如value=23意味着这个值23是float类型,而value=23i,意味着值23是Integer类型。Boolean类型的值的表示方式有很多,直接写成:t, T, true, TRUE, f, F, false或 FALSE都可以。


第三部分(可选):“1434055562000000000”

第三部分称为Timestamp,是时间戳,如果该部分省略,则默认将当前时间的时间戳插入数据库,否则按照用户输入的时间戳插入。

 

四、数据保留策略

在前面提到了保留策略,在Docs的Administrationà Retention Policy Management有明确的介绍,创建一个新的保留策略命令如下:

CREATE RETENTION POLICY<retentionpolicy>
   ON <database>
   DURATION <duration>
   REPLICATION <n>
[DEFAULT]


DURATION可以写1h, 90m, 12h, 7d, 4w意为 1 hour, 90minutes, 12 hours, 7 days, 4 weeks,经过测试,用户至少可以设置1h,而最大可以使用“INF”来告诉数据库所有的数据永久保留。

REPLICATION在v0.9中没有介绍,但是我再v0.8中找到了“replicationFactor”关键字,“replicationFactor”的解释是“ThereplicationFactor setting tells the InfluxDB cluster how many servers shouldhave a copy of each shard in the given shard space.”不知道v0.8中的“replicationFactor”和v0.9中的“REPLICATION”是否是一个意思。

新建一个RETENTION POLICY之后,就可以使用它了,在“写数据”的介绍中的第二种方法使用HTTP API写数据命令中,在“http://localhost:8086/write?db=mydb”后边加上“?rp=<retentionpolicy>”即可。

我试验了一下,将DURATION设置为1h,然后又插入了若干个时间戳在1小时之前的数据,查询结果,发现数据库仍可以显示1小时之前的数据,当我写到这里的时候,再次查询,就只剩下距现在1小时以内的数据了,为什么数据库没有立即清除1小时之前的数据呢,这点仍没有搞清楚。

当然,RETENTION POLICY还可以更改和删除。

更改:

ALTER RETENTION POLICY<retentionpolicy>
   ON <database>
   [DURATION <duration>]
[REPLICATION<n>] [DEFAULT]

删除:

DROP RETENTION POLICY<retentionpolicy> ON <database>

今天先写到这里,关于select查询,influxdb还有更加强大的功能,以后会加深学习。

以上有不对的地方,请大家不吝指出,多谢。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值