zoukankan      html  css  js  c++  java
  • influxdb(一)

    简介

    InfluxDB 是用Go语言编写的一个开源分布式时序、事件和指标数据库,无需外部依赖。

    其主要特色功能

    1)基于时间序列,支持与时间有关的相关函数(如最大,最小,求和等)
    2)可度量性:你可以实时对大量数据进行计算
    3)基于事件:它支持任意的事件数据
    

    InfluxDB的主要特点

    1)无结构(无模式):可以是任意数量的列
    2)可拓展的
    3)支持min, max, sum, count, mean, median 等一系列函数,方便统计
    4)原生的HTTP支持,内置HTTP API
    5)强大的类SQL语法
    6)自带管理界面,方便使用
    

    安装influxdb

    官网下载地址: https://portal.influxdata.com/downloads

    根据不同的系统下载不同的安装包安装,以下以centos7为例下载64位rpm包

    wget https://dl.influxdata.com/influxdb/releases/influxdb-1.6.0.x86_64.rpm
    yum localinstall influxdb-1.6.0.x86_64.rpm
    

    安装完毕后后自动生成默认配置文件 /etc/influxdb/influxdb.conf,也可以使用命令生成一个模版

    influxd config > /etc/influxdb/influxdb.conf
    

    启动influxdb数据库

    使用自带的systemd启动

    systemctl start influxdb
    

    也可以使用命令直接启动

    influxd  -config  /etc/influxdb/influxdb.conf
    

    连接influxdb数据库

    [root@influxdb ~]# influx 
    Connected to http://localhost:8086 version 1.6.0
    InfluxDB shell version: 1.6.0
    
    

    influx 如果不加参数默认连接本机8086端口

    -port  指定连接的端口
    -host  指定连接的主机
    -username  指定连接用户
    -password  指定连接用户密码
    -database  指定连接的数据库
    

    还有很多参数,使用 influx -h 可以查看帮助文档。

    influxdb 的重要概念

    database: 数据库名
    measurement: 姑且叫把表名
    Point:相当于传统数据库里的一行数据
    

    Point

    Point 由时间戳(time)、数据(field)、标签(tags)组成。

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

    Series

    Series 相当于是 InfluxDB 中一些数据的集合,在同一个 database 中,retention policy、measurement、tag sets 完全相同的数据同属于一个 series,同一个 series 的数据在物理上会按照时间顺序排列存储在一起。

    Shard

    Shard 在 InfluxDB 中是一个比较重要的概念,它和 retention policy 相关联。每一个存储策略下会存在许多 shard,每一个 shard 存储一个指定时间段内的数据,并且不重复,例如 7点-8点 的数据落入 shard0 中,8点-9点的数据则落入 shard1 中。每一个 shard 都对应一个底层的 tsm 存储引擎,有独立的 cache、wal、tsm file。

    TSM 存储引擎

    TSM 存储引擎主要由几个部分组成: cache、wal、tsm file、compactor。

    1)Cache:cache 相当于是 LSM Tree 中的 memtabl。插入数据时,实际上是同时往 cache 与 wal 中写入数据,可以认为 cache 是 wal 文件中的数据在内存中的缓存。当 InfluxDB 启动时,会遍历所有的 wal 文件,重新构造 cache,这样即使系统出现故障,也不会导致数据的丢失。

    cache 中的数据并不是无限增长的,有一个 maxSize 参数用于控制当 cache 中的数据占用多少内存后就会将数据写入 tsm 文件。如果不配置的话,默认上限为 25MB,每当 cache 中的数据达到阀值后,会将当前的 cache 进行一次快照,之后清空当前 cache 中的内容,再创建一个新的 wal 文件用于写入,剩下的 wal 文件最后会被删除,快照中的数据会经过排序写入一个新的 tsm 文件中。

    2)WAL:wal 文件的内容与内存中的 cache 相同,其作用就是为了持久化数据,当系统崩溃后可以通过 wal 文件恢复还没有写入到 tsm 文件中的数据。

    3)TSM File:单个 tsm file 大小最大为 2GB,用于存放数据。

    4)Compactor:compactor 组件在后台持续运行,每隔 1 秒会检查一次是否有需要压缩合并的数据。

    主要进行两种操作,一种是 cache 中的数据大小达到阀值后,进行快照,之后转存到一个新的 tsm 文件中。

    另外一种就是合并当前的 tsm 文件,将多个小的 tsm 文件合并成一个,使每一个文件尽量达到单个文件的最大大小,减少文件的数量,并且一些数据的删除操作也是在这个时候完成。

  • 相关阅读:
    linux之awk命令
    HDU 2097 Sky数 进制转换
    HDU 2077 汉诺塔IV
    HDU 2094 产生冠军 dfs加map容器
    HDU 2073 叠框
    HDU 2083 简易版之最短距离
    HDU 2063 过山车 二分匹配
    天梯 1014 装箱问题
    天梯 1214 线段覆盖
    天梯 1098 均分纸牌
  • 原文地址:https://www.cnblogs.com/panjunbai/p/9410982.html
Copyright © 2011-2022 走看看