UUID v4 vs v7: liema identifikatur uniku għandek tagħżel?

UUID huwa identifikatur ta' 128 bit uniku mingħajr koordinazzjoni ċentrali. Il-verżjoni 4, kompletament każwali, iddomina għal snin. Il-verżjoni 7, aktar reċenti (RFC 9562, 2024), tinkorpora timbru tal-ħin fil-bidu biex tipproduċi identifikaturi ordnati fiż-żmien. Din id-differenza, apparentement bla ħsara, tbiddel radikalment il-prestazzjoni fil-bażi tad-data. Hawn liema tagħżel.

X'inhu UUID?

UUID (Universally Unique Identifier) huwa numru ta' 128 bit irrappreżentat minn 32 karattru eżadeċimali miġbura f'ħames blokki, pereżempju 550e8400-e29b-41d4-a716-446655440000. Ir-raġuni tal-eżistenza tiegħu: jiġġenera identifikatur uniku mingħajr ma jitlob lil awtorità ċentrali, li jagħmlu ideali għas-sistemi distribwiti. Tista' tiġġenera xi wħud bil-ġeneratur ta' UUID tagħna.

Jeżistu diversi verżjonijiet; l-aktar rilevanti llum għaċ-ċwievet tar-rekords huma l-v4 (każwali) u l-v7 (ordnata fiż-żmien).

UUID v4 (każwali)

L-UUID v4 huwa magħmul minn 122 bit każwali (il-bqija jikkodifika l-verżjoni u l-varjant). Il-probabbiltà ta' kolliżjoni hija tant baxxa li hija negliġibbli fil-prattika. Hija l-verżjoni awtomatika fil-biċċa l-kbira tal-lingwi u l-libreriji.

  • Imprevedibbli: perfett għal tokens jew identifikaturi pubbliċi li ma tridx ikunu jistgħu jaħsbuhom
  • L-ebda tnixxija ta' informazzjoni: ma jiżvela la data u lanqas ordni ta' ħolqien
  • Żvantaġġ: totalment diżordnat, li jagħmel ħsara lill-indiċi tal-bażi tad-data

UUID v7 (ordnat fiż-żmien)

L-UUID v7 ipoġġi timbru tal-ħin Unix f'millisekondi fl-ewwel 48 bit tiegħu, segwit minn bits każwali. Żewġ UUID v7 iġġenerati f'mumenti differenti għalhekk jissortjaw fl-ordni tal-ħolqien tagħhom, filwaqt li jibqgħu uniċi u prattikament impossibbli li jinħassbu.

  • Jista' jiġi ssortjat: l-ordni lessikografiku jikkorrispondi għall-ordni kronoloġiku
  • Favorevoli għall-indiċi: l-inserzjonijiet isiru fl-aħħar tal-indiċi, bħal auto-increment
  • Kontroparti: jiżvela l-mument tal-ħolqien, li jista' jkun mhux mixtieq għal identifikatur pubbliku

Tabella komparattiva

Kriterju UUID v4 UUID v7
Kompożizzjoni122 bit każwaliTimbru tal-ħin + każwali
Ordnat fiż-żmienLeIva
Jista' jiġi ssortjatLeIva (kronoloġiku)
Prestazzjoni tal-indiċiBaxxa (frammentazzjoni)Għolja (inserzjonijiet sekwenzjali)
ImprevedibbiltàTotaliGħolja iżda tiżvela l-mument
Tnixxija ta' informazzjoniL-ebdaData tal-ħolqien
Maturità / appoġġUniversaliReċenti (RFC 9562, 2024)

Impatt fuq il-bażijiet tad-data

Dan huwa l-qalba tas-suġġett. Il-bażijiet relazzjonali jaħżnu l-indiċi tagħhom f'siġar B (B-tree). L-inserzjoni ta' ċwievet każwali (v4) tferrex il-kitbiet kullimkien fl-indiċi, u tikkawża frammentazzjoni, qsim ta' paġni u cache inqas effiċjenti. Fuq volumi kbar, il-prestazzjoni tal-inserzjoni tiddegrada b'mod ċar.

Iċ-ċwievet ordnati (v7) jiddaħħlu dejjem fl-aħħar tal-indiċi, bħal identifikatur auto-incrementat. Issib inserzjonijiet mgħaġġla, lokalità aħjar u indiċi aktar kumpatt. Dan huwa partikolarment ċar b'ċavetta primarja f'InnoDB (MySQL), fejn iċ-ċavetta primarja tiddetermina l-ordni fiżiku tar-ringieli.

Meta tagħżel wieħed jew l-ieħor

Agħżel UUID v4 meta

  • L-identifikatur huwa espost pubblikament u ma għandu jiżvela xejn
  • Tiġġenera tokens, links ta' kondiviżjoni, sigrieti
  • L-ordni u d-data tal-ħolqien ma għandhomx ikunu jistgħu jinħassbu
  • Trid kompatibbiltà massima mal-eżistenti

Agħżel UUID v7 meta

  • L-UUID iservi bħala ċavetta primarja f'bażi tad-data
  • Il-volum tal-inserzjonijiet huwa għoli u l-prestazzjoni tal-indiċi tgħodd
  • Trid tissortja skont l-ordni tal-ħolqien mingħajr kolonna dedikata
  • L-iżvelar tal-mument tal-ħolqien mhuwiex problema

Rakkomandazzjoni

Għal ċavetta primarja ta' bażi tad-data, issa ippreferi UUID v7: iżżomm l-uniċità distribwita tal-UUID filwaqt li tevita l-penalità tal-indiċi tal-v4. Żomm UUID v4 għall-identifikaturi pubbliċi, tokens u sigrieti, fejn l-imprevedibbiltà totali u n-nuqqas ta' tnixxija temporali jiddominaw.

Madankollu, iċċekkja l-appoġġ tal-v7 fil-lingwa u l-ORM tiegħek: l-RFC hija reċenti, iżda l-adozzjoni qed tavvanza malajr.

Mistoqsijiet frekwenti

UUID v7 huwa inqas sigur mill-v4?

Jibqa' diffiċli ħafna li jinħaseb grazzi għall-bits każwali tiegħu, iżda jiżvela l-mument tal-ħolqien permezz tat-timbru tal-ħin tiegħu. Għal identifikatur pubbliku fejn id-data ma għandhiex tnixxi, jew għal sigriet, ippreferi l-v4.

Għaliex l-UUID v4 inaqqas il-veloċità tal-bażijiet tad-data?

Għax il-valuri każwali tiegħu jferrxu l-inserzjonijiet f'kull naħa tal-indiċi B-tree, li jifframmenta l-paġni u jnaqqas l-effiċjenza tal-cache. Il-v7, ordnata, iddaħħal fl-aħħar tal-indiċi u tevita din il-problema.

Nista' nimmigra minn v4 għal v7?

Iva għar-rekords ġodda: iż-żewġ formati jeżistu flimkien fl-istess kolonna UUID. Mhuwiex meħtieġ li terġa' tikteb l-istorja; sempliċement aqleb il-ġenerazzjoni taċ-ċwievet ġodda għall-v7.

X'inhuma l-verżjonijiet v1 u v6?

Il-v1 tikkodifika t-timbru tal-ħin u l-indirizz MAC, li joħloq problemi ta' privatezza. Il-v6 terġa' tordna l-v1 biex tagħmilha tista' tiġi ssortjata. Għal proġett ġdid, il-v7 hija l-verżjoni ordnata rakkomandata mill-RFC 9562.