英語 | 中文
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
,然後我們會邀請您進群。請參閱加入社區以了解更多資訊!