UUID-versioiden yleiskatsaus
UUID:lla on useita versioita, joilla kullakin on erilaisia ominaisuuksia:
• v1: Aika- ja solmu-ID-pohjainen, järjestetty mutta voi paljastaa tietoja
• v3: Nimi- ja nimiavaruus-pohjainen, käyttää MD5-tiivistettä
• v4: Täysin satunnainen, yleisimmin käytetty versio
• v5: Nimi- ja nimiavaruus-pohjainen, käyttää SHA-1-tiivistettä, turvallisempi kuin v3
• v6: V1:n paranneltu versio, aikajärjestys suurempien päiden mukaisesti, sopii paremmin lajitteluun
• v7: Unix-aikaleimaan perustuva uusi versio, yhdistää aikajärjestyksen ja satunnaisuuden
Kuinka valita sopiva UUID-versio
Valitse käyttötarkoituksen mukaan sopivin versio:
• Turvallisuus: Valitse v4 (satunnainen) tai v5 (SHA-1-pohjainen nimi)
• Lajittelu: Valitse v6 tai v7 (aikapohjainen ja helppo lajitella)
• Determinismi: Valitse v3 tai v5 (sama syöte tuottaa saman tuloksen)
• Suorituskyky: Valitse v1 (nopea generointi)
• Erikoisarvot: NIL (kaikki nollat) tai MAX (kaikki F) rajatileille
Satunnainen vs. deterministinen
UUID v4 on täysin satunnainen ja sopii useimpiin käyttötarkoituksiin. v3 ja v5 ovat deterministisiä; sama nimi ja nimiavaruus tuottavat aina saman UUID:n, mikä sopii johdonmukaisia kartoituksia vaativiin tilanteisiin. v1, v6 ja v7 sisältävät aikatietoja ja ovat tietyissä olosuhteissa järjestettyjä.
v1, v6 ja v7 sisältävät kaikki aikatietoja, mutta käsittelevät ne eri tavoin. v6 parantaa v1:n aikajärjestysongelmia, v7 käyttää Unix-aikaleimaa tarjoten yksinkertaisemman aikajärjestyksen. Jos tarvitset UUID:ita, jotka voidaan lajitella luontiajan mukaan, v6 ja v7 ovat parempia vaihtoehtoja.
v1 voi paljastaa luontiajan ja solmutiedot (kuten MAC-osoitteen). v4 on täysin satunnainen ja paras vaihtoehto yksityisyyttä vaativissa tilanteissa. v3 käyttää MD5-tiivistettä, joka on turvallisuudeltaan heikompi kuin v5:n SHA-1. NIL ja MAX ovat kiinteitä arvoja, eikä niitä tulisi käyttää turvallisuutta vaativissa tilanteissa.
UUID:n käyttötarkoitukset
UUID:tä käytetään pääasiassa tilanteissa, joissa tarvitaan globaaleja yksilöllisiä tunnisteita: hajautetut järjestelmät, tietokantojen pääavaimet, istuntotunnisteet, tiedostonimet, API-tunnukset jne. Oikean version valitseminen voi optimoida suorituskykyä, turvallisuutta ja tiedon organisointia.