원장(ledger)을 계정과 시간으로 파티셔닝하고, 최근 데이터는 hot하게 오래된 데이터는 cold하게 유지하며, row를 append-only immutable ledger로 취급하십시오 — 그러면 단일 계정의 내역이 수십억 row 스캔이 아니라 작고 인덱싱된 슬라이스가 됩니다. 접근 패턴은 항상 "한 계정, 날짜 범위"이므로 그것에 맞게 파티셔닝하십시오.
아키텍처
text
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)
