# HFT-Optimized Database Configuration for Foxhunt Trading System # CRITICAL: Sub-millisecond timeouts for high-frequency trading operations [production] # PostgreSQL HFT Configuration - CRITICAL TIMEOUTS postgres_url = "${POSTGRES_URL:-postgresql://foxhunt_prod:${POSTGRES_PASSWORD}@${POSTGRES_HOST:-db-prod.foxhunt.internal}:${POSTGRES_PORT:-5432}/${POSTGRES_DB:-foxhunt_production}?sslmode=require&tcp_nodelay=true}" postgres_pool_max = "${POSTGRES_POOL_MAX:-100}" postgres_pool_min = "${POSTGRES_POOL_MIN:-20}" # CRITICAL: HFT-optimized timeouts in MICROSECONDS postgres_query_timeout_micros = "${POSTGRES_QUERY_TIMEOUT_MICROS:-800}" # <1ms for HFT postgres_connect_timeout_ms = "${POSTGRES_CONNECT_TIMEOUT_MS:-100}" # Fast connection postgres_acquire_timeout_ms = "${POSTGRES_ACQUIRE_TIMEOUT_MS:-50}" # Fast pool acquisition postgres_max_lifetime_seconds = "${POSTGRES_MAX_LIFETIME_SECONDS:-3600}" # 1 hour postgres_idle_timeout_seconds = "${POSTGRES_IDLE_TIMEOUT_SECONDS:-300}" # 5 minutes # Redis HFT Configuration - CRITICAL TIMEOUTS redis_url = "${REDIS_URL:-redis://${REDIS_HOST:-cache-prod.foxhunt.internal}:${REDIS_PORT:-6379}?tcp_nodelay=true}" redis_pool_size = "${REDIS_POOL_SIZE:-50}" redis_min_connections = "${REDIS_MIN_CONNECTIONS:-10}" # CRITICAL: HFT-optimized timeouts in MICROSECONDS redis_command_timeout_micros = "${REDIS_COMMAND_TIMEOUT_MICROS:-500}" # <1ms for HFT redis_connect_timeout_ms = "${REDIS_CONNECT_TIMEOUT_MS:-100}" # Fast connection redis_acquire_timeout_ms = "${REDIS_ACQUIRE_TIMEOUT_MS:-50}" # Fast pool acquisition # InfluxDB Production Configuration influx_url = "${INFLUXDB_URL:-http://${INFLUXDB_HOST:-metrics-prod.foxhunt.internal}:${INFLUXDB_PORT:-8086}}" influx_org = "${INFLUXDB_ORG:-foxhunt}" influx_bucket = "${INFLUXDB_BUCKET:-market_data_prod}" influx_token = "${INFLUXDB_TOKEN}" influx_write_timeout_ms = "${INFLUXDB_WRITE_TIMEOUT_MS:-1000}" # 1 second for writes influx_query_timeout_ms = "${INFLUXDB_QUERY_TIMEOUT_MS:-5000}" # 5 seconds for queries influx_batch_size = "${INFLUXDB_BATCH_SIZE:-1000}" influx_flush_interval_ms = "${INFLUXDB_FLUSH_INTERVAL_MS:-100}" # 100ms flush # ClickHouse Analytics Configuration (Optional) clickhouse_url = "${CLICKHOUSE_URL:-http://${CLICKHOUSE_HOST:-analytics-prod.foxhunt.internal}:${CLICKHOUSE_PORT:-8123}}" clickhouse_database = "${CLICKHOUSE_DATABASE:-foxhunt_analytics}" clickhouse_username = "${CLICKHOUSE_USERNAME:-default}" clickhouse_password = "${CLICKHOUSE_PASSWORD}" clickhouse_query_timeout_ms = "${CLICKHOUSE_QUERY_TIMEOUT_MS:-30000}" # 30 seconds for analytics clickhouse_insert_timeout_ms = "${CLICKHOUSE_INSERT_TIMEOUT_MS:-10000}" # 10 seconds for inserts [staging] # PostgreSQL Staging Configuration - Relaxed but still fast postgres_url = "${POSTGRES_URL:-postgresql://foxhunt_stage:${POSTGRES_PASSWORD}@${POSTGRES_HOST:-db-stage.foxhunt.internal}:${POSTGRES_PORT:-5432}/${POSTGRES_DB:-foxhunt_staging}}" postgres_pool_max = "${POSTGRES_POOL_MAX:-50}" postgres_pool_min = "${POSTGRES_POOL_MIN:-10}" postgres_query_timeout_micros = "${POSTGRES_QUERY_TIMEOUT_MICROS:-2000}" # 2ms for staging postgres_connect_timeout_ms = "${POSTGRES_CONNECT_TIMEOUT_MS:-200}" postgres_acquire_timeout_ms = "${POSTGRES_ACQUIRE_TIMEOUT_MS:-100}" # Redis Staging Configuration redis_url = "${REDIS_URL:-redis://${REDIS_HOST:-cache-stage.foxhunt.internal}:${REDIS_PORT:-6379}}" redis_pool_size = "${REDIS_POOL_SIZE:-20}" redis_min_connections = "${REDIS_MIN_CONNECTIONS:-5}" redis_command_timeout_micros = "${REDIS_COMMAND_TIMEOUT_MICROS:-1000}" # 1ms for staging redis_connect_timeout_ms = "${REDIS_CONNECT_TIMEOUT_MS:-200}" # InfluxDB Staging Configuration influx_url = "${INFLUXDB_URL:-http://${INFLUXDB_HOST:-metrics-stage.foxhunt.internal}:${INFLUXDB_PORT:-8086}}" influx_org = "${INFLUXDB_ORG:-foxhunt}" influx_bucket = "${INFLUXDB_BUCKET:-market_data_stage}" influx_token = "${INFLUXDB_TOKEN}" [development] # PostgreSQL Development Configuration - Reasonable timeouts for development postgres_url = "${POSTGRES_URL:-postgresql://foxhunt_dev:${POSTGRES_PASSWORD:-foxhunt_dev_pass}@${POSTGRES_HOST:-localhost}:${POSTGRES_PORT:-5432}/${POSTGRES_DB:-foxhunt_dev}}" postgres_pool_max = "${POSTGRES_POOL_MAX:-20}" postgres_pool_min = "${POSTGRES_POOL_MIN:-5}" postgres_query_timeout_micros = "${POSTGRES_QUERY_TIMEOUT_MICROS:-10000}" # 10ms for development postgres_connect_timeout_ms = "${POSTGRES_CONNECT_TIMEOUT_MS:-1000}" # 1 second postgres_acquire_timeout_ms = "${POSTGRES_ACQUIRE_TIMEOUT_MS:-500}" # 500ms # Redis Development Configuration redis_url = "${REDIS_URL:-redis://${REDIS_HOST:-localhost}:${REDIS_PORT:-6379}}" redis_pool_size = "${REDIS_POOL_SIZE:-10}" redis_min_connections = "${REDIS_MIN_CONNECTIONS:-2}" redis_command_timeout_micros = "${REDIS_COMMAND_TIMEOUT_MICROS:-5000}" # 5ms for development redis_connect_timeout_ms = "${REDIS_CONNECT_TIMEOUT_MS:-1000}" # InfluxDB Development Configuration influx_url = "${INFLUXDB_URL:-http://${INFLUXDB_HOST:-localhost}:${INFLUXDB_PORT:-8086}}" influx_org = "${INFLUXDB_ORG:-foxhunt}" influx_bucket = "${INFLUXDB_BUCKET:-market_data_dev}" influx_token = "${INFLUXDB_TOKEN:-dev-token}" [testing] # PostgreSQL Testing Configuration - Fast but not HFT-level postgres_url = "${TEST_POSTGRES_URL:-postgresql://foxhunt_test:${TEST_POSTGRES_PASSWORD:-test_pass}@${TEST_POSTGRES_HOST:-localhost}:${TEST_POSTGRES_PORT:-5433}/${TEST_POSTGRES_DB:-foxhunt_test}}" postgres_pool_max = "${TEST_POSTGRES_POOL_MAX:-10}" postgres_pool_min = "${TEST_POSTGRES_POOL_MIN:-2}" postgres_query_timeout_micros = "${TEST_POSTGRES_QUERY_TIMEOUT_MICROS:-5000}" # 5ms for tests postgres_connect_timeout_ms = "${TEST_POSTGRES_CONNECT_TIMEOUT_MS:-2000}" # Redis Testing Configuration redis_url = "${TEST_REDIS_URL:-redis://${TEST_REDIS_HOST:-localhost}:${TEST_REDIS_PORT:-6380}}" redis_pool_size = "${TEST_REDIS_POOL_SIZE:-5}" redis_command_timeout_micros = "${TEST_REDIS_COMMAND_TIMEOUT_MICROS:-2000}" # 2ms for tests redis_connect_timeout_ms = "${TEST_REDIS_CONNECT_TIMEOUT_MS:-1000}" # InfluxDB Testing Configuration influx_url = "${TEST_INFLUXDB_URL:-http://${TEST_INFLUXDB_HOST:-localhost}:${TEST_INFLUXDB_PORT:-8087}}" influx_org = "${TEST_INFLUXDB_ORG:-foxhunt_test}" influx_bucket = "${TEST_INFLUXDB_BUCKET:-market_data_test}" influx_token = "${TEST_INFLUXDB_TOKEN:-test-token}" # Global Performance Settings [performance] # Maximum allowed query latency for HFT operations (microseconds) max_query_latency_micros = 800 # Enable detailed query logging for performance analysis enable_query_logging = true # Enable connection pool monitoring enable_pool_monitoring = true # Enable automatic health checks enable_health_checks = true # Health check interval in seconds health_check_interval_seconds = 30 # Backup Configuration [backup] backup_directory = "/var/backups/foxhunt" enable_compression = true enable_encryption = true retention_days = 30 verify_backups = true include_timeseries = false # Usually too large for regular backups include_analytics = false # Usually too large for regular backups