GH GambleHub

Archivi Hot/Warm/Cold

1) Perché dividere i dati in Hot/Warm/Cold

In un unico cluster coesistono diversi pattern di accesso, quali richieste interattive di dati recenti, analisi di periodi recenti e accesso raro all'archivio. La suddivisione in livelli consente:
  • Ottimizzare il costo: livello veloce e costoso solo per il set di lavoro caldo.
  • Mantieni SLO: p95/throughput per la linea, deadline più lunghe per la storia.
  • Scalabilità più semplice: scalare orizzontalmente gli strati economici senza surriscaldare il fronte.
  • Riduzione dei rischi: diversi domini di guasto/replica, regole di protezione indipendenti.
Breve:
  • Hot è il più recente, frequente lettura/scrittura, minimo latitanza.
  • Warm - Cambia meno spesso, con molte letture per intervalli di tempo.
  • Archivio Cold, stoccaggio economico, TTFB alto, recupero lento.

2) Profili e SLO per livello

Hot

Accesso: millisecondi (p95 5-20 ms su KV/indice; 100-300 ms su richieste complesse).
Operazioni: frequenti upsert/append, indicizzazione, OLTP/stram-ingest.
Supporti NVME/SSD, memoria, rete rapida.
Replica: aumentata (ad esempio RF = 3) per il RPO≈0, RTO minuto.

Warm

Accesso: decine, centinaia di millisecondi/secondi.
Operazioni di lettura «finestra», batch, OLAP di storia recente (7-90 giorni).
Supporti: SATA SSD/HDD veloci/archivio oggetti con cache locale.
Replica moderata (RF = 2), compressione attivata.

Cold

Accesso: secondi-orari; frequente accesso offline, «retrieve-and-scan».
Operazioni: letture rare, regolazione (retensing).
Supporti: oggetto/archivio (S3 Glacier/Deep Archive, Azure Archive, GCS Coldline).
Replica regionale/interregionale, WORM/Legale Hold.

3) Tecnologie standard per livello

Hot: PostgreSQL (OLTP, partitions), MySQL/InnoDB, Redis/Memcached (кэш), Elasticsearch/Opensearch hot-nodes, ClickHouse горячие партиции, Kafka local log.
Warm: deposito di invertebrati, recenti partenze, Elasticsearch warm-nodes, S3 + Preto/Trino con cache, Tiered storage (Kafka/Pulsar).
Cold: S3/Glacier, GCS Nearline/Coldline/Archive, Azure Cool/Archive, Archivio HDFS, Bacap a lungo termine.

4) Regole per il ciclo di vita (ILM) e automazione

4. 1 Concetti

La partizione in base al tempo (giorno/settimana/mese) è la principale leva di traduzione tra i livelli.
Regole ILM: rollover (volume/età), shrink/merge, freeze, delete.
Deduplicazione e compressione: includere su warm/cold, evitando i colli di bottiglia CPU su hot.

4. 2 Esempi

Elasticsearch ILM (hot→warm→cold→delete)

json
{
"policy": {
"phases": {
"hot":  { "actions": { "rollover": { "max_age": "7d", "max_size": "50gb" } } },
"warm": { "min_age": "7d", "actions": { "allocate": { "require": { "box_type": "warm" } }, "forcemerge": { "max_num_segments": 1 } } },
"cold": { "min_age": "30d", "actions": { "allocate": { "require": { "box_type": "cold" } }, "freeze": {} } },
"delete":{ "min_age": "365d", "actions": { "delete": {} } }
}
}
}

S3 Lifecycle (Standard→Infrequent→Glacier→Expire)

json
{
"Rules": [{
"ID": "logs-lifecycle",
"Filter": { "Prefix": "logs/" },
"Status": "Enabled",
"Transitions": [
{ "Days": 7, "StorageClass": "STANDARD_IA" },
{ "Days": 30, "StorageClass": "GLACIER" }
],
"Expiration": { "Days": 365 }
}]
}

Kafka Tiered Storage (sketch)

properties log. segment. bytes=1073741824 log. retention. ms=259200000 tiered. storage. enable=true remote. log. storage. system=s3 remote. log. storage. bucket=topic-archive

PostgreSQL partitella per data

sql
CREATE TABLE events (
id bigserial, at timestamptz NOT NULL, payload jsonb
) PARTITION BY RANGE (at);

CREATE TABLE events_2025_10 PARTITION OF events
FOR VALUES FROM ('2025-10-01') TO ('2025-11-01')
TABLESPACE ts_hot; -- further ALTER TABLE... SET TABLESPACE ts_warm по ILM

5) Modellazione dei costi e delle prestazioni

5. 1 Modello TCO semplice

«TCO = supporto + rete (egress) + CPU per compressione/scan + controllo + DR/replica».

5. 2 Equilibrio di latitanza e prezzo

Il gruppo caldo 5-20% dei dati fornisce 80-95% delle richieste.
L'obiettivo è mantenere il set di lavoro in Hot/cache (CPU/RAM/NVMe), spostarlo in Warm/Cold.

5. 3 Metriche

hit_ratio_hot, pct_hot_of_total_bytes, cost_per_TB_month{tier}, scan_cost_per_TB, time_to_first_byte{tier}, promotion_rate (cold→warm), demotion_rate (hot→warm/cold).

6) Partizionamento, indicizzazione e cache

Partizioni per tempo + indici secondari per i tagli «freschi».
Regola d'oro per le richieste: filtro per la prima ora, quindi chiavi selettive.
Cache gerarchica: in-proc → Redis → edge; pin-cache per chiavi hot/unità.
Filtri bloom/skip (ClickHouse, Parket) per ridurre le letture warm/cold.

7) Replica, disponibilità e DR

Hot replica sincrona (multisone), RPO≈0, feelover rapido.
Replica asincrona interzonale/interregionale RPO minuti.
Cold: interregionale con WORM (Write Once Read Many), Legale Hold per la compilazione.
Piani DR: run book per il ripristino degli archivi «freddi» (orologi), fire-drills periodici.

8) Sicurezza e conformità

PII/PCI: crittografia a riposo (KMS), regole chiave su ogni step, occultamento durante il trasferimento verso il basso.
Rimozione e cancellazione: tempi automatici per cold, cancellazione provata (erase reports).
Giurisdizione: conservazione nella regione (EU-only, RU-only, BY-region, ecc.), geo-isolamento bucket'ov.

9) Pattern d'uso

9. 1 Logi e telemetria

Hot: le ultime 24-72 ore nel Elasticsearch/ClickHouse su NVME.
Warm: 30-180 giorni per SSD/HDD + Parcheggio in S3.
Cold:> 180 giorni in Glacier; richieste Trino/Preto «su richiesta».

9. 2 Transazioni/mandati

Hot: un database OLTP (PostgreSQL/MySQL) con una breve storia.
Snapshot denormalizzati per BI.
Archivio legale, esportazione in archivio oggetti.

9. 3 ML-ficestore

Hot: fici online a Redis/low-latency DB.
Warm: fici off-line in colinvertebrato/oggetto.
Cold: dataset originale, versioned (Delta/Iceberg/Hudi).

10) Interazione con cluster e Kubernets

StorageClass segnare per tier: «gold-nvme» (hot), «silver-ssd» (warm), «bronze-object» (cold).
Pianificare i pool sotto hot/warm/cold worcload.
Cache sidecar (ad esempio, cache SSD locale) prima delle richieste di archiviazione degli oggetti.

Esempio di PVC

yaml apiVersion: v1 kind: PersistentVolumeClaim metadata: { name: db-hot }
spec:
storageClassName: gold-nvme accessModes: [ ReadWriteOnce ]
resources: { requests: { storage: 500Gi } }

11) Osservabilità

Dashboard: distribuzione di byte/richieste per tier, latency per tier, offload per warm/cold, costo/mese.
Alert: riduzione dell'hit-ratio hot, crescita della promozione-rate (se il volume caldo è sufficiente), aumento del TTFB sul warm, recupero lento del cold (SLO breach).

12) Anti-pattern

«Tutto in hot», costo eccessivo, surriscaldamento dell'IO.
«Freddo profondo senza indici»: conservare, leggere a basso costo; nessun percorso di taglio rapido.
«No ILM», passaggi manuali, errori umani.
Regole di replica unificate per tutti i livelli: sovrapprezzo e RPO ineguagliabili.
Miscelare le query prod/archiviate in un unico pool di calcolo: impatto reciproco.
«Egress non documentato» dalle nuvole cold - sorprese nel punteggio.

13) Assegno-foglio di implementazione

  • Classificare i set di dati: SLA, frequenza di accesso, requisiti di conservazione.
  • Selezionare i supporti e i motori sul livello (NVME/SSD/HDD/Object/Archive).
  • Progettare partizioni (tempo/chiave), indici e formati (Parket/ORC/Delta).
  • Definire le regole ILM (rollover/transizione/expire) e automatizzare.
  • Attivare compressione/codifica (ZSTD/LZ4; in cold - più forte).
  • Definire la replica/RPO/RTO e le procedure DR.
  • Impostare la gerarchia cache e il pin per le unità a caldo.
  • Metriche di costo/latitanza e alert per tier.
  • Criteri di sicurezza (KMS, restrizioni legali, geo-isolamento).
  • Rivedere regolarmente le soglie di traduzione (seasonality, crescita).

14) FAQ

Q: Come definire i limiti tra hot e warm?
A: In base alla distribuzione reale delle richieste, «hot set» = il 5-20% superiore delle chiavi/partiture che forniscono 80-95% delle richieste. Tutto ciò che non arriva è un candidato al warm.

Q: Puoi leggere direttamente da cold?
A: Sì, ma pianificare SLA a minuti/ore e costo egress; il più delle volte è più vantaggioso rimpatriare un frammento in warm (staging) prima dell'analisi.

Q: Cosa scegliere per gli analisti di 30-180 giorni?
A: Formati invertebrati (Parket/ORC) su oggetto + motore di query (Trino/Presto/ClickHouse) con cache; indici/skip-data per risparmiare IO.

Q: Come evitare le «tempeste di riscaldamento» in una selezione di cold?
A: Usa prefetch/predare-jobs, query con limiti, chiedi tempo, applica richiest-coalescing e pin-cache sul warm.

15) Riepilogo

L'architettura Hot/Warm/Cold è la corrispondenza dei costi per il profilo di accesso e la gestione automatica del ciclo di vita. Nitidi SLO per livello, partizionamento e ILM, replica intelligente e cache-gerarchia consentono di mantenere «caldo» veloce, «caldo» accessibile e «freddo» a basso costo e sicuro.

Contact

Mettiti in contatto

Scrivici per qualsiasi domanda o richiesta di supporto.Siamo sempre pronti ad aiutarti!

Telegram
@Gamble_GC
Avvia integrazione

L’Email è obbligatoria. Telegram o WhatsApp — opzionali.

Il tuo nome opzionale
Email opzionale
Oggetto opzionale
Messaggio opzionale
Telegram opzionale
@
Se indichi Telegram — ti risponderemo anche lì, oltre che via Email.
WhatsApp opzionale
Formato: +prefisso internazionale e numero (ad es. +39XXXXXXXXX).

Cliccando sul pulsante, acconsenti al trattamento dei dati.