UUID v4 vs UUID v7 — Quale dovresti usare?
UUID v7, standardizzato nella RFC 9562 (maggio 2024), risolve il principale punto debole di UUID v4: le scarse prestazioni degli indici del database.
UUID v4 (Casuale)
UUID v4 utilizza 122 bit casuali e 6 bit fissi. Ciò garantisce l'unicità senza bisogno di coordinamento, ma produce ID distribuiti casualmente nel tempo. Quando viene usato come chiave primaria B-tree in un database, gli ID casuali causano la suddivisione delle pagine e la frammentazione degli indici, riducendo le prestazioni di scrittura.
UUID v7 (Ordinato nel tempo)
UUID v7 utilizza un timestamp Unix in millisecondi a 48 bit seguito da bit casuali. Il prefisso timestamp rende gli UUID naturalmente ordinabili in base al momento di creazione, risolvendo il problema della frammentazione dei B-tree. Le chiavi restano globalmente uniche e possono essere generate senza coordinamento.
Confronto
| | UUID v4 | UUID v7 | |---|---------|---------| | Standard | RFC 9562 | RFC 9562 | | Ordinabile | No | Sì (in base al tempo) | | Prestazioni DB | Scarse | Buone | | Unico | Sì | Sì | | Espone il timestamp | No | Sì (precisione al millisecondo) |
Raccomandazione: usa UUID v7 per le chiavi primarie dei database e UUID v4 quando non vuoi esplicitamente rivelare il momento di creazione. Provali entrambi nel nostro generatore di UUID.