Ein Universally Unique Identifier (UUID) ist ein Standard für Identifikatoren. Wer eindeutige einmalige IDs braucht, kann die in Java einfach erzeugen. Es gibt da ab 1.5 die Klasse UUID mit der man einfach diese IDs erzeugen kann.
Die RFC 4122 beschreibt den Aufbau und den Algorithmus für die Erzeugung. Das ganze ist schon ziemlich sicher, da die SecureRandom Klasse in Java verwendet wird.
Habe mich gefragt, ob die auch wirklich eindeutig sind. Dafür mal eben einen kleinen JUnit Test geschrieben der 1 Millionen UUIDs erzeugt und testet ob zwei gleiche erzeugt werden. Nach 4889,556 Sekunden das Ergebnis:
Hier die Testklasse:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
package de.wenzlaff.tools; import static org.junit.Assert.fail; import java.util.ArrayList; import java.util.List; import java.util.UUID; import org.junit.Test; public class TestUuid { private static final int MAX = 1000000; @Test public void testIdGen() { List<String> c = new ArrayList<>(); for (int i = 0; i < MAX; i++) { String id = UUID.randomUUID().toString(); if (c.contains(id)) { fail("Doppelte ID " + id + " generiert!"); } c.add(id); System.out.println(id); } } } |
Die CPU war schon teilweise zu 100% ausgelastet, zumindestens einer der acht Kerne:
Ein UUID in ihrer Normalform sieht beispielsweise so aus: „Universally Unique Identifier (UUID) bzw. Globally Unique IDentifier (GUID) mit Java erzeugen“ weiterlesen