influxDB 学习笔记
             influxDB 学习笔记
             
             官方文档:
             
              
               
                https://
               
               
                docs.influxdata.com/inf
               
               
                luxdb/v1.8/
               
               
               
              
             
            
目录:
一、influxDB
- 简介
- 示例
- 词汇说明
- influxDB下载与安装
- influx CLI
二、influxQL
- 
              查询
              
 1)常用
 2)SELECT
 3)WHERE
 4)GROUP BY
 5)INTO
 5)LIMIT
- 数据库管理
- 连续查询
- Functions
一、influxDB
1. 简介
             InfluxDB 是一个由 InfluxData 开发的开源时序型数据库。使用 GO 语言开发,特别适合用于处理和分析资源监控数据这种时序相关数据。InfluxDB 被广泛应用于存储系统的监控数据,IoT 行业的实时数据等场景。
             
             
             
              influxDB 与 MySQL 的对比:
             
             
             InfluxDB 目的是存储大量时间序列数据,并对这些数据快速执行实时分析。
             
             influxDB 支持多种查询语言:Flux 和 influxQL。
             
             influxDB 不是 CRUD,通常来说 influxDB 中的数据来自分布式传感器组、网站的点击数据和性能监控数据和金融交易列表数据等,这些数据需要聚合之后才会更有用。
            
 
            2. 示例
如下示例是两位科学家在两处位置记录的蜜蜂和蝴蝶的数量,数据存储在 census 表中:
 
            
             
             1)所有的 influxDB 数据库表中都有
             
              time
             
             这一列,其存储时间戳。
             
             2)butterflies 和 honeybees 这两列是字段(
             
              fileds
             
             )。字段由字段键(filed keys)和字段值(filed values)组成。filed key 是 string 类型,filed values 就是存储的数据,可以是string、float、integer、boolean。filed set 是 filed keys 和 filed values 的组合。
             
             3)location and scientist 这两列是标签(
             
              tags
             
             )。tags 由 tag keys 和 tag values 组成。tag keys 和 tag values 都是 string 类型,记录元数据( metadata)。tag key location 有两个值:1、2,tag key scientist 也有两个值:langstroth、perpetua。tag set 是 tag 不同 key-value 的组合。
             
             4)tag 是可选的,且被索引,意味着 tag 查询 比 filed 查询更快。
             
             5)
             
              measurement
             
             是 fileds、tags 和 time 的容器,可理解为 SQL 中的 table 表。在这个示例中就是 census 表,表名类型为 string。一个 measurement 可以有不同的保留策略(retention policies),即数据保留多长时间(DURATION)、以及数据在集群中存储多少副本(REPLICATION)。
             
             6)
             
              series
             
             是点的集合,由 measurement、tag set、filed key 组成。在这个示例中,就有 8 个 series:
            
 
            
             
            
3. 词汇说明
1)filed
             字段(fileds)由字段键(filed keys)和字段值(filed values)组成。存储元数据和实际记录的数据,不被索引,所以针对 filed 的查询,查询性能不佳。
             
             
              2)field key
             
             
             是 string 类型,存储元数据(metadata)。
             
             
              3)field value
             
             
             可以是 string、float、integer、boolean 类型,存储实际的数据。
             
             
              4)measurement
             
             
             是 fileds、tags 和 time 的容器,可理解为 SQL 中的 table 表。
             
             
              5)metastore
             
             
             包含系统状态的内部信息,包括用户信息、数据库、保留策略、shard metadata、连续查询和订阅。
             
             
              6)now()
             
             
             获取本地服务器纳秒级时间戳。
             
             
              7)point
             
             
             表示单行数据记录,类似于 SQL 数据库表中行。
             
             包含:a measurement, a tag set, a field key, a field value, and a timestamp。由 series and timestamp 唯一标识。
             
             
              8)series
             
             
             由 measurement、tag set、filed key 组成。同一个 series 的数据在物理上会按照时间顺序存储在一起。
             
             
              9)tag
             
             
             InfluxDB 数据结构中记录元数据的键值对。tags 由 tag keys 和 tag values 组成。tag keys 和 tag values 都是 string 类型,记录元数据( metadata)。tag 是可选的,且被索引,对 tag 查询是高效的。
             
             
              10)timestamp
             
             
             与 point 关联的时间戳。InfluxDB 中的时间都是 UTC 标准。所有的 influxDB 数据库表中都有 time 这一列。
             
             
              11)batch
             
             
             points 数据点的批量集合,减少http请求,是的inluxDB API 写入性能更高。
             
             
              12)bucket
             
             
             数据存储的位置,与数据库和保留策略相关。
             
             
              13)continuous query(CQ)
             
             
             连续查询。一个 influxQL 查询,该查询会在数据库中自动并定期运行。
             
             在 SELECT 语句需要一个函数,且必须包含 GROUP BY time() 语句。
             
             
              14)database
             
             
             数据库。是 users、retention policies、continuous queries、time series data 的逻辑容器。
             
             
              15)aggregation
             
             
             是一个 influxQL 函数,返回一组 points 的聚合值。
             
             influxQL 的其他函数:
             
              
               
                https://
               
               
                docs.influxdata.com/inf
               
               
                luxdb/v1.8/query_language/functions/#aggregations
               
               
               
              
             
            
4. influxDB v1.8 下载/安装
             下载地址:
             
              
               
                https://
               
               
                docs.influxdata.com/inf
               
               
                luxdb/v1.8/introduction/download/
               
               
               
              
             
             
             mac OS 下载:
             
             
              brew update brew install influxdb
             
             
             
             配置:
             
             
              influxd -config /etc/influxdb/influxdb.conf
             
            
5. influx CLI
             前提是本地已安装 InfluxDB open source
             
             1)进入交互式 CLI:
             
             
              $ influx -precision rfc3339
             
             
             2)创建数据库
             
             
              $ CREATE DATABASE mydb
             
             
             3)查看所有的数据库:
             
             
              SHOW DATABASES
             
             
             4)使用特定的数据库(后续命令都是基于该数据库)
             
             
              USE mydb
             
             
             5)插入数据
             
             
              INSERT cpu,host=serverA,region=us_west value=0.64
             
             
             6)查询数据
             
             
              SELECT "host", "region", "value" FROM "cpu"
             
            
二、InfluxQL
InfluxQL 是一种类似 SQL 的查询语言,用于与 InfluxDB 中的数据交互。
 
            1. 查询
             
              1)常用
             
             
             官方文档:
             
              
               
                https://
               
               
                docs.influxdata.com/inf
               
               
                luxdb/v1.8/query_language/explore-schema/
               
               
               
              
             
             
             常用查询数据库相关语句:
            
-- 查询数据库
 SHOW DATABASES 
-- 查询数据库中的保留策略
 SHOW RETENTION POLICIES [ON <database_name>]  
-- 查询数据库中的 series 列表
 SHOW SERIES [ON <database_name>] [FROM_clause] [WHERE <tag_key> <operator> [ '<tag_value>' | <regular_expression>]] [LIMIT_clause] [OFFSET_clause] 
-- 查看所有的 measurement 表
 show measurements;
-- 查看一个 measurement 中所有的 tag key 
 show tag keys 
-- 查看一个 measurement 中所有的 field key
 show field keys
             
             常用查询数据相关的语句:
            
-- 查询表中某个 filed key 非空的数量
 SELECT COUNT("filed key名称") FROM measurement表名
-- 查询10条数据
 select * from measurement_name limit 10;
             
             
              2)SELECT
             
             
             语法:语句中必须包含 field_key。
             
             
             
              SELECT <field_key>[,<field_key>,<tag_key>] FROM <measurement_name>[,<measurement_name>]
             
             
            
-- 返回所有 fields 和 tags
 select * FROM <measurement_name> 


 
                        