Партиционируйте ledger по аккаунту и времени, держите свежие данные горячими, а старые холодными, и относитесь к строкам как к append-only неизменяемому ledger — чтобы история одного аккаунта была малым индексированным срезом, а не сканом миллиардов строк. Паттерн доступа всегда «один аккаунт, диапазон дат», поэтому партиционируйте под него.
Архитектура
Write ─▶ Ledger table (append-only, immutable)
partition by (account_hash, month)
│
┌────────┴─────────┐
HOT tier COLD tier
last 3 mo older
Postgres/SSD S3/Parquet, Glacier
│ │
index-seek keyset paginate ──▶ API (account+range)
