Come e quando usare il tipo di uuid mysql

Come e quando usare il tipo di uuid mysql
Secondo lo spazio e il tempo, l'identificatore univoco universale, noto come UUID, è un valore lungo a 128 bit che è unico in tutto il mondo. L'UUID è specificato da RFC 4122.

I valori uuidi sono incredibilmente affascinanti perché anche se i valori sono generati dallo stesso dispositivo, non possono mai essere gli stessi. Tuttavia, non entrerò nei dettagli sulle tecnologie utilizzate per implementare gli uuidi.

In questo tutorial, ci concentreremo sui vantaggi dell'utilizzo di Uuidi invece di INT per le chiavi primarie, gli svantaggi degli uuidi in un database e su come implementare gli UUID in MySQL.

Iniziamo:

Uuid in mysql

Per generare un uuid in mysql, utilizziamo la funzione uuid (). Questa funzione restituisce una stringa UTF8 con un gruppo 5-exadecimale sotto forma di:

aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee

I primi tre segmenti vengono generati come parte del formato timestamp nel formato basso, medio e alto.

Il quarto segmento del valore uuid è riservato per garantire unicità temporanea, in cui il valore del timestamp scende la monotonicità.

Il segmento finale rappresenta il valore del nodo IEEE 802, che significa unicità attraverso lo spazio.

Quando usare uuid in mysql

So cosa stai pensando:

Se gli uuidi sono univoci a livello globale, perché non li usiamo come chiavi primarie predefinite nelle tabelle del database? La risposta è sia semplice che non semplice.

Per iniziare, gli uuidi non sono tipi di dati nativi come un INT, che è possibile impostare come chiave primaria e incremento automatico poiché più dati vengono aggiunti al database.

In secondo luogo, gli uuidi hanno i loro svantaggi che potrebbero non essere applicabili in tutti i casi.

Consentitemi di condividere alcuni casi in cui l'utilizzo degli uuidi come chiavi primari potrebbe essere applicabile.

  1. Uno scenario comune è dove è richiesta una completa unicità. Poiché gli uuidi sono unici a livello globale, offrono un'opzione perfetta per unire le righe in database preservando l'unicità.
  2. Sicurezza: gli uuidi non espongono alcuna informazione relativa ai dati e sono quindi utili quando la sicurezza è un fattore. In secondo luogo, vengono generati offline senza rivelare alcuna informazione sul sistema.

Di seguito sono riportati alcuni degli svantaggi dell'implementazione di UUID nel tuo database.

  1. Gli uuidi sono 6 byte rispetto agli numeri interi che sono 4 bytes. Ciò significa che occupano più spazio di archiviazione per la stessa quantità di dati rispetto agli interi.
  2. Se gli uuidi sono indicizzati, potrebbero causare costi di prestazioni significativi e rallentare il database.
  3. Poiché gli uuidi sono casuali e unici, possono rendere inutilmente ingombrante il processo di debug.

Funzioni uuid

In mysql 8.0 e successivamente, è possibile utilizzare varie funzioni per contrastare alcuni degli svantaggi presentati dagli uuidi.

Queste funzioni sono:

  1. UUID_TO_BIN - Converte UUID da VARCHAR al binario che è più efficiente per la memorizzazione nei database
  2. Bin_to_uuid - dal binario a varchar
  3. Is_uuid - restituisce il booleano vero se arg è valido varchar uuid. Il contrario è vero.

Utilizzo dei tipi Uuid Mysql di base

Come accennato in precedenza, per implementare gli UUID in MySQL, utilizziamo la funzione UUID (). Ad esempio, per generare uuid, facciamo:

mysql> seleziona uuid ();
+--------------------------------------+
| Uuid () |
+--------------------------------------+
| F9EB97F2-A94B-1EB-AD80-089798BCC301 |
+--------------------------------------+
1 riga in set (0.01 sec)

Tavolo con uuid

Creiamo una tabella con valori UUID e vediamo come possiamo implementare tale funzionalità. Considera la query di seguito:

Drop Schema se esiste uuidi;
Creare uuidi schema;
Usa gli uuidi;
Crea la convalida della tabella
(
ID BINARY (16) Chiave primaria
);
Inserisci in convalida (ID)
Valori (uuid_to_bin (uuid ()),
(Uuid_to_bin (uuid ()),
(Uuid_to_bin (uuid ()),
(Uuid_to_bin (uuid ()),
(Uuid_to_bin (uuid ()));

Una volta generati tutti gli uuidi, possiamo selezionarli e convertirli dai valori binari a stringa come mostrato nella query seguente:

Selezionare Bin_to_uuid (ID) ID dalla convalida;

Ecco l'output:

Conclusione

Non c'è molto da coprire sugli uuidi in mysql, ma se desideri saperne di più su di loro, considera di dare un'occhiata alla fonte MySQL:

https: // dev.mysql.com/doc/