<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Glossario on Ivan Luminaria</title><link>https://ivanluminaria.com/it/glossary/</link><description>Recent content in Glossario on Ivan Luminaria</description><generator>Hugo</generator><language>it</language><atom:link href="https://ivanluminaria.com/it/glossary/index.xml" rel="self" type="application/rss+xml"/><item><title>Additive Measure</title><link>https://ivanluminaria.com/it/glossary/additive-measure/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/it/glossary/additive-measure/</guid><description>&lt;p&gt;Una &lt;strong&gt;additive measure&lt;/strong&gt; (misura additiva) è un valore numerico in una fact table che può essere legittimamente sommato lungo qualsiasi dimensione: per cliente, per prodotto, per periodo, per zona.&lt;/p&gt;
&lt;h2 id="come-funziona" class="relative group"&gt;Come funziona &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#come-funziona" aria-label="Ancora"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;Le misure nelle fact table si classificano in tre categorie:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Additive&lt;/strong&gt;: possono essere sommate lungo tutte le dimensioni (es. importo vendita, quantità, costo). Sono le più comuni e le più utili&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Semi-additive&lt;/strong&gt;: possono essere sommate lungo alcune dimensioni ma non lungo il tempo (es. saldo di un conto: sommabile per filiale, non per mese)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Non-additive&lt;/strong&gt;: non possono essere sommate in alcun modo (es. percentuali, rapporti, medie precalcolate)&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="a-cosa-serve" class="relative group"&gt;A cosa serve &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#a-cosa-serve" aria-label="Ancora"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;Le misure additive sono il cuore di ogni fact table perché permettono le aggregazioni che il business richiede: totali per periodo, per regione, per prodotto. La regola chiave: memorizzare sempre i valori atomici (il dettaglio), mai gli aggregati. Da un importo per riga di fattura puoi ottenere il totale mensile; dal totale mensile non puoi ricostruire le singole righe.&lt;/p&gt;</description></item><item><title>AI Manager</title><link>https://ivanluminaria.com/it/glossary/ai-manager/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/it/glossary/ai-manager/</guid><description>&lt;p&gt;L&amp;rsquo;&lt;strong&gt;AI Manager&lt;/strong&gt; è il ruolo professionale che governa l&amp;rsquo;introduzione e l&amp;rsquo;utilizzo dell&amp;rsquo;intelligenza artificiale all&amp;rsquo;interno di un progetto o un&amp;rsquo;organizzazione. Non è chi usa l&amp;rsquo;AI — è chi decide dove, come e con quali precauzioni integrarla nelle architetture esistenti.&lt;/p&gt;
&lt;h2 id="come-funziona" class="relative group"&gt;Come funziona &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#come-funziona" aria-label="Ancora"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;L&amp;rsquo;AI Manager risponde a domande che nessun modello può rispondere: dove l&amp;rsquo;AI genera valore reale e dove genera solo entusiasmo? Quanto costa mantenerla, non solo implementarla? Cosa succede quando il modello sbaglia? Come si integra con le architetture mission-critical senza comprometterne la stabilità?&lt;/p&gt;</description></item><item><title>ANALYZE</title><link>https://ivanluminaria.com/it/glossary/postgresql-analyze/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/it/glossary/postgresql-analyze/</guid><description>&lt;p&gt;&lt;strong&gt;ANALYZE&lt;/strong&gt; è il comando PostgreSQL che raccoglie statistiche sulla distribuzione dei dati nelle tabelle e le salva nel catalogo &lt;code&gt;pg_statistic&lt;/code&gt; (leggibile tramite la vista &lt;code&gt;pg_stats&lt;/code&gt;). L&amp;rsquo;optimizer usa queste statistiche per stimare la cardinalità — quante righe restituirà ogni operazione — e scegliere il piano di esecuzione più efficiente.&lt;/p&gt;
&lt;h2 id="cosa-raccoglie" class="relative group"&gt;Cosa raccoglie &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#cosa-raccoglie" aria-label="Ancora"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;Le statistiche raccolte da ANALYZE includono:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Most common values&lt;/strong&gt;: i valori più frequenti per ogni colonna e la loro percentuale&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Istogrammi di distribuzione&lt;/strong&gt;: come sono distribuiti i valori rimanenti&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Numero di valori distinti&lt;/strong&gt;: quanti valori unici ha ogni colonna&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Percentuale di NULL&lt;/strong&gt;: quante righe hanno valore NULL per ogni colonna&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;La qualità di queste statistiche dipende dal numero di campioni raccolti, controllato dal parametro &lt;code&gt;default_statistics_target&lt;/code&gt;.&lt;/p&gt;</description></item><item><title>Anonymous User</title><link>https://ivanluminaria.com/it/glossary/anonymous-user/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/it/glossary/anonymous-user/</guid><description>&lt;p&gt;L&amp;rsquo;&lt;strong&gt;Anonymous User&lt;/strong&gt; (utente anonimo) è un account MySQL/MariaDB con username vuoto (&lt;code&gt;''@'localhost'&lt;/code&gt;) che viene creato automaticamente durante l&amp;rsquo;installazione. Non ha nome e spesso non ha password.&lt;/p&gt;
&lt;h2 id="come-funziona" class="relative group"&gt;Come funziona &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#come-funziona" aria-label="Ancora"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;Quando un utente si connette, MySQL cerca la corrispondenza più specifica nella tabella &lt;code&gt;mysql.user&lt;/code&gt;. L&amp;rsquo;utente anonimo &lt;code&gt;''@'localhost'&lt;/code&gt; è più specifico di &lt;code&gt;'mario'@'%'&lt;/code&gt; per una connessione da localhost, perché &lt;code&gt;'localhost'&lt;/code&gt; batte &lt;code&gt;'%'&lt;/code&gt; nella gerarchia di specificità. Di conseguenza, Mario che si connette da locale viene autenticato come utente anonimo e perde tutti i suoi privilegi.&lt;/p&gt;</description></item><item><title>ASH</title><link>https://ivanluminaria.com/it/glossary/ash/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/it/glossary/ash/</guid><description>&lt;p&gt;&lt;strong&gt;ASH&lt;/strong&gt; (Active Session History) è un componente di Oracle Database che campiona lo stato di ogni sessione attiva una volta al secondo e conserva i dati in un buffer circolare in memoria (vista &lt;code&gt;V$ACTIVE_SESSION_HISTORY&lt;/code&gt;).&lt;/p&gt;
&lt;h2 id="come-funziona" class="relative group"&gt;Come funziona &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#come-funziona" aria-label="Ancora"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;Ogni secondo Oracle registra per ogni sessione attiva:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;SQL in esecuzione (&lt;code&gt;SQL_ID&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;Wait event corrente&lt;/li&gt;
&lt;li&gt;Programma e modulo chiamante&lt;/li&gt;
&lt;li&gt;Piano di esecuzione utilizzato (&lt;code&gt;SQL_PLAN_HASH_VALUE&lt;/code&gt;)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I dati più vecchi vengono scaricati automaticamente nelle tabelle AWR (&lt;code&gt;DBA_HIST_ACTIVE_SESS_HISTORY&lt;/code&gt;) e conservati per il periodo configurato.&lt;/p&gt;</description></item><item><title>Authentication Plugin</title><link>https://ivanluminaria.com/it/glossary/authentication-plugin/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/it/glossary/authentication-plugin/</guid><description>&lt;p&gt;Un &lt;strong&gt;Authentication Plugin&lt;/strong&gt; è il modulo che MySQL o MariaDB usa per verificare le credenziali di un utente al momento della connessione. Ogni utente nel sistema è associato a un plugin specifico che determina come la password viene hashata, trasmessa e verificata.&lt;/p&gt;
&lt;h2 id="come-funziona" class="relative group"&gt;Come funziona &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#come-funziona" aria-label="Ancora"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;I plugin principali sono: &lt;code&gt;mysql_native_password&lt;/code&gt; (default in MySQL 5.7 e MariaDB), che usa un hash SHA1 doppio; &lt;code&gt;caching_sha2_password&lt;/code&gt; (default in MySQL 8.0+), che usa SHA-256 con caching per migliorare sicurezza e performance. Quando un client si connette, deve supportare il plugin dell&amp;rsquo;utente a cui sta tentando di autenticarsi.&lt;/p&gt;</description></item><item><title>Autovacuum</title><link>https://ivanluminaria.com/it/glossary/autovacuum/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/it/glossary/autovacuum/</guid><description>&lt;p&gt;L&amp;rsquo;&lt;strong&gt;Autovacuum&lt;/strong&gt; è un daemon di PostgreSQL che esegue automaticamente VACUUM e ANALYZE sulle tabelle quando il numero di dead tuples supera una soglia calcolata come: &lt;code&gt;threshold + scale_factor × n_live_tup&lt;/code&gt;. Con i default (threshold=50, scale_factor=0.2), su una tabella con 10 milioni di righe si attiva dopo 2 milioni di dead tuples.&lt;/p&gt;
&lt;h2 id="come-funziona" class="relative group"&gt;Come funziona &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#come-funziona" aria-label="Ancora"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;Il daemon controlla periodicamente &lt;code&gt;pg_stat_user_tables&lt;/code&gt; e lancia un worker per ogni tabella che supera la soglia. Il numero massimo di worker simultanei è controllato da &lt;code&gt;autovacuum_max_workers&lt;/code&gt; (default 3). Il parametro &lt;code&gt;autovacuum_vacuum_cost_delay&lt;/code&gt; controlla quanto il vacuum rallenta sé stesso per non sovraccaricare l&amp;rsquo;I/O.&lt;/p&gt;</description></item><item><title>AWR</title><link>https://ivanluminaria.com/it/glossary/awr/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/it/glossary/awr/</guid><description>&lt;p&gt;&lt;strong&gt;AWR&lt;/strong&gt; (Automatic Workload Repository) è un componente integrato nel database Oracle che raccoglie automaticamente statistiche sulle performance del sistema a intervalli regolari (di default ogni 60 minuti) e le conserva per un periodo configurabile.&lt;/p&gt;
&lt;h2 id="come-funziona" class="relative group"&gt;Come funziona &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#come-funziona" aria-label="Ancora"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;AWR cattura snapshot periodici che includono:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Statistiche delle sessioni e dei wait event&lt;/li&gt;
&lt;li&gt;Metriche SQL (top SQL per tempo di esecuzione, I/O, CPU)&lt;/li&gt;
&lt;li&gt;Statistiche sulle strutture di memoria (SGA, PGA)&lt;/li&gt;
&lt;li&gt;Statistiche I/O per datafile e tablespace&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="a-cosa-serve" class="relative group"&gt;A cosa serve &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#a-cosa-serve" aria-label="Ancora"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;Il report AWR è lo strumento principale per diagnosticare problemi di performance in Oracle. Confrontando due snapshot è possibile identificare:&lt;/p&gt;</description></item><item><title>B-Tree</title><link>https://ivanluminaria.com/it/glossary/b-tree/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/it/glossary/b-tree/</guid><description>&lt;p&gt;Il &lt;strong&gt;B-Tree&lt;/strong&gt; (Balanced Tree) è la struttura dati più comune per gli indici nei database relazionali ed è il tipo di indice predefinito in PostgreSQL, MySQL e Oracle. Mantiene i dati ordinati in una struttura ad albero bilanciato che garantisce tempi di ricerca logaritmici.&lt;/p&gt;
&lt;h2 id="come-funziona" class="relative group"&gt;Come funziona &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#come-funziona" aria-label="Ancora"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;Un B-Tree organizza le chiavi in nodi ordinati, con ogni nodo che contiene puntatori ai nodi figli. La ricerca parte dalla radice e scende verso le foglie, dimezzando lo spazio di ricerca ad ogni livello. Per una tabella di 6 milioni di righe, un B-Tree richiede tipicamente 3-4 livelli di profondità, quindi 3-4 letture di pagina per trovare un valore.&lt;/p&gt;</description></item><item><title>Bicicletta Pieghevole</title><link>https://ivanluminaria.com/it/glossary/bicicletta-pieghevole/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/it/glossary/bicicletta-pieghevole/</guid><description>&lt;p&gt;Una &lt;strong&gt;Bicicletta Pieghevole&lt;/strong&gt; è una bicicletta progettata per ripiegarsi in dimensioni compatte (tipicamente 60×55×25 cm) in pochi secondi, diventando trasportabile come un bagaglio. La Brompton è il modello più noto, con meccanismo di piegatura in 10-20 secondi.&lt;/p&gt;
&lt;h2 id="come-funziona" class="relative group"&gt;Come funziona &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#come-funziona" aria-label="Ancora"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;Un sistema di cerniere e sganci rapidi permette di piegare telaio, manubrio e pedali in un pacchetto compatto. Una volta ripiegata, si porta in ufficio sotto la scrivania, si sale in metro o si mette nel bagagliaio. Nella versione elettrica, combina i vantaggi della pedalata assistita con la portabilità totale.&lt;/p&gt;</description></item><item><title>Binary log</title><link>https://ivanluminaria.com/it/glossary/binary-log/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/it/glossary/binary-log/</guid><description>&lt;p&gt;Il &lt;strong&gt;binary log&lt;/strong&gt; (o binlog) è un registro sequenziale in formato binario in cui MySQL scrive tutti gli eventi che modificano i dati: INSERT, UPDATE, DELETE e operazioni DDL. I file sono numerati progressivamente (&lt;code&gt;mysql-bin.000001&lt;/code&gt;, &lt;code&gt;mysql-bin.000002&lt;/code&gt;, ecc.) e gestiti tramite un file indice.&lt;/p&gt;
&lt;h2 id="come-funziona" class="relative group"&gt;Come funziona &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#come-funziona" aria-label="Ancora"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;Da MySQL 8.0 il binary log è abilitato di default tramite il parametro &lt;code&gt;log_bin&lt;/code&gt;. MySQL crea un nuovo file binlog quando il server si avvia, quando il file corrente raggiunge &lt;code&gt;max_binlog_size&lt;/code&gt;, o quando si esegue &lt;code&gt;FLUSH BINARY LOGS&lt;/code&gt;. Supporta tre formati di registrazione: STATEMENT (registra le istruzioni SQL), ROW (registra le modifiche riga per riga) e MIXED (scelta automatica).&lt;/p&gt;</description></item><item><title>Bloat</title><link>https://ivanluminaria.com/it/glossary/bloat/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/it/glossary/bloat/</guid><description>&lt;p&gt;Il &lt;strong&gt;Bloat&lt;/strong&gt; è l&amp;rsquo;accumulo di spazio morto all&amp;rsquo;interno di una tabella o di un indice PostgreSQL, causato da dead tuples non ancora rimossi dal VACUUM. Una tabella con il 50% di bloat occupa il doppio dello spazio necessario e costringe le scansioni sequenziali a leggere il doppio delle pagine.&lt;/p&gt;
&lt;h2 id="come-funziona" class="relative group"&gt;Come funziona &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#come-funziona" aria-label="Ancora"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;Il bloat si misura confrontando la dimensione effettiva della tabella con la dimensione attesa basata sulle righe vive. L&amp;rsquo;estensione &lt;code&gt;pgstattuple&lt;/code&gt; fornisce il campo &lt;code&gt;dead_tuple_percent&lt;/code&gt;. Un bloat sopra il 20-30% è un segnale di allarme; sopra il 50% è un&amp;rsquo;emergenza.&lt;/p&gt;</description></item><item><title>Branch</title><link>https://ivanluminaria.com/it/glossary/branch/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/it/glossary/branch/</guid><description>&lt;p&gt;Un &lt;strong&gt;Branch&lt;/strong&gt; (ramo) è una linea di sviluppo indipendente in un repository Git. Ogni branch contiene una copia del codice su cui si può lavorare senza influenzare il branch principale (main) o il lavoro di altri sviluppatori.&lt;/p&gt;
&lt;h2 id="come-funziona" class="relative group"&gt;Come funziona &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#come-funziona" aria-label="Ancora"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;Quando uno sviluppatore crea un branch (es. &lt;code&gt;fix/issue-234-errore-calcolo&lt;/code&gt;), Git crea un puntatore alla versione corrente del codice. Da quel momento, le modifiche fatte sul branch restano isolate. Al termine del lavoro, le modifiche vengono proposte al team tramite Pull Request e, dopo approvazione, unite (merged) nel branch principale.&lt;/p&gt;</description></item><item><title>Brompton</title><link>https://ivanluminaria.com/it/glossary/brompton/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/it/glossary/brompton/</guid><description>&lt;p&gt;La &lt;strong&gt;Brompton&lt;/strong&gt; è una bicicletta pieghevole prodotta a Londra dal 1975, considerata il riferimento mondiale nella categoria. Si piega in 10-20 secondi raggiungendo dimensioni di circa 58×56×27 cm — abbastanza compatta da stare sotto una scrivania o nel bagagliaio di un&amp;rsquo;utilitaria.&lt;/p&gt;
&lt;h2 id="come-funziona" class="relative group"&gt;Come funziona &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#come-funziona" aria-label="Ancora"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;Il meccanismo brevettato permette di piegare la bici in tre movimenti: telaio, manubrio e sella. Nella versione elettrica (Brompton Electric), un motore nel mozzo anteriore fornisce pedalata assistita fino a 25 km/h con un&amp;rsquo;autonomia di 40-70 km. La batteria è rimovibile e si ricarica in 4 ore.&lt;/p&gt;</description></item><item><title>BYOL</title><link>https://ivanluminaria.com/it/glossary/byol/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/it/glossary/byol/</guid><description>&lt;p&gt;&lt;strong&gt;BYOL&lt;/strong&gt; (Bring Your Own License) è un programma Oracle che consente alle aziende di trasferire le licenze software acquistate per l&amp;rsquo;infrastruttura on-premises verso Oracle Cloud Infrastructure (OCI), senza dover acquistare nuove licenze cloud.&lt;/p&gt;
&lt;h2 id="come-funziona" class="relative group"&gt;Come funziona &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#come-funziona" aria-label="Ancora"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;Quando un&amp;rsquo;azienda ha già licenze Oracle — tipicamente Enterprise Edition con opzioni come RAC, Data Guard o Partitioning — può &amp;ldquo;portarle con sé&amp;rdquo; nella migrazione a OCI. Il contratto di supporto (Software Update License &amp;amp; Support) viene mantenuto, e le licenze vengono associate alle risorse cloud invece che ai server fisici.&lt;/p&gt;</description></item><item><title>Carbon Footprint</title><link>https://ivanluminaria.com/it/glossary/carbon-footprint/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/it/glossary/carbon-footprint/</guid><description>&lt;p&gt;Il &lt;strong&gt;Carbon Footprint&lt;/strong&gt; (impronta di carbonio) è la quantità totale di gas serra — principalmente CO₂ — emessi direttamente o indirettamente da un&amp;rsquo;attività, un prodotto o un individuo, espressa in tonnellate di CO₂ equivalente.&lt;/p&gt;
&lt;h2 id="come-funziona" class="relative group"&gt;Come funziona &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#come-funziona" aria-label="Ancora"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;Per il pendolarismo urbano, il calcolo è diretto: un&amp;rsquo;auto ferma nel traffico di Roma produce in media 120-150 g di CO₂ per chilometro. Nel traffico congestionato anche di più, perché il motore gira al minimo consumando senza muoversi. Una bicicletta produce zero emissioni dirette.&lt;/p&gt;</description></item><item><title>CDC</title><link>https://ivanluminaria.com/it/glossary/cdc/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/it/glossary/cdc/</guid><description>&lt;p&gt;&lt;strong&gt;CDC&lt;/strong&gt; (Change Data Capture) è una tecnica per intercettare le modifiche ai dati (INSERT, UPDATE, DELETE) nel momento in cui avvengono e propagarle verso altri sistemi in tempo reale o quasi reale. A differenza degli approcci batch tradizionali (ETL periodici), il CDC cattura i cambiamenti in modo continuo e incrementale.&lt;/p&gt;
&lt;h2 id="come-funziona" class="relative group"&gt;Come funziona &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#come-funziona" aria-label="Ancora"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;L&amp;rsquo;approccio più diffuso è il &lt;strong&gt;log-based CDC&lt;/strong&gt;: un componente esterno legge i log delle transazioni del database (binary log in MySQL, WAL in PostgreSQL, redo log in Oracle) e converte gli eventi in un flusso di dati consumabile da altri sistemi. Strumenti come Debezium, Maxwell e Canal implementano questo approccio per MySQL leggendo direttamente i binary log.&lt;/p&gt;</description></item><item><title>Chiave surrogata</title><link>https://ivanluminaria.com/it/glossary/chiave-surrogata/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/it/glossary/chiave-surrogata/</guid><description>&lt;p&gt;La &lt;strong&gt;chiave surrogata&lt;/strong&gt; (surrogate key) è un identificativo numerico sequenziale generato internamente dal data warehouse, senza alcun significato di business. È distinta dalla chiave naturale — quella che arriva dal sistema sorgente (es. il codice cliente, il numero di matricola).&lt;/p&gt;
&lt;h2 id="perché-serve" class="relative group"&gt;Perché serve &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#perch%c3%a9-serve" aria-label="Ancora"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;Nella SCD Tipo 2, lo stesso cliente può avere più righe nella tabella dimensionale — una per ogni versione storica. La chiave naturale (&lt;code&gt;cliente_id&lt;/code&gt;) non è più univoca, quindi serve un identificativo che distingua ogni singola versione: la chiave surrogata (&lt;code&gt;cliente_key&lt;/code&gt;).&lt;/p&gt;</description></item><item><title>Churn</title><link>https://ivanluminaria.com/it/glossary/churn/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/it/glossary/churn/</guid><description>&lt;p&gt;Il &lt;strong&gt;churn&lt;/strong&gt; di una tabella è la misura di quanto i suoi dati cambiano dopo l&amp;rsquo;inserimento. Una tabella con alto churn subisce frequenti UPDATE e DELETE; una tabella con basso churn è prevalentemente append-only (solo INSERT).&lt;/p&gt;
&lt;h2 id="come-funziona" class="relative group"&gt;Come funziona &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#come-funziona" aria-label="Ancora"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;In PostgreSQL, ogni UPDATE crea una nuova versione della riga (a causa del modello MVCC) e la vecchia versione diventa una dead tuple. Le DELETE creano anch&amp;rsquo;esse dead tuples. Più alto è il churn, più lavoro devono fare VACUUM e gli indici per mantenere le performance. Un indice GIN su una tabella ad alto churn può degradare significativamente le performance di scrittura.&lt;/p&gt;</description></item><item><title>COALESCE</title><link>https://ivanluminaria.com/it/glossary/coalesce/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/it/glossary/coalesce/</guid><description>&lt;p&gt;&lt;strong&gt;COALESCE&lt;/strong&gt; è una funzione SQL standard che accetta una lista di espressioni e restituisce la prima che non è NULL. Se tutte le espressioni sono NULL, restituisce NULL.&lt;/p&gt;
&lt;h2 id="sintassi" class="relative group"&gt;Sintassi &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#sintassi" aria-label="Ancora"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-sql" data-lang="sql"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;COALESCE&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;espressione1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;espressione2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;espressione3&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;...)&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Equivale a una catena di CASE WHEN:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-sql" data-lang="sql"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;CASE&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;WHEN&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;espressione1&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;IS&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;NOT&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;NULL&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;THEN&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;espressione1&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;WHEN&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;espressione2&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;IS&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;NOT&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;NULL&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;THEN&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;espressione2&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;WHEN&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;espressione3&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;IS&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;NOT&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;NULL&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;THEN&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;espressione3&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;ELSE&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;NULL&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;END&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="uso-nelle-gerarchie" class="relative group"&gt;Uso nelle gerarchie &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#uso-nelle-gerarchie" aria-label="Ancora"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;Nel contesto delle ragged hierarchies, COALESCE viene spesso usata per riempire i livelli mancanti:&lt;/p&gt;</description></item><item><title>Code Review</title><link>https://ivanluminaria.com/it/glossary/code-review/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/it/glossary/code-review/</guid><description>&lt;p&gt;La &lt;strong&gt;Code Review&lt;/strong&gt; è la pratica per cui un collega esamina il codice scritto da un altro sviluppatore prima che venga incorporato nel branch principale. Su GitHub avviene dentro le Pull Request.&lt;/p&gt;
&lt;h2 id="come-funziona" class="relative group"&gt;Come funziona &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#come-funziona" aria-label="Ancora"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;Lo sviluppatore apre una Pull Request con le sue modifiche. Un reviewer assegnato esamina il diff del codice, lascia commenti, suggerisce miglioramenti e alla fine approva o richiede modifiche. Il processo è asincrono: non servono riunioni, il review avviene sullo strumento. Solo dopo l&amp;rsquo;approvazione il codice viene fuso nel branch principale.&lt;/p&gt;</description></item><item><title>Compliance</title><link>https://ivanluminaria.com/it/glossary/compliance/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/it/glossary/compliance/</guid><description>&lt;p&gt;La &lt;strong&gt;Compliance&lt;/strong&gt; (conformità normativa) è l&amp;rsquo;aderenza di un&amp;rsquo;organizzazione alle leggi, ai regolamenti e agli standard di settore applicabili alla sua attività. Nel contesto AI, include GDPR, regolamenti bancari (SOX, PCI-DSS), normative sanitarie e policy interne sull&amp;rsquo;uso dei dati.&lt;/p&gt;
&lt;h2 id="come-funziona" class="relative group"&gt;Come funziona &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#come-funziona" aria-label="Ancora"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;La compliance si verifica attraverso audit, controlli documentali e monitoraggio continuo. Per i progetti AI, richiede la tracciabilità dei dati usati per il training, la documentazione delle decisioni automatizzate e la capacità di spiegare come il modello è arrivato a un determinato output (explainability).&lt;/p&gt;</description></item><item><title>CTAS</title><link>https://ivanluminaria.com/it/glossary/ctas/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/it/glossary/ctas/</guid><description>&lt;p&gt;&lt;strong&gt;CTAS&lt;/strong&gt; (Create Table As Select) è un comando SQL Oracle che crea una nuova tabella e la popola in un&amp;rsquo;unica operazione con i risultati di una SELECT. È la tecnica standard per migrare dati da una struttura all&amp;rsquo;altra su tabelle di grandi dimensioni.&lt;/p&gt;
&lt;h2 id="come-funziona" class="relative group"&gt;Come funziona &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#come-funziona" aria-label="Ancora"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;Il comando combina DDL e DML: crea la tabella con la struttura derivata dalla SELECT e inserisce i dati in un unico passaggio. Con l&amp;rsquo;hint &lt;code&gt;PARALLEL&lt;/code&gt; e la modalità &lt;code&gt;NOLOGGING&lt;/code&gt;, la copia di centinaia di GB può completarsi in poche ore. Dopo la copia, si rinomina la tabella originale, si rinomina la nuova, e il downtime è limitato ai pochi secondi del rename.&lt;/p&gt;</description></item><item><title>Cutover</title><link>https://ivanluminaria.com/it/glossary/cutover/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/it/glossary/cutover/</guid><description>&lt;p&gt;Il &lt;strong&gt;cutover&lt;/strong&gt; è il momento in cui un sistema di produzione viene spostato dalla vecchia infrastruttura alla nuova. È la fase più visibile di una migrazione — quella che tutti ricordano, nel bene o nel male.&lt;/p&gt;
&lt;h2 id="anatomia-di-un-cutover" class="relative group"&gt;Anatomia di un cutover &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#anatomia-di-un-cutover" aria-label="Ancora"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;Un cutover ben pianificato segue un runbook dettagliato con passi numerati, tempi stimati, criteri di successo e procedure di rollback per ogni passo. I componenti tipici:&lt;/p&gt;</description></item><item><title>Daily Standup</title><link>https://ivanluminaria.com/it/glossary/daily-standup/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/it/glossary/daily-standup/</guid><description>&lt;p&gt;Il &lt;strong&gt;Daily Standup&lt;/strong&gt; è una riunione quotidiana breve (massimo 15 minuti) in cui ogni membro del team risponde a tre domande: cosa ho fatto ieri, cosa farò oggi, c&amp;rsquo;è qualcosa che mi blocca. Lo scopo è sincronizzare il team, non risolvere problemi.&lt;/p&gt;
&lt;h2 id="come-funziona" class="relative group"&gt;Come funziona &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#come-funziona" aria-label="Ancora"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;Ogni persona ha circa due minuti per il proprio aggiornamento. I problemi vengono segnalati ma non discussi: la risoluzione avviene dopo, tra le persone coinvolte. Il vincolo temporale è ciò che rende lo standup efficace — senza di esso, degenera in una riunione di status da 45 minuti.&lt;/p&gt;</description></item><item><title>Data Governance</title><link>https://ivanluminaria.com/it/glossary/data-governance/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/it/glossary/data-governance/</guid><description>&lt;p&gt;La &lt;strong&gt;Data Governance&lt;/strong&gt; è l&amp;rsquo;insieme di politiche, processi, ruoli e standard che un&amp;rsquo;organizzazione adotta per garantire che i propri dati siano accurati, sicuri, conformi alle normative e utilizzati in modo coerente.&lt;/p&gt;
&lt;h2 id="come-funziona" class="relative group"&gt;Come funziona &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#come-funziona" aria-label="Ancora"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;Definisce chi è responsabile dei dati (data owner, data steward), quali regole di qualità applicare, come classificare i dati per sensibilità e come tracciare la loro provenienza (data lineage). In un contesto AI, include anche la verifica della provenienza e qualità dei dati usati per il training dei modelli.&lt;/p&gt;</description></item><item><title>Data Guard</title><link>https://ivanluminaria.com/it/glossary/data-guard/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/it/glossary/data-guard/</guid><description>&lt;p&gt;&lt;strong&gt;Data Guard&lt;/strong&gt; è la tecnologia Oracle che mantiene una o più copie sincronizzate (standby) di un database di produzione (primario). Lo standby riceve e applica continuamente i redo log generati dal primario, rimanendo allineato in tempo reale o quasi.&lt;/p&gt;
&lt;h2 id="come-funziona" class="relative group"&gt;Come funziona &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#come-funziona" aria-label="Ancora"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;Il primario genera redo log con ogni transazione. Questi log vengono trasmessi allo standby via rete, dove vengono applicati in due modi possibili:&lt;/p&gt;</description></item><item><title>Data Warehouse</title><link>https://ivanluminaria.com/it/glossary/data-warehouse/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/it/glossary/data-warehouse/</guid><description>&lt;p&gt;Un &lt;strong&gt;Data Warehouse&lt;/strong&gt; (DWH) è un sistema di archiviazione dati progettato specificamente per l&amp;rsquo;analisi, il reporting e il supporto alle decisioni aziendali. A differenza dei database operazionali (OLTP), un DWH raccoglie dati da molteplici fonti, li trasforma e li organizza in strutture ottimizzate per le interrogazioni analitiche.&lt;/p&gt;
&lt;h2 id="come-funziona" class="relative group"&gt;Come funziona &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#come-funziona" aria-label="Ancora"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;I dati vengono estratti dai sistemi sorgente (gestionali, CRM, ERP), trasformati attraverso processi ETL che li puliscono, normalizzano e arricchiscono, e infine caricati nel DWH. Il modello dati tipico è lo star schema: una fact table centrale con le misure numeriche collegata a tabelle dimensionali che descrivono il contesto (tempo, cliente, prodotto, geografia).&lt;/p&gt;</description></item><item><title>Dead Tuple</title><link>https://ivanluminaria.com/it/glossary/dead-tuple/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/it/glossary/dead-tuple/</guid><description>&lt;p&gt;Un &lt;strong&gt;Dead Tuple&lt;/strong&gt; è una riga in una tabella PostgreSQL che è stata aggiornata (UPDATE) o cancellata (DELETE) ma non è ancora stata rimossa fisicamente. Resta nelle pagine dati, occupando spazio su disco e rallentando le scansioni.&lt;/p&gt;
&lt;h2 id="come-funziona" class="relative group"&gt;Come funziona &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#come-funziona" aria-label="Ancora"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;Quando PostgreSQL esegue un UPDATE, non sovrascrive la riga originale: crea una nuova versione e marca la vecchia come &amp;ldquo;morta&amp;rdquo;. La vecchia riga resta fisicamente nella pagina dati finché il VACUUM non la pulisce. I dead tuples sono il prezzo del modello MVCC — necessari per garantire l&amp;rsquo;isolamento transazionale.&lt;/p&gt;</description></item><item><title>DEFAULT PRIVILEGES</title><link>https://ivanluminaria.com/it/glossary/default-privileges/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/it/glossary/default-privileges/</guid><description>&lt;p&gt;&lt;strong&gt;DEFAULT PRIVILEGES&lt;/strong&gt; è un meccanismo PostgreSQL che permette di definire in anticipo i privilegi che verranno assegnati automaticamente a tutti gli oggetti futuri creati in uno schema. Si configura con il comando &lt;code&gt;ALTER DEFAULT PRIVILEGES&lt;/code&gt;.&lt;/p&gt;
&lt;h2 id="come-funziona" class="relative group"&gt;Come funziona &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#come-funziona" aria-label="Ancora"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;Il comando &lt;code&gt;ALTER DEFAULT PRIVILEGES IN SCHEMA schema1 GRANT SELECT ON TABLES TO srv_monitoraggio&lt;/code&gt; fa sì che ogni nuova tabella creata in &lt;code&gt;schema1&lt;/code&gt; sia automaticamente leggibile da &lt;code&gt;srv_monitoraggio&lt;/code&gt;. Senza questa configurazione, le tabelle future richiederebbero un GRANT manuale ogni volta.&lt;/p&gt;</description></item><item><title>default_statistics_target</title><link>https://ivanluminaria.com/it/glossary/postgresql-default-statistics-target/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/it/glossary/postgresql-default-statistics-target/</guid><description>&lt;p&gt;&lt;strong&gt;default_statistics_target&lt;/strong&gt; è il parametro PostgreSQL che definisce il numero di campioni raccolti dal comando &lt;code&gt;ANALYZE&lt;/code&gt; per costruire le statistiche di ogni colonna. Il valore di default è 100.&lt;/p&gt;
&lt;h2 id="come-funziona" class="relative group"&gt;Come funziona &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#come-funziona" aria-label="Ancora"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;PostgreSQL campiona un certo numero di valori per ogni colonna e li usa per costruire due strutture:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Most common values (MCV)&lt;/strong&gt;: la lista dei valori più frequenti, con le rispettive frequenze&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Istogramma&lt;/strong&gt;: la distribuzione dei valori rimanenti, divisa in bucket di uguale popolazione&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Il parametro &lt;code&gt;default_statistics_target&lt;/code&gt; determina quanti elementi avranno queste strutture. Con il valore 100 (default), l&amp;rsquo;istogramma avrà 100 bucket e la lista MCV conterrà fino a 100 valori.&lt;/p&gt;</description></item><item><title>Direttiva 2011/7/UE</title><link>https://ivanluminaria.com/it/glossary/direttiva-2011-7-ue/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/it/glossary/direttiva-2011-7-ue/</guid><description>&lt;p&gt;La &lt;strong&gt;Direttiva 2011/7/UE&lt;/strong&gt; è la normativa europea sui ritardi di pagamento nelle transazioni commerciali. Stabilisce regole chiare: termine standard di 30 giorni, massimo 60 tra imprese (con accordo esplicito), 30 per la PA, e interessi di mora automatici al tasso BCE + 8%.&lt;/p&gt;
&lt;h2 id="come-funziona" class="relative group"&gt;Come funziona &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#come-funziona" aria-label="Ancora"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;La direttiva è stata recepita in Italia con il D.Lgs. 231/2002 (modificato nel 2012). Sulla carta le regole ci sono: 30 giorni standard, interessi automatici, compenso forfettario di 40€ per fattura pagata in ritardo. Nella pratica italiana è come se non esistessero — il DSO medio italiano è 80 giorni, ben oltre il massimo di 60.&lt;/p&gt;</description></item><item><title>Drill-down</title><link>https://ivanluminaria.com/it/glossary/drill-down/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/it/glossary/drill-down/</guid><description>&lt;p&gt;Il &lt;strong&gt;drill-down&lt;/strong&gt; è l&amp;rsquo;operazione di navigazione nei report che permette di passare da un livello aggregato a un livello di maggiore dettaglio, scendendo lungo una gerarchia.&lt;/p&gt;
&lt;h2 id="come-funziona" class="relative group"&gt;Come funziona &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#come-funziona" aria-label="Ancora"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;In una gerarchia Top Group → Group → Client:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Si parte dal livello più alto: fatturato totale per Top Group&lt;/li&gt;
&lt;li&gt;Si clicca su un Top Group per vedere i suoi Group (drill-down di primo livello)&lt;/li&gt;
&lt;li&gt;Si clicca su un Group per vedere i singoli Client (drill-down di secondo livello)&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;L&amp;rsquo;operazione inversa — risalire dal dettaglio all&amp;rsquo;aggregato — si chiama &lt;strong&gt;drill-up&lt;/strong&gt; (o roll-up).&lt;/p&gt;</description></item><item><title>DSO</title><link>https://ivanluminaria.com/it/glossary/dso/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/it/glossary/dso/</guid><description>&lt;p&gt;Il &lt;strong&gt;DSO&lt;/strong&gt; (Days Sales Outstanding) è la metrica che misura il numero medio di giorni che un&amp;rsquo;azienda impiega per incassare i propri crediti dopo l&amp;rsquo;emissione della fattura. È l&amp;rsquo;indicatore principale della velocità di pagamento in un mercato.&lt;/p&gt;
&lt;h2 id="come-funziona" class="relative group"&gt;Come funziona &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#come-funziona" aria-label="Ancora"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;Si calcola come: &lt;code&gt;(Crediti commerciali / Fatturato) × Giorni del periodo&lt;/code&gt;. Un DSO di 30 significa che in media i clienti pagano entro un mese. In Italia il DSO medio è di 80 giorni secondo l&amp;rsquo;European Payment Report — quasi tre volte la media del nord Europa (24-27 giorni).&lt;/p&gt;</description></item><item><title>ETL</title><link>https://ivanluminaria.com/it/glossary/etl/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/it/glossary/etl/</guid><description>&lt;p&gt;&lt;strong&gt;ETL&lt;/strong&gt; (Extract, Transform, Load) è il processo fondamentale attraverso cui i dati vengono spostati dai sistemi sorgente (database operazionali, file, API) al data warehouse.&lt;/p&gt;
&lt;h2 id="le-tre-fasi" class="relative group"&gt;Le tre fasi &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#le-tre-fasi" aria-label="Ancora"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Extract&lt;/strong&gt;: estrazione dei dati dai sistemi sorgente. Può essere completa (full load) o incrementale (solo i dati nuovi o modificati)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Transform&lt;/strong&gt;: pulizia, validazione, standardizzazione e arricchimento dei dati. Qui si applicano le regole di business, le lookup sulle dimensioni, i calcoli derivati&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Load&lt;/strong&gt;: caricamento dei dati trasformati nelle tabelle del data warehouse (fact e dimension)&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="perché-è-critico" class="relative group"&gt;Perché è critico &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#perch%c3%a9-%c3%a8-critico" aria-label="Ancora"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;L&amp;rsquo;ETL è la parte meno visibile ma più critica di un data warehouse. Se i dati vengono estratti in modo incompleto, trasformati con regole errate o caricati senza controlli, tutto ciò che sta sopra — report, dashboard, decisioni — sarà sbagliato.&lt;/p&gt;</description></item><item><title>Exchange Partition</title><link>https://ivanluminaria.com/it/glossary/exchange-partition/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/it/glossary/exchange-partition/</guid><description>&lt;p&gt;L&amp;rsquo;&lt;strong&gt;Exchange Partition&lt;/strong&gt; è un&amp;rsquo;operazione DDL di Oracle che permette di scambiare istantaneamente il contenuto di una partizione con quello di una tabella non partizionata. Non viene spostato nemmeno un byte di dati — l&amp;rsquo;operazione modifica solo i puntatori nel data dictionary.&lt;/p&gt;
&lt;h2 id="come-funziona" class="relative group"&gt;Come funziona &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#come-funziona" aria-label="Ancora"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;Il comando &lt;code&gt;ALTER TABLE ... EXCHANGE PARTITION ... WITH TABLE ...&lt;/code&gt; modifica i metadati nel data dictionary in modo che i segmenti fisici della partizione e della tabella di staging si scambino. La tabella di staging diventa la partizione e viceversa. L&amp;rsquo;operazione dura meno di un secondo indipendentemente dal volume dei dati, perché non implica alcun movimento fisico.&lt;/p&gt;</description></item><item><title>Execution Plan</title><link>https://ivanluminaria.com/it/glossary/execution-plan/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/it/glossary/execution-plan/</guid><description>&lt;p&gt;&lt;strong&gt;Execution plan&lt;/strong&gt; (piano di esecuzione) è la sequenza di operazioni che il database sceglie per risolvere una query SQL. Quando scrivi una SELECT con JOIN, filtri WHERE e ordinamenti, l&amp;rsquo;optimizer valuta decine di strategie possibili e ne sceglie una basandosi sulle statistiche disponibili.&lt;/p&gt;
&lt;h2 id="come-funziona" class="relative group"&gt;Come funziona &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#come-funziona" aria-label="Ancora"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;Il piano è rappresentato come un albero di nodi: ogni nodo è un&amp;rsquo;operazione (scan, join, sort, aggregate) che riceve dati dai nodi figli e li passa al nodo padre. In PostgreSQL si visualizza con &lt;code&gt;EXPLAIN&lt;/code&gt; (piano stimato) o &lt;code&gt;EXPLAIN ANALYZE&lt;/code&gt; (piano reale con tempi effettivi e conteggi righe).&lt;/p&gt;</description></item><item><title>Facilitatore</title><link>https://ivanluminaria.com/it/glossary/facilitatore/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/it/glossary/facilitatore/</guid><description>&lt;p&gt;Il &lt;strong&gt;Facilitatore&lt;/strong&gt; è la persona incaricata di guidare lo svolgimento di una riunione. Non è chi decide — è chi garantisce che la decisione venga presa in modo ordinato, nei tempi previsti e con il contributo di tutti i partecipanti.&lt;/p&gt;
&lt;h2 id="come-funziona" class="relative group"&gt;Come funziona &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#come-funziona" aria-label="Ancora"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;Il facilitatore tiene il tempo, gestisce i turni di parola, taglia le discussioni fuori tema (&amp;ldquo;lo segno nel parking lot, ne parliamo dopo&amp;rdquo;) e si assicura che lo standup non superi i 15 minuti. Il ruolo può essere fisso o a rotazione nel team.&lt;/p&gt;</description></item><item><title>Fact table</title><link>https://ivanluminaria.com/it/glossary/fact-table/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/it/glossary/fact-table/</guid><description>&lt;p&gt;La &lt;strong&gt;fact table&lt;/strong&gt; (tabella dei fatti) è la tabella centrale di uno star schema nel data warehouse. Contiene le misure numeriche — importi, quantità, conteggi, durate — e le chiavi esterne che la collegano alle tabelle dimensionali.&lt;/p&gt;
&lt;h2 id="struttura" class="relative group"&gt;Struttura &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#struttura" aria-label="Ancora"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;Ogni riga della fact table rappresenta un evento o una transazione di business: una vendita, un sinistro, una spedizione, un accesso. Le colonne si dividono in due categorie:&lt;/p&gt;</description></item><item><title>Float Finanziario</title><link>https://ivanluminaria.com/it/glossary/float-finanziario/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/it/glossary/float-finanziario/</guid><description>&lt;p&gt;Il &lt;strong&gt;Float Finanziario&lt;/strong&gt; è la liquidità che un&amp;rsquo;azienda genera dalla differenza tra i tempi di incasso dai propri clienti (più brevi) e i tempi di pagamento ai propri fornitori (più lunghi). È di fatto un prestito a costo zero ottenuto a spese dei fornitori.&lt;/p&gt;
&lt;h2 id="come-funziona" class="relative group"&gt;Come funziona &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#come-funziona" aria-label="Ancora"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;Una società di consulenza incassa dal cliente finale a 30 giorni ma paga i propri consulenti a 90 giorni. La differenza di 60 giorni genera un float: per ogni 100.000€ di fatturato mensile, l&amp;rsquo;azienda dispone di ~200.000€ di liquidità gratuita che può investire o usare come capitale circolante.&lt;/p&gt;</description></item><item><title>FLUSH PRIVILEGES</title><link>https://ivanluminaria.com/it/glossary/flush-privileges/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/it/glossary/flush-privileges/</guid><description>&lt;p&gt;&lt;strong&gt;FLUSH PRIVILEGES&lt;/strong&gt; è un comando MySQL/MariaDB che forza il server a ricaricare in memoria le tabelle dei privilegi dal database &lt;code&gt;mysql&lt;/code&gt;. Rende immediatamente effettive le modifiche ai permessi.&lt;/p&gt;
&lt;h2 id="come-funziona" class="relative group"&gt;Come funziona &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#come-funziona" aria-label="Ancora"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;MySQL mantiene in memoria una cache delle tabelle dei grant (&lt;code&gt;mysql.user&lt;/code&gt;, &lt;code&gt;mysql.db&lt;/code&gt;, &lt;code&gt;mysql.tables_priv&lt;/code&gt;). Quando si usano &lt;code&gt;CREATE USER&lt;/code&gt; e &lt;code&gt;GRANT&lt;/code&gt;, MySQL aggiorna sia le tabelle che la cache automaticamente. Ma se si modificano le tabelle dei grant direttamente con &lt;code&gt;INSERT&lt;/code&gt;, &lt;code&gt;UPDATE&lt;/code&gt; o &lt;code&gt;DELETE&lt;/code&gt;, la cache non viene aggiornata. &lt;code&gt;FLUSH PRIVILEGES&lt;/code&gt; forza il reload della cache dalle tabelle.&lt;/p&gt;</description></item><item><title>Full Table Scan</title><link>https://ivanluminaria.com/it/glossary/full-table-scan/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/it/glossary/full-table-scan/</guid><description>&lt;p&gt;&lt;strong&gt;Full Table Scan&lt;/strong&gt; (o TABLE ACCESS FULL) è un&amp;rsquo;operazione in cui il database legge tutti i blocchi dati di una tabella, dall&amp;rsquo;inizio alla fine, senza passare per alcun indice.&lt;/p&gt;
&lt;h2 id="come-funziona" class="relative group"&gt;Come funziona &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#come-funziona" aria-label="Ancora"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;Oracle richiede blocchi dal disco (o dalla cache) in sequenza, usando letture multi-blocco (&lt;code&gt;db file scattered read&lt;/code&gt;). Ogni riga della tabella viene esaminata, indipendentemente dal fatto che soddisfi o meno i criteri della query.&lt;/p&gt;</description></item><item><title>GIN Index</title><link>https://ivanluminaria.com/it/glossary/gin-index/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/it/glossary/gin-index/</guid><description>&lt;p&gt;Un &lt;strong&gt;GIN Index&lt;/strong&gt; (Generalized Inverted Index) è un tipo di indice PostgreSQL progettato per indicizzare valori composti: array, documenti JSONB, testo con trigrammi e ricerche full-text. A differenza del B-Tree, un GIN crea un mapping inverso: da ogni elemento (parola, trigramma, chiave JSON) ai record che lo contengono.&lt;/p&gt;
&lt;h2 id="come-funziona" class="relative group"&gt;Come funziona &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#come-funziona" aria-label="Ancora"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;Per ogni valore distinto nel dato indicizzato, il GIN mantiene una lista di puntatori alle righe che contengono quel valore. Nel caso di &lt;code&gt;pg_trgm&lt;/code&gt;, il testo viene scomposto in trigrammi (sequenze di 3 caratteri) e ogni trigramma viene indicizzato. Una ricerca &lt;code&gt;LIKE '%ABC%'&lt;/code&gt; viene tradotta in un&amp;rsquo;intersezione di trigrammi, evitando la scansione sequenziale.&lt;/p&gt;</description></item><item><title>Grain</title><link>https://ivanluminaria.com/it/glossary/grain/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/it/glossary/grain/</guid><description>&lt;p&gt;Il &lt;strong&gt;grain&lt;/strong&gt; (grana, granularità) è il livello di dettaglio di una fact table nel data warehouse. Definisce cosa rappresenta una singola riga: una transazione, un riepilogo giornaliero, un totale mensile, una riga di fattura.&lt;/p&gt;
&lt;h2 id="come-funziona" class="relative group"&gt;Come funziona &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#come-funziona" aria-label="Ancora"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;La scelta del grain è la prima decisione nella progettazione di una fact table. Ogni altra scelta — misure, dimensioni, ETL — discende da essa:&lt;/p&gt;</description></item><item><title>GRANT</title><link>https://ivanluminaria.com/it/glossary/grant/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/it/glossary/grant/</guid><description>&lt;p&gt;&lt;strong&gt;GRANT&lt;/strong&gt; è il comando SQL usato per assegnare privilegi a un utente o ruolo su oggetti specifici del database. In MySQL e MariaDB, i privilegi vengono assegnati alla coppia &lt;code&gt;'utente'@'host'&lt;/code&gt;, non solo al nome utente.&lt;/p&gt;
&lt;h2 id="come-funziona" class="relative group"&gt;Come funziona &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#come-funziona" aria-label="Ancora"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;La sintassi base è &lt;code&gt;GRANT &amp;lt;privilegi&amp;gt; ON &amp;lt;database&amp;gt;.&amp;lt;tabella&amp;gt; TO 'utente'@'host'&lt;/code&gt;. I privilegi possono essere granulari (SELECT, INSERT, UPDATE, DELETE) o globali (ALL PRIVILEGES). In MySQL 8, GRANT non crea più utenti implicitamente: serve prima un &lt;code&gt;CREATE USER&lt;/code&gt; esplicito, poi il GRANT. In MySQL 5.7 e MariaDB, GRANT con &lt;code&gt;IDENTIFIED BY&lt;/code&gt; crea l&amp;rsquo;utente e assegna i privilegi in un solo comando.&lt;/p&gt;</description></item><item><title>Group Replication</title><link>https://ivanluminaria.com/it/glossary/group-replication/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/it/glossary/group-replication/</guid><description>&lt;p&gt;&lt;strong&gt;Group Replication&lt;/strong&gt; è il meccanismo nativo di MySQL per creare cluster ad alta disponibilità con replica sincrona tra più nodi. A differenza della replica classica (asincrona, master-slave), Group Replication garantisce che ogni transazione sia confermata dalla maggioranza dei nodi prima di essere considerata committata.&lt;/p&gt;
&lt;h2 id="come-funziona" class="relative group"&gt;Come funziona &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#come-funziona" aria-label="Ancora"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;I nodi comunicano tramite un protocollo di gruppo (GCS — Group Communication System) che gestisce il consenso distribuito. Ogni nodo mantiene una copia completa dei dati. Le transazioni vengono certificate dal gruppo: se non ci sono conflitti, vengono applicate su tutti i nodi. Se c&amp;rsquo;è un conflitto, la transazione viene annullata sul nodo che l&amp;rsquo;ha originata.&lt;/p&gt;</description></item><item><title>GTID</title><link>https://ivanluminaria.com/it/glossary/gtid/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/it/glossary/gtid/</guid><description>&lt;p&gt;&lt;strong&gt;GTID&lt;/strong&gt; (Global Transaction Identifier) è un identificativo univoco assegnato automaticamente a ogni transazione committata su un server MySQL. Il formato è &lt;code&gt;server_uuid:transaction_id&lt;/code&gt; — ad esempio &lt;code&gt;3E11FA47-71CA-11E1-9E33-C80AA9429562:23&lt;/code&gt;.&lt;/p&gt;
&lt;h2 id="come-funziona" class="relative group"&gt;Come funziona &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#come-funziona" aria-label="Ancora"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;Quando il GTID è abilitato (&lt;code&gt;gtid_mode = ON&lt;/code&gt;), ogni transazione riceve un identificativo che la rende tracciabile su qualsiasi server del cluster di replica. Lo slave sa esattamente quali transazioni ha già eseguito e quali deve ancora ricevere, senza bisogno di specificare manualmente posizioni di binlog (file + offset).&lt;/p&gt;</description></item><item><title>Hash Join</title><link>https://ivanluminaria.com/it/glossary/hash-join/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/it/glossary/hash-join/</guid><description>&lt;p&gt;&lt;strong&gt;Hash join&lt;/strong&gt; è una strategia di join progettata per grandi volumi di dati. Funziona in due fasi: prima costruisce una struttura dati in memoria, poi la usa per trovare le corrispondenze in modo efficiente.&lt;/p&gt;
&lt;h2 id="come-funziona" class="relative group"&gt;Come funziona &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#come-funziona" aria-label="Ancora"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;Il database legge la tabella più piccola (build side) e costruisce una hash table in memoria, indicizzando le righe per la colonna di join. Poi scansiona la tabella più grande (probe side) e per ogni riga cerca la corrispondenza nella hash table con un lookup O(1).&lt;/p&gt;</description></item><item><title>Hot Desk</title><link>https://ivanluminaria.com/it/glossary/hot-desk/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/it/glossary/hot-desk/</guid><description>&lt;p&gt;L&amp;rsquo;&lt;strong&gt;Hot Desk&lt;/strong&gt; (hot desking) è un modello di organizzazione degli spazi di lavoro in cui le scrivanie non sono assegnate a singoli dipendenti. Chi viene in ufficio occupa una postazione libera, tipicamente prenotabile tramite un sistema digitale.&lt;/p&gt;
&lt;h2 id="come-funziona" class="relative group"&gt;Come funziona &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#come-funziona" aria-label="Ancora"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;Invece di 50 postazioni fisse per 50 dipendenti, l&amp;rsquo;azienda predispone 15-20 postazioni condivise (hot desk) attrezzate con monitor, docking station e connettività. I dipendenti prenotano la postazione nei giorni in cui devono essere in ufficio, usando le altre giornate in smart working.&lt;/p&gt;</description></item><item><title>Huge Pages</title><link>https://ivanluminaria.com/it/glossary/huge-pages/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/it/glossary/huge-pages/</guid><description>&lt;p&gt;Le &lt;strong&gt;Huge Pages&lt;/strong&gt; sono pagine di memoria da 2 MB, contro i 4 KB standard di Linux. Per un&amp;rsquo;SGA Oracle da 64 GB, passare da pagine da 4 KB (16,7 milioni di pagine) a Huge Pages da 2 MB (32.768 pagine) riduce di 500 volte il numero di entry nella Page Table.&lt;/p&gt;
&lt;h2 id="come-funziona" class="relative group"&gt;Come funziona &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#come-funziona" aria-label="Ancora"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;Si configurano tramite il parametro kernel &lt;code&gt;vm.nr_hugepages&lt;/code&gt; in &lt;code&gt;/etc/sysctl.d/&lt;/code&gt;. Il numero necessario si calcola dividendo la dimensione della SGA per 2 MB e aggiungendo un margine dell'1,5%. Dopo il riavvio dell&amp;rsquo;istanza Oracle, la SGA viene allocata nelle Huge Pages, verificabile da &lt;code&gt;/proc/meminfo&lt;/code&gt;.&lt;/p&gt;</description></item><item><title>I/O Scheduler</title><link>https://ivanluminaria.com/it/glossary/io-scheduler/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/it/glossary/io-scheduler/</guid><description>&lt;p&gt;L&amp;rsquo;&lt;strong&gt;I/O Scheduler&lt;/strong&gt; è il componente del kernel Linux che gestisce la coda delle richieste di lettura e scrittura verso i dispositivi a blocchi (dischi). Decide l&amp;rsquo;ordine di esecuzione delle richieste per ottimizzare il throughput e minimizzare la latenza.&lt;/p&gt;
&lt;h2 id="come-funziona" class="relative group"&gt;Come funziona &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#come-funziona" aria-label="Ancora"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;Linux offre diversi scheduler: &lt;code&gt;cfq&lt;/code&gt; (Completely Fair Queuing, per desktop), &lt;code&gt;deadline&lt;/code&gt;/&lt;code&gt;mq-deadline&lt;/code&gt; (per server e database), &lt;code&gt;noop&lt;/code&gt;/&lt;code&gt;none&lt;/code&gt; (per SSD/NVMe). Per Oracle la raccomandazione è &lt;code&gt;deadline&lt;/code&gt;, che serve le richieste minimizzando i seek del disco. Si configura via &lt;code&gt;/sys/block/sdX/queue/scheduler&lt;/code&gt; e si rende permanente via GRUB.&lt;/p&gt;</description></item><item><title>Interessi di Mora</title><link>https://ivanluminaria.com/it/glossary/interessi-di-mora/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/it/glossary/interessi-di-mora/</guid><description>&lt;p&gt;Gli &lt;strong&gt;Interessi di Mora&lt;/strong&gt; sono gli interessi che maturano automaticamente su ogni fattura pagata in ritardo rispetto al termine contrattuale. In base al D.Lgs. 231/2002 (recepimento della Direttiva UE 2011/7/UE), il tasso è pari al tasso BCE + 8 punti percentuali, senza bisogno di messa in mora formale.&lt;/p&gt;
&lt;h2 id="come-funziona" class="relative group"&gt;Come funziona &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#come-funziona" aria-label="Ancora"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;Dal giorno successivo alla scadenza della fattura, gli interessi maturano automaticamente. Il creditore ha diritto anche a un compenso forfettario di 40€ per ogni fattura pagata in ritardo, per le spese di recupero. Non serve inviare una diffida — il diritto nasce dalla legge.&lt;/p&gt;</description></item><item><title>INTO OUTFILE</title><link>https://ivanluminaria.com/it/glossary/into-outfile/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/it/glossary/into-outfile/</guid><description>&lt;p&gt;&lt;strong&gt;INTO OUTFILE&lt;/strong&gt; è una clausola SQL di MySQL che permette di esportare il risultato di una query direttamente in un file sul filesystem del server database. È il metodo nativo per generare file CSV, TSV o con separatori personalizzati.&lt;/p&gt;
&lt;h2 id="come-funziona" class="relative group"&gt;Come funziona &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#come-funziona" aria-label="Ancora"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;La clausola si aggiunge alla fine di una &lt;code&gt;SELECT&lt;/code&gt; e specifica il percorso del file di destinazione. I parametri &lt;code&gt;FIELDS TERMINATED BY&lt;/code&gt;, &lt;code&gt;ENCLOSED BY&lt;/code&gt; e &lt;code&gt;LINES TERMINATED BY&lt;/code&gt; controllano il formato dell&amp;rsquo;output. Il file viene creato dall&amp;rsquo;utente di sistema MySQL (non dall&amp;rsquo;utente che esegue la query), quindi deve trovarsi in una directory con i permessi corretti.&lt;/p&gt;</description></item><item><title>Issue Tracker</title><link>https://ivanluminaria.com/it/glossary/issue-tracker/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/it/glossary/issue-tracker/</guid><description>&lt;p&gt;Un &lt;strong&gt;Issue Tracker&lt;/strong&gt; è un sistema per registrare, assegnare, prioritizzare e monitorare bug, richieste di funzionalità e task di progetto. Su GitHub è integrato direttamente nel repository del codice.&lt;/p&gt;
&lt;h2 id="come-funziona" class="relative group"&gt;Come funziona &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#come-funziona" aria-label="Ancora"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;Ogni problema o richiesta viene creata come &amp;ldquo;issue&amp;rdquo; con titolo, descrizione, label di categoria/priorità e assegnazione a uno sviluppatore. Le issue possono essere collegate ai branch e alle Pull Request: quando una PR che referenzia un&amp;rsquo;issue viene fusa, l&amp;rsquo;issue si chiude automaticamente. Questo crea una tracciabilità completa dal problema alla soluzione.&lt;/p&gt;</description></item><item><title>IST</title><link>https://ivanluminaria.com/it/glossary/ist/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/it/glossary/ist/</guid><description>&lt;p&gt;&lt;strong&gt;IST&lt;/strong&gt; (Incremental State Transfer) è il meccanismo con cui un nodo Galera che rientra nel cluster dopo un&amp;rsquo;assenza breve riceve solo le transazioni mancanti, senza dover scaricare l&amp;rsquo;intero dataset.&lt;/p&gt;
&lt;h2 id="come-funziona" class="relative group"&gt;Come funziona &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#come-funziona" aria-label="Ancora"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;Quando un nodo si riconnette al cluster, il donatore verifica se le transazioni mancanti sono ancora disponibili nel proprio gcache (Galera cache). Se il gap è coperto dal gcache, viene eseguito un IST: solo le transazioni mancanti vengono inviate al nodo, che le applica e torna in stato Synced. Se il gap supera il gcache, Galera ricade su un SST completo.&lt;/p&gt;</description></item><item><title>Kimball</title><link>https://ivanluminaria.com/it/glossary/kimball/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/it/glossary/kimball/</guid><description>&lt;p&gt;&lt;strong&gt;Kimball&lt;/strong&gt; si riferisce a Ralph Kimball e alla sua metodologia di progettazione dei data warehouse, descritta nel libro &lt;em&gt;The Data Warehouse Toolkit&lt;/em&gt; (prima edizione 1996, terza edizione 2013).&lt;/p&gt;
&lt;h2 id="lapproccio" class="relative group"&gt;L&amp;rsquo;approccio &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#lapproccio" aria-label="Ancora"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;La metodologia Kimball si basa su tre pilastri:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Dimensional modeling&lt;/strong&gt;: organizzare i dati in star schema con fact table e dimension table, ottimizzati per le query analitiche&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Bottom-up&lt;/strong&gt;: costruire il DWH partendo dai singoli data mart dipartimentali, integrandoli progressivamente tramite dimensioni conformi (conformed dimensions)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Bus architecture&lt;/strong&gt;: un framework per garantire coerenza tra i data mart attraverso dimensioni e fatti condivisi&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="le-slowly-changing-dimensions" class="relative group"&gt;Le Slowly Changing Dimensions &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#le-slowly-changing-dimensions" aria-label="Ancora"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;Kimball ha definito la classificazione delle SCD (Slowly Changing Dimensions) nei tipi da 0 a 7, che è diventata lo standard de facto nel settore. Il Tipo 2 — con chiavi surrogate e date di validità — è il più usato per tracciare la storia delle dimensioni.&lt;/p&gt;</description></item><item><title>Knowledge Transfer</title><link>https://ivanluminaria.com/it/glossary/knowledge-transfer/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/it/glossary/knowledge-transfer/</guid><description>&lt;p&gt;Il &lt;strong&gt;Knowledge Transfer&lt;/strong&gt; (trasferimento di conoscenza) è il processo attraverso cui competenze, informazioni e know-how vengono trasferiti da chi li possiede a chi ne ha bisogno — tra colleghi, tra team, o tra persone e sistemi di documentazione.&lt;/p&gt;
&lt;h2 id="come-funziona" class="relative group"&gt;Come funziona &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#come-funziona" aria-label="Ancora"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;Può essere formale (documentazione, sessioni di training, wiki) o informale (pair programming, mentoring, affiancamento). L&amp;rsquo;AI può accelerare il knowledge transfer generando documentazione a partire dal codice, dai commit e dalle issue — non perfetta, ma sufficiente per non perdere conoscenza quando qualcuno lascia il progetto.&lt;/p&gt;</description></item><item><title>KPI</title><link>https://ivanluminaria.com/it/glossary/kpi/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/it/glossary/kpi/</guid><description>&lt;p&gt;&lt;strong&gt;KPI&lt;/strong&gt; (Key Performance Indicator) è una metrica quantificabile usata per valutare il successo di un&amp;rsquo;attività, un progetto o un&amp;rsquo;organizzazione rispetto a obiettivi predefiniti. Nel contesto del lavoro da remoto, i KPI sostituiscono la presenza fisica come indicatore di produttività.&lt;/p&gt;
&lt;h2 id="come-funziona" class="relative group"&gt;Come funziona &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#come-funziona" aria-label="Ancora"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;Un KPI efficace è specifico, misurabile e legato a un obiettivo concreto. Nella consulenza IT: ticket chiusi, codice rilasciato, SLA rispettati, clienti soddisfatti. Non &amp;ldquo;ore alla scrivania&amp;rdquo; — perché le ore non misurano il valore prodotto, misurano solo il tempo trascorso.&lt;/p&gt;</description></item><item><title>Least Privilege</title><link>https://ivanluminaria.com/it/glossary/least-privilege/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/it/glossary/least-privilege/</guid><description>&lt;p&gt;Il &lt;strong&gt;Least Privilege&lt;/strong&gt; (principio del privilegio minimo) è un principio fondamentale della sicurezza informatica: ogni utente, processo o sistema deve avere solo i permessi strettamente necessari per svolgere la propria funzione, niente di più.&lt;/p&gt;
&lt;h2 id="come-funziona" class="relative group"&gt;Come funziona &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#come-funziona" aria-label="Ancora"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;In ambito database, il principio si applica assegnando privilegi granulari: &lt;code&gt;SELECT&lt;/code&gt; se l&amp;rsquo;utente deve solo leggere, &lt;code&gt;SELECT + INSERT + UPDATE&lt;/code&gt; se deve anche scrivere, mai &lt;code&gt;ALL PRIVILEGES&lt;/code&gt; se non strettamente necessario. Combinato con il modello &lt;code&gt;utente@host&lt;/code&gt; di MySQL, il principio può essere applicato anche in base all&amp;rsquo;origine della connessione.&lt;/p&gt;</description></item><item><title>Lift-and-Shift</title><link>https://ivanluminaria.com/it/glossary/lift-and-shift/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/it/glossary/lift-and-shift/</guid><description>&lt;p&gt;&lt;strong&gt;Lift-and-Shift&lt;/strong&gt; (rehosting) è una strategia di migrazione che consiste nello spostare un sistema da un ambiente all&amp;rsquo;altro — tipicamente da on-premise a cloud — senza modificarne l&amp;rsquo;architettura, il codice applicativo o la configurazione. Si prende il sistema così com&amp;rsquo;è e lo si &amp;ldquo;solleva e sposta&amp;rdquo;.&lt;/p&gt;
&lt;h2 id="come-funziona" class="relative group"&gt;Come funziona &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#come-funziona" aria-label="Ancora"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;L&amp;rsquo;infrastruttura viene replicata nell&amp;rsquo;ambiente di destinazione: stesse macchine virtuali, stessi database, stessi middleware. Il vantaggio è la velocità: non c&amp;rsquo;è riscrittura del codice, non c&amp;rsquo;è redesign architetturale. Il rischio è portarsi dietro tutti i problemi dell&amp;rsquo;ambiente originale, incluse inefficienze e debito tecnico.&lt;/p&gt;</description></item><item><title>Local Index</title><link>https://ivanluminaria.com/it/glossary/local-index/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/it/glossary/local-index/</guid><description>&lt;p&gt;Un &lt;strong&gt;Local Index&lt;/strong&gt; è un indice Oracle creato su una tabella partizionata, che viene automaticamente partizionato con la stessa chiave e gli stessi limiti della tabella. Ogni partizione della tabella ha una corrispondente partizione di indice.&lt;/p&gt;
&lt;h2 id="come-funziona" class="relative group"&gt;Come funziona &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#come-funziona" aria-label="Ancora"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;Quando si crea un indice con la clausola &lt;code&gt;LOCAL&lt;/code&gt;, Oracle crea una partizione di indice per ogni partizione della tabella. Se la tabella ha 100 partizioni mensili, l&amp;rsquo;indice avrà 100 partizioni corrispondenti. Le operazioni DDL su una partizione (DROP, TRUNCATE, SPLIT) invalidano solo la partizione di indice corrispondente, non l&amp;rsquo;intero indice.&lt;/p&gt;</description></item><item><title>MERGE</title><link>https://ivanluminaria.com/it/glossary/merge-sql/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/it/glossary/merge-sql/</guid><description>&lt;p&gt;&lt;strong&gt;MERGE&lt;/strong&gt; è un&amp;rsquo;istruzione SQL che combina le operazioni di INSERT e UPDATE (e opzionalmente DELETE) in un unico statement. Se il record esiste lo aggiorna, se non esiste lo inserisce. È spesso chiamata informalmente &amp;ldquo;upsert&amp;rdquo;.&lt;/p&gt;
&lt;h2 id="sintassi-oracle" class="relative group"&gt;Sintassi Oracle &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#sintassi-oracle" aria-label="Ancora"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-sql" data-lang="sql"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;MERGE&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;INTO&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;tabella_destinazione&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;d&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;USING&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;tabella_sorgente&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;s&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;ON&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;d&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;chiave&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;s&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;chiave&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;WHEN&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;MATCHED&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;THEN&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;UPDATE&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;SET&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;d&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;campo&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;s&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;campo&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;WHEN&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;NOT&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;MATCHED&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;THEN&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;INSERT&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;chiave&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;campo&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;VALUES&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;s&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;chiave&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;s&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;campo&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="uso-nel-data-warehouse" class="relative group"&gt;Uso nel data warehouse &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#uso-nel-data-warehouse" aria-label="Ancora"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;Nel contesto ETL, il MERGE è il meccanismo base per caricare le tabelle dimensionali:&lt;/p&gt;</description></item><item><title>Mobilità Sostenibile</title><link>https://ivanluminaria.com/it/glossary/mobilita-sostenibile/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/it/glossary/mobilita-sostenibile/</guid><description>&lt;p&gt;La &lt;strong&gt;Mobilità Sostenibile&lt;/strong&gt; è un approccio ai trasporti urbani che privilegia l&amp;rsquo;uso di mezzi a basso impatto ambientale — bicicletta, trasporto pubblico, veicoli elettrici, car sharing — rispetto all&amp;rsquo;auto privata a combustione interna.&lt;/p&gt;
&lt;h2 id="come-funziona" class="relative group"&gt;Come funziona &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#come-funziona" aria-label="Ancora"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;Si basa su un cambio di paradigma: invece di costruire più strade per più auto, si investe in infrastrutture ciclabili, trasporto pubblico efficiente e incentivi per la mobilità attiva. Città come Amsterdam, Copenhagen e Monaco dimostrano che il modello funziona su larga scala.&lt;/p&gt;</description></item><item><title>MVCC</title><link>https://ivanluminaria.com/it/glossary/mvcc/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/it/glossary/mvcc/</guid><description>&lt;p&gt;&lt;strong&gt;MVCC&lt;/strong&gt; (Multi-Version Concurrency Control) è il modello di concorrenza usato da PostgreSQL per gestire l&amp;rsquo;accesso simultaneo ai dati. Ogni UPDATE crea una nuova versione della riga e segna la vecchia come &amp;ldquo;morta&amp;rdquo;; ogni DELETE marca la riga come non più visibile. Le letture non bloccano le scritture e viceversa.&lt;/p&gt;
&lt;h2 id="come-funziona" class="relative group"&gt;Come funziona &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#come-funziona" aria-label="Ancora"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;Ogni transazione vede uno snapshot consistente del database al momento del suo inizio. Le righe modificate da altre transazioni non ancora committate sono invisibili. Questo elimina la necessità di lock esclusivi sulle letture, permettendo alta concorrenza — ma genera &amp;ldquo;spazzatura&amp;rdquo; sotto forma di dead tuples che devono essere puliti dal VACUUM.&lt;/p&gt;</description></item><item><title>mydumper</title><link>https://ivanluminaria.com/it/glossary/mydumper/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/it/glossary/mydumper/</guid><description>&lt;p&gt;&lt;strong&gt;mydumper&lt;/strong&gt; è un tool open source di backup logico per MySQL e MariaDB che implementa il parallelismo reale: non solo tra tabelle diverse, ma anche all&amp;rsquo;interno della stessa tabella, dividendola in chunk basati sulla primary key.&lt;/p&gt;
&lt;h2 id="come-funziona" class="relative group"&gt;Come funziona &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#come-funziona" aria-label="Ancora"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;mydumper si connette al server MySQL, acquisisce una snapshot consistente con &lt;code&gt;FLUSH TABLES WITH READ LOCK&lt;/code&gt; (o &lt;code&gt;--trx-consistency-only&lt;/code&gt; per evitare lock globali su InnoDB), poi distribuisce il lavoro tra thread multipli. Ogni tabella grande viene spezzata in chunk — per default basati sui range della primary key — e ogni chunk viene esportato da un thread separato.&lt;/p&gt;</description></item><item><title>mysqlbinlog</title><link>https://ivanluminaria.com/it/glossary/mysqlbinlog/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/it/glossary/mysqlbinlog/</guid><description>&lt;p&gt;&lt;strong&gt;mysqlbinlog&lt;/strong&gt; è l&amp;rsquo;utility da riga di comando fornita con MySQL per leggere e decodificare il contenuto dei file binary log. È l&amp;rsquo;unico strumento in grado di convertire il formato binario dei binlog in output leggibile o in istruzioni SQL rieseguibili.&lt;/p&gt;
&lt;h2 id="come-funziona" class="relative group"&gt;Come funziona &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#come-funziona" aria-label="Ancora"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;mysqlbinlog legge i file binlog e produce output in formato testo. Supporta diversi filtri:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Per intervallo temporale&lt;/strong&gt;: &lt;code&gt;--start-datetime&lt;/code&gt; e &lt;code&gt;--stop-datetime&lt;/code&gt; per limitare l&amp;rsquo;output a una finestra temporale&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Per database&lt;/strong&gt;: &lt;code&gt;--database&lt;/code&gt; per filtrare gli eventi di un database specifico&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Per posizione&lt;/strong&gt;: &lt;code&gt;--start-position&lt;/code&gt; e &lt;code&gt;--stop-position&lt;/code&gt; per selezionare eventi specifici&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Con il formato ROW, il flag &lt;code&gt;--verbose&lt;/code&gt; decodifica le modifiche riga per riga in formato pseudo-SQL commentato, altrimenti l&amp;rsquo;output è un blob binario illeggibile.&lt;/p&gt;</description></item><item><title>mysqldump</title><link>https://ivanluminaria.com/it/glossary/mysqldump/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/it/glossary/mysqldump/</guid><description>&lt;p&gt;&lt;strong&gt;mysqldump&lt;/strong&gt; è l&amp;rsquo;utility di backup logico inclusa di serie in ogni installazione di MySQL e MariaDB. Produce un file SQL contenente tutte le istruzioni (CREATE TABLE, INSERT) necessarie per ricostruire completamente schema e dati di un database.&lt;/p&gt;
&lt;h2 id="come-funziona" class="relative group"&gt;Come funziona &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#come-funziona" aria-label="Ancora"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;mysqldump si connette al server MySQL e legge le tabelle una alla volta, generando le istruzioni SQL corrispondenti in output. L&amp;rsquo;operazione è rigorosamente single-threaded: una tabella dopo l&amp;rsquo;altra, una riga dopo l&amp;rsquo;altra. Il file prodotto può essere compresso esternamente (gzip, zstd) ma lo strumento stesso non offre compressione nativa.&lt;/p&gt;</description></item><item><title>mysqlpump</title><link>https://ivanluminaria.com/it/glossary/mysqlpump/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/it/glossary/mysqlpump/</guid><description>&lt;p&gt;&lt;strong&gt;mysqlpump&lt;/strong&gt; è l&amp;rsquo;utility di backup logico introdotta da Oracle in MySQL 5.7 come evoluzione di mysqldump. La differenza principale è il supporto per il parallelismo a livello di tabella e la compressione nativa dell&amp;rsquo;output (zlib, lz4, zstd).&lt;/p&gt;
&lt;h2 id="come-funziona" class="relative group"&gt;Come funziona &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#come-funziona" aria-label="Ancora"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;mysqlpump può dumpare più tabelle contemporaneamente usando thread paralleli, configurabili con &lt;code&gt;--default-parallelism&lt;/code&gt;. La compressione viene applicata direttamente durante il dump, senza bisogno di pipe esterne verso gzip. Supporta anche il dump selettivo di utenti e account MySQL.&lt;/p&gt;</description></item><item><title>Nested Loop</title><link>https://ivanluminaria.com/it/glossary/nested-loop/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/it/glossary/nested-loop/</guid><description>&lt;p&gt;&lt;strong&gt;Nested loop&lt;/strong&gt; è la strategia di join più semplice: per ogni riga della tabella esterna, il database cerca le righe corrispondenti nella tabella interna. Funziona come un doppio ciclo &lt;code&gt;for&lt;/code&gt; annidato — da qui il nome.&lt;/p&gt;
&lt;h2 id="come-funziona" class="relative group"&gt;Come funziona &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#come-funziona" aria-label="Ancora"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;L&amp;rsquo;optimizer sceglie una tabella come &amp;ldquo;esterna&amp;rdquo; (outer) e una come &amp;ldquo;interna&amp;rdquo; (inner). Per ogni riga della tabella esterna, esegue una ricerca nella tabella interna sulla colonna di join. Se la tabella interna ha un indice sulla colonna di join, ogni ricerca è un accesso diretto via B-tree. Senza indice, ogni ricerca diventa un sequential scan completo.&lt;/p&gt;</description></item><item><title>NOLOGGING</title><link>https://ivanluminaria.com/it/glossary/nologging/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/it/glossary/nologging/</guid><description>&lt;p&gt;&lt;strong&gt;NOLOGGING&lt;/strong&gt; è una modalità Oracle che disabilita la generazione di redo log durante operazioni di caricamento massivo. Le operazioni completano molto più velocemente, ma i dati non sono recuperabili tramite redo in caso di crash prima di un backup.&lt;/p&gt;
&lt;h2 id="come-funziona" class="relative group"&gt;Come funziona &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#come-funziona" aria-label="Ancora"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;Quando un segmento (tabella, indice, partizione) è in modalità NOLOGGING, le operazioni bulk come CTAS, &lt;code&gt;INSERT /*+ APPEND */&lt;/code&gt; e &lt;code&gt;ALTER TABLE MOVE&lt;/code&gt; non scrivono redo log per i blocchi dati. Su una copia di 380 GB, questo elimina la generazione di altrettanti GB di redo, evitando di saturare l&amp;rsquo;area di archivelog e riducendo i tempi da giorni a ore.&lt;/p&gt;</description></item><item><title>Object Privilege</title><link>https://ivanluminaria.com/it/glossary/object-privilege/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/it/glossary/object-privilege/</guid><description>&lt;p&gt;Un &lt;strong&gt;Object Privilege&lt;/strong&gt; in Oracle è un&amp;rsquo;autorizzazione che permette di eseguire operazioni su un oggetto specifico del database: una tabella, una vista, una sequenza o una procedura PL/SQL. Esempi tipici includono &lt;code&gt;SELECT ON schema.tabella&lt;/code&gt;, &lt;code&gt;INSERT ON schema.tabella&lt;/code&gt; e &lt;code&gt;EXECUTE ON schema.procedura&lt;/code&gt;.&lt;/p&gt;
&lt;h2 id="come-funziona" class="relative group"&gt;Come funziona &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#come-funziona" aria-label="Ancora"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;Gli object privileges si assegnano con &lt;code&gt;GRANT&lt;/code&gt; specificando l&amp;rsquo;operazione e l&amp;rsquo;oggetto target: &lt;code&gt;GRANT SELECT ON app_owner.clienti TO srv_report&lt;/code&gt;. Possono essere assegnati a singoli utenti o a ruoli. A differenza dei system privileges, operano su un singolo oggetto e non conferiscono poteri globali sul database.&lt;/p&gt;</description></item><item><title>OCI</title><link>https://ivanluminaria.com/it/glossary/oci/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/it/glossary/oci/</guid><description>&lt;p&gt;&lt;strong&gt;OCI&lt;/strong&gt; (Oracle Cloud Infrastructure) è la piattaforma cloud di Oracle, lanciata nella sua seconda generazione nel 2018. A differenza di altri cloud provider, OCI è progettata nativamente per i workload Oracle Database e offre vantaggi significativi in termini di licensing e performance.&lt;/p&gt;
&lt;h2 id="perché-oci-per-oracle-database" class="relative group"&gt;Perché OCI per Oracle Database &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#perch%c3%a9-oci-per-oracle-database" aria-label="Ancora"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;Il vantaggio principale riguarda il licensing. Su OCI, Oracle riconosce le proprie OCPU (Oracle CPU) con un rapporto 1:1 ai fini del conteggio delle licenze. Su altri cloud provider come AWS o Azure, il rapporto vCPU-licenze è meno favorevole e il rischio di audit è concreto.&lt;/p&gt;</description></item><item><title>OLAP</title><link>https://ivanluminaria.com/it/glossary/olap/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/it/glossary/olap/</guid><description>&lt;p&gt;&lt;strong&gt;OLAP&lt;/strong&gt; (Online Analytical Processing) indica un approccio all&amp;rsquo;elaborazione dei dati orientato all&amp;rsquo;analisi multidimensionale: aggregazioni, drill-down, confronti temporali, slice-and-dice su grandi volumi di dati storici.&lt;/p&gt;
&lt;h2 id="olap-vs-oltp" class="relative group"&gt;OLAP vs OLTP &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#olap-vs-oltp" aria-label="Ancora"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Caratteristica&lt;/th&gt;
 &lt;th&gt;OLAP&lt;/th&gt;
 &lt;th&gt;OLTP&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;Scopo&lt;/td&gt;
 &lt;td&gt;Analisi e reporting&lt;/td&gt;
 &lt;td&gt;Transazioni operative&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Modello dati&lt;/td&gt;
 &lt;td&gt;Star schema, denormalizzato&lt;/td&gt;
 &lt;td&gt;3NF, normalizzato&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Query tipica&lt;/td&gt;
 &lt;td&gt;Aggregazioni su milioni di righe&lt;/td&gt;
 &lt;td&gt;Lettura/scrittura di poche righe&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Utenti&lt;/td&gt;
 &lt;td&gt;Analisti, management&lt;/td&gt;
 &lt;td&gt;Applicazioni, operatori&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Aggiornamento&lt;/td&gt;
 &lt;td&gt;Batch (ETL periodico)&lt;/td&gt;
 &lt;td&gt;Real-time&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id="operazioni-olap" class="relative group"&gt;Operazioni OLAP &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#operazioni-olap" aria-label="Ancora"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;Le operazioni fondamentali dell&amp;rsquo;analisi OLAP sono:&lt;/p&gt;</description></item><item><title>Outsourcing</title><link>https://ivanluminaria.com/it/glossary/outsourcing/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/it/glossary/outsourcing/</guid><description>&lt;p&gt;L&amp;rsquo;&lt;strong&gt;Outsourcing&lt;/strong&gt; è la pratica di affidare lo sviluppo, la manutenzione o la gestione di sistemi IT a fornitori esterni all&amp;rsquo;azienda. Può riguardare progetti completi (sviluppo di un software custom) o servizi continuativi (gestione dell&amp;rsquo;infrastruttura, supporto applicativo).&lt;/p&gt;
&lt;h2 id="come-funziona" class="relative group"&gt;Come funziona &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#come-funziona" aria-label="Ancora"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;L&amp;rsquo;azienda cliente definisce i requisiti e stipula un contratto con un fornitore esterno che si impegna a realizzare il progetto. I modelli contrattuali più comuni sono: a corpo (prezzo fisso per risultato definito), a tempo e materiali (giornate-uomo fatturate), o ibridi. Il fornitore mette a disposizione un team di consulenti che lavorano sul progetto, spesso con rotazione periodica del personale.&lt;/p&gt;</description></item><item><title>Parking Lot</title><link>https://ivanluminaria.com/it/glossary/parking-lot/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/it/glossary/parking-lot/</guid><description>&lt;p&gt;Il &lt;strong&gt;Parking Lot&lt;/strong&gt; è una lista visibile — su una lavagna, un documento condiviso o la chat — dove il facilitatore annota gli argomenti che emergono durante una riunione ma che non possono essere discussi nel tempo disponibile. Gli argomenti vengono &amp;ldquo;parcheggiati&amp;rdquo; e affrontati dopo la riunione con le sole persone coinvolte.&lt;/p&gt;
&lt;h2 id="come-funziona" class="relative group"&gt;Come funziona &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#come-funziona" aria-label="Ancora"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;Quando durante uno standup qualcuno solleva un problema complesso, il facilitatore dice: &amp;ldquo;Lo segno nel parking lot, ne parliamo dopo.&amp;rdquo; L&amp;rsquo;argomento non viene ignorato — viene solo spostato nel contesto giusto, dove può essere affrontato senza far perdere tempo a chi non è coinvolto.&lt;/p&gt;</description></item><item><title>Partita IVA</title><link>https://ivanluminaria.com/it/glossary/partita-iva/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/it/glossary/partita-iva/</guid><description>&lt;p&gt;La &lt;strong&gt;Partita IVA&lt;/strong&gt; è il codice di identificazione fiscale assegnato ai lavoratori autonomi e alle imprese in Italia per le operazioni soggette a IVA. Nella consulenza IT, &amp;ldquo;lavorare a partita IVA&amp;rdquo; significa operare come libero professionista, fatturando i propri servizi direttamente al cliente.&lt;/p&gt;
&lt;h2 id="come-funziona" class="relative group"&gt;Come funziona &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#come-funziona" aria-label="Ancora"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;Il consulente a partita IVA emette fattura al cliente al termine del periodo di lavoro. Il pagamento avviene secondo i termini contrattuali — che in Italia sono tipicamente 60-90-120 giorni fine mese. Nel frattempo, il consulente sostiene tutte le spese (contributi INPS, tasse, affitto, utenze) con liquidità propria.&lt;/p&gt;</description></item><item><title>Partition Pruning</title><link>https://ivanluminaria.com/it/glossary/partition-pruning/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/it/glossary/partition-pruning/</guid><description>&lt;p&gt;Il &lt;strong&gt;Partition Pruning&lt;/strong&gt; è il meccanismo con cui Oracle, durante l&amp;rsquo;esecuzione di una query su una tabella partizionata, identifica ed esclude automaticamente le partizioni che non possono contenere dati rilevanti per il predicato della query.&lt;/p&gt;
&lt;h2 id="come-funziona" class="relative group"&gt;Come funziona &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#come-funziona" aria-label="Ancora"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;Quando una query include un predicato sulla colonna di partizione (es. &lt;code&gt;WHERE data_movimento BETWEEN ...&lt;/code&gt;), Oracle consulta i metadati delle partizioni e determina quali partizioni contengono dati nell&amp;rsquo;intervallo richiesto. Solo quelle partizioni vengono lette. Nel piano di esecuzione appare come &lt;code&gt;PARTITION RANGE SINGLE&lt;/code&gt; o &lt;code&gt;PARTITION RANGE ITERATOR&lt;/code&gt;.&lt;/p&gt;</description></item><item><title>Pedalata Assistita</title><link>https://ivanluminaria.com/it/glossary/pedalata-assistita/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/it/glossary/pedalata-assistita/</guid><description>&lt;p&gt;La &lt;strong&gt;Pedalata Assistita&lt;/strong&gt; è un sistema di propulsione elettrica montato su una bicicletta che amplifica la forza della pedalata del ciclista tramite un motore elettrico. Il motore si attiva solo quando si pedala e si disattiva sopra i 25 km/h (limite europeo).&lt;/p&gt;
&lt;h2 id="come-funziona" class="relative group"&gt;Come funziona &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#come-funziona" aria-label="Ancora"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;Un sensore rileva la forza e la cadenza della pedalata e attiva il motore elettrico proporzionalmente. Più pedali forte, più il motore aiuta. Il risultato è che salite come il Celio a Roma diventano un leggero dosso, e si arriva a destinazione senza sudare — un dettaglio cruciale per chi deve presentarsi in ufficio.&lt;/p&gt;</description></item><item><title>Pendolarismo</title><link>https://ivanluminaria.com/it/glossary/pendolarismo/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/it/glossary/pendolarismo/</guid><description>&lt;p&gt;Il &lt;strong&gt;Pendolarismo&lt;/strong&gt; (commuting) è lo spostamento quotidiano tra casa e luogo di lavoro. Nelle grandi città italiane come Roma, il pendolarismo medio assorbe 2-4 ore al giorno, con costi diretti (carburante, parcheggio, mezzi pubblici) e indiretti (stress, stanchezza, produttività persa).&lt;/p&gt;
&lt;h2 id="come-funziona" class="relative group"&gt;Come funziona &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#come-funziona" aria-label="Ancora"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;Un consulente IT che vive a 30 km dall&amp;rsquo;ufficio a Roma può impiegare 1h15-2h30 solo per l&amp;rsquo;andata. Su 220 giorni lavorativi, sono 47-89 ore perse al mese — fino a due settimane lavorative passate in auto senza produrre nulla.&lt;/p&gt;</description></item><item><title>pg_stat_statements</title><link>https://ivanluminaria.com/it/glossary/pg-stat-statements/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/it/glossary/pg-stat-statements/</guid><description>&lt;p&gt;&lt;strong&gt;pg_stat_statements&lt;/strong&gt; è un&amp;rsquo;estensione di PostgreSQL — inclusa nella distribuzione ufficiale ma non attiva di default — che tiene traccia delle statistiche di esecuzione di tutte le query SQL che passano dal server. Le query vengono normalizzate (i valori letterali sostituiti con parametri) per raggruppare le esecuzioni dello stesso pattern.&lt;/p&gt;
&lt;h2 id="come-funziona" class="relative group"&gt;Come funziona &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#come-funziona" aria-label="Ancora"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;L&amp;rsquo;estensione richiede di essere caricata come shared library all&amp;rsquo;avvio del server tramite il parametro &lt;code&gt;shared_preload_libraries&lt;/code&gt;. Una volta attiva, registra per ogni query: numero di esecuzioni, tempo totale e medio, righe restituite, blocchi letti da disco e da cache. Il parametro &lt;code&gt;pg_stat_statements.max&lt;/code&gt; controlla quante query distinte vengono tracciate (default 5000).&lt;/p&gt;</description></item><item><title>pg_trgm</title><link>https://ivanluminaria.com/it/glossary/pg-trgm/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/it/glossary/pg-trgm/</guid><description>&lt;p&gt;&lt;strong&gt;pg_trgm&lt;/strong&gt; è un&amp;rsquo;estensione di PostgreSQL che implementa la ricerca basata su trigrammi — sequenze di tre caratteri consecutivi estratte dal testo. Abilita l&amp;rsquo;uso di indici GIN e GiST per accelerare ricerche &lt;code&gt;LIKE '%valore%'&lt;/code&gt; e &lt;code&gt;ILIKE&lt;/code&gt;, che altrimenti richiederebbero scansioni sequenziali.&lt;/p&gt;
&lt;h2 id="come-funziona" class="relative group"&gt;Come funziona &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#come-funziona" aria-label="Ancora"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;L&amp;rsquo;estensione scompone ogni stringa in trigrammi: ad esempio, &amp;ldquo;hello&amp;rdquo; diventa {&amp;quot; h&amp;quot;, &amp;quot; he&amp;quot;, &amp;ldquo;hel&amp;rdquo;, &amp;ldquo;ell&amp;rdquo;, &amp;ldquo;llo&amp;rdquo;, &amp;ldquo;lo &amp;ldquo;}. Un indice GIN con operator class &lt;code&gt;gin_trgm_ops&lt;/code&gt; indicizza questi trigrammi. Quando si esegue un &lt;code&gt;LIKE '%ell%'&lt;/code&gt;, PostgreSQL cerca i trigrammi corrispondenti nell&amp;rsquo;indice invece di scansionare l&amp;rsquo;intera tabella.&lt;/p&gt;</description></item><item><title>PITR</title><link>https://ivanluminaria.com/it/glossary/pitr/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/it/glossary/pitr/</guid><description>&lt;p&gt;&lt;strong&gt;PITR&lt;/strong&gt; (Point-in-Time Recovery) è una tecnica di ripristino che permette di riportare un database a un qualsiasi momento nel tempo, non solo al momento del backup. Si basa sulla combinazione di un backup completo e dei log delle transazioni (binary log in MySQL, WAL in PostgreSQL, redo log in Oracle).&lt;/p&gt;
&lt;h2 id="come-funziona" class="relative group"&gt;Come funziona &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#come-funziona" aria-label="Ancora"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;Il processo si articola in due fasi:&lt;/p&gt;</description></item><item><title>Presenteismo</title><link>https://ivanluminaria.com/it/glossary/presenteismo/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/it/glossary/presenteismo/</guid><description>&lt;p&gt;Il &lt;strong&gt;Presenteismo&lt;/strong&gt; è la cultura organizzativa che misura il valore del lavoro in base alla presenza fisica del dipendente in ufficio, indipendentemente dalla qualità e quantità dei risultati prodotti. È il presupposto che &amp;ldquo;se ti vedo alla scrivania, stai lavorando.&amp;rdquo;&lt;/p&gt;
&lt;h2 id="come-funziona" class="relative group"&gt;Come funziona &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#come-funziona" aria-label="Ancora"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;In un&amp;rsquo;organizzazione presenteista, essere in ufficio dalle 9 alle 18 è più importante di chiudere i task. Arrivare tardi è un problema anche se hai prodotto più di tutti. Lavorare da casa è sospetto anche se i risultati sono eccellenti. Il controllo si basa sulla vista, non sulle metriche.&lt;/p&gt;</description></item><item><title>Pull Request</title><link>https://ivanluminaria.com/it/glossary/pull-request/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/it/glossary/pull-request/</guid><description>&lt;p&gt;Una &lt;strong&gt;Pull Request&lt;/strong&gt; (PR) è una richiesta formale di incorporare le modifiche da un branch di sviluppo nel branch principale del repository. È il meccanismo centrale di collaborazione su GitHub e piattaforme simili.&lt;/p&gt;
&lt;h2 id="come-funziona" class="relative group"&gt;Come funziona &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#come-funziona" aria-label="Ancora"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;Lo sviluppatore lavora su un branch dedicato (es. &lt;code&gt;fix/issue-234-errore-calcolo&lt;/code&gt;), completa le modifiche, e apre una PR. La PR mostra il diff del codice, permette ai colleghi di commentare riga per riga, richiedere modifiche o approvare. Solo dopo l&amp;rsquo;approvazione il codice viene unito (merged) nel branch principale. Questo garantisce che il codice &amp;ldquo;buono&amp;rdquo; resti sempre buono.&lt;/p&gt;</description></item><item><title>Quorum</title><link>https://ivanluminaria.com/it/glossary/quorum/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/it/glossary/quorum/</guid><description>&lt;p&gt;Il &lt;strong&gt;quorum&lt;/strong&gt; è il numero minimo di nodi che devono essere d&amp;rsquo;accordo per considerare il cluster operativo. In un cluster a 3 nodi, il quorum è 2 (la maggioranza). Se un nodo si disconnette, gli altri due riconoscono di essere la maggioranza e continuano a operare normalmente.&lt;/p&gt;
&lt;h2 id="come-funziona" class="relative group"&gt;Come funziona &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#come-funziona" aria-label="Ancora"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;Galera Cluster utilizza un protocollo di comunicazione di gruppo che verifica continuamente quanti nodi sono raggiungibili. Il calcolo è semplice: quorum = (numero totale nodi / 2) + 1. Con 3 nodi il quorum è 2, con 5 nodi è 3. I nodi che perdono il quorum passano allo stato Non-Primary e rifiutano le scritture per evitare inconsistenze.&lt;/p&gt;</description></item><item><title>RAC</title><link>https://ivanluminaria.com/it/glossary/rac/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/it/glossary/rac/</guid><description>&lt;p&gt;&lt;strong&gt;RAC&lt;/strong&gt; (Real Application Clusters) è la tecnologia Oracle che consente a più istanze del database di accedere contemporaneamente allo stesso storage condiviso. Se un nodo si guasta, gli altri continuano a servire le richieste senza interruzione — il failover è trasparente per le applicazioni.&lt;/p&gt;
&lt;h2 id="come-funziona" class="relative group"&gt;Come funziona &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#come-funziona" aria-label="Ancora"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;Un cluster RAC è composto da due o più server (nodi) collegati tra loro da una rete privata ad alta velocità (interconnect) e da uno storage condiviso (tipicamente ASM — Automatic Storage Management). Ogni nodo esegue la propria istanza Oracle, ma tutti accedono agli stessi datafile.&lt;/p&gt;</description></item><item><title>Ragged hierarchy</title><link>https://ivanluminaria.com/it/glossary/ragged-hierarchy/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/it/glossary/ragged-hierarchy/</guid><description>&lt;p&gt;Una &lt;strong&gt;ragged hierarchy&lt;/strong&gt; (gerarchia sbilanciata) è una struttura gerarchica in cui non tutti i rami raggiungono la stessa profondità. Alcuni livelli intermedi sono assenti per determinate entità.&lt;/p&gt;
&lt;h2 id="esempio-concreto" class="relative group"&gt;Esempio concreto &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#esempio-concreto" aria-label="Ancora"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;In una gerarchia a tre livelli Top Group → Group → Client:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Alcuni clienti hanno tutti e tre i livelli (gerarchia completa)&lt;/li&gt;
&lt;li&gt;Alcuni clienti hanno un Group ma nessun Top Group&lt;/li&gt;
&lt;li&gt;Alcuni clienti non hanno né Group né Top Group (clienti diretti)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Il risultato è una struttura con &amp;ldquo;buchi&amp;rdquo; che causa problemi nei report di aggregazione: righe con NULL, totali spezzati, drill-down incompleti.&lt;/p&gt;</description></item><item><title>Range Partitioning</title><link>https://ivanluminaria.com/it/glossary/range-partitioning/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/it/glossary/range-partitioning/</guid><description>&lt;p&gt;Il &lt;strong&gt;Range Partitioning&lt;/strong&gt; (partizionamento per intervallo) è una strategia di partizionamento delle tabelle in cui le righe vengono distribuite in partizioni diverse in base al valore di una colonna rispetto a intervalli predefiniti. La colonna di partizionamento è quasi sempre una data nei data warehouse.&lt;/p&gt;
&lt;h2 id="come-funziona" class="relative group"&gt;Come funziona &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#come-funziona" aria-label="Ancora"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;Ogni partizione è definita con una clausola &lt;code&gt;VALUES LESS THAN&lt;/code&gt; che stabilisce il limite superiore dell&amp;rsquo;intervallo. Oracle assegna automaticamente ogni riga alla partizione corretta in base al valore della colonna di partizionamento. Se una riga ha &lt;code&gt;data_vendita = '2025-03-15'&lt;/code&gt;, viene inserita nella partizione il cui intervallo include quella data.&lt;/p&gt;</description></item><item><title>Redo Log</title><link>https://ivanluminaria.com/it/glossary/redo-log/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/it/glossary/redo-log/</guid><description>&lt;p&gt;&lt;strong&gt;Redo Log&lt;/strong&gt; è il meccanismo con cui Oracle registra ogni modifica ai dati del database (INSERT, UPDATE, DELETE, DDL) prima che venga scritta definitivamente nei datafile. È la garanzia fondamentale di durabilità delle transazioni.&lt;/p&gt;
&lt;h2 id="come-funziona" class="relative group"&gt;Come funziona &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#come-funziona" aria-label="Ancora"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;Oracle scrive le modifiche nei redo log online in modo sequenziale e continuo. I redo log sono organizzati in gruppi circolari: quando un gruppo si riempie, Oracle passa al successivo. Quando tutti i gruppi sono stati usati, Oracle torna al primo (log switch).&lt;/p&gt;</description></item><item><title>Relay log</title><link>https://ivanluminaria.com/it/glossary/relay-log/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/it/glossary/relay-log/</guid><description>&lt;p&gt;Il &lt;strong&gt;relay log&lt;/strong&gt; è un file di log intermedio presente sullo slave in un&amp;rsquo;architettura di replica MySQL. Contiene gli eventi ricevuti dal binary log del master, in attesa di essere eseguiti localmente dal thread SQL dello slave.&lt;/p&gt;
&lt;h2 id="come-funziona" class="relative group"&gt;Come funziona &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#come-funziona" aria-label="Ancora"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;Il flusso della replica MySQL passa attraverso il relay log in tre fasi:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;L&amp;rsquo;&lt;strong&gt;I/O thread&lt;/strong&gt; dello slave si connette al master e legge i binary log&lt;/li&gt;
&lt;li&gt;Gli eventi ricevuti vengono scritti nel relay log locale&lt;/li&gt;
&lt;li&gt;Il &lt;strong&gt;SQL thread&lt;/strong&gt; dello slave legge gli eventi dal relay log e li esegue sul database locale&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Questa architettura a due thread permette di disaccoppiare la ricezione dei dati dalla loro applicazione: lo slave può continuare a ricevere eventi dal master anche se l&amp;rsquo;esecuzione locale è temporaneamente rallentata.&lt;/p&gt;</description></item><item><title>REVOKE</title><link>https://ivanluminaria.com/it/glossary/revoke/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/it/glossary/revoke/</guid><description>&lt;p&gt;&lt;strong&gt;REVOKE&lt;/strong&gt; è il comando SQL che rimuove privilegi o ruoli precedentemente assegnati con &lt;code&gt;GRANT&lt;/code&gt;. È il complemento indispensabile del GRANT e lo strumento principale per restringere i permessi quando un modello di sicurezza viene ristrutturato.&lt;/p&gt;
&lt;h2 id="come-funziona" class="relative group"&gt;Come funziona &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#come-funziona" aria-label="Ancora"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;La sintassi segue lo stesso schema del GRANT: &lt;code&gt;REVOKE SELECT ON schema.tabella FROM utente&lt;/code&gt; oppure &lt;code&gt;REVOKE ruolo FROM utente&lt;/code&gt;. In Oracle, revocare un ruolo come &lt;code&gt;DBA&lt;/code&gt; rimuove in un colpo solo tutti i system privileges inclusi in quel ruolo. Prima di eseguire un REVOKE critico, è fondamentale verificare che l&amp;rsquo;utente mantenga i privilegi necessari per le sue funzioni.&lt;/p&gt;</description></item><item><title>RMAN</title><link>https://ivanluminaria.com/it/glossary/rman/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/it/glossary/rman/</guid><description>&lt;p&gt;&lt;strong&gt;RMAN&lt;/strong&gt; (Recovery Manager) è lo strumento nativo di Oracle per il backup, il restore e il recovery del database. È un&amp;rsquo;utility a riga di comando che gestisce tutte le operazioni di protezione dei dati in modo integrato con il database.&lt;/p&gt;
&lt;h2 id="cosa-fa" class="relative group"&gt;Cosa fa &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#cosa-fa" aria-label="Ancora"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Backup&lt;/strong&gt;: completi, incrementali, dei soli archived log&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Restore&lt;/strong&gt;: ripristino di datafile, tablespace o dell&amp;rsquo;intero database&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Recovery&lt;/strong&gt;: applicazione dei redo log per portare il database a un punto nel tempo specifico&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Duplicate&lt;/strong&gt;: creazione di copie del database, inclusi database standby per Data Guard&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="rman-e-data-guard" class="relative group"&gt;RMAN e Data Guard &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#rman-e-data-guard" aria-label="Ancora"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;Per la creazione di un database standby, RMAN permette il &lt;code&gt;DUPLICATE ... FOR STANDBY FROM ACTIVE DATABASE&lt;/code&gt; — una copia diretta via rete dal primario allo standby, senza bisogno di backup intermedi su nastro o disco. Il comando trasferisce tutti i datafile, i controlfile e li configura automaticamente per la replica.&lt;/p&gt;</description></item><item><title>ROI</title><link>https://ivanluminaria.com/it/glossary/roi/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/it/glossary/roi/</guid><description>&lt;p&gt;Il &lt;strong&gt;ROI&lt;/strong&gt; (Return on Investment) è la metrica che misura il rendimento di un investimento rapportando il beneficio netto al costo sostenuto, espresso come percentuale. Un ROI del 200% significa che ogni euro investito ne ha generati due di ritorno.&lt;/p&gt;
&lt;h2 id="come-funziona" class="relative group"&gt;Come funziona &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#come-funziona" aria-label="Ancora"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;Si calcola come: &lt;code&gt;(Beneficio - Costo) / Costo × 100&lt;/code&gt;. Nel contesto dei progetti IT con componenti AI, il calcolo del ROI deve includere non solo i costi di implementazione ma anche quelli di manutenzione, training del team, governance e gestione degli errori del modello.&lt;/p&gt;</description></item><item><title>ROLE</title><link>https://ivanluminaria.com/it/glossary/postgresql-role/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/it/glossary/postgresql-role/</guid><description>&lt;p&gt;In PostgreSQL, &lt;strong&gt;ROLE&lt;/strong&gt; è l&amp;rsquo;unica entità di sicurezza. Non esiste una distinzione tra &amp;ldquo;utente&amp;rdquo; e &amp;ldquo;ruolo&amp;rdquo;: tutto è un ROLE. Un ROLE con l&amp;rsquo;attributo &lt;code&gt;LOGIN&lt;/code&gt; si comporta come un utente; senza &lt;code&gt;LOGIN&lt;/code&gt;, è un contenitore di privilegi assegnabile ad altri ROLE.&lt;/p&gt;
&lt;h2 id="come-funziona" class="relative group"&gt;Come funziona &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#come-funziona" aria-label="Ancora"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;&lt;code&gt;CREATE USER mario&lt;/code&gt; è semplicemente uno shortcut per &lt;code&gt;CREATE ROLE mario WITH LOGIN&lt;/code&gt;. I ROLE possono possedere oggetti, ereditare privilegi da altri ROLE tramite l&amp;rsquo;attributo &lt;code&gt;INHERIT&lt;/code&gt;, e essere utilizzati per costruire gerarchie di permessi. Un ROLE &amp;ldquo;funzionale&amp;rdquo; (senza LOGIN) raggruppa i privilegi; i ROLE &amp;ldquo;utente&amp;rdquo; (con LOGIN) li ereditano.&lt;/p&gt;</description></item><item><title>RPO</title><link>https://ivanluminaria.com/it/glossary/rpo/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/it/glossary/rpo/</guid><description>&lt;p&gt;&lt;strong&gt;RPO&lt;/strong&gt; (Recovery Point Objective) è la quantità massima di dati che un&amp;rsquo;organizzazione può permettersi di perdere in caso di guasto o disastro. Si misura in tempo: un RPO di 1 ora significa che si accetta di perdere al massimo l&amp;rsquo;ultima ora di transazioni.&lt;/p&gt;
&lt;h2 id="come-si-determina" class="relative group"&gt;Come si determina &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#come-si-determina" aria-label="Ancora"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;L&amp;rsquo;RPO dipende dalla strategia di backup e replica:&lt;/p&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Strategia&lt;/th&gt;
 &lt;th&gt;RPO tipico&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;Backup notturno su nastro&lt;/td&gt;
 &lt;td&gt;12-24 ore&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Backup + archived log su storage remoto&lt;/td&gt;
 &lt;td&gt;1-4 ore&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Data Guard asincrono (MaxPerformance)&lt;/td&gt;
 &lt;td&gt;Pochi secondi&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Data Guard sincrono (MaxAvailability)&lt;/td&gt;
 &lt;td&gt;Zero&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id="rpo-vs-rto" class="relative group"&gt;RPO vs RTO &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#rpo-vs-rto" aria-label="Ancora"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;RPO e RTO sono complementari ma distinti:&lt;/p&gt;</description></item><item><title>RTO</title><link>https://ivanluminaria.com/it/glossary/rto/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/it/glossary/rto/</guid><description>&lt;p&gt;&lt;strong&gt;RTO&lt;/strong&gt; (Recovery Time Objective) è il tempo massimo accettabile per ripristinare il servizio dopo un guasto o un disastro. Si misura dal momento del guasto al momento in cui il sistema torna operativo.&lt;/p&gt;
&lt;h2 id="come-si-determina" class="relative group"&gt;Come si determina &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#come-si-determina" aria-label="Ancora"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;L&amp;rsquo;RTO dipende dalla strategia di recovery e dall&amp;rsquo;infrastruttura disponibile:&lt;/p&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Strategia&lt;/th&gt;
 &lt;th&gt;RTO tipico&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;Restore da backup su nastro&lt;/td&gt;
 &lt;td&gt;4-12 ore&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Restore da backup su disco&lt;/td&gt;
 &lt;td&gt;1-4 ore&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Data Guard con switchover manuale&lt;/td&gt;
 &lt;td&gt;1-5 minuti&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Data Guard con Fast-Start Failover&lt;/td&gt;
 &lt;td&gt;10-30 secondi&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id="rto-vs-rpo" class="relative group"&gt;RTO vs RPO &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#rto-vs-rpo" aria-label="Ancora"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;RTO&lt;/strong&gt;: quanto tempo ci vuole per ripartire (guarda avanti)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;RPO&lt;/strong&gt;: quanti dati puoi perdere (guarda indietro)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Sono metriche indipendenti. Un restore da backup può avere RTO=2 ore e RPO=24 ore. Un Data Guard sincrono può avere RTO=30 secondi e RPO=0.&lt;/p&gt;</description></item><item><title>SCAN Listener</title><link>https://ivanluminaria.com/it/glossary/scan-listener/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/it/glossary/scan-listener/</guid><description>&lt;p&gt;Lo &lt;strong&gt;SCAN Listener&lt;/strong&gt; (Single Client Access Name) è il componente di Oracle RAC che fornisce un unico nome DNS per l&amp;rsquo;accesso al cluster. Le applicazioni si connettono allo SCAN name senza dover conoscere i singoli nodi: il listener distribuisce automaticamente le connessioni tra i nodi attivi.&lt;/p&gt;
&lt;h2 id="come-funziona" class="relative group"&gt;Come funziona &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#come-funziona" aria-label="Ancora"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;Lo SCAN è un nome DNS che risolve a tre indirizzi IP virtuali (VIP), distribuiti tra i nodi del cluster. Quando un client si connette allo SCAN name, il DNS restituisce uno dei tre IP, e il listener su quell&amp;rsquo;IP redirige la connessione al nodo più appropriato in base al servizio richiesto e al carico.&lt;/p&gt;</description></item><item><title>SCD</title><link>https://ivanluminaria.com/it/glossary/scd/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/it/glossary/scd/</guid><description>&lt;p&gt;&lt;strong&gt;SCD&lt;/strong&gt; (Slowly Changing Dimension) indica un insieme di tecniche usate nel data warehouse per gestire i cambiamenti nei dati delle tabelle dimensionali nel corso del tempo.&lt;/p&gt;
&lt;h2 id="i-tipi-principali" class="relative group"&gt;I tipi principali &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#i-tipi-principali" aria-label="Ancora"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Tipo 1&lt;/strong&gt;: sovrascrittura del valore precedente. Nessuna storia conservata&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Tipo 2&lt;/strong&gt;: inserimento di una nuova riga con date di validità (data inizio, data fine). Conserva tutta la storia&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Tipo 3&lt;/strong&gt;: aggiunta di una colonna per il valore precedente. Conserva solo l&amp;rsquo;ultimo cambiamento&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="perché-serve" class="relative group"&gt;Perché serve &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#perch%c3%a9-serve" aria-label="Ancora"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;In un database transazionale, quando un cliente cambia indirizzo si aggiorna il record. In un data warehouse questo significherebbe perdere la storia: tutte le vendite precedenti risulterebbero associate al nuovo indirizzo.&lt;/p&gt;</description></item><item><title>Schema</title><link>https://ivanluminaria.com/it/glossary/schema/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/it/glossary/schema/</guid><description>&lt;p&gt;Uno &lt;strong&gt;Schema&lt;/strong&gt; in un database relazionale è un namespace logico che raggruppa oggetti come tabelle, viste, funzioni e sequenze. Funziona come un contenitore organizzativo all&amp;rsquo;interno di un database.&lt;/p&gt;
&lt;h2 id="come-funziona" class="relative group"&gt;Come funziona &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#come-funziona" aria-label="Ancora"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;In PostgreSQL, lo schema predefinito è &lt;code&gt;public&lt;/code&gt;. Per accedere a un oggetto in un altro schema serve il prefisso: &lt;code&gt;schema1.tabella&lt;/code&gt;. Il privilegio &lt;code&gt;USAGE&lt;/code&gt; su uno schema è prerequisito per accedere a qualsiasi oggetto al suo interno — senza &lt;code&gt;USAGE&lt;/code&gt;, nemmeno un &lt;code&gt;GRANT SELECT&lt;/code&gt; sulle tabelle funziona.&lt;/p&gt;</description></item><item><title>Scope</title><link>https://ivanluminaria.com/it/glossary/scope/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/it/glossary/scope/</guid><description>&lt;p&gt;Lo &lt;strong&gt;Scope&lt;/strong&gt; (ambito) di un progetto definisce il perimetro di ciò che il progetto deve realizzare: funzionalità incluse, deliverable attesi, vincoli e confini concordati con gli stakeholder. Tutto ciò che è dentro lo scope si fa; tutto ciò che è fuori, no.&lt;/p&gt;
&lt;h2 id="come-funziona" class="relative group"&gt;Come funziona &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#come-funziona" aria-label="Ancora"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;Lo scope viene definito nelle fasi iniziali del progetto attraverso documenti come lo Statement of Work o il Project Charter. Ogni richiesta di modifica successiva deve passare attraverso un processo formale di change management per valutarne l&amp;rsquo;impatto su tempi, costi e risorse.&lt;/p&gt;</description></item><item><title>Scope Creep</title><link>https://ivanluminaria.com/it/glossary/scope-creep/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/it/glossary/scope-creep/</guid><description>&lt;p&gt;Lo &lt;strong&gt;Scope Creep&lt;/strong&gt; è l&amp;rsquo;espansione progressiva e spesso non controllata dell&amp;rsquo;ambito di un progetto rispetto a quanto definito inizialmente. Nuovi requisiti, modifiche alle specifiche e funzionalità aggiuntive si accumulano senza un corrispondente adeguamento di budget e tempistiche.&lt;/p&gt;
&lt;h2 id="come-funziona" class="relative group"&gt;Come funziona &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#come-funziona" aria-label="Ancora"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;In un progetto software, lo scope creep inizia tipicamente con richieste apparentemente piccole: &amp;ldquo;aggiungiamo anche questo campo&amp;rdquo;, &amp;ldquo;sarebbe utile anche questa funzione&amp;rdquo;. Ogni singola modifica sembra ragionevole, ma l&amp;rsquo;effetto cumulativo è devastante. Le specifiche diventano un bersaglio mobile, il team non riesce mai a raggiungere una baseline stabile, e il progetto entra in un ciclo infinito di revisioni.&lt;/p&gt;</description></item><item><title>Scrum</title><link>https://ivanluminaria.com/it/glossary/scrum/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/it/glossary/scrum/</guid><description>&lt;p&gt;&lt;strong&gt;Scrum&lt;/strong&gt; è un framework agile per la gestione di progetti che organizza il lavoro in iterazioni a durata fissa chiamate sprint (tipicamente 2 settimane). Definisce tre ruoli (Product Owner, Scrum Master, Development Team) e quattro cerimonie (Sprint Planning, Daily Standup, Sprint Review, Sprint Retrospective).&lt;/p&gt;
&lt;h2 id="come-funziona" class="relative group"&gt;Come funziona &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#come-funziona" aria-label="Ancora"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;Ogni sprint inizia con una pianificazione, prosegue con standup quotidiani per la sincronizzazione, e termina con una review (cosa è stato fatto) e una retrospettiva (come migliorare il processo). Il timebox è il principio fondamentale: ogni cerimonia ha una durata massima non negoziabile.&lt;/p&gt;</description></item><item><title>secure-file-priv</title><link>https://ivanluminaria.com/it/glossary/secure-file-priv/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/it/glossary/secure-file-priv/</guid><description>&lt;p&gt;&lt;strong&gt;secure-file-priv&lt;/strong&gt; è una variabile di sistema MySQL che controlla dove le istruzioni &lt;code&gt;LOAD DATA INFILE&lt;/code&gt;, &lt;code&gt;SELECT INTO OUTFILE&lt;/code&gt; e la funzione &lt;code&gt;LOAD_FILE()&lt;/code&gt; possono operare sul filesystem del server.&lt;/p&gt;
&lt;h2 id="come-funziona" class="relative group"&gt;Come funziona &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#come-funziona" aria-label="Ancora"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;La variabile accetta tre valori: un percorso specifico (es. &lt;code&gt;/var/lib/mysql-files/&lt;/code&gt;), che limita le operazioni su file a quella directory; una stringa vuota (&lt;code&gt;&amp;quot;&amp;quot;&lt;/code&gt;), che non impone alcuna restrizione; oppure &lt;code&gt;NULL&lt;/code&gt;, che disabilita completamente le operazioni su file. Il valore è impostabile solo nel file di configurazione (&lt;code&gt;my.cnf&lt;/code&gt;) e richiede un riavvio del servizio per essere modificato — non è cambiabile a runtime.&lt;/p&gt;</description></item><item><title>Self-parenting</title><link>https://ivanluminaria.com/it/glossary/self-parenting/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/it/glossary/self-parenting/</guid><description>&lt;p&gt;Il &lt;strong&gt;self-parenting&lt;/strong&gt; è una tecnica di dimensional modeling usata per bilanciare le gerarchie sbilanciate (ragged hierarchies). Il principio è semplice: un&amp;rsquo;entità che non ha un livello gerarchico superiore diventa il proprio genitore a quel livello.&lt;/p&gt;
&lt;h2 id="come-funziona" class="relative group"&gt;Come funziona &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#come-funziona" aria-label="Ancora"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;In una gerarchia a tre livelli Top Group → Group → Client:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Un Client senza Group usa il proprio nome/ID come Group&lt;/li&gt;
&lt;li&gt;Un Group senza Top Group usa il proprio nome/ID come Top Group&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Il risultato è una tabella dimensionale senza NULL nelle colonne gerarchiche, con tutti i livelli sempre popolati.&lt;/p&gt;</description></item><item><title>Sequential Scan</title><link>https://ivanluminaria.com/it/glossary/sequential-scan/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/it/glossary/sequential-scan/</guid><description>&lt;p&gt;Il &lt;strong&gt;Sequential Scan&lt;/strong&gt; (Seq Scan) è l&amp;rsquo;operazione con cui PostgreSQL legge una tabella dall&amp;rsquo;inizio alla fine, blocco per blocco, senza utilizzare alcun indice. È l&amp;rsquo;equivalente PostgreSQL del Full Table Scan di Oracle.&lt;/p&gt;
&lt;h2 id="quando-è-normale" class="relative group"&gt;Quando è normale &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#quando-%c3%a8-normale" aria-label="Ancora"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;Su tabelle piccole (poche migliaia di righe), il sequential scan è spesso la scelta più efficiente. Leggere una tabella intera in sequenza è più veloce che fare lookup su un indice quando la tabella sta in poche pagine. L&amp;rsquo;optimizer sceglie il sequential scan quando stima che sia più economico di un index scan.&lt;/p&gt;</description></item><item><title>SGA</title><link>https://ivanluminaria.com/it/glossary/sga/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/it/glossary/sga/</guid><description>&lt;p&gt;La &lt;strong&gt;SGA&lt;/strong&gt; (System Global Area) è l&amp;rsquo;area di memoria condivisa principale di Oracle Database. Contiene le strutture dati fondamentali: buffer cache (pagine dati lette da disco), shared pool (piani di esecuzione e dizionario dati), redo log buffer e large pool.&lt;/p&gt;
&lt;h2 id="come-funziona" class="relative group"&gt;Come funziona &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#come-funziona" aria-label="Ancora"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;La dimensione della SGA è controllata dal parametro &lt;code&gt;SGA_TARGET&lt;/code&gt; o &lt;code&gt;SGA_MAX_SIZE&lt;/code&gt;. Oracle alloca la SGA all&amp;rsquo;avvio dell&amp;rsquo;istanza in memoria condivisa del sistema operativo. I parametri kernel Linux &lt;code&gt;shmmax&lt;/code&gt; e &lt;code&gt;shmall&lt;/code&gt; devono essere dimensionati per permettere l&amp;rsquo;allocazione completa della SGA.&lt;/p&gt;</description></item><item><title>shared_buffers</title><link>https://ivanluminaria.com/it/glossary/shared-buffers/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/it/glossary/shared-buffers/</guid><description>&lt;p&gt;&lt;strong&gt;shared_buffers&lt;/strong&gt; è il parametro che controlla la dimensione dell&amp;rsquo;area di memoria condivisa usata da PostgreSQL come cache per i blocchi dati letti dal disco. Ogni volta che PostgreSQL legge una pagina dati (8 KB), la conserva in shared_buffers per le letture successive.&lt;/p&gt;
&lt;h2 id="come-funziona" class="relative group"&gt;Come funziona &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#come-funziona" aria-label="Ancora"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;PostgreSQL alloca la memoria per shared_buffers all&amp;rsquo;avvio del servizio. Tutti i processi backend condividono questa area di memoria. Quando un processo ha bisogno di un blocco dati, cerca prima in shared_buffers. Se lo trova (cache hit), la lettura è immediata. Se non lo trova (cache miss), deve leggere dal disco — un&amp;rsquo;operazione ordini di grandezza più lenta.&lt;/p&gt;</description></item><item><title>Single-primary</title><link>https://ivanluminaria.com/it/glossary/single-primary/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/it/glossary/single-primary/</guid><description>&lt;p&gt;&lt;strong&gt;Single-primary&lt;/strong&gt; è la modalità operativa più comune di MySQL Group Replication, in cui un solo nodo del cluster — il primary — accetta operazioni di scrittura. Gli altri nodi (secondary) sono in sola lettura (&lt;code&gt;read_only=ON&lt;/code&gt;, &lt;code&gt;super_read_only=ON&lt;/code&gt;) e ricevono le modifiche tramite la replica sincrona del gruppo.&lt;/p&gt;
&lt;h2 id="come-funziona" class="relative group"&gt;Come funziona &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#come-funziona" aria-label="Ancora"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;Il parametro &lt;code&gt;group_replication_single_primary_mode=ON&lt;/code&gt; attiva questa modalità. Il primary è l&amp;rsquo;unico nodo con &lt;code&gt;read_only=OFF&lt;/code&gt;. Se il primary viene fermato o diventa irraggiungibile, il cluster esegue un&amp;rsquo;elezione automatica e uno dei secondary diventa il nuovo primary in pochi secondi.&lt;/p&gt;</description></item><item><title>Smart Working</title><link>https://ivanluminaria.com/it/glossary/smart-working/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/it/glossary/smart-working/</guid><description>&lt;p&gt;Lo &lt;strong&gt;Smart Working&lt;/strong&gt; (lavoro agile) è un modello organizzativo che permette al dipendente di lavorare da qualsiasi luogo, combinando giornate in ufficio e giornate da remoto, con orari flessibili e valutazione basata sui risultati invece che sulla presenza.&lt;/p&gt;
&lt;h2 id="come-funziona" class="relative group"&gt;Come funziona &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#come-funziona" aria-label="Ancora"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;Il modello tipico è 80/20: 80% remoto, 20% in presenza. I giorni in ufficio servono per workshop, review di progetto e team building — non per scaldare la sedia. L&amp;rsquo;azienda fornisce attrezzatura per la postazione domestica (monitor, sedia ergonomica, cuffie) e un contributo per la connettività.&lt;/p&gt;</description></item><item><title>Snapshot (Oracle)</title><link>https://ivanluminaria.com/it/glossary/snapshot-oracle/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/it/glossary/snapshot-oracle/</guid><description>&lt;p&gt;&lt;strong&gt;Snapshot&lt;/strong&gt; in Oracle è un&amp;rsquo;istantanea delle statistiche di performance del database catturata in un preciso momento e conservata nel repository AWR. Di default Oracle genera uno snapshot ogni 60 minuti e li conserva per 8 giorni.&lt;/p&gt;
&lt;h2 id="come-funziona" class="relative group"&gt;Come funziona &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#come-funziona" aria-label="Ancora"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;Ogni snapshot registra centinaia di metriche: wait event, statistiche SQL, metriche di memoria (SGA, PGA), I/O per datafile, statistiche di sistema. Il confronto tra due snapshot genera il report AWR, che mostra cosa è cambiato tra i due istanti.&lt;/p&gt;</description></item><item><title>Split-brain</title><link>https://ivanluminaria.com/it/glossary/split-brain/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/it/glossary/split-brain/</guid><description>&lt;p&gt;Lo &lt;strong&gt;split-brain&lt;/strong&gt; è una condizione critica che si verifica quando un cluster database si divide in due o più partizioni che non possono comunicare tra loro, e ciascuna partizione continua ad accettare scritture indipendentemente. Il risultato sono dati divergenti impossibili da riconciliare automaticamente.&lt;/p&gt;
&lt;h2 id="come-funziona" class="relative group"&gt;Come funziona &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#come-funziona" aria-label="Ancora"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;In un cluster a 3 nodi, se la rete tra il Nodo 1 e i Nodi 2-3 si interrompe, senza protezione dal quorum entrambe le parti potrebbero continuare ad accettare scritture. Quando la rete si ripristina, il cluster si troverebbe con due versioni diverse degli stessi dati. Il meccanismo di quorum previene questo scenario: solo la partizione con la maggioranza dei nodi (quorum) può continuare ad operare.&lt;/p&gt;</description></item><item><title>SQL Injection</title><link>https://ivanluminaria.com/it/glossary/sql-injection/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/it/glossary/sql-injection/</guid><description>&lt;p&gt;La &lt;strong&gt;SQL Injection&lt;/strong&gt; è una delle vulnerabilità più diffuse e pericolose nelle applicazioni web. Si verifica quando input forniti dall&amp;rsquo;utente vengono inseriti direttamente nelle query SQL senza validazione o parametrizzazione, permettendo a un attaccante di modificare la logica della query.&lt;/p&gt;
&lt;h2 id="come-funziona" class="relative group"&gt;Come funziona &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#come-funziona" aria-label="Ancora"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;L&amp;rsquo;attaccante inserisce frammenti di codice SQL nei campi di input dell&amp;rsquo;applicazione (form di login, campi di ricerca, parametri URL). Se l&amp;rsquo;applicazione concatena questi input direttamente nelle query SQL, il codice malevolo viene eseguito dal database con i privilegi dell&amp;rsquo;utente applicativo. In combinazione con il privilegio &lt;code&gt;FILE&lt;/code&gt; di MySQL e un &lt;code&gt;secure-file-priv&lt;/code&gt; non configurato, l&amp;rsquo;attaccante può leggere file di sistema o scrivere file arbitrari sul server.&lt;/p&gt;</description></item><item><title>SST</title><link>https://ivanluminaria.com/it/glossary/sst/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/it/glossary/sst/</guid><description>&lt;p&gt;&lt;strong&gt;SST&lt;/strong&gt; (State Snapshot Transfer) è il meccanismo con cui un nodo Galera che si unisce al cluster (o che è rimasto offline troppo a lungo) riceve una copia completa dell&amp;rsquo;intero dataset da un nodo donatore.&lt;/p&gt;
&lt;h2 id="come-funziona" class="relative group"&gt;Come funziona &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#come-funziona" aria-label="Ancora"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;Quando un nodo si unisce al cluster e il gap di transazioni mancanti supera la dimensione del gcache, il cluster avvia un SST. Il nodo donatore crea un&amp;rsquo;istantanea completa del database e la trasferisce al nodo ricevente. I metodi disponibili sono: &lt;code&gt;mariabackup&lt;/code&gt; (non blocca il donatore), &lt;code&gt;rsync&lt;/code&gt; (veloce ma blocca il donatore in lettura), e &lt;code&gt;mysqldump&lt;/code&gt; (lento e bloccante).&lt;/p&gt;</description></item><item><title>Stakeholder</title><link>https://ivanluminaria.com/it/glossary/stakeholder/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/it/glossary/stakeholder/</guid><description>&lt;p&gt;Uno &lt;strong&gt;Stakeholder&lt;/strong&gt; è qualsiasi persona, gruppo o organizzazione che ha un interesse diretto o indiretto nel risultato di un progetto. Include committenti, sponsor, utenti finali, team di sviluppo, management e fornitori esterni.&lt;/p&gt;
&lt;h2 id="come-funziona" class="relative group"&gt;Come funziona &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#come-funziona" aria-label="Ancora"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;Nel project management, gli stakeholder vengono identificati, classificati per livello di influenza e interesse, e gestiti con strategie di comunicazione differenziate. Uno stakeholder ad alta influenza e alto interesse (come il CTO) richiede coinvolgimento attivo; uno a bassa influenza richiede solo aggiornamenti periodici.&lt;/p&gt;</description></item><item><title>Star schema</title><link>https://ivanluminaria.com/it/glossary/star-schema/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/it/glossary/star-schema/</guid><description>&lt;p&gt;Lo &lt;strong&gt;star schema&lt;/strong&gt; (schema a stella) è il modello di dati più usato nel data warehouse. Prende il nome dalla sua forma: una tabella centrale dei fatti (fact table) collegata a più tabelle dimensionali che le stanno intorno, come i raggi di una stella.&lt;/p&gt;
&lt;h2 id="struttura" class="relative group"&gt;Struttura &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#struttura" aria-label="Ancora"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Fact table&lt;/strong&gt; al centro: contiene le misure numeriche e le foreign key verso le dimensioni&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Dimension tables&lt;/strong&gt; intorno: contengono gli attributi descrittivi (chi, cosa, dove, quando) con struttura denormalizzata&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Le dimensioni nello star schema sono tipicamente denormalizzate — tutti gli attributi in una sola tabella piatta, senza gerarchie normalizzate. Questo semplifica le query e migliora le performance delle aggregazioni.&lt;/p&gt;</description></item><item><title>Swappiness</title><link>https://ivanluminaria.com/it/glossary/swappiness/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/it/glossary/swappiness/</guid><description>&lt;p&gt;La &lt;strong&gt;Swappiness&lt;/strong&gt; (&lt;code&gt;vm.swappiness&lt;/code&gt;) è un parametro del kernel Linux che controlla quanto aggressivamente il sistema sposta pagine di memoria dalla RAM allo swap su disco. Il valore va da 0 (swap solo in caso estremo) a 100 (swap aggressivo). Il default è 60.&lt;/p&gt;
&lt;h2 id="come-funziona" class="relative group"&gt;Come funziona &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#come-funziona" aria-label="Ancora"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;Con il valore di default 60, Linux inizia a swappare quando la pressione sulla memoria è ancora relativamente bassa. Per un server database dedicato, questo è inaccettabile: l&amp;rsquo;SGA deve restare in RAM, sempre. Il valore raccomandato per Oracle è 1 — non 0, che disabiliterebbe completamente lo swap e potrebbe causare OOM killer.&lt;/p&gt;</description></item><item><title>Switchover</title><link>https://ivanluminaria.com/it/glossary/switchover/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/it/glossary/switchover/</guid><description>&lt;p&gt;Lo &lt;strong&gt;switchover&lt;/strong&gt; è un&amp;rsquo;operazione pianificata di Oracle Data Guard che inverte i ruoli tra il database primary e lo standby. Il primary diventa standby, lo standby diventa primary. Nessun dato viene perso, nessuna transazione va in errore — è un passaggio pulito e controllato.&lt;/p&gt;
&lt;h2 id="switchover-vs-failover" class="relative group"&gt;Switchover vs Failover &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#switchover-vs-failover" aria-label="Ancora"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;La distinzione è fondamentale:&lt;/p&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;&lt;/th&gt;
 &lt;th&gt;Switchover&lt;/th&gt;
 &lt;th&gt;Failover&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;Quando&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;Pianificato (manutenzione, migrazione)&lt;/td&gt;
 &lt;td&gt;Emergenza (guasto del primary)&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;Perdita dati&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;Zero&lt;/td&gt;
 &lt;td&gt;Possibile (dipende dalla modalità)&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;Reversibilità&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;Sì, con un altro switchover&lt;/td&gt;
 &lt;td&gt;No, lo standby diventa primary in modo permanente&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;Tempo&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;Minuti (tipicamente 1-3)&lt;/td&gt;
 &lt;td&gt;Secondi-minuti&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id="come-si-esegue" class="relative group"&gt;Come si esegue &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#come-si-esegue" aria-label="Ancora"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;Con Data Guard Broker, lo switchover è un singolo comando:&lt;/p&gt;</description></item><item><title>System Privilege</title><link>https://ivanluminaria.com/it/glossary/system-privilege/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/it/glossary/system-privilege/</guid><description>&lt;p&gt;Un &lt;strong&gt;System Privilege&lt;/strong&gt; in Oracle è un&amp;rsquo;autorizzazione che permette di eseguire operazioni globali sul database, indipendentemente da uno specifico oggetto. Esempi tipici includono &lt;code&gt;CREATE TABLE&lt;/code&gt;, &lt;code&gt;CREATE SESSION&lt;/code&gt;, &lt;code&gt;ALTER SYSTEM&lt;/code&gt;, &lt;code&gt;CREATE USER&lt;/code&gt; e &lt;code&gt;DROP ANY TABLE&lt;/code&gt;.&lt;/p&gt;
&lt;h2 id="come-funziona" class="relative group"&gt;Come funziona &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#come-funziona" aria-label="Ancora"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;I system privileges si assegnano con &lt;code&gt;GRANT&lt;/code&gt; e si revocano con &lt;code&gt;REVOKE&lt;/code&gt;. Possono essere assegnati direttamente a un utente o a un ruolo. Il ruolo predefinito &lt;code&gt;DBA&lt;/code&gt; include oltre 200 system privileges, motivo per cui assegnarlo a utenti applicativi è una pratica pericolosa.&lt;/p&gt;</description></item><item><title>systemd</title><link>https://ivanluminaria.com/it/glossary/systemd/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/it/glossary/systemd/</guid><description>&lt;p&gt;&lt;strong&gt;systemd&lt;/strong&gt; è il sistema di init e il gestore dei servizi predefinito nelle distribuzioni Linux moderne (CentOS/RHEL 7+, Ubuntu 16.04+, Debian 8+). In ambito database, è il meccanismo che avvia, ferma e monitora le istanze MySQL o MariaDB.&lt;/p&gt;
&lt;h2 id="come-funziona" class="relative group"&gt;Come funziona &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#come-funziona" aria-label="Ancora"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;Ogni servizio è definito da un file unit (es. &lt;code&gt;mysqld.service&lt;/code&gt;) che specifica il comando di avvio, il file di configurazione, le dipendenze e il comportamento in caso di crash. In un setup multi-istanza, si creano unit file separati per ogni istanza (es. &lt;code&gt;mysqld-app2.service&lt;/code&gt;, &lt;code&gt;mysqld-reporting.service&lt;/code&gt;), ciascuno con il proprio &lt;code&gt;--defaults-file&lt;/code&gt; che punta a un &lt;code&gt;my.cnf&lt;/code&gt; diverso.&lt;/p&gt;</description></item><item><title>Tablespace</title><link>https://ivanluminaria.com/it/glossary/tablespace/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/it/glossary/tablespace/</guid><description>&lt;p&gt;Un &lt;strong&gt;Tablespace&lt;/strong&gt; è l&amp;rsquo;unità logica di organizzazione dello storage in Oracle Database. Ogni tablespace è composto da uno o più datafile fisici sul disco, e ogni oggetto del database (tabella, indice, partizione) risiede in un tablespace.&lt;/p&gt;
&lt;h2 id="come-funziona" class="relative group"&gt;Come funziona &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#come-funziona" aria-label="Ancora"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;Oracle separa la gestione logica (tablespace) da quella fisica (datafile). Un DBA può creare tablespace dedicati per scopi diversi: uno per i dati attivi, uno per gli indici, uno per l&amp;rsquo;archivio. Questo permette di distribuire il carico I/O su dischi diversi e di applicare politiche di gestione differenziate (es. read-only per i dati storici).&lt;/p&gt;</description></item><item><title>THP</title><link>https://ivanluminaria.com/it/glossary/thp/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/it/glossary/thp/</guid><description>&lt;p&gt;Le &lt;strong&gt;THP&lt;/strong&gt; (Transparent Huge Pages) sono una funzione del kernel Linux che promuove automaticamente le pagine di memoria da 4 KB a 2 MB in background, senza configurazione esplicita. A differenza delle Huge Pages statiche, sono gestite dal processo kernel &lt;code&gt;khugepaged&lt;/code&gt;.&lt;/p&gt;
&lt;h2 id="come-funziona" class="relative group"&gt;Come funziona &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#come-funziona" aria-label="Ancora"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;Quando attive (default &lt;code&gt;always&lt;/code&gt;), il kernel tenta di compattare le pagine normali in pagine grandi in background. Il processo &lt;code&gt;khugepaged&lt;/code&gt; lavora continuamente per trovare e unire gruppi di pagine contigue, causando micro-freeze imprevedibili durante le operazioni di compattazione.&lt;/p&gt;</description></item><item><title>Timeboxing</title><link>https://ivanluminaria.com/it/glossary/timeboxing/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/it/glossary/timeboxing/</guid><description>&lt;p&gt;Il &lt;strong&gt;Timeboxing&lt;/strong&gt; è una tecnica di gestione del tempo che consiste nell&amp;rsquo;assegnare un intervallo temporale fisso e non negoziabile a un&amp;rsquo;attività. Quando il tempo scade, l&amp;rsquo;attività si chiude — indipendentemente dal fatto che sia stata completata o meno.&lt;/p&gt;
&lt;h2 id="come-funziona" class="relative group"&gt;Come funziona &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#come-funziona" aria-label="Ancora"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;Si definisce la durata massima (15 minuti per uno standup, 1 ora per una riunione di design, 2 settimane per uno sprint) e si rispetta il vincolo. Il timebox forza le persone a concentrarsi sull&amp;rsquo;essenziale, evitando discussioni infinite e perfezionismo paralizzante.&lt;/p&gt;</description></item><item><title>Transport Lag</title><link>https://ivanluminaria.com/it/glossary/transport-lag/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/it/glossary/transport-lag/</guid><description>&lt;p&gt;Il &lt;strong&gt;transport lag&lt;/strong&gt; è il ritardo tra il momento in cui il database primary genera un redo log e il momento in cui quel redo log viene ricevuto dal database standby in una configurazione Oracle Data Guard. È uno degli indicatori più importanti per valutare la salute della replica.&lt;/p&gt;
&lt;h2 id="come-si-misura" class="relative group"&gt;Come si misura &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#come-si-misura" aria-label="Ancora"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;Il transport lag si monitora con una query sulla vista &lt;code&gt;V$DATAGUARD_STATS&lt;/code&gt; o tramite Data Guard Broker:&lt;/p&gt;</description></item><item><title>Unified Audit</title><link>https://ivanluminaria.com/it/glossary/unified-audit/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/it/glossary/unified-audit/</guid><description>&lt;p&gt;&lt;strong&gt;Unified Audit&lt;/strong&gt; (Oracle Unified Auditing) è il sistema di audit centralizzato introdotto in Oracle Database 12c che sostituisce i meccanismi di audit tradizionali con un&amp;rsquo;unica infrastruttura unificata. Tutti gli eventi di audit convergono nella vista &lt;code&gt;UNIFIED_AUDIT_TRAIL&lt;/code&gt;.&lt;/p&gt;
&lt;h2 id="come-funziona" class="relative group"&gt;Come funziona &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#come-funziona" aria-label="Ancora"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;Unified Audit si basa su &lt;strong&gt;audit policy&lt;/strong&gt;: regole dichiarative che specificano quali azioni monitorare (DDL, DML, login, operazioni amministrative). Le policy si creano con &lt;code&gt;CREATE AUDIT POLICY&lt;/code&gt;, si attivano con &lt;code&gt;ALTER AUDIT POLICY ... ENABLE&lt;/code&gt; e possono essere applicate a utenti specifici o globalmente. I record di audit vengono scritti in una coda interna e poi persistiti nella tabella di sistema.&lt;/p&gt;</description></item><item><title>Unix Socket</title><link>https://ivanluminaria.com/it/glossary/unix-socket/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/it/glossary/unix-socket/</guid><description>&lt;p&gt;Un &lt;strong&gt;Unix Socket&lt;/strong&gt; (o socket di dominio Unix) è un endpoint di comunicazione che permette a due processi sullo stesso sistema operativo di scambiarsi dati senza passare attraverso lo stack di rete TCP/IP. In ambito MySQL, è il metodo di connessione predefinito quando ci si collega a &lt;code&gt;localhost&lt;/code&gt;.&lt;/p&gt;
&lt;h2 id="come-funziona" class="relative group"&gt;Come funziona &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#come-funziona" aria-label="Ancora"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;Quando un client MySQL si connette specificando &lt;code&gt;-h localhost&lt;/code&gt;, il client non usa TCP. Usa il file socket Unix (tipicamente &lt;code&gt;/var/run/mysqld/mysqld.sock&lt;/code&gt;) per comunicare direttamente con il processo del server MySQL. Questa comunicazione avviene interamente nel kernel, senza overhead di rete, ed è più veloce di una connessione TCP anche sullo stesso host.&lt;/p&gt;</description></item><item><title>VACUUM</title><link>https://ivanluminaria.com/it/glossary/vacuum/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/it/glossary/vacuum/</guid><description>&lt;p&gt;&lt;strong&gt;VACUUM&lt;/strong&gt; è il comando PostgreSQL che recupera lo spazio occupato dai dead tuples (righe morte) e lo rende disponibile per nuovi inserimenti. Non restituisce spazio al sistema operativo, non riorganizza la tabella e non compatta nulla — segna le pagine come riscrivibili.&lt;/p&gt;
&lt;h2 id="come-funziona" class="relative group"&gt;Come funziona &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#come-funziona" aria-label="Ancora"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;&lt;code&gt;VACUUM tabella&lt;/code&gt; scansiona la tabella, identifica i dead tuples non più visibili a nessuna transazione e ne marca lo spazio come riutilizzabile. È un&amp;rsquo;operazione leggera che non blocca le scritture e può girare in parallelo con le query normali. &lt;code&gt;VACUUM FULL&lt;/code&gt; invece riscrive fisicamente l&amp;rsquo;intera tabella con lock esclusivo — da usare rarissimamente e solo in emergenza.&lt;/p&gt;</description></item><item><title>Vendor Lock-in</title><link>https://ivanluminaria.com/it/glossary/vendor-lock-in/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/it/glossary/vendor-lock-in/</guid><description>&lt;p&gt;Il &lt;strong&gt;Vendor Lock-in&lt;/strong&gt; è la situazione in cui un&amp;rsquo;azienda diventa dipendente da un fornitore esterno al punto che cambiarlo diventa estremamente costoso o tecnicamente complesso. Nel contesto IT, si verifica quando il codice, l&amp;rsquo;architettura o la conoscenza del sistema sono nelle mani del fornitore e non del cliente.&lt;/p&gt;
&lt;h2 id="come-funziona" class="relative group"&gt;Come funziona &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#come-funziona" aria-label="Ancora"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;Il lock-in si instaura gradualmente: il fornitore scrive il codice con le proprie convenzioni, usa tecnologie proprietarie o non documentate, e il team interno non viene coinvolto nello sviluppo. Quando il fornitore se ne va — per scelta o per licenziamento — porta via con sé il know-how. Il cliente resta con un software che non capisce, non sa manutenere e non può evolvere senza ri-ingaggiare lo stesso fornitore o ricominciare da zero.&lt;/p&gt;</description></item><item><title>Version Control</title><link>https://ivanluminaria.com/it/glossary/version-control/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/it/glossary/version-control/</guid><description>&lt;p&gt;Il &lt;strong&gt;Version Control&lt;/strong&gt; (controllo versione) è un sistema che registra ogni modifica ai file di un progetto, mantenendo una cronologia completa di chi ha cambiato cosa, quando e perché. Git è il sistema di version control più usato al mondo.&lt;/p&gt;
&lt;h2 id="come-funziona" class="relative group"&gt;Come funziona &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#come-funziona" aria-label="Ancora"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;Ogni modifica viene registrata come &amp;ldquo;commit&amp;rdquo; con un messaggio descrittivo, un autore e un timestamp. Il sistema mantiene l&amp;rsquo;intera storia del progetto: è possibile tornare a qualsiasi versione precedente, confrontare versioni diverse e capire l&amp;rsquo;evoluzione del codice nel tempo. Con Git, ogni sviluppatore ha una copia completa della storia sul proprio computer.&lt;/p&gt;</description></item><item><title>Wait Event</title><link>https://ivanluminaria.com/it/glossary/wait-event/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/it/glossary/wait-event/</guid><description>&lt;p&gt;&lt;strong&gt;Wait Event&lt;/strong&gt; è un indicatore diagnostico di Oracle Database che identifica il motivo per cui una sessione è in attesa anziché lavorare attivamente. Ogni volta che un processo non può procedere — perché attende un blocco dal disco, un lock, una risposta dalla rete o un turno di CPU — Oracle registra un wait event specifico.&lt;/p&gt;
&lt;h2 id="i-più-comuni" class="relative group"&gt;I più comuni &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#i-pi%c3%b9-comuni" aria-label="Ancora"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Wait Event&lt;/th&gt;
 &lt;th&gt;Significato&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;db file sequential read&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Lettura singolo blocco — tipica di accessi via indice&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;db file scattered read&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Lettura multi-blocco — tipica di full table scan&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;log file sync&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Attesa del commit su redo log&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;enq: TX - row lock contention&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Conflitto su lock di riga&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;direct path read&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Lettura diretta (bypass buffer cache)&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id="a-cosa-servono" class="relative group"&gt;A cosa servono &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#a-cosa-servono" aria-label="Ancora"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;I wait event sono la base della metodologia diagnostica Oracle. Analizzando quali eventi dominano il DB time (tramite AWR o ASH) si identifica immediatamente la natura del problema: I/O, contention, CPU o rete.&lt;/p&gt;</description></item><item><title>WSREP</title><link>https://ivanluminaria.com/it/glossary/wsrep/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/it/glossary/wsrep/</guid><description>&lt;p&gt;&lt;strong&gt;WSREP&lt;/strong&gt; (Write Set Replication) è l&amp;rsquo;API e il protocollo che Galera Cluster utilizza per la replica sincrona multi-master. Ogni transazione viene catturata come &amp;ldquo;write set&amp;rdquo; (insieme di modifiche a livello di riga) e replicata su tutti i nodi del cluster prima del commit.&lt;/p&gt;
&lt;h2 id="come-funziona" class="relative group"&gt;Come funziona &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#come-funziona" aria-label="Ancora"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;Quando un nodo esegue una transazione, WSREP la intercetta al momento del commit, la impacchetta come write set e la invia a tutti i nodi del cluster tramite il protocollo di comunicazione di gruppo. Ogni nodo esegue un processo di &lt;strong&gt;certification&lt;/strong&gt;: verifica che la transazione non sia in conflitto con altre transazioni concorrenti. Se la certification ha successo, tutti i nodi applicano la transazione. Se fallisce, la transazione viene annullata sul nodo che l&amp;rsquo;ha originata.&lt;/p&gt;</description></item><item><title>Yes-And</title><link>https://ivanluminaria.com/it/glossary/yes-and/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/it/glossary/yes-and/</guid><description>&lt;p&gt;&lt;strong&gt;Yes-And&lt;/strong&gt; (Sì-E) è una tecnica di comunicazione originaria del teatro di improvvisazione, applicata al project management per trasformare le discussioni conflittuali in conversazioni costruttive. Il principio è semplice: invece di negare la proposta dell&amp;rsquo;interlocutore con &amp;ldquo;No, però&amp;hellip;&amp;rdquo;, si accoglie con &amp;ldquo;Sì, e&amp;hellip;&amp;rdquo; aggiungendo il proprio contributo.&lt;/p&gt;
&lt;h2 id="come-funziona" class="relative group"&gt;Come funziona &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#come-funziona" aria-label="Ancora"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;Quando qualcuno propone un&amp;rsquo;idea, la risposta &amp;ldquo;No&amp;rdquo; attiva una reazione difensiva e blocca la conversazione. La risposta &amp;ldquo;Sì, e&amp;hellip;&amp;rdquo; riconosce la validità della proposta e la estende, mantenendo il dialogo aperto. Non significa essere d&amp;rsquo;accordo su tutto — significa costruire sulla proposta dell&amp;rsquo;altro prima di ridirezionarla.&lt;/p&gt;</description></item><item><title>ZDM</title><link>https://ivanluminaria.com/it/glossary/zdm/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/it/glossary/zdm/</guid><description>&lt;p&gt;&lt;strong&gt;ZDM&lt;/strong&gt; (Zero Downtime Migration) è lo strumento che Oracle fornisce per automatizzare le migrazioni di database Oracle verso OCI (Oracle Cloud Infrastructure) o verso database on-premises di versione superiore. Il nome è un po&amp;rsquo; ottimistico — il downtime non è zero, ma è ridotto al minimo.&lt;/p&gt;
&lt;h2 id="come-funziona" class="relative group"&gt;Come funziona &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#come-funziona" aria-label="Ancora"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;ZDM è essenzialmente un orchestratore che combina tecnologie Oracle esistenti sotto un unico flusso automatizzato. Supporta due modalità:&lt;/p&gt;</description></item></channel></rss>