Questo sito è tradotto automaticamente in più lingue con un software sviluppato da Kohei Koyanagi. Per maggiore accuratezza, fai riferimento alla versione originale in inglese .

Approccio a Doppio Identificatore di Splync: UUID e Int Auto-Incrementato

Splync Utilizza Due Identificatori per ID Sensibili

Nel database di Splync, ogni utente — e ogni progetto — è identificato da due ID diversi: un UUID e un intero auto-incrementato. L'intero auto-incrementato è quello che la maggior parte delle persone conosce: è solo un contatore: 1, 2, 3, e così via. Splync utilizza questi numeri interi all'interno del database del server per organizzare quasi ogni tabella perché sono semplici, veloci ed efficienti per i join. Tuttavia, non esponiamo mai questi numeri interni all'app. Ad esempio, se foste il 42° utente a registrarsi, il vostro ID interno nel database sarebbe 42. Ma la vostra app iOS non vedrebbe mai "42". Invece, l'app utilizza un UUID per rappresentarvi. Applichiamo lo stesso approccio ai progetti: un ID progetto potrebbe essere "7" all'interno del database, ma l'app si riferisce sempre a esso utilizzando un lungo UUID.

Cos'è un UUID

UUID sta per Identificatore Unico Universale. Splync utilizza UUID di versione 4, variante 1, conformi a RFC 4122 — uno degli standard più ampiamente adottati. È una stringa generata casualmente, che appare come 949ca11c-a6ed-48a3-b40a-fa9727494917. Un UUID è tipicamente scritto come 32 caratteri esadecimali divisi in cinque sezioni separate da trattini. È progettato per essere unicamente globale, il che significa che non si scontrerà nemmeno su server o database diversi. Matematicamente, ci sono circa 16^32 = 2^128 combinazioni possibili. Tuttavia, poiché sei bit sono riservati per indicare variante e versione, il numero totale di UUID distinti di versione-4, variante-1 è approssimativamente 2^122, o circa 5,3 x 10^36 — un numero astronomicamente grande che garantisce un'unicità pratica.

Quanto è Piccolo 1 / 5.300.000.000.000.000.000.000.000.000.000.000.000

Ogni coppia di UUIDv4 ha circa 1 possibilità su 5,3 × 10^36 di coincidere. Quel numero è così piccolo che quasi rifiuta di esistere nell'immaginazione umana. Per immaginarlo, pensate di lanciare 47 dadi contemporaneamente. La probabilità di ottenere tutti uno — ogni dado che mostra "1" — è di circa 1 su 6^47, o approssimativamente 1 su 3,7 × 10^36. È lo stesso ordine di grandezza di una collisione di UUID. Ora, immaginate che ogni persona sulla Terra — circa otto miliardi di noi — lanci quei 47 dadi ogni millisecondo per un trilione di anni. Questo equivale a circa 2,5 × 10^32 tentativi totali. Anche dopo tutto ciò, la probabilità che qualcuno, in qualche luogo, ottenga 47 uno contemporaneamente sarebbe solo una su diecimila. È così improbabile che due UUIDv4 si scontrino. Non è "raro". È assurdo a livello cosmico — il tipo di coincidenza che farebbe cadere il caffè ai matematici e controllare l'universo per eventuali errori.

È Facile Generare un UUID

A prima vista, generare un UUID potrebbe sembrare semplice — dopotutto, è solo una stringa alfanumerica di aspetto casuale. Ma provate a scriverne uno voi stessi con carta e penna. Potete annotare 36 caratteri, certo, ma se ripetete l'esercizio migliaia di volte, emergeranno chiari schemi. Magari privilegiate certe cifre come 3 o 8, e usate raramente lettere come x. Un computer può rilevare quei bias all'istante. Un hacker malintenzionato potrebbe analizzare le vostre abitudini e restringere la vostra stringa segreta "casuale" in un giorno. E poi, se vi affidate anche a un computer e chiamate rand(), la classica funzione casuale, per generare ogni cifra. È meglio — ma non abbastanza. Molti generatori di numeri "casuali" negli ambienti di programmazione comuni sono pseudocasuali, il che significa che seguono una sequenza matematica prevedibile a partire da un seme interno, che di solito si basa sul tempo di sistema. Se qualcuno scopre o indovina quel seme, può riprodurre ogni valore che il vostro generatore ha mai prodotto.

Quanto è Perfettamente Casuale un UUID

La casualità perfetta non esiste davvero — proprio come non esiste un dado perfetto, o un tiro di dadi perfettamente casuale. Ogni processo fisico o digitale segue alcune regole di base. Tuttavia, matematici e ingegneri hanno passato decenni a progettare algoritmi che si avvicinano il più possibile alla vera casualità. Quando Splync crea un nuovo UUID versione-4, non si limita a "scegliere numeri a caso" come lanciare dadi. Chiede al sistema operativo minuscole tracce di imprevedibilità — ad esempio, il momento preciso in cui la vostra CPU termina un compito, lievi rumori elettrici all'interno dell'hardware o fluttuazioni temporali di fondo nella memoria. Questi frammenti di entropia vengono raccolti e mescolati in 128 bit di dati — una lunga sequenza di uno e zero. Il risultato è un codice praticamente impossibile da indovinare o ripetere per gli utenti dell'app o potenziali aggressori malintenzionati.

Approccio a Doppio Identificatore di Splync

Splync utilizza UUID per identificatori sensibili come ID utente e ID progetto, perché sono estremamente casuali e sicuri. Allo stesso tempo, all'interno del suo server, Splync converte questi UUID in interi auto-incrementati per una ricerca più veloce e analisi su grandi set di dati. Questo approccio a doppio identificatore trova un equilibrio tra sicurezza e convenienza — privacy esterna con prestazioni interne. L'obiettivo di Splync è essere un'app per il monitoraggio del budget senza stress, semplice e sicura. Dietro l'interfaccia visibile, continuiamo a perfezionare la nostra architettura per mantenere tutto fluido, sicuro e discretamente intelligente.