关注

Apache IoTDB C++ 原生接口完整指南:依赖安装、编译与接口实战

在这里插入图片描述在这里插入图片描述

Apache IoTDB C++ 原生接口完整指南:依赖安装、编译与接口实战

在这里插入图片描述

1. 依赖

IoTDB C++ 客户端编译与运行依赖如下基础环境:

  • Java 8+
  • Flex
  • Bison 2.7+
  • Boost 1.56+
  • OpenSSL 1.0+
  • GCC 4.8.5+

2. 安装

2.1 安装相关依赖

Mac
# 安装 Bison
brew install bison
# 安装 Boost
brew install boost

OpenSSL 默认路径:/usr/local/opt/openssl/include,编译报错可指定 -Dopenssl.include.dir=""

Ubuntu 16.04+ / Debian
sudo apt-get update
sudo apt-get install gcc g++ bison flex libboost-all-dev libssl-dev
CentOS 7.7+ / Fedora / Rocky Linux
sudo yum update
sudo yum install gcc gcc-c++ boost-devel bison flex openssl-devel
Windows
  1. 安装 Visual Studio 2019+,勾选 C/C++ IDE 与编译器
  2. 安装 CMake
  3. 安装 Win_Flex_Bison,重命名为 flex.exe/bison.exe 并加入 PATH
  4. 编译安装 Boost,将目录加入 PATH
  5. 安装 OpenSSL,将 include 目录加入 PATH

2.2 执行编译

  1. 克隆源码
git clone https://github.com/apache/iotdb.git
# 切换版本(示例:2.0.6)
git checkout rc/2.0.6

注意:请勿使用高版本客户端连接低版本服务。

  1. 按系统执行编译
  • Mac / Linux glibc ≥ 2.32
./mvnw clean package -pl example/client-cpp-example -am -DskipTests -P with-cpp
  • Linux glibc ≥ 2.31
./mvnw clean package -pl example/client-cpp-example -am -DskipTests -P with-cpp -Diotdb-tools-thrift.version=0.14.1.1-old-glibc-SNAPSHOT
  • Linux glibc ≥ 2.23
./mvnw clean package -pl example/client-cpp-example -am -DskipTests -P with-cpp -Diotdb-tools-thrift.version=0.14.1.1-glibc223-SNAPSHOT
  • Linux glibc ≥ 2.17
./mvnw clean package -pl example/client-cpp-example -am -DskipTests -P with-cpp -Diotdb-tools-thrift.version=0.14.1.1-gcc4-SNAPSHOT
  • Windows VS 2022
.\mvnw.cmd clean package -pl example/client-cpp-example -am -DskipTests -P with-cpp
  • Windows VS 2019
.\mvnw.cmd clean package -pl example/client-cpp-example -am -DskipTests -P with-cpp -Dcmake.generator="Visual Studio 16 2019" -Diotdb-tools-thrift.version=0.14.1.1-msvc142-SNAPSHOT

编译产物路径:

  • 库文件:iotdb-client/client-cpp/target
  • 示例程序:example/client-cpp-example/target

2.3 编译 Q&A

  • Linux 环境要求
    • x86_64:glibc ≥ 2.17、GCC ≥ 5.5
    • ARM:glibc ≥ 2.31、GCC ≥ 10.2
      不满足可自行编译 Thrift 再重新编译客户端。
  • undefined reference to ‘_libc_sinle_thread’
    编译命令添加对应低 glibc 版本参数。
  • Windows 使用 VS 2017 及更早版本
    自行编译 Thrift 后,指定 VS 2017 编译器编译。

3. 基本接口说明

3.1 初始化

// 开启 Session
void open();
// 开启 Session 并设置 RPC 压缩
void open(bool enableRPCCompression);
// 关闭 Session
void close();

注意:客户端与服务端 RPC 压缩状态必须一致。

3.2 数据定义接口(DDL)

数据库(存储组)管理
  • 设置存储组:setStorageGroup
  • 删除存储组:deleteStorageGroup/deleteStorageGroups
时间序列管理
  • 创建单条/多条时序:createTimeseries/createMultiTimeseries
  • 创建对齐时序:createAlignedTimeseries
  • 删除时序:deleteTimeseries
  • 检查时序是否存在:checkTimeseriesExists
元数据模板
  • 创建/挂载/卸载模板:createSchemaTemplatesetSchemaTemplateunsetSchemaTemplate
  • 增删模板物理量:addAlignedMeasurementsInTemplateaddUnalignedMeasurementsInTemplatedeleteNodeInTemplate
  • 查询模板信息:countMeasurementsInTemplateisMeasurementInTemplateshowMeasurementsInTemplate

3.3 数据操作接口(DML)

数据写入
  • Tablet 批量写入(推荐,性能更高):insertTabletinsertTablets
  • Record 单行/批量写入:insertRecordinsertRecordsinsertRecordsOfOneDevice
  • 对齐时序专属写入:insertAlignedRecordinsertAlignedTablet
数据删除
void deleteData(const std::string &path, int64_t endTime);
void deleteData(const std::vector<std::string> &paths, int64_t startTime, int64_t endTime);

3.4 IoTDB-SQL 接口

  • 执行查询:executeQueryStatement,返回 SessionDataSet 用于遍历结果
  • 执行非查询 SQL:executeNonQueryStatement

4. 示例代码

示例源码路径:

  • example/client-cpp-example/src/SessionExample.cpp
  • example/client-cpp-example/src/AlignedTimeseriesSessionExample.cpp(对齐时序)

5. FAQ

5.1 Thrift 编译相关问题

  • Mac:Xcode commandline 版本 12 报错可降级至 11.5
  • Windows:清理 .m2\repository\.cache 或在插件中配置 <skipCache>true</skipCache>

文章总结

本文全面介绍 Apache IoTDB C++ 原生接口的使用流程,先明确依赖环境,再给出 Mac、Linux、Windows 三大平台的依赖安装与 Maven 编译命令,并针对常见编译异常提供解决方案。接着详细讲解 Session 初始化、DDL 元数据管理、DML 数据读写、SQL 执行等核心接口用法,说明 Tablet 批量写入的性能优势与对齐时序专用接口。最后提供官方示例代码与 Thrift 编译问题处理方案,帮助 C++ 开发者快速完成 IoTDB 时序数据库的接入、编译、开发与调试,降低跨平台集成门槛。

🌐 附:IoTDB的各大版本

📄 Apache IoTDB 是一款工业物联网时序数据库管理系统,采用端边云协同的轻量化架构,支持一体化的物联网时序数据收集、存储、管理与分析 ,具有多协议兼容、超高压缩比、高通量读写、工业级稳定、极简运维等特点。

版本IoTDB 二进制包IoTDB 源代码发布说明
2.0.5- All-in-one
- AINode
- SHA512
- ASC
- 源代码
- SHA512
- ASC
release notes
1.3.5- All-in-one
- AINode
- SHA512
- ASC
- 源代码
- SHA512
- ASC
release notes
0.13.4- All-in-one
- Grafana 连接器
- Grafana 插件
- SHA512
- ASC
- 源代码
- SHA512
- ASC
release notes

✨ 目前最新版本为2.0.7,去获取:https://archive.apache.org/dist/iotdb/

联系博主

    xcLeigh 博主全栈领域优质创作者,博客专家,目前,活跃在CSDN、微信公众号、小红书、知乎、掘金、快手、思否、微博、51CTO、B站、腾讯云开发者社区、阿里云开发者社区等平台,全网拥有几十万的粉丝,全网统一IP为 xcLeigh。希望通过我的分享,让大家能在喜悦的情况下收获到有用的知识。主要分享编程、开发工具、算法、技术学习心得等内容。很多读者评价他的文章简洁易懂,尤其对于一些复杂的技术话题,他能通过通俗的语言来解释,帮助初学者更好地理解。博客通常也会涉及一些实践经验,项目分享以及解决实际开发中遇到的问题。如果你是开发领域的初学者,或者在学习一些新的编程语言或框架,关注他的文章对你有很大帮助。

    亲爱的朋友,无论前路如何漫长与崎岖,都请怀揣梦想的火种,因为在生活的广袤星空中,总有一颗属于你的璀璨星辰在熠熠生辉,静候你抵达。

     愿你在这纷繁世间,能时常收获微小而确定的幸福,如春日微风轻拂面庞,所有的疲惫与烦恼都能被温柔以待,内心永远充盈着安宁与慰藉。

    至此,文章已至尾声,而您的故事仍在续写,不知您对文中所叙有何独特见解?期待您在心中与我对话,开启思想的新交流。


     💞 关注博主 🌀 带你实现畅游前后端!

     🏰 大屏可视化 🌀 带你体验酷炫大屏!

     💯 神秘个人简介 🌀 带你体验不一样得介绍!

     🥇 从零到一学习Python 🌀 带你玩转Python技术流!

     🏆 前沿应用深度测评 🌀 前沿AI产品热门应用在线等你来发掘!

     💦 :本文撰写于CSDN平台,作者:xcLeigh所有权归作者所有)https://xcleigh.blog.csdn.net/,如果相关下载没有跳转,请查看这个地址,相关链接没有跳转,皆是抄袭本文,转载请备注本文原地址。


在这里插入图片描述

     📣 亲,码字不易,动动小手,欢迎 点赞 ➕ 收藏,如 🈶 问题请留言(或者关注下方公众号,看见后第一时间回复,还有海量编程资料等你来领!),博主看见后一定及时给您答复 💌💌💌

转载自CSDN-专业IT技术社区

原文链接:https://blog.csdn.net/weixin_43151418/article/details/159728217

评论

赞0

评论列表

微信小程序
QQ小程序

关于作者

点赞数:0
关注数:0
粉丝:0
文章:0
关注标签:0
加入于:--