UUID -verdier er utrolig fascinerende fordi selv om verdiene er generert fra samme enhet, kan de aldri være de samme. Imidlertid vil jeg ikke komme inn på detaljer om teknologiene som brukes til å implementere UUID -er.
I denne opplæringen skal vi fokusere på fordelene ved å bruke UUID -er i stedet for INT for primærnøkler, ulempene med UUID -er i en database, og hvordan vi implementerer UUID -er i MySQL.
La oss komme i gang:
Uuid i mysql
For å generere en UUID i MySQL, bruker vi UUID () -funksjonen. Denne funksjonen returnerer en UTF8-streng med en 5-heksadesimal gruppe i form av:
AAAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEEEE
De tre første segmentene genereres som en del av tidsstempelformat i det lave, midtre og høye formatet.
Det fjerde segmentet av UUID -verdien er forbeholdt for å sikre midlertidig unikhet, der tidsstempelverdien synker monotonicity.
Det endelige segmentet representerer IEEE 802 -nodeverdien, og betegner unikhet over rommet.
Når skal du bruke UUID i mysql
Jeg vet hva du tenker:
Hvis uuider er unike globalt, hvorfor bruker vi dem ikke som standard primærnøkler i databasetabeller? Svaret er både enkelt og ikke enkelt.
For å begynne.
For det andre har UUider sine ulemper som kanskje ikke er aktuelt i alle tilfeller.
Tillat meg å dele noen få tilfeller der det kan være aktuelt å bruke UUID -er som primærnøkler.
Følgende er noen av ulempene med å implementere UUID -er i databasen din.
UUID -funksjoner
I MySQL 8.0 og senere kan du bruke forskjellige funksjoner for å motvirke noen av ulempene som UUIDS presenteres.
Disse funksjonene er:
Grunnleggende mysql uuid typer bruk
Som nevnt tidligere, for å implementere UUID -er i MySQL, bruker vi UUID () -funksjonen. For å generere UUID, gjør vi for eksempel:
mysql> velg uuid ();
+--------------------------------------+
| Uuid () |
+--------------------------------------+
| F9EB97F2-A94B-11EB-AD80-089798BCC301 |
+--------------------------------------+
1 rad i sett (0.01 sek)
Bord med uuid
La oss lage en tabell med UUID -verdier og se hvordan vi kan implementere slik funksjonalitet. Tenk på spørringen nedenfor:
Slipp skjema hvis det finnes uuider;
Lage skjemaer uuider;
Bruk UUID -er;
Lag tabellvalidering
(
ID binær (16) primærnøkkel
);
Sett inn validering (ID)
Verdier (uuid_to_bin (uuid ())),
(Uuid_to_bin (uuid ())),
(Uuid_to_bin (uuid ())),
(Uuid_to_bin (uuid ())),
(Uuid_to_bin (uuid ()));
Når alle UUID -ene er generert, kan vi velge dem og konvertere dem fra binære til streng UUID -verdier som vist i spørringen nedenfor:
Velg BIN_TO_UUID (ID) ID fra validering;
Her er utgangen:
Konklusjon
Det er ikke mye å dekke om UUID -er i MySQL, men hvis du vil lære mer om dem, kan du vurdere å sjekke ut MySQL -kilden:
https: // dev.mysql.com/doc/