Skip to main content

Database Types

Appliku can provision and manage several database engines as Docker containers running alongside your application on the same server. This page is a quick reference for all supported types.

Overview

EngineType KeyVersionsCategoryBackup Support
PostgreSQLpostgresql_1717RelationalAutomatic backups
PostgreSQLpostgresql_1616RelationalAutomatic backups
PostgreSQLpostgresql_1515RelationalAutomatic backups
PostgreSQLpostgresql_1212RelationalAutomatic backups
PostGISpostgis_16_3416 + PostGIS 3.4Spatial/RelationalAutomatic backups
pgvectorpostgresql_16_pgvector16 + pgvectorVector/RelationalAutomatic backups
TimescaleDBtimescale_db_1515Time-seriesAutomatic backups
MySQLmysql_88RelationalManual backups
Redisredis_77Cache/BrokerNo persistence
Redisredis_66Cache/BrokerNo persistence
RabbitMQrabbitmqLatestMessage BrokerNo persistence
Elasticsearchelasticsearch_8_178.17Search EngineManual backups

Relational Databases

PostgreSQL

The recommended database for most applications. Fully featured relational database with excellent performance and reliability.

Available versions: 17, 16, 15, 12

Use cases:

  • Web application backends (Django, Rails, Node.js)
  • APIs and microservices
  • Any application needing ACID-compliant storage

Backup support: Automatic backups via pg_dump. Configure backup schedules from the database management page.

tip

Use PostgreSQL 17 for new projects. It includes the latest performance improvements and features. Older versions are available for compatibility with existing applications.

PostGIS (PostgreSQL + PostGIS)

PostgreSQL with the PostGIS spatial extension for geographic data.

Type key: postgis_16_34 (PostgreSQL 16 + PostGIS 3.4)

Use cases:

  • Location-based applications
  • Geographic information systems (GIS)
  • Applications that need spatial queries, distance calculations, or geometry operations

pgvector (PostgreSQL + pgvector)

PostgreSQL with the pgvector extension for vector similarity search.

Type key: postgresql_16_pgvector

Use cases:

  • AI/ML applications with embedding storage
  • Semantic search
  • Recommendation engines
  • RAG (Retrieval-Augmented Generation) applications

TimescaleDB

PostgreSQL with the TimescaleDB extension for time-series data.

Type key: timescale_db_15 (based on PostgreSQL 15)

Use cases:

  • IoT data collection
  • Metrics and monitoring
  • Financial data
  • Any application with time-series workloads

MySQL

General-purpose relational database.

Type key: mysql_8

Use cases:

  • Applications that specifically require MySQL
  • WordPress, Drupal, and other CMS platforms
  • Legacy application compatibility

Backup support: Manual backups via mysqldump. Run backup commands through the server's Run Commands feature.

Cache and Message Brokers

Redis

In-memory data store used primarily as a cache or message broker.

Available versions: 7, 6

Use cases:

  • Application caching (session storage, query caching)
  • Celery task broker
  • Real-time features (pub/sub)
  • Rate limiting
note

Redis instances provisioned by Appliku do not persist data to disk by default. If the container restarts, cached data will be lost. This is appropriate for caching and message brokering but not for primary data storage.

RabbitMQ

Advanced message broker supporting multiple messaging protocols.

Type key: rabbitmq

Use cases:

  • Task queues (Celery with RabbitMQ backend)
  • Event-driven architectures
  • Microservice communication
  • Applications needing message acknowledgment, routing, or priority queues

Search Engines

Elasticsearch

Distributed search and analytics engine.

Type key: elasticsearch_8_17

Use cases:

  • Full-text search
  • Log aggregation and analysis
  • Application search features
  • Analytics and reporting
warning

Elasticsearch requires significant memory. Allocate at least 1 GB of RAM on your server for Elasticsearch in addition to your application's requirements.

Using Database Types in appliku.yml

databases:
db:
type: postgresql_17
cache:
type: redis_7
search:
type: elasticsearch_8_17

Reference databases in your environment variables:

build_settings:
environment_variables:
- name: DATABASE_URL
from_database:
name: db
property: private_connection_url
- name: REDIS_URL
from_database:
name: cache
property: connection_url