InfluxDB简介

作者: YangSmokey | 来源:发表于2019-03-06 18:42 被阅读0次

    InfluxDB是一个开源分布式的时间序列、事件和指标数据库。使用 GoLand 编写,无需外部依赖。其设计目标是实现分布式和水平伸缩扩展。

    influxDB MySQL 描述
    database database 数据库
    measuremen table 数据表
    points row 数据行

    InfluxDB中独有的概念

    Point由时间戳(time)、数据(field)、标签(tags)组成。
    Point相当于传统数据库里的一行数据,如下表所示:

    Point 描述
    time 每个数据记录时间,是数据库中的主索引(会自动生成)
    fields 各种记录值(没有索引的属性)
    tags 各种有索引的属性

    从概念上讲,您可以将 measurement 视为一个SQL表,其中主索引始终是时间。 tags并且fields是表中的有效列。 tags被编入索引,而fields不是。不同之处在于,使用InfluxDB,您可以进行数百万次测量,您不必预先定义模式,也不会存储空值。

    入门实践

    root@a0bfadf454e6:/# ./usr/bin/influx
    Connected to http://localhost:8086 version 1.7.4
    InfluxDB shell version: 1.7.4
    Enter an InfluxQL query
    >
    

    显示所有数据库:

    > SHOW DATABASES
    name: databases
    name
    ----
    _internal
    TestDataBase
    DeviceManage
    

    创建数据库:

    CREATE DATABASE "db_name"
    

    删除数据库:

    DROP DATABASE "db_name"
    

    新增一条数据:

    语法格式:

    <measurement>[,<tag-key>=<tag-value>...] <field-key>=<field-value>[,<field2-key>=<field2-value>...] [unix-nano-timestamp]
    
    INSERT Device,host=Server_1,region=ck value=740
    

    以下几行都是可以写入InfluxDB的点的示例:

    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
    

    使用数据库:

    > USE TestDataBase
    Using database TestDataBase
    

    显示数据库中所有数据表:

    > SHOW MEASUREMENTS
    name: measurements
    name
    ----
    Device
    

    显示数据表中所有数据:

    > SELECT * FROM "Device"
    name: Device
    time                host     region value
    ----                ----     ------ -----
    1551838714809273800 Server_1 zh     510
    1551838773182374400 Server_1 ck     740
    1551838784114047000 Server_1 sz     880
    1551838793649884400 Server_1 df     245
    1551838808490581100 Server_1 bj     543
    1551839343592639700 Server_1 kd     324
    1551839352626367200 Server_1 cc     674
    1551839361132222700 Server_1 gk     932
    1551839370771752200 Server_1 kk     633
    

    警告:在大型数据库上使用*不带LIMIT子句可能会导致性能问题。您可以使用Ctrl+C取消响应时间过长的查询。

    > SELECT * FROM /.*/ LIMIT 1
    > SELECT * FROM /.*/ WHERE "value" > 0.9
    

    实例:

    # 查询最新的三条数据
    SELECT * FROM "Device" ORDER BY time DESC LIMIT 3
    

    在InfluxDB中并没有提供数据的删除与修改方法。不过我们可以通过数据保存策略(Retention Policies)来实现删除。

    查看当前数据库的Retention Policies:

    SHOW RETENTION POLICIES ON "DataBase_Name"
    

    创建新的Retention Policies:

    CREATE RETENTION POLICY "rp_name" ON "db_name" DURATION 30d REPLICATION 1 DEFAULT
    
    1. rp_name:策略名
    2. db_name:具体的数据库名
    3. 30d:保存30天,30天之前的数据将被删除
    4. 它具有各种时间参数,比如:h(小时),w(星期)
    5. REPLICATION 1:副本个数,这里填1就可以了
    6. DEFAULT 设为默认的策略

    修改Retention Policies:

    ALTER RETENTION POLICY "rp_name" ON db_name" DURATION 3w DEFAULT
    

    删除Retention Policies:

    DROP RETENTION POLICY "rp_name" ON "db_name"
    

    删除数据表:

    DROP MEASUREMENT "measurementName"
    

    相关文章

      网友评论

        本文标题:InfluxDB简介

        本文链接:https://www.haomeiwen.com/subject/arbxpqtx.html