Ich frage mich, ob ich IDs, die mit der Funktion UUID () von mysql erzeugt werden, durch IDs ersetzen kann, die von der UUID.randomUUID () - Funktion von Java generiert wurden?
Ich möchte diese IDs in URLs mit meinen Benutzern teilen, aber die mysql UUID () - Ausgabe sieht nach einigen Durchläufen sehr ähnlich aus:
%Vor%Ich sage nicht, dass sie nicht einzigartig sind, aber sehen die Ergebnisse von UUID () so aus? Ich nehme an, dass es an einen Identifikator auf meiner Maschine gebunden ist.
Javas UUID.randomUUID () "sieht" zufälliger aus:
%Vor%Aus meinem naiven Verständnis der Einzigartigkeit sollten die von der Java-Methode generierten IDs als perfekter Ersatz für mysqls UUID () dienen?
(Ein weiterer Bonus für die Verwendung der Java-Version ist, dass ich einen eingefügten Datensatz, der UUID () verwendet, nicht erneut abrufen muss, wenn ich ihn in einer Antwort an einen Client bereitstellen muss)
Danke
Verwenden Sie Linux oder FreeBSD? Aus der Dokumentation von mysql:
Die fünfte Nummer ist eine IEEE 802-Knotennummer, die räumliches liefert Einzigartigkeit. Eine Zufallszahl wird ersetzt, wenn dies nicht der Fall ist verfügbar (zum Beispiel, weil der Host-Computer kein Ethernet hat Karte, oder wir wissen nicht, wie man die Hardwareadresse eines findet Schnittstelle auf Ihrem Betriebssystem). In diesem Fall räumliche Eindeutigkeit kann nicht garantiert werden. Trotzdem sollte eine Kollision sehr gering sein Wahrscheinlichkeit.
Momentan wird nur die MAC-Adresse einer Schnittstelle berücksichtigt unter FreeBSD und Linux. Auf anderen Betriebssystemen verwendet MySQL a zufällig generierte 48-Bit-Nummer.
Beachten Sie auch:
Warnung :
Obwohl UUID () Werte eindeutig sein sollen, sind sie nicht notwendigerweise unbegreiflich oder unvorhersehbar. Wenn Unvorhersehbarkeit ist erforderlich, sollten UUID-Werte auf andere Weise generiert werden.
BEARBEITEN
Wenn Sie möchten, dass Benutzer-IDs scheinbar zufällig erscheinen, können Sie sie durch eine Hash-Funktion wie MD5(UUID())
übergeben, was eine überzeugendere zufällige Zeichenfolge