Używamy UUID jako klucza podstawowego dla out oracle DB i próbujemy określić odpowiednią maksymalną długość znaków dla VARCHAR. Wygląda na to, że jest to 36 znaków, ale zauważyliśmy wygenerowane UUID, które są dłuższe - do 60 znaków. Czy ktoś zna odpowiednią maksymalną długość znaków dla UUID?
primary-key
uuid
user1753862
źródło
źródło
VARCHAR
s?Odpowiedzi:
Sekcja 3 dokumentu RFC4122 zawiera formalną definicję reprezentacji ciągu UUID. Ma 36 znaków (32 cyfry szesnastkowe + 4 myślniki).
Wygląda na to, że musisz dowiedzieć się, skąd pochodzą nieprawidłowe 60-znakowe identyfikatory i zdecydować 1), czy chcesz je zaakceptować, oraz 2) jaka może być maksymalna długość tych identyfikatorów na podstawie dowolnego interfejsu API używanego do ich generowania.
źródło
Nawiasem mówiąc, jest to idealny rodzaj pola do zdefiniowania jako CHAR 36, a nie VARCHAR 36, ponieważ każda wartość będzie miała dokładnie taką samą długość. Zużyjesz mniej miejsca, ponieważ nie musisz przechowywać długości danych dla każdej wartości, tylko wartość.
źródło
[0-9A-Fa-f-]
czyli 23 różnych oktetów w kodzie ASCII.Większość baz danych ma obecnie natywny typ UUID, aby ułatwić pracę z nimi. Jeśli nie, to tylko 128-bitowe liczby, więc możesz użyć BINARY (16), a jeśli często potrzebujesz formatu tekstowego, np. Do rozwiązywania problemów, dodaj kolumnę obliczeniową, aby wygenerować ją automatycznie z kolumny binarnej . Nie ma powodu, aby przechowywać (znacznie większy) formularz tekstowy.
źródło