InfluxDB Database Cheatsheet

InfluxDB is a powerful and scalable open-source time-series database designed to handle high write and query loads. It’s widely used for storing and retrieving time-stamped data, making it a popular choice for applications such as monitoring, IoT, and real-time analytics. This cheatsheet provides a quick reference guide to essential commands and concepts when working with InfluxDB.

Installation and Setup

Installing InfluxDB

# Linux
sudo apt-get update && sudo apt-get install influxdb

# macOS
brew update && brew install influxdb

# Windows
# Download the installer from the InfluxDB website

Starting InfluxDB

# Start the InfluxDB service
sudo service influxdb start

# Connect to InfluxDB shell
influx

Basic Commands

Creating a Database

CREATE DATABASE mydatabase

Showing Databases

SHOW DATABASES

Using a Database

USE mydatabase

Writing Data

INSERT measurement,tag1=value1,tag2=value2 field1=value3,field2=value4 timestamp

Querying Data

SELECT field1,field2 FROM measurement WHERE time > now() - 1h

Data Organization

Measurements

  • Measurements are like tables in a relational database.
  • Example: temperature, humidity.

Tags

  • Tags are key-value pairs used for indexing and filtering data.
  • Example: location=room1, sensor=1.

Fields

  • Fields store the actual data values.
  • Example: temperature=25.5, humidity=60.

Time

Time Format

  • InfluxDB uses RFC3339 timestamps.
  • Example: 2023-12-17T10:30:00Z.

Query Time Ranges

  • Time ranges can be specified using WHERE clauses.
  • Example: WHERE time > '2023-12-17T00:00:00Z' AND time < '2023-12-17T12:00:00Z'.

Advanced Queries

Aggregations

SELECT MEAN(field) FROM measurement WHERE time > now() - 1h GROUP BY time(10s)

Joins

SELECT * FROM measurement1 INNER JOIN measurement2 ON measurement1.tag = measurement2.tag

Subqueries

SELECT * FROM (SELECT MEAN(field) FROM measurement GROUP BY time(1h))

Continuous Queries

  • Continuous queries automatically run at specified intervals.
CREATE CONTINUOUS QUERY cq_name ON mydatabase BEGIN SELECT MEAN(value) INTO mydatabase.autogen.mean_value FROM measurement GROUP BY time(1h) END

InfluxDB is a versatile and efficient database for handling time-series data. This cheatsheet covers the basics of installation, setup, and essential commands for working with InfluxDB. Keep this reference guide handy for quick access to commonly used commands and concepts, making your experience with InfluxDB more productive and enjoyable.

FAQ

1. What is InfluxDB?

InfluxDB is an open-source time-series database designed for high-performance storage and retrieval of time-stamped data. It is commonly used in applications requiring real-time analytics, monitoring, and Internet of Things (IoT) scenarios.

2. How do I install InfluxDB?

To install InfluxDB, you can use package managers like apt-get for Linux, brew for macOS, or download the installer for Windows. After installation, start the InfluxDB service and connect to the InfluxDB shell using the influx command.

3. What are Measurements, Tags, and Fields in InfluxDB?

In InfluxDB, measurements are analogous to tables, tags are key-value pairs for indexing and filtering, and fields store the actual data values. This structure allows for efficient organization and retrieval of time-series data.

4. How do I write data to InfluxDB?

Data is written to InfluxDB using the INSERT command. The syntax includes specifying the measurement name, tags, fields, and a timestamp. This command is crucial for storing time-stamped data, a core feature of InfluxDB.

5. Can I perform aggregations and joins in InfluxDB?

Yes, InfluxDB supports aggregations like MEAN and SUM to analyze data over specific time intervals. While InfluxDB is primarily a time-series database, it also offers limited support for joins and subqueries, allowing for more complex data analysis when needed.