Si utilizza UUID come chiave primaria per il DB oracle esterno e si tenta di determinare la lunghezza massima del carattere appropriata per VARCHAR. Apparentemente si tratta di 36 caratteri, ma abbiamo notato che gli UUID generati sono più lunghi di questo - fino a 60 caratteri di lunghezza. Qualcuno conosce una lunghezza max char char adatta per UUID ??UUID lunghezza carattere max
risposta
Section 3 of RFC4122 fornisce la definizione formale delle rappresentazioni di stringa UUID. Ha 36 caratteri - 32 cifre esadecimali + 4 trattini.
Sembra che tu debba capire da dove arrivano gli ID 60-char non validi e decidere 1) se vuoi accettarli e 2) quale lunghezza massima di tali ID potrebbe essere basata su qualsiasi API utilizzata per generarli.
Questo è il tipo di campo perfetto da definire come CHAR 36, a proposito, non VARCHAR 36, poiché ogni valore avrà la stessa lunghezza esatta. E utilizzerai meno spazio di archiviazione, dal momento che non è necessario memorizzare la lunghezza dei dati per il valore di copertura, solo il valore.
CHAR può utilizzare più spazio di VARCHAR se il set di caratteri nella colonna è multi-byte (vedere la parte inferiore su http://stackoverflow.com/a/59686/1691446) – David
Certo che UUIDv4 utilizza solo il set di caratteri latin-1 di UTF-8, nel qual caso questo non sarà interessato. Sicuramente controlla se stai usando un diverso set di caratteri. –
UUID in formato stringa può usare solo questo set di caratteri (regex): '[0-9A-Fa-f-]', che è di 23 ottetti distinti in ASCII. – cowbert
Poiché un UUID è un numero di 128 bit, sono davvero curioso di vedere quale codice lo converte in una stringa da 60 caratteri. Sembra sia una codifica estremamente scadente, sia qualche altro problema non realizzato per me. – fvu
Qual è il tuo RDBMS? MS SQL ha un tipo dedicato per UUID, mentre altri possono semplicemente archiviare i byte. C'è qualche ragione per cui vorresti archiviarli come 'VARCHAR's? –