Skip to main content

Documentation Index

Fetch the complete documentation index at: https://mintlify.com/questdb/questdb/llms.txt

Use this file to discover all available pages before exploring further.

QuestDB supports multiple ingestion methods optimized for different use cases, from high-throughput time-series data to bulk imports and SQL operations.

Ingestion Methods

QuestDB provides four primary ingestion methods:

InfluxDB Line Protocol (ILP)

A fast, schema-agnostic protocol for time-series data ingestion. QuestDB implements ILP over TCP, UDP, and HTTP.
  • Best for: High-throughput time-series data, IoT sensors, metrics collection
  • Protocols: TCP (port 9009), UDP (port 9009), HTTP (port 9000)
  • Features: Auto table creation, schema discovery, nanosecond precision
  • Authentication: Supported on TCP with elliptic curve signatures
See InfluxDB Line Protocol for details.

PostgreSQL Wire Protocol

Standard PostgreSQL protocol for SQL INSERT statements and queries.
  • Best for: Application integration, SQL-based workflows, batch inserts
  • Port: 8812 (default)
  • Features: Full SQL support, prepared statements, transactions
  • Authentication: Username/password (cleartext)
  • Compatibility: Works with any PostgreSQL client library
See PostgreSQL Wire Protocol for details.

REST API

HTTP endpoints for CSV imports and SQL execution.
  • Best for: CSV file imports, ad-hoc data loading, web integrations
  • Endpoints: /imp (import), /exec (SQL execution)
  • Port: 9000 (default)
  • Features: Multipart form uploads, schema inference, JSON/CSV response
  • Authentication: Optional HTTP Basic Auth
See REST API and CSV Import for details.

Web Console

Interactive browser-based interface for data import and exploration.
  • Best for: Manual imports, testing, data exploration
  • URL: http://localhost:9000
  • Features: Drag-and-drop CSV import, schema editor, query interface
See CSV Import for details.

Method Comparison

MethodProtocolPortUse CaseThroughputSchemaAuth
ILP/TCPTCP9009High-speed streamingVery HighAutoEC signature
ILP/UDPUDP9009Fire-and-forget metricsVery HighAutoNone
ILP/HTTPHTTP9000Cloud-native ingestionHighAutoHTTP Auth
PostgreSQLTCP8812SQL INSERT statementsMediumManualUser/Pass
REST /impHTTP9000CSV bulk importMediumAuto/ManualHTTP Auth
Web ConsoleHTTP9000Interactive importLowInteractiveHTTP Auth

Choosing an Ingestion Method

For Time-Series Data

  • High volume, low latency: ILP over TCP
  • Metrics from multiple sources: ILP over UDP
  • Cloud deployments: ILP over HTTP

For Relational Data

  • Existing PostgreSQL applications: PostgreSQL wire protocol
  • Transactional inserts: PostgreSQL wire protocol
  • Bulk CSV loads: REST API /imp endpoint

For Development and Testing

  • Interactive exploration: Web Console
  • Script-based loading: REST API with curl
  • Testing queries: PostgreSQL wire with psql

Default Ports

QuestDB uses the following default ports:
9000  - HTTP server (REST API, Web Console, ILP/HTTP)
9009  - ILP TCP/UDP
8812  - PostgreSQL wire protocol
9003  - Min HTTP server (optional)
All ports are configurable via server.conf or environment variables.

Performance Considerations

ILP Performance

  • TCP: 1M+ rows/sec per connection
  • UDP: Fire-and-forget, no acknowledgment
  • Batching recommended for optimal throughput

PostgreSQL Wire Performance

  • Use prepared statements for repeated inserts
  • Batch multiple rows in single INSERT
  • Insert into WAL tables for best performance

CSV Import Performance

  • Parallel column parsing
  • Schema inference on first 1000 lines
  • Direct write to table storage

Configuration

All ingestion methods can be configured in conf/server.conf:
# ILP TCP
line.tcp.net.bind.to=0.0.0.0:9009
line.tcp.enabled=true

# ILP UDP  
line.udp.bind.to=0.0.0.0:9009
line.udp.enabled=true

# PostgreSQL
pg.net.bind.to=0.0.0.0:8812
pg.enabled=true

# HTTP
http.net.bind.to=0.0.0.0:9000
http.enabled=true

Next Steps