英语 | 中文
IoTDB(Internet of Things Database)是时序数据的数据管理系统,为用户提供特定的服务,包括数据采集、存储和分析。 IoTDB凭借其轻量级结构、高性能和易用性,以及与Hadoop和Spark生态系统的无缝集成,满足了工业物联网领域海量数据存储、高吞吐量数据输入和复杂数据分析的需求。
点击了解更多信息
IoTDB依赖于TsFile,TsFile是一种专为时间序列数据设计的列式存储文件格式。 TsFile项目的iotdb
分支用于为IoTDB项目部署SNAPSHOT版本。
IoTDB的主要特点如下:
有关IoTDB的最新信息,请访问IoTDB官方网站。如果您在使用 IoTDB 时遇到任何问题或发现任何错误,请在 Jira 中报告问题。
本简短指南将引导您完成使用 IoTDB 的基本过程。如需更详细的介绍,请访问我们网站的用户指南。
要使用 IoTDB,您需要:
# Linux
> sudo sysctl -w net.core.somaxconn=65535
# FreeBSD or 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,请跳过本章。
由于我们使用 Thrift 进行 RPC 模块(通信和协议定义),因此在编译过程中会涉及 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=<YOUR LOCAL THRIFT BINARY FILE>
。
如果没有,那么你必须编译thrift编译器,它需要你先安装boost库。因此,我们自己编译了一个Unix编译器并将其放到GitHub上,并借助maven插件,在编译时会自动下载。该编译器在 gcc8 或更高版本、Ubuntu MacOS 和 CentOS 上运行良好,但不保证以前的版本和其他操作系统。
如果由于网络问题无法自动下载thrift编译器,您可以自行下载,然后:将您的thrift文件重命名为{project_root}thrifttargettoolsthrift_0.12.0_0.13.0_linux.exe
;或者,添加 Maven 命令: -Dthrift.download-url=http://apache.org/licenses/LICENSE-2.0.txt -Dthrift.exec.absolute.path=<YOUR LOCAL THRIFT BINARY FILE>
。
您可以从以下位置下载源代码:
git clone https://github.com/apache/iotdb.git
默认的 dev 分支是 master 分支,如果你想使用已发布的版本 xxx:
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 的自述文件。)
注意:目录“ 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
> sbinstart-standalone.bat
IoTDB提供了多种与服务器交互的方式,这里我们介绍使用Cli工具插入和查询数据的基本步骤。
安装IoTDB后,有一个默认用户“root”,其默认密码也是“root”。用户可以使用该默认用户登录Cli来使用IoTDB。 Cli的启动脚本是sbin文件夹下的start-cli脚本。执行脚本时,用户应指定IP、端口、用户名和密码。默认参数为“-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
> sbinstart-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 。表示时间序列的位置。默认值为“null”,即查询系统中的所有时间序列(与使用“SHOW TIMESERIES root”相同)。以下是一些示例:
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|
+------------------------+-----+-------------+--------+--------+-----------+----+----------+
Total line number = 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|
+------------------------+------------------------+
Total line number = 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|
+------------------------+-----------------------------+------------------------+
Total line number = 2
要在Cli中更改时区,可以使用以下SQL:
IoTDB> SET time_zone=+08:00
Time zone has set to +08:00
IoTDB> SHOW time_zone
Current 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|
+-----------------------------+-----------------------------+------------------------+
Total line number = 2
退出 CLI 的命令是:
IoTDB> quit
or
IoTDB> exit
有关 IoTDB SQL 支持的命令的更多信息,请参阅用户指南。
可以使用“ctrl-C”或以下脚本停止服务器:
# Unix/OS X
> sbin/stop-standalone.sh
# Windows
> sbinstop-standalone.bat
请参阅CSV导入导出工具的使用
请参阅编译源代码时的常见问题
tietouqiao
或liutaohua001
,然后我们会邀请您进群。请参阅加入社区了解更多信息!