Appearance
Architettura
BASE9 elabora le misure elettriche di mercato e le rende interrogabili via API. Questa pagina descrive come sono fatti i dati e come ci si arriva.
Il percorso di un dato
Acquisizione
Scarico dal SII
Gli archivi del Sistema Informativo Integrato arrivano ogni giorno. Un registro tiene traccia di ogni file: cosa conteneva, quanto ha reso, quanto ci ha messo.
→
Archiviazione a oggetti
Deposito grezzo
L'archivio compresso resta intatto, versionato e cifrato. È la prova di cosa è stato ricevuto, e non viene mai modificato.
→
Elaborazione distribuita
Lettura e trasformazione
Ogni XML dentro l'archivio viene letto e trasformato in letture normalizzate. Un archivio da 3 GB contiene decine di migliaia di file e milioni di letture.
→
Archivio colonnare
Archivio analitico
Ogni lettura, per sempre, in formato colonnare: 96 valori al quarto d'ora per punto e per giorno. È la fonte da cui tutto si ricalcola.
→
Banca dati
Aggregati caldi
Consumo giornaliero e mensile per punto, pronti per la fatturazione. Interrogabili in millisecondi su centinaia di migliaia di punti insieme.
Due archivi, due usi
Un sistema di misura ha due domande diverse da soddisfare, e usare un solo archivio per entrambe significa farne male almeno una.
Il livello caldo — «quanto»
Risponde su tutti i punti insieme e deve essere immediata: la chiusura di un mese interroga fino a circa 500.000 punti-mese in un colpo solo. Tiene il consumo giornaliero degli ultimi tre mesi e il mensile completo.
L'archivio — «com'è fatto»
Risponde su un punto alla volta e può costare un secondo: il profilo al quarto d'ora di una giornata, i campi grezzi del flusso, le potenze, la reattiva. Conserva tutto, senza scadenza.
Come si verifica che i numeri siano giusti
Un sistema di misura che dice solo «ecco il consumo» non è verificabile. BASE9 fa passare ogni punto-mese attraverso quattro controlli indipendenti, e dichiara quello che non supera.
1 · Due fonti che si confrontano
Gli indici del contatore e la curva di carico sono due misure indipendenti dello stesso consumo. Devono coincidere entro tolleranza. Copre il 92% dei punti.
2 · Un'identità aritmetica
Per un registro che accumula, la somma delle differenze giornaliere è la differenza fra l'ultimo e il primo indice. Sono due numeri calcolati separatamente: se divergono, la serie ha un salto.
3 · La finestra di lettura
Il periodo misurato copre davvero il mese? Una finestra più corta fattura meno del dovuto, una più lunga fattura di più. Se si chiude prima per un intervento dichiarato — distacco, riattivazione, cambio fornitore — il periodo è completo, e viene detto.
4 · La continuità del punto
Il mese assomiglia alla storia di quel punto? Banda ricavata da 2.044.775 punti-mese: l'83% dei mesi sta fra metà e il doppio del consumo tipico. Fuori da dieci volte, il dato si dichiara invece di fatturarlo.
Ogni punto-mese porta uno stato leggibile che dice se è emettibile e, quando non lo è, perché. Lo stato arriva fino alla risposta dell'API e alla schermata, non resta in un log.
Isolamento fra clienti
Un database separato per cliente, non tabelle condivise con una colonna che distingue. L'isolamento è nella struttura, non in una clausola WHERE che qualcuno può dimenticare.
Le chiavi API sono legate al proprio cliente nell'autorizzatore: una chiave non può leggere i dati di un altro nemmeno modificando l'intestazione della richiesta. Lo scope lettura/scrittura viene applicato nel punto che decide, non propagato a valle.
Recuperabilità
Ripristino a un istante
La banca dati si riporta a qualunque secondo degli ultimi sette giorni. Gli archivi su oggetti sono versionati: una sovrascrittura non perde la versione precedente.
Riproducibilità
Più forte di un backup. Gli archivi analitici conservano ogni lettura estratta da ogni file, senza scadenza: ogni aggregato si ricalcola da zero. Un backup riporta a uno stato; questo permette di ricostruirlo anche se quello stato era sbagliato.
Il registro per file completa il quadro: per ogni archivio ricevuto resta scritto quanto conteneva, quante letture ha prodotto, quanto si è espanso e quanto è durato.
I numeri
49,2 mlnletture rielaborate in 36 minuti
~2.000/sletture estratte al secondo, per processo
96valori al quarto d'ora per punto e giorno
27 mesidi profilo conservati senza scadenza
~500.000punti-mese consolidabili in una chiusura
7 giornidi ripristino al secondo
Fondamenta
Infrastruttura interamente serverless su Amazon Web Services: nessun server da amministrare, capacità che segue il carico e si ritira quando il carico finisce.
Banca dati elastica
Compatibile PostgreSQL, con capacità che cresce sotto carico e si sospende quando nessuno interroga. Un database separato per ogni cliente.
Elaborazione a consumo
La trasformazione gira su cluster effimeri che esistono solo durante il lavoro; le API su funzioni che esistono solo durante la richiesta.
Interrogazione sugli archivi
SQL diretto sul formato colonnare, senza spostare i dati e senza infrastruttura dedicata da mantenere.
Archiviazione a oggetti
Archivi grezzi e analitici: cifrati a riposo, versionati, accesso pubblico bloccato, durabilità su più zone di disponibilità.
Ingresso unico e identità
Un solo punto d'accesso per le API, due modi di autenticarsi: sessioni per il pannello, chiavi per chi integra, con ambito di lettura o scrittura per chiave.
Chiavi e credenziali gestite
Mai nel codice, mai nelle variabili di un processo: custodite dal servizio e ruotabili senza toccare l'applicazione.
BASE9 è costruito interamente su Amazon Web Services e ne eredita le certificazioni infrastrutturali: data center, rete e isolamento fisico ricadono sotto i programmi di conformità AWS.
Amazon Web Services e AWS sono marchi di Amazon.com, Inc. o delle sue affiliate. Le icone in questa pagina sono rappresentazioni originali e non riproducono marchi figurativi di terzi.

