Skip to content

QuestDB

Not available until the next release main

Introduction

QuestDB is an open-source time-series database designed for high-throughput ingestion and fast SQL queries. It supports the InfluxDB line protocol for fast writes, a PostgreSQL wire protocol for SQL queries, and a REST API with a built-in web console.

Adding this module to your project dependencies

Please run the following command to add the QuestDB module to your Go dependencies:

go get github.com/testcontainers/testcontainers-go/modules/questdb

Usage example

ctx := context.Background()

questdbContainer, err := questdb.Run(ctx, "questdb/questdb:7.4.2")
defer func() {
    if err := testcontainers.TerminateContainer(questdbContainer); err != nil {
        log.Printf("failed to terminate container: %s", err)
    }
}()
if err != nil {
    log.Printf("failed to start container: %s", err)
    return
}

Module Reference

Run function

  • Not available until the next release main

The QuestDB module exposes one entrypoint function to create the QuestDB container, and this function receives three parameters:

func Run(ctx context.Context, img string, opts ...testcontainers.ContainerCustomizer) (*Container, error)
  • context.Context, the Go context.
  • string, the Docker image to use.
  • testcontainers.ContainerCustomizer, a variadic argument for passing options.

Image

Use the second argument in the Run function to set a valid Docker image. In example: Run(context.Background(), "questdb/questdb:7.4").

Container Options

When starting the QuestDB container, you can pass options in a variadic way to configure it.

The following options are exposed by the testcontainers package.

Basic Options

Lifecycle Options

Files & Mounts Options

Build Options

Logging Options

Image Options

Networking Options

Advanced Options

Experimental Options

Container Methods

The QuestDB container exposes the following methods:

HTTPEndpoint

  • Not available until the next release main

Returns the URL of the QuestDB HTTP web console and REST API, using the 9000/tcp port.

httpEndpoint, err := questdbContainer.HTTPEndpoint(ctx)

The returned URL has the format http://host:port.

PGEndpoint

  • Not available until the next release main

Returns the PostgreSQL wire protocol connection string for the QuestDB container, using the 8812/tcp port and the built-in default credentials (admin/quest).

pgEndpoint, err := questdbContainer.PGEndpoint(ctx)

The returned URL has the format postgres://admin:[REDACTED]@host:port/qdb.

InfluxDBEndpoint

  • Not available until the next release main

Returns the InfluxDB line protocol endpoint address of the QuestDB container, using the 9009/tcp port. This endpoint is used for high-throughput time-series data ingestion.

ilpEndpoint, err := questdbContainer.InfluxDBEndpoint(ctx)

The returned address has the format host:port.