Apache IoTDB is a free, open source databases project written in Java and released under Apache-2.0. It has 6,402 GitHub stars, 1,157 forks and 734 open issues, and was last pushed 12 hours ago. On this registry it ranks #54 of 81 tracked projects in Databases, with 5 head-to-head comparisons available. It gained 8 stars over the last 6 tracked days.

What is Apache IoTDB?

Apache IoTDB is an Apache-2.0 licensed time-series database written in Java that handles collection, storage, and analysis of industrial IoT time-series data, built for teams that must ingest high-throughput readings from very large fleets of devices and analyse them without leaving the Hadoop and Spark tooling they already run.

What it is

Apache IoTDB is a data management system for time-series data that provides data collection, storage, and analysis in one system. It is written in Java and targets Java 17 and above, and it runs on Windows, macOS, and Linux. Its storage layer is built on TsFile, a columnar file format designed specifically for time-series data; the iotdb branch of the separate TsFile project is used to publish the SNAPSHOT version for IoTDB. The project is catalogued under Infrastructure & Operations / Databases and carries the topics big-data, database, iot, java, nosql, timeseries, and tsdb. It is developed in the open under the Apache umbrella, with 6,400 stars and 1,157 forks on GitHub, and it routes bugs and feature requests through the Apache Jira instance at issues.apache.org/jira/projects/IOTDB/issues.

The concrete problem it addresses is the industrial IoT requirement set named in its own overview: massive dataset storage, high-throughput data input, and complex data analysis over device telemetry. It organises the complex time-series structures that come off intelligent networking devices, keeps the storage footprint low through a high compression ratio on disk, and performs time alignment and aggregation across devices and measurements. It sits inside the Hadoop and Spark analysis ecosystem rather than beside it, and it integrates with visualization tools such as Grafana.

Key capabilities

  • TsFile-based columnar storage with a high compression ratio, which lowers hardware cost for long-retention device data.
  • SQL-like query language, a JDBC standard API, and bundled import and export tools.
  • Rich query semantics: time alignment for series across devices and measurements, computation within the time-series field including frequency-domain transformation, and aggregation functions along the time dimension.
  • Flexible deployment through a one-click installation tool for either a cloud platform or a terminal device, plus a data synchronization tool that bridges data between cloud and terminals.
  • Efficient directory structure that groups series from devices of the same type and supports fuzzy searching across very large series directories.
  • High-throughput read and write designed for concurrent access from millions of low-power devices, including mixed device fleets.
  • Seamless integration with Hadoop and Spark for analysis, and with Grafana for visualization.

Who uses it and how

  • Industrial IoT operators that collect telemetry from large fleets of low-power devices and need to store it cheaply while keeping read and write throughput high.
  • Deployments split between cloud and edge: the one-click installer runs on a cloud platform or a terminal device, and the synchronization tool moves data between the two tiers.
  • Data teams already running Hadoop or Spark that want time-series storage to sit alongside existing analysis jobs instead of in a separate silo.
  • Operations teams that visualize device metrics in Grafana and query the database from JVM applications through the JDBC API.
  • Users who need bulk movement of historical data in or out of the store, handled by the bundled import and export tools.

Getting started

The README provides Quick Start, Prerequisites, and Installation sections, and installation itself is offered through a one-click installation tool that can target either a cloud platform or a terminal device. The project requires Java 17 or later, runs on Windows, macOS, and Linux, and publishes artifacts to Maven Central under org.apache.iotdb:iotdb-parent, with documentation and downloads at https://iotdb.apache.org/.

How it compares

No list of paid or comparable products is provided in the facts for this entry, and the README names Hadoop, Spark, and Grafana only as analysis and visualization integrations rather than as alternatives to the database itself. On the evidence available, Apache IoTDB stands alone in this registry rather than being positioned against named competitors.

When to use it — and when not to

Choose it when the workload is genuinely time-series device telemetry at scale and the team is comfortable running a self-deployed Java service; the README describes installation on a cloud platform or a terminal device, so no managed hosted option is implied and the operator carries the deployment. Prospective users should weigh two signals from the repository: 734 open issues, which indicates a large and busy tracker, and an issue-reporting route that runs through Apache Jira rather than GitHub, which is an extra step for teams used to GitHub-native workflows. Teams that need zero operational involvement, or whose data is not time-series device data, should look elsewhere.

project readme (upstream, from github) — read inline

English | 中文

IoTDB

Unit-Test codecov GitHub release License IoTDB Website Maven Central Gitpod Ready-to-Code Slack Status

Overview

IoTDB (Internet of Things Database) is a data management system for time series data, which provides users with specific services, including data collection, storage and analysis. Due to its lightweight structure, high performance and usable features, together with its seamless integration with the Hadoop and Spark ecosystem, IoTDB meets the requirements of massive dataset storage, high throughput data input, and complex data analysis in the industrial IoT field.

Click for More Information

IoTDB depends on TsFile which is a columnar storage file format designed for time series data. The branch iotdb of TsFile project is used to deploy SNAPSHOT version for IoTDB project.

Main Features

The main features of IoTDB are as follows:

  1. Flexible deployment strategy. IoTDB provides users with a one-click installation tool on either the cloud platform or the terminal devices, and a data synchronization tool bridging the data on cloud platform and terminals.
  2. Low cost on hardware. IoTDB can reach a high compression ratio of disk storage.
  3. Efficient directory structure. IoTDB supports efficient organization for complex time series data structures from intelligent networking devices, organization for time series data from devices of the same type, and fuzzy searching strategy for massive and complex directory of time series data.
  4. High-throughput read and write. IoTDB supports millions of low-power devices' strong connection data access, high-speed data read and write for intelligent networking devices and mixed devices mentioned above.
  5. Rich query semantics. IoTDB supports time alignment for time series data across devices and measurements, computation in time series field (frequency domain transformation) and rich aggregation function support in time dimension.
  6. Easy to get started. IoTDB supports SQL-like language, JDBC standard API and import/export tools which are easy to use.
  7. Seamless integration with state-of-the-practice Open Source Ecosystem. IoTDB supports analysis ecosystems, such as Hadoop and Spark, as well as visualization tools, such as Grafana.

For the latest information about IoTDB, please visit IoTDB official website. If you encounter any problems or identify any bugs while using IoTDB, please report an issue in Jira.

Outline

Quick Start

This short guide will walk you through the basic process of using IoTDB. For a more detailed introduction, please visit our website's User Guide.

Prerequisites

To use IoTDB, you need to have:

  1. Java >= 17 (17 to 25 are verified. Please make sure the environment path has been set accordingly).
  2. Maven >= 3.6 (If you want to compile and install IoTDB from source code).
  3. Set the max open files num as 65535 to avoid the "too many open files" error.
  4. (Optional) Set the somaxconn as 65535 to avoid "connection reset" error when the system is under high load.
    # Linux
    > sudo sysctl -w net.core.somaxconn=65535
    
    # FreeBSD or Darwin
    > sudo sysctl -w kern.ipc.somaxconn=65535
    

⚠️ Important: System Resource Limits

IoTDB requires sufficient system resource limits to start correctly. If these limits are not configured, IoTDB may fail to start or emit warnings such as "too many open files" or "connection reset" in the logs.

Linux / macOS

ulimit -n 65535
sudo sysctl -w net.core.somaxconn=65535

Docker Users When running IoTDB in Docker, these limits must be applied on the host machine or explicitly passed to the container:

docker run --ulimit nofile=65535:65535 ...

Windows Users These commands are not applicable on Windows. Please follow the Windows installation steps below and ensure sufficient system resources.

Linux

(This guide is based on an installation of Ubuntu 22.04.)

Git

Make sure Git is installed, if it's missing, simply install it via:

sudo apt install git
Java

Make sure Java is installed, if it's missing, simply install it via:

sudo apt install default-jdk
Flex
sudo apt install flex
Bison
sudo apt install bison
Boost
sudo apt install libboost-all-dev
OpenSSL header files

Usually OpenSSL is already installed, however it's missing the header files we need to compile. So ensure these are installed:

sudo apt install libssl-dev

Mac OS

Git

First ensure git works.

Usually on a new Mac, as soon as you simply type git in a Terminal window, a popup will come up and ask if you want to finish installing the Mac developer tools. Just say yes. As soon as this is finished, you are free to use git.

Homebrew

Then install Homebrew - If this hasn't been installed yet, as we are going to be installing everything using Homebrew.

/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
Java

As soon as that's done install Java, if this hasn't been installed yet:

brew install java

Depending on your version of Homebrew, it will tell you to do one of the following (depending on the type of processor in your device).

Mainly on the Intel-based models:

sudo ln -sfn /usr/local/opt/openjdk/libexec/openjdk.jdk /Library/Java/JavaVirtualMachines/openjdk.jdk

Mainly on the ARM-based models:

sudo ln -sfn /opt/homebrew/opt/openjdk/libexec/openjdk.jdk /Library/Java/JavaVirtualMachines/openjdk.jdk
CPP Prerequisites

Building Thrift requires us to add two more dependencies to the picture.

This however is only needed when enabling the with-cpp profile:

brew install boost
brew install bison
brew install openssl

Windows

Cho

readme truncated — read the full docs on github

Frequently asked questions

Is Apache IoTDB free to use?

Apache IoTDB is open source under the Apache-2.0 licence. There is no licence fee and no seat count — you can self-host it or, where the project offers one, pay a vendor for a managed version instead.

What does Apache IoTDB do?

Time-series database built for industrial IoT workloads

What is Apache IoTDB written in?

Apache IoTDB is primarily written in Java. Its source is publicly available at https://github.com/apache/iotdb, and it has 6,402 GitHub stars.