Generare identificatori univoci è un'esigenza comune nelle applicazioni che usano un database. In PostgreSQL, il tipo di dato UUID (universally unique identifier) offre un modo semplice per farlo. In questo articolo vedremo come generare UUID in PostgreSQL, perché e quando usarli, con esempi di codice e relativo output.
Cos'è un UUID?
UUID sta per Universally Unique Identifier, un numero a 128 bit usato per identificare in modo univoco le informazioni nei sistemi informatici. Il vantaggio principale degli UUID è che forniscono una chiave univoca tra piattaforme e database diversi senza bisogno di coordinamento.
Perché usare gli UUID?
- Univocità tra sistemi: a differenza dei classici ID seriali, gli UUID possono essere generati in modo indipendente su sistemi diversi.
- Difficili da indovinare: gli UUID non sono sequenziali, quindi sono meno prevedibili.
- Univoci a livello globale: garantiscono l'univocità globale, evitando collisioni di ID quando unisci dataset diversi.
Generare UUID in PostgreSQL
PostgreSQL semplifica la generazione degli UUID grazie al supporto integrato, ma richiede l'attivazione di alcune estensioni aggiuntive.
Passo 1: attiva l'estensione uuid-ossp
L'estensione uuid-ossp fornisce le funzioni per generare UUID. Devi attivarla nel tuo database.
CREATE EXTENSION IF NOT EXISTS "uuid-ossp";
Passo 2: usare uuid_generate_v4()
La funzione più usata per generare UUID casuali è uuid_generate_v4(). Ecco come usarla:
SELECT uuid_generate_v4() as generated_uuid;
Output previsto:
generated_uuid
--------------------------------------
550e8400-e29b-41d4-a716-446655440000
Ogni esecuzione della funzione restituisce un UUID nuovo e univoco.
Passo 3: usare gli UUID nelle tabelle
Puoi usare gli UUID come chiavi primarie o identificatori univoci nelle tue tabelle. È buona pratica impostare il tipo della colonna su UUID e definire un valore predefinito con la funzione uuid_generate_v4().
CREATE TABLE users (
id UUID PRIMARY KEY DEFAULT uuid_generate_v4(),
username VARCHAR(100) NOT NULL,
email VARCHAR(100) NOT NULL
);
Inserimento dei dati:
Puoi lasciare che sia PostgreSQL a generare automaticamente gli UUID quando inserisci nuovi record.
INSERT INTO users (username, email) VALUES ('johndoe', 'john@example.com');
SELECT id, username, email FROM users;
Output previsto:
id | username | email
-----------------------------------+----------+-------------------
8df00d7f-6d5d-45e8-bd9c-8c5f29e6e0a7 | johndoe | john@example.com
Metodi alternativi per generare UUID
uuid_generate_v1()
Genera un UUID basato sul timestamp corrente e sull'indirizzo MAC. È deterministico e meno sicuro, ma può essere utile in alcuni scenari.
SELECT uuid_generate_v1() as generated_uuid;
Output previsto:
generated_uuid
--------------------------------------
6a7fede0-e1e3-11ed-b5ea-0242ac120002
uuid_generate_v1mc()
Simile a uuid_generate_v1(), ma permette di specificare un indirizzo MAC.
uuid_generate_v3(namespace UUID, name TEXT)
Genera un UUID versione 3 basato su un namespace e un nome, usando l'hashing MD5.
uuid_generate_v5(namespace UUID, name TEXT)
Simile a uuid_generate_v3(), ma usa l'hashing SHA-1 e crea un UUID versione 5.
Conclusione
Le funzionalità UUID di PostgreSQL offrono un modo robusto e flessibile per generare identificatori univoci per le tue applicazioni. Con gli UUID puoi avere ID univoci, non prevedibili e coerenti tra sistemi diversi. Che tu stia creando una nuova applicazione o migrandone una esistente, gli UUID sono un approccio moderno alla generazione degli ID.
Con l'estensione uuid-ossp e le sue numerose funzioni, PostgreSQL ti permette di scegliere facilmente il tipo di UUID più adatto alle tue esigenze. Inizia oggi a usare gli UUID nel tuo database e sfrutta la loro univocità globale.
Beekeeper Studio è una GUI per database gratuita & open source
Il miglior strumento per query & editor SQL che abbia mai usato. Offre tutto ciò che mi serve per gestire il mio database. - ⭐⭐⭐⭐⭐ Mit
Beekeeper Studio è veloce, intuitivo e facile da usare. Beekeeper supporta tantissimi database e funziona alla grande su Windows, Mac e Linux.
Cosa dicono gli utenti di Beekeeper Studio
"Beekeeper Studio ha sostituito completamente il mio vecchio flusso di lavoro SQL. È veloce, intuitivo e rende di nuovo piacevole lavorare con i database."
"Ho provato tante GUI per database, ma Beekeeper trova il perfetto equilibrio tra funzionalità e semplicità. Funziona e basta."