> ## Documentation Index
> Fetch the complete documentation index at: https://cubed3-remove-legacy-docs-folder.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# QuestDB

> QuestDB is a high-performance time-series database which helps you overcome ingestion bottlenecks.

[QuestDB][questdb] is a high-performance [time-series database][time-series-database-glossary] which helps you overcome ingestion bottlenecks.

<Warning>
  The driver for QuestDB is supported by its vendor. Please report any issues to
  their [Slack][questdb-slack].
</Warning>

## Prerequisites

* The hostname for the QuestDB database server
  * If QuestDB is not running, checkout the QuestDB [quick start][questdb-quick-start]
* [Docker][docker] (optional)

## Setup

### Docker

Create a dockerfile within the project directory:

```yaml title=docker-compose.yml theme={null}
services:
  cube:
    environment:
      - CUBEJS_DEV_MODE=true
    image: "cubejs/cube:latest"
    ports:
      - "4000:4000"
    volumes:
      - ".:/cube/conf"
  questdb:
    container_name: questdb
    hostname: questdb
    image: "questdb/questdb:latest"
    ports:
      - "9000:9000"
      - "8812:8812"
```

Within your project directory, create an `.env` file:

```dotenv theme={null}
CUBEJS_DB_TYPE=questdb
CUBEJS_DB_HOST=my.questdb.host
CUBEJS_DB_PORT=8812
CUBEJS_DB_NAME=qdb
CUBEJS_DB_USER=admin
CUBEJS_DB_PASS=quest
```

Finally, bring it all up with Docker:

```bash title=shell theme={null}
docker-compose up -d
```

Access Cube at [http://localhost:4000](http://localhost:4000) & QuestDB at [http://localhost:9000](http://localhost:9000)

<Warning>
  Development mode is an authentication bypass. Cube is in development mode when
  `CUBEJS_DEV_MODE=true` — which, under the `cubejs` CLI and the official Docker images,
  also forces `NODE_ENV=development` and so switches off JWT verification on the
  REST (JSON) and GraphQL APIs — and whenever `NODE_ENV` is not
  `production`. Playground's endpoints are served with no authentication too: anyone who
  can reach the instance is handed a ready-to-use API token, can mint others carrying any
  security context, can read your data model files, and can overwrite your data model and
  your `.env`. With `CUBEJS_DEV_MODE=true` and no
  [`CUBEJS_SQL_PASSWORD`](/reference/configuration/environment-variables#cubejs_sql_password)
  set, the SQL API accepts any credentials as well, allowing arbitrary SQL against
  connected data sources. Use it only on a local development machine, never in
  production. See
  [`CUBEJS_DEV_MODE`](/reference/configuration/environment-variables#cubejs_dev_mode).
</Warning>

## Environment Variables

| Environment Variable                                                                      | Description                                                                        | Possible Values           | Required |
| ----------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------- | ------------------------- | :------: |
| [`CUBEJS_DB_HOST`](/reference/configuration/environment-variables#cubejs_db_host)         | The host URL for a database                                                        | A valid database host URL |     ✅    |
| [`CUBEJS_DB_PORT`](/reference/configuration/environment-variables#cubejs_db_port)         | The port for the database connection                                               | A valid port number       |     ✅    |
| [`CUBEJS_DB_NAME`](/reference/configuration/environment-variables#cubejs_db_name)         | The name of the database to connect to                                             | A valid database name     |     ✅    |
| [`CUBEJS_DB_USER`](/reference/configuration/environment-variables#cubejs_db_user)         | The username used to connect to the database                                       | A valid database username |     ✅    |
| [`CUBEJS_DB_PASS`](/reference/configuration/environment-variables#cubejs_db_pass)         | The password used to connect to the database                                       | A valid database password |     ✅    |
| [`CUBEJS_DB_SSL`](/reference/configuration/environment-variables#cubejs_db_ssl)           | If `true`, enables SSL encryption for database connections from Cube               | `true`, `false`           |     ❌    |
| [`CUBEJS_DB_MAX_POOL`](/reference/configuration/environment-variables#cubejs_db_max_pool) | The maximum number of concurrent database connections to pool. Default is `8`      | A valid number            |     ❌    |
| [`CUBEJS_CONCURRENCY`](/reference/configuration/environment-variables#cubejs_concurrency) | The number of [concurrent queries][ref-data-source-concurrency] to the data source | A valid number            |     ❌    |

[ref-data-source-concurrency]: /admin/connect-to-data/concurrency#data-source-concurrency

[questdb]: https://questdb.io/

[questdb-slack]: https://slack.questdb.io/

[time-series-database-glossary]: https://questdb.io/glossary/time-series/database/

[questdb-quick-start]: https://questdb.io/docs/quick-start/

[docker]: https://docs.docker.com/get-docker/
