QT操作 influxdb时序数据库(libcur)

2023-05-16

概述:

  最近在项目中需要用到influxdb 数据库,当时使用了libcur库之后,插入数据的速度一直不太理想。 创建字表的速度 1W的话需要11Min,对于这样的时间完全达不到合格。经过研究进行了打包处理。

QT Creator的版5.12.10
系统 win10 64
libcur版本7_82_0

下面代码的这部分主要是用来在测试时,根据需要调整多线程的处理。

#include <iostream>
#include "InfluxDBFactory.h"
#include "Point.h"
#include <QString>
#include <iostream>
#include <QDebug>
#include <QDateTime>
#include <QThread>
#include <QThreadPool>
#include <QVector>
#include <QMutexLocker>
#include <QProcess>
#include "qtconcurrentrun.h"
//#include "unistd.h"
#include <curl/curl.h>
using namespace QtConcurrent;
using namespace influxdb;
const int nSheet = 10000;
static int nThreadCount = 1;

void functionRun(int begin , int end);
int main()
{
    CURLcode globalInitResult = curl_global_init(CURL_GLOBAL_ALL);
    if (globalInitResult != CURLE_OK) {
        throw std::runtime_error(std::string("cURL init") + curl_easy_strerror(globalInitResult));
    }
    int pathc = nSheet / nThreadCount; // 每次的批数
    for(int iIndex = 0; iIndex <=nThreadCount; iIndex ++) //线程的数量
    {
        int begin = iIndex *pathc;
        int end = 0;
        if((nSheet - begin) <= 0)
        {
            break;
        }

        if((nSheet - begin) > pathc )
        {
            end = begin + pathc;
        }
        else
        {
            end = nSheet;
        }
        if( iIndex == 0)
        {

            QString starttime = QDateTime::currentDateTime().toString("yyyy-MM-dd hh:mm:ss");
            qDebug()<<" the software start run, the time is " << starttime;
        }
        QFuture<void> fut1 = run(functionRun, begin,end);//线程的方式有问题
        QThread::msleep(2);
    }
    getchar();
}

 线程函数,主要是在此函数中进行influxdb的操作。

void functionRun(int begin, int end)
{
    std::string strSend = "";
    auto influxdb1 = influxdb::InfluxDBFactory::Get("http://wtw:123456@localhost:8086/?db=base");
    QString strDatetime = QDateTime::currentDateTime().toString("yyyy-MM-dd hh:mm:ss");
    qDebug() << "begin is "  << begin << " the end is " << end << " the start time is " << strDatetime;
    {
        for( int iIndex =  begin; iIndex < end; iIndex ++)
        {
            QString strSheetName = "";
            strSheetName.sprintf("sheet_%05d", iIndex );
            QString tag1 = QString("%1%2").arg("localhost").arg(iIndex);
            QString tag2 = QString("%1%2").arg("china").arg(iIndex);
            strSend += Point{ strSheetName.toStdString().c_str()}
                           //.addTag("idcode",tag1.toStdString().c_str())
                           .addField("value", tag2.toStdString().c_str()).toLineProtocol();
//                           .addTag("host", "localhost")
//                           .addTag("region", "china")
//                           .addField("north_latitude", iIndex)
//                           .addField("east_longitude", iIndex).toLineProtocol();

            strSend += '\n';
        }
       influxdb1->writeMulString(strSend.c_str());
    }
    QString strDatetimeE = QDateTime::currentDateTime().toString("yyyy-MM-dd hh:mm:ss");
    qDebug() << "begin is "  << begin << " the end is " << end << " the end time is " << strDatetimeE;
}

 经过调整该程序, 建表的操作10W的操作只需要4s,如果有需要该代码已经上传到。资源地址

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

QT操作 influxdb时序数据库(libcur) 的相关文章

  • InfluxDB和IotDB介绍与性能对比

    InfluxDB简介 InfluxDB 是用Go语言编写的一个开源分布式时序 事件和指标数据库 xff0c 无需外部依赖 用于存储和分析时间序列数据的开源数据库 适合存储设备性能 日志 物联网传感器等带时间戳的数据 其设计目标是实现分布式和
  • 时序数据库-4-[IoTDB]的python3操作

    从采集到存储 xff1a 时序数据库到底怎么处理时间 xff1f iotdb官方文档手册 1 容器安装iotdb 可以使用docker volume create命令创建 docker 卷 此命令将在 var lib docker volu
  • IDEA中TDengine数据库连接

    过程描述 首先配置数据库连接信息 下载驱动jar包 配置驱动 Maven Repository com taosdata jdbc taos jdbcdriver mvnrepository com 下载 TDengine Client 安
  • 时序数据库 TimescaleDB 基础概念

    时序数据在许多领域中具有广泛的应用 例如金融市场分析 气象预测 交通流量监测 生产过程监控等 时序数据通常是大规模的 高维度的 需要实时计算和分析 针对时序数据的特点与其所带来的挑战 针对时序数据处理所面临的挑战 通用数据库处理大规模数据效
  • TDengine安装使用

    引言 近期 听说了时序数据库TDengine 本人的好奇心又出来了 同是时序数据库的InfluxDB不也挺好的嘛 通过一些网上的资料以及些简单的实际操作 本人得出的结论是 数据量少时 InfluxDB的性能好些 当数据量越来越大之后 TDe
  • 在openEuler平台构建带timescaledbV2时序数据库插件的PostgreSqlV14.5容器

    在openEuler平台部署特定版本的PostgreSql在安装包收集上存在较大难题 本次需求为制作zabbix系统所需的timescaledbV2插件的PostgreSqlV14 5数据库 在评估多种方案后 采用了基于CentOS底包制作
  • 【MATLAB第11期】#源码分享

    MATLAB第11期 源码分享 时间序列数据绘图 横坐标更改为时间轴 横坐标轴参数更改 绘图问题解决方案 1 导入数据方式 识别时间数据 2 案例展示 1 打开数据 2 定义时间和数据 3 将时间数据转化为数值 4 绘图 绘图问题解决方案
  • Python绘制时序图、自相关图和偏自相关图。

    import pandas as pd import matplotlib pyplot as plt import seaborn as sns import statsmodels api as sm sns set theme 设置风
  • Influxdb 1.2版本优化之旅(经验证,适用于influxdb1.4版本)

    一 常见异常 1 max series per database exceeded 异常 err max series per database exceeded java lang RuntimeException error max s
  • DolphinDB 机器学习在物联网行业的应用:实时数据异常率预警

    数据异常率预警在工业安全生产中是一项重要工作 对于监控生产过程的稳定性 保障生产数据的有效性 维护生产设备的可靠性具有重要意义 随着大数据技术在生产领域的深入应用 基于机器学习的智能预警已经成为各大生产企业进行生产数据异常率预警的一种有效解
  • 【MATLAB第19期】基于贝叶斯Bayes算法优化CNN-LSTM长短期记忆网络的单列时间序列模型及多输入单输出回归预测模型

    基于贝叶斯Bayes算法优化CNN LSTM长短期记忆网络的单列时间序列模型及多输入单输出回归预测模型 前言 前面在 MATLAB第8期 讲解了基于贝叶斯Bayes算法优化LSTM长短期记忆网络的时间序列预测模型 即单输入数据时间序列预测
  • 使用 CURL 在 InfluxDB 中插入行

    我有以下由 C 完成的 POST 请求 POST http 192 168 123 27 8086 write db HWDB HTTP 1 1 Content Type text plain charset utf 8 Host 192
  • 带有 Influxdb 的 Grafana 世界地图面板不显示点

    我安装了 Grafana 的世界地图面板 但无法在世界地图面板上显示点 我在看Grafana 世界地图 表数据源和其他链接但没有找到答案 我尝试使用country json 添加截屏我的声誉没有 10 所以我无法添加超过 2 个链接 我也尝
  • 从 MySQL 到 DolphinDB,Debezium + Kafka 数据同步实战

    Debezium 是一个开源的分布式平台 用于实时捕获和发布数据库更改事件 它可以将关系型数据库 如 MySQL PostgreSQL Oracle 等 的变更事件转化为可观察的流数据 以供其他应用程序实时消费和处理 本文中我们将采用 De
  • 计算 InfluxDB 中开始和结束事件之间的持续时间

    我对 InfluxDB 有两个写入点 一个是开始 另一个是结束 我只需要确定这两个事件之间的持续时间 并围绕它进行查询 InfluxDB有difference 聚合方法 但它不适用于时间元字段 提供自定义时间戳值是实现此目的的唯一方法吗 A
  • 更新与 InfluxDB 中的条件匹配的多个字段值

    在InfluxDB测量中 如何更新与查询匹配的点的字段值 这还是吗从 v1 6 开始不容易实现 https github com influxdata influxdb issues 2575 正如 GitHub 票证中的示例所建议的 实现
  • InfluxDB学习笔记

    本博客是我在学习InfluxDB的时候 记录的笔记 大家可以看看参考学些 简介 简述 InfluxDB是一个由InfluxData开发的开源时序型数据 它由Go写成 着力于高性能查询与存储时序型数据 InfluxDB被广泛应用于存储系统的监
  • 用千分尺查询数据

    我们有这个奇特的监控系统 我们的 spring boot 服务通过千分尺将指标发布到流入数据库 有一个不错的 grafana 前端 但问题是我们现在处于这样一个阶段 我们必须在其他服务中提供其中一些指标来进行推理 整个体系是我的前任建立的
  • influxdb python:找不到 404 页面

    我正在尝试使用我找到的 influxdb python 库here https github com influxdata influxdb python 但我什至无法让教程程序运行 当我运行以下示例代码时 python gt gt gt
  • 查询 influxdb 的日期

    我在 influxdb 中有一个表 其中有一列名为 expirydate 在专栏中我有一些日期 例如 2016 07 14 或 2016 08 20 我只想选择 2016 07 14 日期 但我不确定如何 目前我的查询是 SELECT FR

随机推荐

  • Java异常机制

    Java异常 xff08 Exception xff09 又称例外 xff0c 是一种运行时错误 Java异常机制就是对于Java异常的处理方法 xff0c 使用Java异常机制能提升程序的容错性 xff0c 从而使程序更加健壮与安全 ja
  • Java序列化与反序列化

    Java序列化与反序列化是什么 xff1f 为什么需要序列化与反序列化 xff1f 如何实现Java序列化与反序列化 xff1f 本文围绕这些问题进行了探讨 1 Java序列化与反序列化 Java序列化是指把Java对象转换为字节序列的过程
  • Java语言中几个常用的包

    Java采用包结构来组织和管理类和接口文件 本文介绍Java语言类库中几个常用的包 xff0c 因为这几个包在软件开发与应用中经常需要用到 xff0c 其中有些包是必要的 若是离开它 xff0c 还真不能做事情了 第一个包 xff1a ja
  • 计算机网络

    Cname和A记录 CNAME和A记录 A记录 Address记录 xff0c 代表指向关系 www xx com 1 1 1 1 www yy com 2 2 2 2 CNAME cname 代表一种映射关系 www yy com www
  • AI芯片面试总结

    基础书籍有哪些 xff1f 重点章节以及概念 xff1f 计算机体系结构 量化研究方法 xff1b 计算机组成与设计 软硬件接口 xff1b deep learning 深度学习 xff1b python xff1b CMOS数字集成电路
  • Android的系统架构

    Android的系统架构采用了分层架构的思想 xff0c 如图1所示 从上层到底层共包括四层 xff0c 分别是应用程序程序层 应用框架层 系统库和Android运行时和Linux内核 图1 xff1a Android系统架构图 每层功能简
  • ensp实验一网络设备基本操作

    实验一 网络设备基本操作 一 实验目的 熟悉网络设备的基本配置 xff1b 掌握网络设备文件系统管理 xff1b 掌握设备的基本调试方法 二 实验学时及环境 1 实验学时 xff1a 2 2 操作系统 xff1a Windows 3 模拟环
  • sudo rosdep init出错 rosdepc update的解决方案

    https mp weixin qq com s VGs8oWdhHH6XsHcx21lN4Q 或者搜索 本文之后 xff0c 世上再无rosdep更新失败问题 xff01 如果有 小鱼就
  • pixhawk学习笔记---创建新的应用程序

    最近转到无人机领域的开发中 xff0c 感觉和以往搞android驱动差别比较大 xff0c 以前搞android驱动的时候网上的资料满天飞 xff0c 但是现在关于飞控相关的资料却少之又少 xff0c 一些资料都是从原理上入手 xff0c
  • 伽马贝塔函数

    在数理方程 概率论等学科经常遇到以下的含参变量的积分 xff0c 它们依次为第一类和第二类欧拉 xff08 Euler 1707 1783瑞士数学家 xff09 积分 xff0c 或依次称为贝塔 xff08 Bata xff09 函数和伽马
  • http-parser用法

    头文件说明 xff1a 解析类型定义 xff1a enum http parser type HTTP REQUEST HTTP RESPONSE HTTP BOTH 解析函数声明 xff1a void http parser init h
  • gazebo崩溃

    1 虚拟机下打开gazebo报错 xff1a VMware vmw ioctl command error Invalid argument INFO 1610283240 619937255 0 180000000 LeePosition
  • k8s中文网站

    https www kubernetes org cn doc 11
  • 【平衡车】PID控制原理到底如何理解?建议收藏!

    文章目录 前言PID算法PID算法的形成P算法 xff0c 即比例控制算法 I算法 xff0c 即积分控制算法D算法 xff0c 即微分控制算法PID总体的数学模型 xff1a 基于单片机的PID控制算法 xff1a 单片机中的PID算法的
  • 嵌入式C语言修炼之道.屏幕操作篇

    汉字处理 现在要解决的问题是 xff0c 嵌入式系统中经常要使用的并非是完整的汉字库 xff0c 往往只是需要提供数量有限的汉字供必要的显示功能 例如 xff0c 一个微波炉的LCD上没有必要提供显示 34 电子邮件 34 的功能 xff1
  • CDN—内容分发网络

    CDN 1 含义 CDN的全称是Content Delivery Network xff0c 即内容分发网络 CDN是构建在现有网络基础之上的智能虚拟网络 xff0c 依靠部署在各地的边缘服务器 xff0c 通过中心平台的负载均衡 内容分发
  • BeautifulSoup

    代码 xff1a from bs4 import BeautifulSoup 一个html格式的内容 doc 61 39 lt html gt lt head gt lt title gt Page title lt title gt lt
  • Ubuntu Server 22.04.1配置(配置root账号、设置固定IP、更改SSH端口、配置UFW、VM扩展磁盘后Ubuntu的扩容)

    为了能快速的创建虚拟机 xff0c 通过VM创建了一个2核CPU 4G内存 40G硬盘 xff0c 安装Ubuntu Server 22 04 1的虚拟机 xff0c 以便在需要的时候随时克隆一个新的虚拟机出来 在新的虚拟机克隆出来后可能会
  • 使用ado连接orical数据库

    使用ADO连接数据库有三种方法 xff1b 方案1 安装Orical数据库软件比方说说oracle 11g R2 32位软件 这里有一个需要注意的地方就是如果你编译的是win32如下图 xff0c 那么就必须要使用32位的数据库软件 其实在
  • QT操作 influxdb时序数据库(libcur)

    概述 最近在项目中需要用到influxdb 数据库 xff0c 当时使用了libcur库之后 xff0c 插入数据的速度一直不太理想 创建字表的速度 1W的话需要11Min xff0c 对于这样的时间完全达不到合格 经过研究进行了打包处理