Skip to content

Configuration File Reference (v3.5)

Configuration File Reference (v3.5)

Overview

HeliosDB Nano uses TOML configuration files for server-wide settings. This document provides comprehensive reference for all configuration options in config.toml.

Version: 3.5.8

Quick Start

Terminal window
# Copy example configuration
cp config.example.toml config.toml
# Edit configuration
nano config.toml
# Start server with configuration
heliosdb-nano start --config config.toml
# Start REPL with configuration
heliosdb-nano repl --config config.toml

Configuration Sections

Storage Section

Controls database storage, WAL, and persistence.

[storage]
path = "./heliosdb-data"
memory_only = false
wal_enabled = true
wal_sync_mode = "sync"
cache_size = 536870912
compression = "Zstd"
time_travel_enabled = true
query_timeout_ms = 0
statement_timeout_ms = 0
transaction_isolation = "READ_COMMITTED"

Options

OptionTypeDefaultDescription
pathString"./heliosdb-data"Database directory path
memory_onlyBooleanfalseUse in-memory database
wal_enabledBooleantrueEnable write-ahead log
wal_sync_modeString"sync"WAL sync mode: sync, async, group_commit
cache_sizeInteger536870912Cache size in bytes (512MB)
compressionString"Zstd"Default compression: None, Zstd, Lz4
time_travel_enabledBooleantrueEnable automatic versioning
query_timeout_msInteger0Query timeout (0 = unlimited)
statement_timeout_msInteger0Statement timeout (0 = unlimited)
transaction_isolationString"READ_COMMITTED"Isolation level

Examples

# Development: In-memory database
[storage]
memory_only = true
wal_enabled = false
# Production: Durable, fast
[storage]
path = "/var/lib/heliosdb"
wal_sync_mode = "group_commit"
query_timeout_ms = 30000
cache_size = 2147483648 # 2GB
# Write-heavy: Async WAL
[storage]
wal_sync_mode = "async"
time_travel_enabled = false

Encryption Section

Transparent data encryption (TDE) configuration.

[encryption]
enabled = false
algorithm = "Aes256Gcm"
rotation_interval_days = 90
[encryption.key_source]
Environment = "HELIOSDB_ENCRYPTION_KEY"

Options

OptionTypeDefaultDescription
enabledBooleanfalseEnable encryption at rest
algorithmString"Aes256Gcm"Encryption algorithm
rotation_interval_daysInteger90Key rotation interval
key_sourceObjectEnvironment variableKey source configuration

Key Source Options

# Option 1: Environment variable
[encryption.key_source]
Environment = "HELIOSDB_ENCRYPTION_KEY"
# Option 2: File
[encryption.key_source]
File = "/secure/path/to/key"
# Option 3: Cloud KMS
[encryption.key_source.Kms]
provider = "aws"
key_id = "arn:aws:kms:us-east-1:123:key/abc"

Server Section

Network server configuration.

[server]
listen_addr = "127.0.0.1"
port = 5432
oracle_port = 1521
max_connections = 100
tls_enabled = false
tls_cert_path = "/path/to/cert.pem"
tls_key_path = "/path/to/key.pem"

Options

OptionTypeDefaultDescription
listen_addrString"127.0.0.1"Listen address (0.0.0.0 for all)
portInteger5432PostgreSQL protocol port
oracle_portInteger1521Oracle TNS port (null to disable)
max_connectionsInteger100Maximum connections
tls_enabledBooleanfalseEnable TLS/SSL
tls_cert_pathStringNoneTLS certificate path
tls_key_pathStringNoneTLS private key path

Examples

# Local development
[server]
listen_addr = "127.0.0.1"
port = 5432
max_connections = 10
# Production
[server]
listen_addr = "0.0.0.0"
port = 5432
max_connections = 1000
tls_enabled = true
tls_cert_path = "/etc/heliosdb/ssl/cert.pem"
tls_key_path = "/etc/heliosdb/ssl/key.pem"

Performance Section

Performance tuning parameters.

[performance]
worker_threads = 0
query_timeout_secs = 300
simd_enabled = true
parallel_query = true

Options

OptionTypeDefaultDescription
worker_threadsIntegerCPU countWorker threads (0 = auto)
query_timeout_secsInteger300Legacy timeout setting
simd_enabledBooleantrueEnable SIMD optimizations
parallel_queryBooleantrueEnable parallel execution

Optimizer Section

Query optimizer configuration.

[optimizer]
enabled = true
enable_seqscan = true
enable_indexscan = true
enable_hashjoin = true
enable_mergejoin = true
enable_nestloop = true
seq_page_cost = 1.0
random_page_cost = 4.0
cpu_tuple_cost = 0.01
cpu_index_tuple_cost = 0.005

Options

OptionTypeDefaultDescription
enabledBooleantrueEnable optimizer
enable_seqscanBooleantrueAllow sequential scans
enable_indexscanBooleantrueAllow index scans
enable_hashjoinBooleantrueAllow hash joins
enable_mergejoinBooleantrueAllow merge joins
enable_nestloopBooleantrueAllow nested loop joins
seq_page_costFloat1.0Sequential page cost
random_page_costFloat4.0Random page cost
cpu_tuple_costFloat0.01CPU tuple cost
cpu_index_tuple_costFloat0.005CPU index tuple cost

Examples

# SSD optimized
[optimizer]
random_page_cost = 1.1 # Low for SSDs
# Force index usage
[optimizer]
enable_seqscan = false
# Disable specific joins
[optimizer]
enable_hashjoin = false
enable_mergejoin = false

Authentication Section

User authentication configuration.

[authentication]
enabled = false
method = "trust"
jwt_secret = "secret-key"
jwt_expiration_secs = 86400
password_hash_algorithm = "argon2"
users_file = "/etc/heliosdb/users.json"

Options

OptionTypeDefaultDescription
enabledBooleanfalseEnable authentication
methodString"trust"Auth method: trust, password, jwt, ldap
jwt_secretStringNoneJWT secret key
jwt_expiration_secsInteger86400JWT expiration (24h)
password_hash_algorithmString"argon2"Hash: argon2, bcrypt, pbkdf2
users_fileStringNoneUsers database file

Examples

# Development: No auth
[authentication]
method = "trust"
# Production: JWT auth
[authentication]
enabled = true
method = "jwt"
jwt_secret = "CHANGE-THIS-IN-PRODUCTION"
jwt_expiration_secs = 3600 # 1 hour
# Password auth
[authentication]
enabled = true
method = "password"
password_hash_algorithm = "argon2"
users_file = "/etc/heliosdb/users.json"

Compression Section

Data compression configuration.

[compression]
default_type = "Zstd"
level = 3
enable_alp = true
enable_fsst = true
min_size_bytes = 1024

Options

OptionTypeDefaultDescription
default_typeString"Zstd"Default compression type
levelInteger3Compression level (1-22)
enable_alpBooleantrueEnable ALP for numerics
enable_fsstBooleantrueEnable FSST for strings
min_size_bytesInteger1024Minimum size to compress

Examples

# Maximum compression
[compression]
default_type = "Zstd"
level = 19
# Fast compression
[compression]
default_type = "Lz4"
level = 1
# No compression
[compression]
default_type = "None"

Materialized Views Section

Materialized view refresh configuration.

[materialized_views]
auto_refresh_default = false
default_max_cpu_percent = 15
refresh_check_interval_secs = 60
max_concurrent_refreshes = 2

Options

OptionTypeDefaultDescription
auto_refresh_defaultBooleanfalseDefault auto-refresh
default_max_cpu_percentInteger15Max CPU for refresh
refresh_check_interval_secsInteger60Check interval
max_concurrent_refreshesInteger2Concurrent refreshes

Vector Section

Vector index configuration.

[vector]
default_index_type = "hnsw"
hnsw_ef_construction = 200
hnsw_m = 16
enable_pq = true
pq_subvectors = 8
pq_bits = 8

Options

OptionTypeDefaultDescription
default_index_typeString"hnsw"Index type: flat, hnsw, ivf
hnsw_ef_constructionInteger200HNSW construction param
hnsw_mInteger16HNSW connections
enable_pqBooleantrueEnable product quantization
pq_subvectorsInteger8PQ subvector count
pq_bitsInteger8PQ bits per subvector

Examples

# High quality index
[vector]
hnsw_ef_construction = 400
hnsw_m = 32
# Fast, low memory
[vector]
hnsw_ef_construction = 100
hnsw_m = 8
enable_pq = true

Session Section

Session management configuration.

[session]
timeout_secs = 3600
max_sessions_per_user = 10
cleanup_interval_secs = 300

Options

OptionTypeDefaultDescription
timeout_secsInteger3600Session timeout in seconds (1 hour)
max_sessions_per_userInteger10Maximum concurrent sessions per user
cleanup_interval_secsInteger300Cleanup check interval (5 minutes)

Examples

# Short-lived sessions (API use)
[session]
timeout_secs = 900
max_sessions_per_user = 100
# Long-lived sessions (interactive)
[session]
timeout_secs = 86400
max_sessions_per_user = 5

Locks Section

Lock management and deadlock detection configuration.

[locks]
timeout_ms = 30000
deadlock_check_interval_ms = 100
max_lock_holders = 10000

Options

OptionTypeDefaultDescription
timeout_msInteger30000Lock acquisition timeout (30 seconds)
deadlock_check_interval_msInteger100Deadlock detection interval
max_lock_holdersInteger10000Maximum concurrent lock holders

Examples

# High-concurrency workload
[locks]
timeout_ms = 60000
deadlock_check_interval_ms = 50
max_lock_holders = 50000
# Low-latency requirements
[locks]
timeout_ms = 5000
deadlock_check_interval_ms = 10

Dump Section

Database backup and dump scheduling configuration.

[dump]
auto_dump_enabled = false
schedule = ""
compression = "zstd"
max_dump_size_mb = 10000
keep_dumps = 10
dump_dir = ".dumps"

Options

OptionTypeDefaultDescription
auto_dump_enabledBooleanfalseEnable scheduled dumps
scheduleString""Cron-style schedule (e.g., "0 */6 * * *")
compressionString"zstd"Compression: zstd, gzip, none
max_dump_size_mbInteger10000Max dump file size before rolling
keep_dumpsInteger10Number of old dumps to keep (0 = all)
dump_dirString".dumps"Directory to store dump files

Examples

# Hourly automated dumps
[dump]
auto_dump_enabled = true
schedule = "0 * * * *"
compression = "zstd"
keep_dumps = 24
# Daily dumps with maximum compression
[dump]
auto_dump_enabled = true
schedule = "0 2 * * *"
compression = "zstd"
max_dump_size_mb = 50000
keep_dumps = 30
dump_dir = "/var/backups/heliosdb"
# No auto-dump, manual only
[dump]
auto_dump_enabled = false
compression = "gzip"

Cron Schedule Format

┌───────────── minute (0 - 59)
│ ┌───────────── hour (0 - 23)
│ │ ┌───────────── day of month (1 - 31)
│ │ │ ┌───────────── month (1 - 12)
│ │ │ │ ┌───────────── day of week (0 - 6, Sunday = 0)
│ │ │ │ │
* * * * *
Examples:
"0 */6 * * *" - Every 6 hours
"0 2 * * *" - Daily at 2:00 AM
"0 0 * * 0" - Weekly on Sunday at midnight
"*/15 * * * *" - Every 15 minutes

Resource Quotas Section

Per-user resource limits and quotas.

[resource_quotas]
memory_limit_per_user_mb = 1024
max_concurrent_queries = 100
query_timeout_secs = 300

Options

OptionTypeDefaultDescription
memory_limit_per_user_mbInteger1024Memory limit per user (1 GB)
max_concurrent_queriesInteger100Maximum concurrent queries per user
query_timeout_secsInteger300Query execution timeout (5 minutes)

Examples

# Multi-tenant with strict limits
[resource_quotas]
memory_limit_per_user_mb = 256
max_concurrent_queries = 10
query_timeout_secs = 60
# Analytics workload (generous limits)
[resource_quotas]
memory_limit_per_user_mb = 8192
max_concurrent_queries = 20
query_timeout_secs = 3600

Complete Configuration Examples

Development

[storage]
memory_only = true
wal_enabled = false
[server]
listen_addr = "127.0.0.1"
port = 5432
[authentication]
method = "trust"
[performance]
worker_threads = 2

Production

[storage]
path = "/var/lib/heliosdb"
wal_sync_mode = "group_commit"
query_timeout_ms = 30000
cache_size = 2147483648
[encryption]
enabled = true
[encryption.key_source]
Environment = "HELIOSDB_KEY"
[server]
listen_addr = "0.0.0.0"
max_connections = 1000
tls_enabled = true
tls_cert_path = "/etc/heliosdb/ssl/cert.pem"
tls_key_path = "/etc/heliosdb/ssl/key.pem"
[authentication]
enabled = true
method = "jwt"
jwt_secret = "CHANGE-THIS"
[audit]
enabled = true
log_path = "/var/log/heliosdb/audit.log"

High-Performance SSD

[storage]
cache_size = 4294967296 # 4GB
[optimizer]
random_page_cost = 1.1
[performance]
worker_threads = 0
simd_enabled = true
[compression]
default_type = "Lz4"
level = 1

See Also