Skip to content

Database Hosting Options ​

Kubernetes Deployments ​

CDViz database can be deployed on Kubernetes using several mature operators:

  • Cloud Native Postgres (CNPG) - The officially recommended solution, also used in our demonstration cluster. Documentation | Reference configuration
  • Postgres Operator by Zalando - A production-grade Postgres operator with high availability features. Documentation
  • StackGres - Enterprise-grade PostgreSQL operator with monitoring capabilities. Documentation

Managed Database Services ​

The following managed database services have been evaluated for compatibility with CDViz requirements, particularly regarding support for the required PostgreSQL extensions.

Specialized PostgreSQL Providers ​

  • TimescaleDB Cloud - Optimized for time-series data with built-in support for the TimescaleDB extension. Documentation
  • Supabase - Open source Firebase alternative with comprehensive PostgreSQL extension support. Extension list
  • Neon - Serverless PostgreSQL with advanced extension capabilities. Extension documentation

General Cloud Provider Services ​

Compatibility status with major cloud providers:

ProviderStatusDocumentation
Azure Database for PostgreSQLâś… CompatibleExtensions documentation
AWS RDS❌ Missing required extensionsExtensions list
Google Cloud SQL❌ Missing required extensionsExtensions documentation
Digital Oceanâś… CompatibleExtensions documentation
Scalewayâś… CompatibleExtensions documentation

Container Deployments ​

For development, testing, and demonstration purposes, the CDViz database can be deployed using Docker or other OCI-compatible container runtimes.

A reference docker-compose configuration is available in the repository:

Docker Compose Configuration
yaml
postgres:
  image: ghcr.io/cdviz-dev/cdviz-db-pg:17.2 # until fix on timescale db recent version `undefined symbol: ExecBRUpdateTriggersNew`
  # image: timescale/timescaledb-ha:pg17
  command: ["postgres", "-c", "shared_preload_libraries=timescaledb"]
  # restart: always
  # platform: linux/amd64
  shm_size: 128mb
  environment:
    POSTGRES_USER: cdviz
    POSTGRES_PASSWORD: postgres-password
    POSTGRES_DB: cdviz
  healthcheck:
    test: pg_isready -U cdviz -d cdviz
    interval: 10s
    timeout: 5s
    retries: 5
  # network_mode: host
  ports:
    - "5432:5432"
  # user: "${MY_UID:-1000}:${MY_GID:-1000}"
  # volumes:
  # # In this example, we share the folder `db-data` in our root repository, with the default PostgreSQL data path
  # # It means that every time the repository is modifying the data inside
  # # of `/var/lib/postgresql/data/`, automatically the change will appear in `db-data`
  # # You don't need to create the `db-data` folder. Docker Compose will do it for you
  # - ./tmp/postgres/data:/var/lib/postgresql/data
  # # In this example, we share an init.sql script with the container
  # # The init script will be executed when the database is first run
  # - ./init.sql:/docker-entrypoint-initdb.d/init.sql
cdviz-db-migrate:
  image: ghcr.io/cdviz-dev/cdviz-db-migration:latest
  command:
    - migrate
    - apply
    - --url
    - postgres://cdviz:postgres-password@postgres:5432/cdviz?sslmode=disable
    - --dir
    - file:///migrations/
  # network_mode: host
  depends_on:
    postgres:
      condition: service_healthy