Wir verwenden UUID als Primärschlüssel für unsere Oracle-Datenbank und versuchen, eine geeignete maximale Zeichenlänge für VARCHAR zu ermitteln. Anscheinend sind dies 36 Zeichen, aber wir haben festgestellt, dass UUIDs generiert wurden, die länger sind - bis zu 60 Zeichen lang. Kennt jemand eine geeignete maximale Zeichenlänge für UUID?
primary-key
uuid
user1753862
quelle
quelle
VARCHAR
s speichern möchten ?Antworten:
Abschnitt 3 von RFC4122 enthält die formale Definition von UUID-Zeichenfolgendarstellungen. Es besteht aus 36 Zeichen (32 hexadezimale Ziffern + 4 Striche).
Klingt so, als müssten Sie herausfinden, woher die ungültigen 60-Zeichen-IDs stammen, und entscheiden, 1) ob Sie sie akzeptieren möchten und 2) wie hoch die maximale Länge dieser IDs sein kann, basierend auf der API, mit der sie generiert werden.
quelle
Dies ist die perfekte Art von Feld, um es übrigens als CHAR 36 und nicht als VARCHAR 36 zu definieren, da jeder Wert genau die gleiche Länge hat. Und Sie benötigen weniger Speicherplatz, da Sie nicht die Datenlänge für jeden Wert speichern müssen, sondern nur den Wert.
quelle
[0-9A-Fa-f-]
sind 23 verschiedene Oktette in ASCII.Die meisten Datenbanken haben heutzutage einen nativen UUID-Typ, um die Arbeit mit ihnen zu erleichtern. Wenn dies bei Ihnen nicht der Fall ist, handelt es sich nur um 128-Bit-Zahlen. Sie können also BINARY (16) verwenden. Wenn Sie das Textformat häufig benötigen, z. B. zur Fehlerbehebung, fügen Sie eine berechnete Spalte hinzu, um es automatisch aus der Binärspalte zu generieren . Es gibt keinen guten Grund, das (viel größere) Textformular zu speichern.
quelle