QuestDB is a relational column-oriented database designed for time series and event data. It uses SQL with extensions for time series to assist with real-time analytics. These pages cover core concepts of QuestDB, including setup steps, usage guides, and reference documentation for syntax, APIs and configuration.
This section explains how to install and run QuestDB using one of the following methods:
- Docker for repeatable, portable and scalable installations
- Binaries for direct downloads to run on Linux, macOS or Windows
- Homebrew for running QuestDB on macOS
Once QuestDB is running, a guide is provided to create your first database.
This section describes how to connect to QuestDB using a variety of tools and programming languages through our various network endpoints.
- Connect to the database through our various endpoints. Learn which protocol is best for different use cases.
- Insert data using the InfluxDB Line Protocol, PostgreSQL wire protocol or our HTTP REST API.
- Query data with SQL queries via the PostgreSQL Wire Protocol or exported to JSON or CSV via our HTTP REST API.
- Web Console for quick SQL queries, charting and CSV upload/export functionality.
This section contains resources for managing QuestDB instances and has dedicated pages for the following topics:
- Capacity planning for configuring server settings and system resources for common scenarios and edge cases
- Data retention strategy to delete old data and save disk space
- Health monitoring endpoint for determining the status of the instance
- Backup and restore using filesystem and point-in-time backup functionality. Notes for cloud providers.
This section describes how to integrate QuestDB with third-party tools and utilities for collecting metrics and visualizing data:
- Prometheus monitoring and alerting.
- Grafana instructions for connecting QuestDB as a datasource for building visualizations and dashboards
- Kafka guide for ingesting data from topics into QuestDB by means of Kafka Connect
- Telegraf guide for collecting system metrics, specifying QuestDB as an output and visualizing the results
This section describes the architecture of QuestDB, how it stores and queries data, and introduces features and capabilities unique to the system.
- Storage model describes how QuestDB stores records and partitions within tables
- Designated timestamp is a core feature that enables time-oriented language capabilities and partitioning
- SQL extensions allow performant time series analysis with a concise syntax
- JIT compiler to speed up queries
- Partitions can be used for significant performance benefits on calculations and queries
- Symbol type makes storing and retrieving repetitive strings efficient
- Indexes can be used for faster read access on specific columns
- Geospatial data with geohashes
- Root directory describes the directory contents of QuestDB for storage and configuration
This section contains the reference documentation for the following categories:
The following resource provides info on options that may be passed to QuestDB when starting services:
- Command-line options for starting and running QuestDB from an executable
The configuration page shows all the properties that can be used to customize QuestDB.
The data types page lists the datatypes that can be used in QuestDB.
- Date and time
- Random value generator
- Row generator
- Timestamp generator
- SQL Execution order
- Data types
- ALTER TABLE ADD COLUMN
- ALTER TABLE ALTER COLUMN ADD INDEX
- ALTER TABLE RENAME COLUMN
- ALTER TABLE DROP COLUMN
- ALTER TABLE ATTACH PARTITION
- ALTER TABLE DROP PARTITION
- ALTER TABLE SET PARAM
- CREATE TABLE
- EXCEPT INTERSECT
- DROP TABLE
- GROUP BY
- LATEST ON
- ORDER BY
- RENAME TABLE
- SAMPLE BY
- TRUNCATE TABLE
- VACUUM PARTITIONS
For hints on diagnosing common configuration issues, see the following resources:
- Troubleshooting FAQ guide with solutions for various HW & SW configuration issues
- List of OS error codes page with the list of Operating System error codes
We are happy to help with any question you may have, particularly to help you optimize the performance of your application. Feel free to reach out using the following channels: