IoTDB 时间序列数据库添加福利群:解决AI开发者的「MCP实战痛点」IoTDB(物联网数据库)是一个用于时间序列数据的数据管理系统,为用户提供数据采集、存储和分析等特定服务。由于其轻量级结构、高性能和可用性,以及与 Hadoop 和 Spark 生态系统的无缝集成,IoTDB 能够满足工业物联网领域中海量数据存储、高吞吐量数据输入和复杂数据分析的需求。
IoTDB 依赖于 TsFile,这是一个为时间序列数据设计的列式存储文件格式。TsFile 项目的 iotdb 分支用于为 IoTDB 项目部署 SNAPSHOT 版本。
IoTDB 的主要特性如下:
有关 IoTDB 的最新信息,请访问 IoTDB 官方网站。如果您在使用 IoTDB 时遇到任何问题或发现任何错误,请在 Jira 中报告问题。
本简短指南将带您了解使用 IoTDB 的基本过程。更详细的介绍,请访问我们网站的 用户指南。
要使用 IoTDB,您需要具备:
# Linux > sudo sysctl -w net.core.somaxconn=65535 # FreeBSD 或 Darwin > sudo sysctl -w kern.ipc.somaxconn=65535
(本指南基于 Ubuntu 22.04 的安装。)
确保 Git 已安装,如果缺少,可以通过以下方式安装:
sudo apt install git
确保 Java 已安装,如果缺少,可以通过以下方式安装:
sudo apt install default-jdk
sudo apt install flex
sudo apt install bison
sudo apt install libboost-all-dev
通常 OpenSSL 已经安装,但缺少我们编译所需的头文件。 因此,请确保已安装这些头文件:
sudo apt install libssl-dev
首先确保 git 正常工作。
通常在新 Mac 上,只要您在 Terminal 窗口中输入 git,就会弹出一个窗口,询问您是否要完成安装 Mac 开发者工具。
只需选择“是”。
完成后,您就可以自由使用 git 了。
然后安装 Homebrew - 如果尚未安装,因为我们将使用 Homebrew 安装所有内容。
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
完成后安装 Java,如果尚未安装:
brew install java
根据您的 Homebrew 版本,它会告诉您执行以下操作之一(取决于您设备中的处理器类型)。
主要在基于 Intel 的型号上:
sudo ln -sfn /usr/local/opt/openjdk/libexec/openjdk.jdk /Library/Java/JavaVirtualMachines/openjdk.jdk
主要在基于 ARM 的型号上:
sudo ln -sfn /opt/homebrew/opt/openjdk/libexec/openjdk.jdk /Library/Java/JavaVirtualMachines/openjdk.jdk
构建 Thrift 需要我们在图中添加两个依赖项。
但这仅在启用 with-cpp 配置文件时需要:
brew install boost
brew install bison
brew install openssl
然后安装 Chocolatey - 如果尚未安装,因为我们将使用 Chocolatey 安装所有内容。
https://chocolatey.org/install
choco install git.install
choco install openjdk
choco install visualstudio2022community
choco install visualstudio2022buildtools
choco install visualstudio2022-workload-nativedesktop
choco install winflexbison
choco install boost-msvc-14.2
choco install openssl
IoTDB 提供了三种安装方法,您可以参考以下建议,选择最适合您的方法:
在快速开始中,我们简要介绍了如何使用源代码安装 IoTDB。更多信息,请参阅 用户指南。
如果您使用的是 Windows,请跳过本章节。
由于我们在 RPC 模块(通信和协议定义)中使用 Thrift,因此在编译过程中涉及 Thrift,因此需要 Thrift 编译器 0.13.0(或更高版本)来生成 Thrift Java 代码。Thrift 官方提供了 Windows 的二进制编译器,但不幸的是,他们没有为 Unix 操作系统提供。
如果您有权限安装新软件,请使用 apt install 或 yum install 或 brew install 来安装 Thrift 编译器。(如果您已经安装了 Thrift 编译器,请跳过此步骤。)然后,您可以在运行 Maven 时添加以下参数:-Dthrift.download-url=http://apache.org/licenses/LICENSE-2.0.txt -Dthrift.exec.absolute.path=<您的本地 Thrift 二进制文件>。
如果没有,那么您必须编译 Thrift 编译器,这需要您首先安装一个 boost 库。 因此,我们自己编译了一个 Unix 编译器并将其放在 GitHub 上,借助 Maven 插件,它将在编译过程中自动下载。 此编译器适用于 gcc8 或更高版本、Ubuntu、MacOS 和 CentOS,但早期版本和其他操作系统不保证。
如果由于网络问题无法自动下载 Thrift 编译器,您可以自己下载,然后:
将您的 Thrift 文件重命名为 {project_root}\thrift\target\tools\thrift_0.12.0_0.13.0_linux.exe;
或者,添加 Maven 命令:
-Dthrift.download-url=http://apache.org/licenses/LICENSE-2.0.txt -Dthrift.exec.absolute.path=<您的本地 Thrift 二进制文件>。
您可以从以下网址下载源代码:
git clone https://github.com/apache/iotdb.git
默认的开发分支是 master 分支,如果您想使用发布的版本 x.x.x:
git checkout vx.x.x
或者检出到某个大版本的分支,例如 1.0 的分支是 rel/1.0。
git checkout rel/x.x
在 iotdb 的根路径下:
> mvn clean package -pl distribution -am -DskipTests
构建完成后,IoTDB 发行版位于文件夹:"distribution/target"。
在 iotdb/iotdb-client 路径下:
> mvn clean package -pl cli -am -DskipTests
构建完成后,IoTDB cli 位于文件夹 "cli/target"。
使用 -P with-cpp 编译 cpp 客户端。(更多详情,请阅读 client-cpp 的 Readme 文件。)
注意:目录 "thrift/target/generated-sources/thrift"、"thrift-sync/target/generated-sources/thrift"、"thrift-cluster/target/generated-sources/thrift"、"thrift-influxdb/target/generated-sources/thrift" 和 "antlr/target/generated-sources/antlr4" 需要添加到源根目录,以避免 IDE 中的编译错误。
在 IDEA 中,您只需在成功运行 mvn package 后,右键单击根项目名称并选择 "Maven->Reload Project"。
配置文件位于 "conf" 文件夹下。
datanode-env.bat、datanode-env.sh),iotdb-datanode.properties)logback.xml)。更多信息,请参阅 配置手册。
您可以通过以下步骤测试安装。如果执行后没有返回错误,则安装完成。
用户可以通过 sbin 文件夹下的 start-standalone 脚本启动 1C1D IoTDB。
# Unix/OS X > sbin/start-standalone.sh # Windows > sbin\start-standalone.bat
IoTDB 提供了多种与服务器交互的方式,这里我们介绍使用 Cli 工具插入和查询数据的基本步骤。
安装 IoTDB 后,有一个默认用户 'root',其默认密码也是 'root'。用户可以使用此默认用户登录 Cli 以使用 IoTDB。Cli 的启动脚本是 sbin 文件夹中的 start-cli 脚本。执行脚本时,用户应指定 IP、PORT、USER_NAME 和 PASSWORD。默认参数为 "-h 127.0.0.1 -p 6667 -u root -pw -root"。
以下是启动 Cli 的命令:
# Unix/OS X > sbin/start-cli.sh -h 127.0.0.1 -p 6667 -u root -pw root # Windows > sbin\start-cli.bat -h 127.0.0.1 -p 6667 -u root -pw root
命令行 cli 是交互式的,因此如果一切准备就绪,您应该会看到欢迎标志和语句:
_____ _________ ______ ______ |_ _| | _ _ ||_ _ `.|_ _ \ | | .--.|_/ | | \_| | | `. \ | |_) | | | / .'`\ \ | | | | | | | __'. _| |_| \__. | _| |_ _| |_.' /_| |__) | |_____|'.__.' |_____| |______.'|_______/ version x.x.x IoTDB> login successfully IoTDB>
现在,让我们介绍创建时间序列、插入数据和查询数据的方式。
IoTDB 中的数据以时间序列的形式组织。每个时间序列包括多个数据-时间对,并由一个数据库拥有。在定义时间序列之前,我们应首先使用 CREATE DATABASE 定义一个数据库,以下是一个示例:
IoTDB> CREATE DATABASE root.ln
我们还可以使用 SHOW DATABASES 检查已创建的数据库:
IoTDB> SHOW DATABASES +-------------+ | Database| +-------------+ | root.ln| +-------------+ Total line number = 1
设置数据库后,我们可以使用 CREATE TIMESERIES 创建新的时间序列。在创建时间序列时,我们应定义其数据类型和编码方案。这里我们创建两个时间序列:
IoTDB> CREATE TIMESERIES root.ln.wf01.wt01.status WITH DATATYPE=BOOLEAN, ENCODING=PLAIN IoTDB> CREATE TIMESERIES root.ln.wf01.wt01.temperature WITH DATATYPE=FLOAT, ENCODING=RLE
为了查询特定的时间序列,我们可以使用 SHOW TIMESERIES
IoTDB> SHOW TIMESERIES +-----------------------------+-----+-------------+--------+--------+-----------+----+----------+ | Timeseries|Alias|Database|DataType|Encoding|Compression|Tags|Attributes| +-----------------------------+-----+-------------+--------+--------+-----------+----+----------+ |root.ln.wf01.wt01.temperature| null| root.ln| FLOAT| RLE| SNAPPY|null| null| | root.ln.wf01.wt01.status| null| root.ln| BOOLEAN| PLAIN| SNAPPY|null| null| +-----------------------------+-----+-------------+--------+--------+-----------+----+----------+ Total line number = 2
IoTDB> SHOW TIMESERIES root.ln.wf01.wt01.status +------------------------+-----+-------------+--------+--------+-----------+----+----------+ | timeseries|alias|database|dataType|encoding|compression|tags|attributes| +------------------------+-----+-------------+--------+--------+-----------+----+----------+ |root.ln.wf01.wt01.status| null| root.ln| BOOLEAN| PLAIN| SNAPPY|null| null| +------------------------+-----+-------------+--------+--------+-----------+----+----------+ 总行数 = 1
插入时间序列数据是IoTDB的基本操作,您可以使用 ‘INSERT’ 命令完成此操作。在插入之前,您应该分配时间戳和后缀路径名:
IoTDB> INSERT INTO root.ln.wf01.wt01(timestamp,status) values(100,true); IoTDB> INSERT INTO root.ln.wf01.wt01(timestamp,status,temperature) values(200,false,20.71)
您刚刚插入的数据将显示如下:
IoTDB> SELECT status FROM root.ln.wf01.wt01 +------------------------+------------------------+ | Time|root.ln.wf01.wt01.status| +------------------------+------------------------+ |1970-01-01T00:00:00.100Z| true| |1970-01-01T00:00:00.200Z| false| +------------------------+------------------------+ 总行数 = 2
您也可以使用一条SQL语句查询多个时间序列数据:
IoTDB> SELECT * FROM root.ln.wf01.wt01 +------------------------+-----------------------------+------------------------+ | Time|root.ln.wf01.wt01.temperature|root.ln.wf01.wt01.status| +------------------------+-----------------------------+------------------------+ |1970-01-01T00:00:00.100Z| null| true| |1970-01-01T00:00:00.200Z| 20.71| false| +------------------------+-----------------------------+------------------------+ 总行数 = 2
在Cli中更改时区,可以使用以下SQL语句:
IoTDB> SET time_zone=+08:00 时区已设置为 +08:00 IoTDB> SHOW time_zone 当前时区:Asia/Shanghai
添加后,查询结果将使用新的时区显示。
IoTDB> SELECT * FROM root.ln.wf01.wt01 +-----------------------------+-----------------------------+------------------------+ | Time|root.ln.wf01.wt01.temperature|root.ln.wf01.wt01.status| +-----------------------------+-----------------------------+------------------------+ |1970-01-01T08:00:00.100+08:00| null| true| |1970-01-01T08:00:00.200+08:00| 20.71| false| +-----------------------------+-----------------------------+------------------------+ 总行数 = 2
退出Cli的命令是:
IoTDB> quit 或 IoTDB> exit
有关IoTDB SQL支持的命令的更多信息,请参见用户指南。
可以使用“ctrl-C”或以下脚本停止服务器:
# Unix/OS X > sbin/stop-standalone.sh # Windows > sbin\stop-standalone.bat
联系我们
apache_iotdb,我们将邀请您加入群组。更多信息请查看 加入社区!