提供行业领先的
物联网时序数据库
管理系统及服务
聚焦大数据底层技术软件研发,实现时序数据采集、写入、存储、查询、分析、应用全周期生命覆盖,让企业用更低的成本挖掘更大的数据价值。
应用编程示意
选择你想查看的语言 查看相应源代码
package org.apache.iotdb;
import org.apache.iotdb.isession.SessionDataSet;
import org.apache.iotdb.rpc.IoTDBConnectionException;
import org.apache.iotdb.rpc.StatementExecutionException;
import org.apache.iotdb.session.Session;
import org.apache.iotdb.tsfile.write.record.Tablet;
import org.apache.iotdb.tsfile.write.schema.MeasurementSchema;
import java.util.ArrayList;
import java.util.List;
public class SessionExample {
  private static Session session;
  public static void main(String[] args)
          throws IoTDBConnectionException, StatementExecutionException {
    session =
            new Session.Builder()
                    .host("172.0.0.1")
                    .port(6667)
                    .username("root")
                    .password("root")
                    .build();
    session.open(false);
    List<MeasurementSchema> schemaList = new ArrayList<>();
    schemaList.add(new MeasurementSchema("s1", TSDataType.FLOAT));
    schemaList.add(new MeasurementSchema("s2", TSDataType.FLOAT));
    schemaList.add(new MeasurementSchema("s3", TSDataType.FLOAT));
    Tablet tablet = new Tablet("root.db.d1", schemaList, 10);
    tablet.addTimestamp(0, 1);
    tablet.addValue("s1", 0, 1.23f);
    tablet.addValue("s2", 0, 1.23f);
    tablet.addValue("s3", 0, 1.23f);
    tablet.rowSize++;
    session.insertTablet(tablet);
    tablet.reset();
    try (SessionDataSet dataSet = session.executeQueryStatement("select ** from root.db")) {
      while (dataSet.hasNext()) {
        System.out.println(dataSet.next());
      }
    }
    session.close();
  }
}from iotdb.Session import Session
from iotdb.utils.IoTDBConstants import TSDataType
from iotdb.utils.Tablet import Tablet
ip = "127.0.0.1"
port = "6667"
username = "root"
password = "root"
session = Session(ip, port, username, password)
session.open(False)
measurements = ["s_01", "s_02", "s_03", "s_04", "s_05", "s_06"]
data_types = [
    TSDataType.BOOLEAN,
    TSDataType.INT32,
    TSDataType.INT64,
    TSDataType.FLOAT,
    TSDataType.DOUBLE,
    TSDataType.TEXT,
]
values = [
    [False, 10, 11, 1.1, 10011.1, "test01"],
    [True, 100, 11111, 1.25, 101.0, "test02"],
    [False, 100, 1, 188.1, 688.25, "test03"],
    [True, 0, 0, 0, 6.25, "test04"],
]
timestamps = [1, 2, 3, 4]
tablet = Tablet(
    "root.db.d_03", measurements, data_types, values, timestamps
)
session.insert_tablet(tablet)
with session.execute_statement(
    "select ** from root.db"
) as session_data_set:
    while session_data_set.has_next():
        print(session_data_set.next())
session.close()#include "Session.h"
#include <iostream>
#include <string>
#include <vector>
#include <sstream>
int main(int argc, char **argv) {
  Session *session = new Session("127.0.0.1", 6667, "root", "root");
  session->open();
  std::vector<std::pair<std::string, TSDataType::TSDataType>> schemas;
  schemas.push_back({"s0", TSDataType::INT64});
  schemas.push_back({"s1", TSDataType::INT64});
  schemas.push_back({"s2", TSDataType::INT64});
  int64_t val = 0;
  Tablet tablet("root.db.d1", schemas, /*maxRowNum=*/ 10);
  tablet.rowSize++;
  tablet.timestamps[0] = 0;
  val=100; tablet.addValue(/*schemaId=*/ 0, /*rowIndex=*/ 0, /*valAddr=*/ &val);
  val=200; tablet.addValue(/*schemaId=*/ 1, /*rowIndex=*/ 0, /*valAddr=*/ &val);
  val=300; tablet.addValue(/*schemaId=*/ 2, /*rowIndex=*/ 0, /*valAddr=*/ &val);
  session->insertTablet(tablet);
  tablet.reset();
  std::unique_ptr<SessionDataSet> res = session->executeQueryStatement("select ** from root.db");
  while (res->hasNext()) {
    std::cout << res->next()->toString() << std::endl;
  }
  res.reset();
  session->close();
  delete session;
  return 0;
}package main
import (
        "fmt"
        "log"
        "github.com/apache/iotdb-client-go/client"
)
func main() {
        config := &client.Config{
                Host:     "127.0.0.1",
                Port:     "6667",
                UserName: "root",
                Password: "root",
        }
        session := client.NewSession(config)
        if err := session.Open(false, 0); err != nil {
                log.Fatal(err)
        }
        defer session.Close() // close session at end of main()
        
        rowCount := 3
        tablet, err := client.NewTablet("root.db.d1", []*client.MeasurementSchema{
                {
                        Measurement: "restart_count",
                        DataType:    client.INT32,
                        Encoding:    client.RLE,
                        Compressor:  client.SNAPPY,
                }, {
                        Measurement: "price",
                        DataType:    client.DOUBLE,
                        Encoding:    client.GORILLA,
                        Compressor:  client.SNAPPY,
                }, {
                        Measurement: "description",
                        DataType:    client.TEXT,
                        Encoding:    client.PLAIN,
                        Compressor:  client.SNAPPY,
                },
        }, rowCount)
        if err != nil {
                fmt.Errorf("Tablet create error:", err)
                return
        }
        timestampList := []int64{0, 1, 2}
        valuesInt32List := []int32{5, -99999, 123456}
        valuesDoubleList := []float64{-0.001, 10e5, 54321.0}
        valuesTextList := []string{"test1", "test2", "test3"}
        for row := 0; row < rowCount; row++ {
                tablet.SetTimestamp(timestampList[row], row)
                tablet.SetValueAt(valuesInt32List[row], 0, row)
                tablet.SetValueAt(valuesDoubleList[row], 1, row)
                tablet.SetValueAt(valuesTextList[row], 2, row)
        }
        session.InsertTablet(tablet, false)
        var timeoutInMs int64
        timeoutInMs = 1000
        sql := "select ** from root.db"
        dataset, err := session.ExecuteQueryStatement(sql, &timeoutInMs)
        defer dataset.Close()
        if err == nil {
                for next, err := dataset.Next(); err == nil && next; next, err = dataset.Next() {
                        record, _ := dataset.GetRowRecord()
                        fields := record.GetFields()
                        for _, field := range fields {
                                fmt.Print(field.GetValue(), "\t")
                        }
                        fmt.Println()
                }
        } else {
                log.Println(err)
        }
}Java
Python
C++
Go
- 
          千万点每秒单节点每秒千万级 
 数据写入
- 
          10X倍10X倍无损压缩 
 100X倍有损压缩
- 
          毫秒查询TB数据 
 毫秒级查询响应
- 
          亿级点位单设备万级点位 
 多设备亿级点位
获得学术界和工业界的高度认可
吸引全球贡献者共建开源社区
 2024-08-31
              2024-08-31
            央视报道时序数据库 IoTDB 性能刷新世界记录!
央视《24小时》节目报道了源于清华大学软件学院的国产开源时间序列数据库 IoTDB 登顶数据库国际权威榜单 TPCx-IoT!
 
                  时序数据库 IoTDB 集成 DataGrip,支撑跨模态多库融合管理
2025-10-13物联网工业数据管理场景中,尽管时序数据占主要部分,但企业往往需要实现跨维度关联分析,多源异构数据的关联融合管理对数据库提出了更高要求。 国产原生时序数据库
 
                  一文了解时序数据库 IoTDB 分区、同步与备份
2025-09-259 月 24 日,“保障数据永不丢失!数据管理实战:分区、同步与备份”直播中,天谋科技时序数据库内核研发工程师,IoTDB 项目交付负责
 
                  时序数据库 TimechoDB V2.0.6 发布 | 新增查询写回、黑白名单等功能
2025-09-23TimechoDB V2.0.6 版本正式发布! TimechoDB 是由 IoTDB 原厂团队开发的企业级时序数据库产品。V2.0.6 版本新增表模型查询写回功能,新增访问控制黑白名单功能,新增位操作函数(内置标量函数)以及可下推的时间函数,同时对数据库监控、性能、稳定性进行了全方位提升。 更多关于 V2.0.6 版本信息,欢迎联系我们获得企业版安装包!
 
                     
               
                     
               
                     
               
                     
               
                     
               
                     
               
                     
               
                     
               
                     
               
                     
               
                     
               
                     
               
                     
               
                     
               
                     
               
                     
               
                     
               
                     
               
                   
                   
                   
                   
                   
                   
                   
                   
                  