惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
人人都是产品经理
人人都是产品经理
Cisco Talos Blog
Cisco Talos Blog
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
V
V2EX
博客园 - 三生石上(FineUI控件)
Martin Fowler
Martin Fowler
WordPress大学
WordPress大学
D
Docker
S
SegmentFault 最新的问题
博客园 - 聂微东
美团技术团队
Apple Machine Learning Research
Apple Machine Learning Research
月光博客
月光博客
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
Last Week in AI
Last Week in AI
M
MIT News - Artificial intelligence
F
Fortinet All Blogs
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
The GitHub Blog
The GitHub Blog
GbyAI
GbyAI
L
LangChain Blog
Vercel News
Vercel News
博客园 - 叶小钗
MongoDB | Blog
MongoDB | Blog
Stack Overflow Blog
Stack Overflow Blog
H
Help Net Security
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
The Cloudflare Blog
Engineering at Meta
Engineering at Meta
T
Threat Research - Cisco Blogs
T
Threatpost
Scott Helme
Scott Helme
T
Tailwind CSS Blog
Latest news
Latest news
Stack Overflow Blog
Stack Overflow Blog
Blog — PlanetScale
Blog — PlanetScale
The Register - Security
The Register - Security
罗磊的独立博客
P
Proofpoint News Feed
腾讯CDC
S
Schneier on Security
雷峰网
雷峰网
A
About on SuperTechFans
T
Tenable Blog
F
Full Disclosure
Cyberwarzone
Cyberwarzone
博客园_首页
有赞技术团队
有赞技术团队
K
Kaspersky official blog

文章列表

设计模式-备忘录模式 - OXOXTECH 牛牛技术客栈 设计模式-中介者模式 - OXOXTECH 牛牛技术客栈 Linux【Ubuntu】修改ssh默认端口 - OXOXTECH 牛牛技术客栈 设计模式-迭代器模式 - OXOXTECH 牛牛技术客栈 scheduled定时任务的三种基本实现方式 - OXOXTECH 牛牛技术客栈 Apriori - 基于关联规则的推荐算法(三) - OXOXTECH 牛牛技术客栈 Apriori - 基于关联规则的推荐算法(二) - OXOXTECH 牛牛技术客栈 Apriori - 基于关联规则的推荐算法(一) - OXOXTECH 牛牛技术客栈 基于JavaFX的桌面端网络调试工具 - OXOXTECH 牛牛技术客栈 Golang Channel的原理介绍 - OXOXTECH 牛牛技术客栈 Go语言Map的原理分析 - OXOXTECH 牛牛技术客栈 Go语言错误处理(panic)的最佳实践 - OXOXTECH 牛牛技术客栈 设计模式-解释器模式 - OXOXTECH 牛牛技术客栈 Redis报错Redis is configured to save RDB snapshots, but it's currently unable to persist to disk. go-webpbin库在Linux报错failed to encode image to WebP: exit status 1.......的问题 exe4j 打包加密的jar - OXOXTECH 牛牛技术客栈 Go生成图形验证码示例 - OXOXTECH 牛牛技术客栈 澳门一天游:一日尽享东方与西方的交融之美 - OXOXTECH 牛牛技术客栈 设计模式-命令模式 - OXOXTECH 牛牛技术客栈 别再自己瞎写工具类了,SpringBoot内置工具类应有尽有 - OXOXTECH 牛牛技术客栈 中山一日游 - OXOXTECH 牛牛技术客栈 设计模式-责任链模式 - OXOXTECH 牛牛技术客栈 起舞吧,齐舞吧 - OXOXTECH 牛牛技术客栈 设计模式-组合模式 - OXOXTECH 牛牛技术客栈 Go语言Web开发|GoFrame框架入门笔记 - OXOXTECH 牛牛技术客栈 Java打包exe教程 - OXOXTECH 牛牛技术客栈 设计模式-代理模式 - OXOXTECH 牛牛技术客栈 MySQL存储过程的优缺点有哪些? - OXOXTECH 牛牛技术客栈 前端渲染优化有哪些? - OXOXTECH 牛牛技术客栈 HTTP状态码及其含义 - OXOXTECH 牛牛技术客栈 从浏览器地址栏输入url到显示页面的步骤 - OXOXTECH 牛牛技术客栈 TypeScript事件派发管理器 - OXOXTECH 牛牛技术客栈 MQTT保留消息的使用方法 - OXOXTECH 牛牛技术客栈 世界工程-港珠澳大桥游 - OXOXTECH 牛牛技术客栈 Golang逃逸分析 - OXOXTECH 牛牛技术客栈 设计模式-享元模式 - OXOXTECH 牛牛技术客栈 牛牛成长记录 - OXOXTECH 牛牛技术客栈 ffmpeg常用命令 - OXOXTECH 牛牛技术客栈 设计模式-外观模式 - OXOXTECH 牛牛技术客栈 设计模式-装饰器模式 - OXOXTECH 牛牛技术客栈 设计模式-桥接模式 - OXOXTECH 牛牛技术客栈 5周年恋爱纪念日 - OXOXTECH 牛牛技术客栈 2024新年快乐,龙腾四海 - OXOXTECH 牛牛技术客栈 迎接新年:除夕的美好时刻 - OXOXTECH 牛牛技术客栈 设计模式-适配器模式 - OXOXTECH 牛牛技术客栈 设计模式-原型模式 - OXOXTECH 牛牛技术客栈 设计模式-建造者模式 - OXOXTECH 牛牛技术客栈 设计模式-工厂模式 - OXOXTECH 牛牛技术客栈 设计模式-单例模式 - OXOXTECH 牛牛技术客栈 SpringBoot在Linux环境下发送163邮件失败(No appropriate protocol (protocol is disabled or cipher suites are inappropriate)) 海与日落 - OXOXTECH 牛牛技术客栈 Swagger比较常用的注解 - OXOXTECH 牛牛技术客栈 猫🐱牛 - OXOXTECH 牛牛技术客栈 2023年最后一个晚霞 - OXOXTECH 牛牛技术客栈 Linux(Centos)部署Nginx教程 - OXOXTECH 牛牛技术客栈 Linux MySQL下载安装详细教程(CentOS版) - OXOXTECH 牛牛技术客栈 JavaFx打包成exe - OXOXTECH 牛牛技术客栈 Flux脚本语言入门教程 - OXOXTECH 牛牛技术客栈 演唱会出图 - OXOXTECH 牛牛技术客栈 Netty TCP解决粘包拆包 - OXOXTECH 牛牛技术客栈 SpringBoot实现订单超时取消的几种方案 - OXOXTECH 牛牛技术客栈 详解Java并发中的各种锁 - OXOXTECH 牛牛技术客栈 SpringBoot集成支付宝支付 - OXOXTECH 牛牛技术客栈 雪花算法:分布式系统唯一ID生成算法 - OXOXTECH 牛牛技术客栈 Java解决空指针的神器Optional - OXOXTECH 牛牛技术客栈 与兴一起 - OXOXTECH 牛牛技术客栈 Java17新特性详解与安装 - OXOXTECH 牛牛技术客栈 Jdk17安装+环境配置详细教程 - OXOXTECH 牛牛技术客栈 孤注一掷 - OXOXTECH 牛牛技术客栈 解决WinSCP经常断线重连 - OXOXTECH 牛牛技术客栈 内存不足导致Tomcat崩溃问题排查与解决办法 - OXOXTECH 牛牛技术客栈 SpringBoot 服务接口限流方案 - OXOXTECH 牛牛技术客栈 Docker 安装 Portainer - OXOXTECH 牛牛技术客栈 Linux 安装Docker - OXOXTECH 牛牛技术客栈 物料宣传 - OXOXTECH 牛牛技术客栈 Java使用EMQX实现MQTT通信 - OXOXTECH 牛牛技术客栈 Java实现常见的排序算法 - OXOXTECH 牛牛技术客栈 FreeSwitch Windows安装教程 - OXOXTECH 牛牛技术客栈 MQTT单向SSL数据加密 随性 - OXOXTECH 牛牛技术客栈 mysql报错Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggre的解决方案 Git Push项目报 push to origin/master was rejected 错误解决方案 游行记——珠海金沙滩与金湖公园之行 - OXOXTECH 牛牛技术客栈 Tomcat:解决Tomcat启动警告:"无法将资源添加到Web应用程序缓存中....请考虑增加缓存空间" 的问题 励骏庞都广场,迷一般的皇宫 - OXOXTECH 牛牛技术客栈 Docker 常用命令集合 - OXOXTECH 牛牛技术客栈 ElasticSearch Windows版-安装教程 Java去除对象中为null的字段 我和我的青春
influxDB初识,一个高效的时序数据库 - OXOXTECH 牛牛技术客栈
军阁 · 2023-07-26 · via

军阁 后端 InfluxDB, 数据库

1、什么是InfluxDB

InfluxDB是一个开源的、高性能的时序型数据库,并且在时序型数据库DB-Engines Ranking上排名第一。专门用于收集、存储、处理和可视化时间序列数据的平台。 时间序列数据是按时间顺序索引的数据点序列。数据点通常由同一来源的连续测量组成,用于跟踪随时间的变化。现在更多的企业会通过时序存储和数据分析来获得预测能力和实时决策能力,从而为客户提供更好的使用体验。这意味着底层数据平台需要发展以应对新的工作负载的挑战,以及更多的数据点、数据源、监控维度、控制策略精度更高的实时响应,对下一代时序中台提出了更高的要求

202307242114127339.webp

时间序列数据的示例包括:

  • 工业传感器数据
  • 服务器性能指标
  • 每分钟心跳数
  • 大脑的电活动
  • 降雨量测量
  • 股票价格

2、数据组织

InfluxDB 数据模型将时间序列数据组织到存储桶测量中。一个可以包含多个测量值。测量包含多个标签字段

  • bucket(存储桶):存储时间序列数据的指定位置。一个桶可以包含多个测量值。也就是类似关系型数据库中的
  • measurement(度量):时间序列数据的逻辑分组。给定测量中的所有点都应具有相同的标签。一个测量包含多个标签和字段。也就是类似关系型数据库中的
  • point(数据端点):通过测量、标签键、标签值、字段键和时间戳来标识的单个数据记录。也就是类似于关系型数据库中的
  • Tags(键值对):其值不同,但不经常更改。标签用于存储每个点的元数据
    • - 例如,用于识别数据源(如主机、位置、站点等)的东西。
  • field(字段):键值对,其值随时间变化,例如:温度、压力、股票价格等。
  • Timestamp(时间戳):与数据关联的时间戳。当存储在磁盘上并查询时,所有数据都按时间排序。

202307242142488169.webp

官方文档: https://docs.influxdata.com/influxdb/v2.7/

3、应用场景

  1. 监控和运维:InfluxDB 适用于实时监控和运维数据的存储和查询。它可以用于收集和存储服务器性能指标、网络流量、应用程序性能数据等,便于管理员和开发人员实时监控系统状态、检测异常和进行故障排查。
  2. 物联网(IoT)和传感器数据:InfluxDB 的高写入性能和优化的存储结构使其成为物联网和传感器数据的理想选择。它可以轻松处理大量传感器产生的数据,并提供快速的查询功能,用于实时数据分析和实时反馈。
  3. 实时数据分析:时序数据库适用于需要对大量实时数据进行分析和处理的场景。InfluxDB 支持数据的连续写入和高效查询,使其成为实时数据分析的有力工具,例如时序数据的图表展示、异常检测、实时报警等。
  4. 日志数据:InfluxDB 也可以用于存储和查询日志数据。它支持日志数据的时序化存储,使日志数据按照时间顺序进行组织,方便查询和分析,特别适合在分布式系统和微服务架构中处理大量的日志数据。
  5. 能源监测:时序数据库可以用于能源监测和管理,例如电力、水、气等能源的数据采集和分析。InfluxDB 可以帮助监测能源的使用情况、趋势和效率,以优化资源利用和降低能源消耗。
  6. 金融数据:在金融领域,时序数据库可以用于存储和分析金融市场的交易数据、股票价格、货币汇率等时序性数据,为金融决策和交易提供支持。
  7. 工业自动化:InfluxDB 适用于工业自动化系统中的数据采集和监测,例如工厂生产线的监控数据、设备运行状态、温度和湿度数据等。

4、与MySQL的性能对比

4.1、单线程插入查询对比

批量插入,每批1万条

202307252233134480.webp

配置:

  • CPU:16  Intel(R) Xeon(R) Silver 4110 CPU @ 2.10GHz
  • 内存:16G
  • 磁盘:4T

MySQL: V5.7

InfluxDB: V1.8.0

202307252234252338.webp

image.png

image.png

202307252235117303.webp

image.png

image.png

结论:插入速度InfluxDBMySQL的两倍,查询速度InfluxDBMySQL的45倍(查询数据量很少的情况,大约1000条左右)

4.2、分别从一亿的表中取一定量数据对比

202307252237509999.webp

202307252237586059.webp

image.png

202307252238135935.webp

结论:查询速度InfluxDBMySQL的2倍多

4.3、多个线程分别取十万条数据对比

202307252239175945.webp

image.png

结论:多线程下查询速度InfluxDBMySQL的4倍

4.4、多个线程分别插入2000万数据

image.png

结论:插入速度InfluxDB是MySQL的2倍多

4.5、小结

单线程:

  • 写入速度InfluxDBMySQL的2倍左右
  • 查询速度InfluxDBMySQL的2倍左右

多线程:

  • 写入速度InfluxDBMySQL的2.5倍左右
  • 查询速度InfluxDBMySQL的4倍左右

而写数据的瓶颈在于带宽:

20230725224251732.webp

参考文献: https://developer.aliyun.com/article/899126  感谢提供测试参考!

5、安装教程

influxDB支持MacOS、Windows、Linux、Docker等下载安装,本文提供 Docker 版的安装教程,毕竟方便哈哈😄。若需要下载其他版本可以到influxDB官方获取。

5.1、到docker hub上获取官方镜像

20230726173303445.webp

建议获取2.0版本以上的,自带监控UI。

5.2、运行 InfluxDB v 2.x

docker run运行 InfluxDB v 2.x Docker 映像。公开端口8086InfluxDB 使用该端口通过InfluxDB HTTP API进行客户端-服务器通信。

docker run --name influxdb -p 8086:8086 influxdb:2.7.0

5.3、将数据挂载到本地存储

  1. 创建一个新目录来存储数据并导航到该目录。
    1. D:/dockerMountDirectory/influxdb2
  2. 执行命令
docker run \
    --name influxdb \
    -p 8086:8086 \
    --volume D:/dockerMountDirectory/influxdb2:/var/lib/influxdb2 \
    influxdb:2.7.0

5.4、使用docker-compose构建

也可以把容器的启动信息使用docker compose构建好,下次启动只需要一行命令就可以了

新建 docker-compose.yml

version: '3'
services:

  #influxdb服务
  influxdb:
    container_name: influxdb2.7
    image: influxdb:2.7
    ports:
      - '8086:8086'
    restart: always
    volumes:
      - D:/dockerMountDirectory/influxdb2:/var/lib/influxdb2
      - D:/dockerMountDirectory/influxdb2/configs/influxdb.conf:/etc/influxdb2/influxdb.conf
    environment:
      TZ: "Asia/Shanghai"

5.5、启动

安装好后并启动,浏览器输入localhost:8086进入到管理页面

20230726175319660.webp

由于我已经创建了账户,所以就直接登录了,一般第一次进来的时候会提示你创建账号和密码,然后登录进到主页面

202307261754179505.webp

6、总结

总之,InfluxDB 具备秒级写入百万级时序数据的性能,提供高压缩比低成本存储、预降采样、多维聚合计算、可视化查询结果等功能,解决由设备采集点数量巨大、数据采集频率高造成的存储成本高、写入和查询分析效率低的问题。