# Versionen

# V1 - V7

UUIDs (Universally Unique Identifiers) haben mehrere **Versionen (v1–v7)**, die sich vor allem darin unterscheiden, **wie sie erzeugt werden**. Jede Version hat ihren eigenen Zweck und Kompromisse (z. B. zwischen Zufälligkeit, Nachvollziehbarkeit und Sortierbarkeit).

Hier ist eine verständliche Übersicht:

---

## 🔹 UUID v1 – Zeit + MAC-Adresse

**Prinzip:** basiert auf Zeitstempel + Gerätekennung

- Enthält: 
    - Zeit (100-ns seit 1582 😄)
    - MAC-Adresse des Geräts
- ✅ Vorteile: 
    - Hohe Wahrscheinlichkeit eindeutig
    - Zeitlich sortierbar
- ❌ Nachteile: 
    - Datenschutzproblem (MAC-Adresse sichtbar)
    - Kann Rückschlüsse auf Erstellungszeit geben

👉 Heute oft gemieden wegen Privacy

---

## 🔹 UUID v2 – DCE Security (selten genutzt)

**Prinzip:** wie v1, aber mit zusätzlicher Benutzer-/Gruppen-ID

- Erweiterung von v1 (POSIX UID/GID)
- ❌ Nachteile: 
    - Kaum verbreitet
    - Nicht standardmäßig unterstützt

👉 Praktisch irrelevant in modernen Systemen

---

## 🔹 UUID v3 – Name-basiert (MD5)

**Prinzip:** Hash aus Name + Namespace

- Deterministisch: 
    - gleicher Input → gleiche UUID
- Verwendet: 
    - MD5 (heute kryptografisch schwach)
- ✅ Vorteil: 
    - Reproduzierbar
- ❌ Nachteil: 
    - MD5 gilt als unsicher

👉 Wird selten noch neu eingesetzt

---

## 🔹 UUID v4 – Zufällig

**Prinzip:** komplett zufällige Bits

- 122 zufällige Bits
- ✅ Vorteile: 
    - Sehr einfach
    - Keine Infos über Ursprung
    - Sehr geringe Kollisionswahrscheinlichkeit
- ❌ Nachteile: 
    - Nicht sortierbar
    - Keine Struktur

👉 **Am häufigsten verwendet**

---

## 🔹 UUID v5 – Name-basiert (SHA-1)

**Prinzip:** wie v3, aber mit SHA-1

- Deterministisch
- Verwendet SHA-1 statt MD5
- ✅ Vorteil: 
    - Sicherer als v3
- ❌ Nachteil: 
    - SHA-1 ist inzwischen auch veraltet

👉 Wird noch genutzt, aber nicht ideal für neue Systeme

---

## 🔹 UUID v6 – Zeitbasiert (verbessertes v1)

**Prinzip:** wie v1, aber besser sortierbar

- Zeitstempel vorne angeordnet
- ✅ Vorteile: 
    - **Lexikografisch sortierbar**
    - Besser für Datenbanken (Indexe)
- ❌ Nachteile: 
    - Teilweise noch Zeitinformationen enthalten

👉 Moderne Alternative zu v1

---

## 🔹 UUID v7 – Zeit + Zufall (modern)

**Prinzip:** Unix-Zeit + Zufallsbits

- Enthält: 
    - Unix-Timestamp (Millisekunden)
    - Zufällige Bits
- ✅ Vorteile: 
    - Sortierbar nach Zeit
    - Keine MAC-Adresse → besserer Datenschutz
    - Gute Balance zwischen Struktur und Zufälligkeit
- ❌ Nachteile: 
    - Relativ neu (Support noch im Aufbau, aber wächst schnell)

👉 **Aktuell die empfohlene moderne Wahl**

---

## 🧠 Kurzvergleich

<table id="bkmrk-version-basis-sortie"><thead><tr><th>Version</th><th>Basis</th><th>Sortierbar</th><th>Deterministisch</th><th>Typische Nutzung</th></tr></thead><tbody><tr><td>v1</td><td>Zeit + MAC</td><td>✅</td><td>❌</td><td>Legacy</td></tr><tr><td>v2</td><td>v1 + UID</td><td>✅</td><td>❌</td><td>Kaum genutzt</td></tr><tr><td>v3</td><td>MD5 Hash</td><td>❌</td><td>✅</td><td>Reproduzierbar</td></tr><tr><td>v4</td><td>Zufall</td><td>❌</td><td>❌</td><td>Standard</td></tr><tr><td>v5</td><td>SHA-1 Hash</td><td>❌</td><td>✅</td><td>Reproduzierbar</td></tr><tr><td>v6</td><td>Zeit (neu sortiert)</td><td>✅</td><td>❌</td><td>DB-optimiert</td></tr><tr><td>v7</td><td>Zeit + Zufall</td><td>✅</td><td>❌</td><td>**Modern / empfohlen**</td></tr></tbody></table>

---

## ✅ Empfehlung (Stand heute)

- **v4** → wenn dir Einfachheit reicht
- **v7** → wenn du moderne Systeme baust (DB, Skalierung, Sortierung)