Allgemein einzigartiger Bezeichner

Ein allgemein einzigartiger Bezeichner (UUID) ist ein Bezeichner-Standard, der im Softwareaufbau verwendet ist, der von Open Software Foundation (OSF) als ein Teil von Distributed Computing Environment (DCE) standardisiert ist.

Die Absicht von UUIDs ist, verteilten Systemen zu ermöglichen, Information ohne bedeutende Hauptkoordination einzigartig zu identifizieren. In diesem Zusammenhang sollte das einzigartige Wort genommen werden, "um praktisch einzigartig" aber nicht "versichert einzigartig" zu bedeuten. Da die Bezeichner eine begrenzte Größe haben, ist es für zwei sich unterscheidende Sachen möglich, denselben Bezeichner zu teilen. Die Bezeichner-Größe und der Generationsprozess müssen ausgewählt werden, um das genug unwahrscheinlich in der Praxis zu machen. Jeder kann einen UUID schaffen und ihn verwenden, um etwas mit dem angemessenen Vertrauen zu identifizieren, dass derselbe Bezeichner von irgendjemandem nie unabsichtlich geschaffen wird, um etwas anderes zu identifizieren. Mit UUIDs etikettierte Information kann deshalb später in eine einzelne Datenbank verbunden werden, ohne Bezeichner (Personalausweis) Konflikte auflösen zu müssen.

Ein weit verbreiteter Gebrauch dieses Standards ist in den allgemein einzigartigen Bezeichnern des Microsofts (GUIDs). Anderer bedeutender Gebrauch schließt den ext2/ext3 von Linux filesystem ein, LUKS encrypted Teilungen, ZWERG, KDE, und Mac OS X, von denen alle Durchführungen verwenden, ist auf die uuid Bibliothek zurückzuführen gewesen, die im e2fsprogs (Ext2 Filesystems Dienstprogramme) Paket gefunden ist.

UUIDs werden als ein Teil von ISO/IEC 11578:1996 "Informationstechnologie - Offene Systemverbindung - Remote Procedure Call (RPC)" und mehr kürzlich in ITU-T Rec dokumentiert. X.667 | 9834-8:2005 ISO/IEC. Der IETF hat Standardspur RFC 4122 veröffentlicht, der mit ITU-T Rec technisch gleichwertig ist. X.667 | ISO/IEC 9834-8.

Definition

Ein UUID ist eine 16 Bytes (128 Bit) Zahl. In seiner kanonischen Form wird ein UUID durch 32 hexadecimal Ziffern vertreten, die in fünf Gruppen gezeigt sind, die durch Bindestriche, in der Form für insgesamt 36 Charaktere (32 Ziffern und vier Bindestriche) getrennt sind. Zum Beispiel:

:

Es gibt 340,282,366,920,938,463,463,374,607,431,768,211,456 möglicher UUIDs (16 zur 32. Macht), oder ungefähr 3 × 10.

Varianten und Versionen

Die Variante zeigt das Lay-Out des UUID an. Die UUID Spezifizierung bedeckt eine besondere Variante. Andere Varianten werden vorbestellt oder bestehen aus rückwärts gerichteten Vereinbarkeitsgründen (z.B für zugeteilte Werte, bevor die UUID Spezifizierung erzeugt wurde). Ein Beispiel eines UUID, der eine verschiedene Variante ist, ist die Null UUID, der ein UUID ist, der den ganzen 128-Bit-Satz zur Null hat.

In der kanonischen Darstellung, den bedeutendsten Bit dessen

In der durch die UUID Spezifizierung bedeckten Variante gibt es fünf Versionen. Für diese Variante zeigen die vier Bit dessen die UUID Version an (d. h. der hexadecimal wird entweder 1, 2, 3, 4, oder 5 sein).

Version 1 (MAC Adresse)

Begrifflich, das Original (Version 1) das Generationsschema für UUIDs war, die UUID Version mit der MAC Adresse des Computers zu verketten, der den UUID, und mit der Zahl von 100-Nanosekunden-Zwischenräumen seit der Adoption des Gregorianischen Kalenders im Westen erzeugt. Dieses Schema ist kritisiert worden, in dem es nicht "genug undurchsichtig" ist; es offenbart sowohl die Identität des Computers, der den UUID als auch die Zeit erzeugt hat, in der es so getan hat.

Version 2 (Datenfernübertragungseinrichtungssicherheit)

UUIDs der Version 2 sind der Version 1 UUIDs mit dem oberen Byte der Uhr-Folge ähnlich, die durch den Bezeichner für ein "lokales Gebiet" (normalerweise entweder "POSIX UID Gebiet" oder "POSIX GID Gebiet") und die ersten 4 Bytes des Zeitstempels ersetzt ist, der durch den POSIX des Benutzers UID oder GID ersetzt ist (mit dem "lokalen Gebiet" Bezeichner, der anzeigt, der es ist).

Version 3 (MD5 Kuddelmuddel)

Version 3 UUIDs verwendet ein Schema, das einen UUID über MD5 von einer URL-ADRESSE, einem ableitet

völlig qualifizierter Domainname, ein Gegenstand-Bezeichner, ein ausgezeichneter Name (DN, wie verwendet, im Leichtgewichtsverzeichniszugriffsprotokoll), oder auf Namen in

unangegebener namespaces. UUIDs der Version 3 haben die Form, wo jede hexadecimal Ziffer ist und einer ist, oder.

Um die Version 3 UUID eines Vornamens zu bestimmen, wird der UUID des namespace z.B für ein Gebiet, in eine Schnur von Bytes entsprechend seinen hexadecimal Ziffern umgestaltet, die mit dem Eingangsnamen, hashed mit MD5 verkettet sind, der 128 Bit nachgibt. Sechs Bit werden durch feste Werte ersetzt, vier dieser Bit zeigen die Version für die Version 3 an. Schließlich wird das feste Kuddelmuddel zurück in die Hexadecimal-Form mit Bindestrichen umgestaltet, die die in anderen UUID Versionen wichtigen Teile trennen.

(Zufällige) Version 4

Version 4 UUIDs verwendet ein Schema, das sich nur auf Zufallszahlen verlässt. Dieser Algorithmus setzt die Versionsnummer sowie zwei vorbestellten Bit. Alle anderen Bit werden mit einer zufälligen oder pseudozufälligen Datenquelle gesetzt. UUIDs der Version 4 haben die Form, wo jede hexadecimal Ziffer ist und einer ist, oder. z.B.

Version 5 (SHA-1 Kuddelmuddel)

Version 5 UUIDs verwendet ein Schema mit SHA-1 hashing; sonst ist es dieselbe Idee wie in der Version 3. RFC, haben 4122 Staaten, dass Version 5 über den Namen der Version 3 bevorzugt wird, UUIDs als MD5's Sicherheit gestützt, ist in Verlegenheit gebracht worden. Bemerken Sie, dass das SHA-1 160-Bit-Kuddelmuddel zu 128 Bit gestutzt ist, um die Länge-Arbeit auszumachen. Ein Erratum richtet das Beispiel im Anhang B von RFC 4122.

Durchführungen

ActionScript: CASA Befreiungskampf stellt einer Version 4 UUID Funktion als ein Teil der Klasse von StringUtil zur Verfügung. Adobe Flex versorgt auch eine UUID Durchführung mit der UIDUtil Klasse.

C: libuuid ist ein Teil des e2fsprogs Pakets. Das OSSP-Projekt stellt eine UUID Bibliothek zur Verfügung.

C ++: Ooid führt einen C ++ UUID Klasse durch. QUuid ist ein Teil des C ++ Fachwerk von Qt. Zunahme. Uuid ist eine Kopfball-Only-Durchführung laut einer nichtgegenseitigen Lizenz des Open Sources.

Caché ObjectScript: UUID Durchführung der Version 4 für Caché ObjectScript.

CakePHP: CakePHP wird UUIDs für neue Aufzeichnungen automatisch erzeugen, wenn Sie einen primären Schlüssel eines Tisches als Datentyp CHAR (36) angeben.

Kakao/Kohlenstoff (Mac OS X): Die Kernfundament-Klasse CFUUIDRef wird verwendet, um UUIDs zu erzeugen und zu versorgen, sowie sie zu und von CFString/NSString Darstellungen umzuwandeln.

CodeGear RAD Studio (Delphi/C ++ Baumeister): Ein neuer GUID kann durch das Drücken von Ctrl+Shift+G erzeugt werden. Weil Laufzeitfunktionen die Abteilung "von Free Pascal & Lazarus IDE" sehen.

ColdFusion: Der createUUID Funktion stellt einen UUID in allen Versionen zur Verfügung, jedoch ist das erzeugte Format in vier Segmenten statt fünf xxxxxxxx xxxx xxxx xxxxxxxxxxxxxxxx (8-4-4-16).

Allgemeines Lispeln: Zwei Bibliotheken sind verfügbar, um UUIDs gemäß RFC 4122 zu schaffen. Eine verallgemeinerte Bibliothek für die Entwicklung von UUIDs (v1, v3, v4 und v5). Unicly, der für die Entwicklung von UUIDs (v3, v4, und v5) optimiert wird und eine verlängerte Schnittstelle anbietet, um sich unter verschiedenen Darstellungen umzuwandeln und UUID Gleichwertigkeit über diese verschiedenen Darstellungen zu befragen.

CouchDB: Wenn nicht vorausgesetzt dass CouchDB den Dokumentenpersonalausweis für jedes Dokument veranlasst, ein UUID zu sein

D: Die Tango-Standardbibliothek schließt ein Modul ein, um UUIDs (v3, v4, und v5) gemäß RFC 4122 zu schaffen.

Eiffel: Eine Bibliothek ist verfügbar, um UUIDs zu schaffen, Erzeugt uuids gemäß RFC 4122, Variante 1 0, Version 4. Quelle, die an Eiffel UUID Bibliothek verfügbar

ist

Erlang: Für Erlang gibt es erlang-uuid, der in Erlang geschrieben ist, der UUID Generation für die Variante 1 0, Versionen 1, 3, 4, und 5 von RFC 4122 durchführt. Die Bibliothek enthält auch Funktionen, um sich zwischen Schnur und binären Formaten umzuwandeln, eine UUID URNE schaffend, und Knoten id zurückgebend.

Baltimore-Trupial-Server: Baltimore-Trupial hat gen_uuid von der Version 2.1 und dem uuid_to_char und char_to_uuid von der Version 2.5 als eingebaute Funktionen.

Freier Pascal & Lazarus IDE: In Freiem Pascal gibt es eine Klasse genannt TGUID, der die Struktur eines UUID hält. Auch in der SysUtils.pas Einheit gibt es Methoden, UUID'S zu schaffen, zu vergleichen und umzuwandeln. Sie sind CreateGUID , GUIDToString und IsEqualGUID . Im Lazarus IDE können Sie auch einen UUID erzeugen, indem Sie Ctrl+Shift+G drücken.

Haskell: Das Paket uuid führt direkt die meisten RFC 4122 durch. Das Paket unterstützt Generation (v1, v3, v4 und v5) sowie Anordnung zu und von der Schnur und den binären Formaten. Das Paket-System-Uuid stellt bindings den heimischen UUID Generatoren auf Windows, Linux, FreeBSD und Mac OS X. zur Verfügung

Java: Der J2SE, den 5.0 Ausgabe Javas einer Klasse zur Verfügung stellt, die 128-Bit-UUIDs erzeugen wird, obwohl es nur Generationsmethoden der Version 3 und 4, nicht die ursprüngliche Methode (erwartet durchführt, Mittel zu fehlen, auf MAC-Adressen mit dem reinen Java vor der Version 6 zuzugreifen). Die API-Dokumentation für die Klasse bezieht sich auf ISO/IEC 11578:1996. Offene Quelldurchführungen, die MAC Adressen auf mehreren allgemeinen Betriebssystemen unterstützen, sind UUID - erzeugen UUIDs (oder GUIDs) in Java und Java Uuid Generator (JUG).

Javascript: Broofa.com hat eine Funktion von JavaScript durchgeführt, die Version 4 UUIDs, wie definiert, im RFC 4122 Spezifizierung erzeugt. Eine offene Quellbibliothek UUID.js, der laut der MIT-Lizenz verfügbar ist, erzeugt Version 4 und Version 1 UUIDs gemäß RFC 4122.

Lasso: Ein kundenspezifisches Anhängsel für Lassoscript durch Douglas Burchard und ein LJAPI-Modul durch Steffan A. Cline.

Lua: Es gibt ein Modul von Lua durch Luiz Henrique de Figueiredo.

Mac OS X: Befehl-Liniendienstprogramm uuidgen ist verfügbar. In der Endanwendung, Typ: uuidgen

MySQL: MySQL stellt einen UUID Funktion zur Verfügung.

.NET-Fachwerk: Das.NET Fachwerk stellt auch eine Struktur zur Verfügung, um 128-Bit-UUIDs zu erzeugen und zu manipulieren.

OCaml: Die uuidm Bibliothek führt allgemein einzigartige Bezeichner-Version 3, 5 (Name durch, der mit MD5, SHA-1 hashing gestützt ist) und 4 (zufällig gestützt) gemäß RFC 4122.

Orakel-Datenbank: Die Orakel-Datenbank stellt eine Funktion zur Verfügung, einzigartige Bezeichner zu erzeugen.

Perl: Und Module von CPAN kann verwendet werden, um UUIDs zu schaffen. Das Modul ist eine leichte, niedrige Abhängigkeit Reines Perl Modul für die UUID Entwicklung und Prüfung.

PHP: In PHP gibt es mehrere Module, um UUIDs zu schaffen.

KohanaPHP: Der Kohana PHP Fachwerk, unterstützt die Generation der Version 3, 4 und 5 UUIDs gemäß RFC 4122 Spezifizierungen mit dem UUID Modul.

PostgreSQL: PostgreSQL enthält einen uuid Datentyp. Auch verschiedene Generation fungiert als ein Teil des uuid-ossp contrib Modul.

Fortschritt OpenEdge ABL: Die Funktion in OpenEdge 10 stellt einen UUID zur Verfügung, der das druckfähige Verwenden oder Funktionen gemacht werden kann.

Pythonschlange: Das uuid Modul (eingeschlossen in die Standardbibliothek seit der Pythonschlange 2.5) schafft UUIDs zu RFC 4122.

Revolution/RunRev: Die libUUID Bibliothek Eine Bibliothek, die UUIDs des Typs 1 (Zeit gestützt), Typ 3 (namenbasiert) und (zufälliger) Typ 4 erzeugt. Version 1.0. durch Mark Smith. OSL 3.0

Ruby: Es gibt mehrere RFC4122 Durchführungen für Ruby, die am meisten aktualisierten, die (Gabel hier http://github.com/spectra/ruby-uuid), UUID und UUIDTools Rubinrot-UUID sind. Ruby 1.9 schließt eine eingebaute Version 4 uuid Generator ein.

SQL Server: Unterhandeln Sie-SQL (2000, und 2005) stellt eine Funktion genannt NEWID zur Verfügung, um einzigartige Bezeichner zu erzeugen. SQL Server-2005 stellt eine zusätzliche Funktion genannt NEWSEQUENTIALID zur Verfügung , der einen neuen GUID erzeugt, der größer ist als jeder GUID, der vorher durch den NEWSEQUENTIALID Funktion auf einem gegebenen Computer geschaffen ist.

Apachen-Solr: Solr enthält einen uuid Datentyp.

Tcl: Eine Tcl Durchführung wird im Paket von TclLib zur Verfügung gestellt.

Unix: Befehl-Liniendienstprogramm uuidgen wird entweder standardmäßig zur Verfügung gestellt oder vom e2fsprogs Paket verfügbar. Es gibt auch ein Werkzeug genannt einfach "uuid" verfügbar, der dieselbe Funktionalität hat. Die Kerne von FreeBSD und Linux haben einen eingebauten UUID v4 Generator auch. Um das auf Linux zu verwenden, müssen Sie die Datei/proc/sys/kernel/random/uuid lesen. Auf FreeBSD gibt es ein einfaches System callL uuidgen (2).

Zufällige UUID Wahrscheinlichkeit von Duplikaten

Zufällig erzeugte UUIDs haben 122 zufällige Bit. Es gibt 128 Bit zusammen mit vier Bit, die für die Version verwenden werden ('Zufällig hat UUID' erzeugt), und zwei Bit für die Variante ('Liek-Salz'). Mit zufälligem UUIDs kann die Chance davon, denselben Wert zwei zu haben, mit der Wahrscheinlichkeitstheorie (Geburtstag-Paradox) berechnet werden. Das Verwenden der Annäherung

:

das sind die Wahrscheinlichkeiten eines zufälligen Konflikts nach dem Rechnen n UUIDs mit x=2:

</Tisch>

Um diese Zahlen zu relativieren, wie man schätzt, ist jemandes jährliche Gefahr, durch einen Meteorstein geschlagen zu werden, eine Chance in 17 Milliarden, die bedeutet, dass die Wahrscheinlichkeit ungefähr 0.00000000006 (6 × 10), gleichwertig zur Verschiedenheit ist, einige Zehnen von Trillionen von UUIDs in einem Jahr zu schaffen und ein Duplikat zu haben. Mit anderen Worten, nur nach dem Erzeugen von 1 Milliarde UUIDs jede Sekunde seit den nächsten 100 Jahren, der Wahrscheinlichkeit des Schaffens gerade würde eines Duplikates ungefähr 50 % sein. Die Wahrscheinlichkeit eines Duplikates würde ungefähr 50 % sein, wenn jede Person auf der Erde 600 Millionen UUIDs besitzt.

Jedoch halten diese Wahrscheinlichkeiten nur, wenn die UUIDs mit dem genügend Wärmegewicht erzeugt werden. Sonst kann die Wahrscheinlichkeit von Duplikaten bedeutsam höher sein, da die statistische Streuung niedriger sein kann.

Geschichte

Das anfängliche Design der Datenfernübertragungseinrichtung UUIDs hat auf UUIDs, wie definiert, im Netzrechensystem basiert, dessen Design der Reihe nach durch die (64 Bit) einzigartigen Bezeichner definiert und verwendet durchdringend in Domain/OS, das Betriebssystem begeistert wurde, das von Apollo Computer, Inc. entworfen ist

Siehe auch

  • Allgemein einzigartiger Bezeichner

Links


Peter Paul Dobree / Mönch von James (Bischof)
Impressum & Datenschutz