InfluxDB 基础

好风 发表于 2017-07-19T01:22:19.351239Z
引用地址:https://plus.ooclab.com/note/article/1372

InfluxDB 是一款非常优秀的时序数据库。

参考

基本概念

InfluxDB 里的 Datatime series 方式进行组织,每个 time series 包含一个测量值, 如:cpu_load , temperature

time series 有0到多个 points

point 包含 time (时间戳)

measurement (如cpu_load) 至少包含一个 field (key-value 对) , 包含 0 到多个 tags

简单来说,可以把 measurement 当做 SQL table , 只不过 primary index 一直是 time 。 tagsfields 是该 table 里的有效 column 。其中 tags 会自动创建索引 (index) , fields 则不会。特别的地方在于,在 InfluxDB 里可以创建数百万的 measurement , 你不需要预定义 measurement , 控制(null) 也不会被存储。

point 使用 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

field

InfluxDB Data 结构中必须的有 fieldfield 不会被索引,因此如果查询时需要匹配 filed 的值, 则会扫描该 filed 的所有值。因此,通常情况下,field 不要包含通用查询的 metadata 。

tag

tag 是可选的,tag 会被索引,因此查询 tag 会很快。

measurement

measurement 类似 SQL Table , 包含 tags , fields, time column .

Retention Policies

retention policies (数据保留策略) 定义数据在 InfluxDB 里的保留时间。 一个数据库可以有多个保留策略。

series

series 表示一组数据集,共享一个 retention policy , measurement , tag set .

tag set 是所有 tag 的可能组合之一

point

point 是拥有相同 series 和 timestamp 的 filed set