Database Schema Overview
This section explains the database choices and schema design rationale. The repository uses Postgres for relational storage; consider time-series optimizations where appropriate.
Service-owned tables
Auth service:
users(identity, auth provider linkage, verification flags)
Profile service:
users(profile + cash balance)portfolio_positionsportfolio_transactions
Data service:
instrumentsdaily_price_snapshotstechnical_indicator_snapshotsnews_articlesinstrument_news
Orchestration service:
analysis_jobsanalysis_job_events
Pattern service:
- Model metadata and inference records (plus artifacts in DVC/MLflow)
Indexing & query patterns
- Market data: index on (instrument_ticker, observed_at) for fast range queries
- Portfolio positions: unique (user_id, ticker) for upserts
- Job events: index by (analysis_job_id, sequence_number) for trace reconstruction
Partitioning is recommended for large time-series tables as data grows.