Tipo UUID
Identificatore univoco a 128 bit, memorizzato in 16 byte. Tipo di chiave primaria diffuso nei sistemi distribuiti, dove non serve una sequenza centrale. UUID v4 = casuale; v7 (standardizzato nel 2024) = timestamp + parte casuale.
Il problema della v4 come chiave primaria: gli inserimenti casuali frammentano il B-tree e il throughput di scrittura cala col tempo. La v7 lo risolve: essendo sequenziale nel tempo, rispetta la località del B-tree. Servono solo 7 byte di timestamp più 9 byte casuali. PostgreSQL offre uuid-ossp con uuid_generate_v4(); per la v7 serve un'estensione, e prima di PG 18 gen_random_uuid() produce solo v4. Rispetto a BIGINT lo spazio raddoppia, mentre con la v7 le prestazioni dell'indice restano più o meno le stesse. Occupazione dell'indice su 1 milione di righe: BIGINT ~10 MB, UUID v7 ~20 MB. Lo Snowflake ID di Twitter segue un'idea simile.