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żizzjoni | 122 bit każwali | Timbru tal-ħin + każwali |
| Ordnat fiż-żmien | Le | Iva |
| Jista' jiġi ssortjat | Le | Iva (kronoloġiku) |
| Prestazzjoni tal-indiċi | Baxxa (frammentazzjoni) | Għolja (inserzjonijiet sekwenzjali) |
| Imprevedibbiltà | Totali | Għolja iżda tiżvela l-mument |
| Tnixxija ta' informazzjoni | L-ebda | Data tal-ħolqien |
| Maturità / appoġġ | Universali | Reċ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.