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 文件合并成一个,使每一个文件尽量达到单个文件的最大大小,减少文件的数量,并且一些数据的删除操作也是在这个时候完成。

  • 相关阅读:
    如何构建一个优秀的移动网站?谷歌专家教你25招(三)[转]
    如何构建一个优秀的移动网站?谷歌专家教你25招(二)[转]
    如何构建一个优秀的移动网站?谷歌专家教你25招(一)[转]
    如何做到Zero Downtime重启Go服务?
    Go语言AST尝试
    Database Go and JSON
    "创业"半年
    打造完美的go开发环境
    [ReactiveCocoa]最简单的RAC入门操作
    [Node.js]expressjs简单测试连接mysql
  • 原文地址:https://www.cnblogs.com/panjunbai/p/9410982.html
Copyright © 2011-2022 走看看