Ist die eindeutige id-Erzeugung mittels UUID wirklich eindeutig?
Ich möchte eine eindeutige ID, genauso wie die "auto increment" in java . So das ich vorher verwendet aktuelle nano-Sekunden, aber ich am Ende mit clash seit zwei Daten kommt mit in gleichen nano-Sekunden ..
Tut UUID löst das oben genannte problem ?
Hinweis :: In meinem Projekt kann ich sogar 10000 Zeilen der Datensätze für jeden und jede minute und ich werde dump die Datensätze zusammen mit den UIDS in der Tabelle .Und kann es eine situation, wo ich aufhören würde, mein Produkt und starten Sie es nach einiger Zeit ....Also bei dieser situation, wie konnte UUID-Klasse klärt die zuvor generierte Uids(die ich gespeichert in der DB) mit dem neuen geht an die erstellte(Noch zu Dumpingpreisen in DB) ?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Während die UUIDs sind nicht garantiert einzigartig zu sein, ist die Wahrscheinlichkeit eines Duplikats ist äußerst gering. Sehen Zufällige UUID Wahrscheinlichkeit von Duplikaten.
Für Ihre Anwendung, ist es sinnvoll, verwenden Sie die UUID, aber Sie können sich mit den extrem seltenen Zustand, nur für den Fall.
Ich bezweifle ernsthaft, Sie bekommen zwei Datensätze in der gleichen nano-Sekunde als das Ruf-System.nanoTime() nimmt über 100 ns. Es ist wahrscheinlicher, dass deine Uhr nicht haben nano-Sekunde Genauigkeit.
Jedoch, wenn Sie starten Sie Ihren server, können Sie bekommen zu wiederholen nanoTime().
Ein Weg, um dieses ist die Verwendung
Dieser startet einen Zähler, wenn die Anwendung neu gestartet, und Sie werden nicht überschneiden neu gestartet, es sei denn, Sie nachhaltig über eine million ids pro Sekunde. (Über die Lebensdauer der Instanz)
Hinweis: das funktioniert nur auf einer pro-Instanz-basis. Mehrere Server benötigen, verwenden einen anderen Ansatz.
Scheint es einige Verwirrung auf dieser Seite über die Art der UUID.
Studium der Wikipedia-Seite. Sie werden sehen, therme sind verschiedene Versionen von UUID.
Die original-version stellt einen Punkt in Raum und Zeit, die nie wiederholt werden. Dies wird durch Verwendung der MAC-Adresse des Rechners, auf dem es generiert wird (ein Punkt im Raum). Es verbindet den aktuellen Augenblick. Fügen Sie in einer beliebigen Anzahl erhöht, wenn eine änderung in der computer-Uhr aufgefallen ist, nicht so sehr ein Problem jetzt, dass Computer verfügen über integrierte Batterien und Netzwerkverbindungen zu Zeit-Servern. Durch die Kombination dieser, gibt es keine praktische Möglichkeit von Kollisionen.
Aufgrund von Bedenken über die Sicherheit und Datenschutz-Probleme, die bei der Verfolgung und Angabe der MAC-Adresse und der moment, manche Menschen können nicht wollen, um diese version zu verwenden. Zum Beispiel, Sun/Oracle entschieden, um nicht in Java eine Implementierung für die Generierung von Version 1 UUID-Werte.
Eine Häufig verwendete version ist die version 4, in dem 122 128 bits werden nach dem Zufallsprinzip generiert. Wenn einem kryptographisch starken Zufallsgenerator verwendet wird, ist dies sehr effektiv. Dies ist eine viel höhere Wahrscheinlichkeit von Kollisionen, die in der Version 1. Aber für die meisten praktischen Szenarien, die random-based UUID ist ganz zuverlässig.