Last Write Wins: Was es ist, Mechanismus und Funktionsprinzip

Autor: IT Sectr Veröffentlicht: 2026-06-14 Lesezeit: 7 Min.

Last Write Wins (LWW) ist eine Konfliktlösungsstrategie, bei der das System automatisch die Datenversion mit dem neuesten Zeitstempel auswählt. Dies ist der einfachste Konvergenzmechanismus in verteilten mobilen Systemen: Von zwei konkurrierenden Datensätzen gewinnt der neuere, der ältere wird verworfen. Laut Apache CouchDB Dokumentation, 2025 wird LWW standardmäßig in den meisten dokumentenorientierten Datenbanken verwendet. Der Zeitstempel dient als einziges Auswahlkriterium, was den Algorithmus deterministisch und vorhersagbar macht.

Das Wichtigste

  • Last Write Wins (LWW) — eine Strategie, bei der aus zwei Datenversionen der Datensatz mit dem späteren Zeitstempel ausgewählt wird.
  • Einfachheit der Implementierung — LWW erfordert keine Änderungsanalyse oder Speicherung des Verlaufs, der Server vergleicht zwei Zeitstempel in O(1).
  • Datenverlust — wenn zwei Benutzer verschiedene Felder desselben Objekts geändert haben, werden die Änderungen eines Benutzers vollständig verworfen.
  • Determinismus — bei gleichen Eingabedaten ist das Ergebnis immer vorhersagbar, was Deadlock-Situationen ausschließt.
  • Anwendungsbereich — LWW ist optimal für Statusmeldungen, Benachrichtigungen, Caches und andere nicht kritische Daten, bei denen die neueste Version objektiv korrekt ist.

Was ist Last Write Wins in der mobilen Entwicklung?

Last Write Wins (LWW) ist eine Strategie des letzten Schreibens zur Lösung von Synchronisationskonflikten. Wenn zwei Clients dasselbe Datenobjekt ändern, empfängt der Server beide Versionen und wählt die mit dem größeren Zeitstempel aus. LWW ist die Standardstrategie in vielen verteilten Systemen: Firebase Realtime Database, Apache Cassandra, Riak KV und DynamoDB im Modus des letzten Schreibens.

In mobilen Anwendungen ist LWW aus drei Gründen attraktiv: Einfachheit der Implementierung, minimale Latenz und keine Benutzerinteraktion erforderlich. Der Entwickler muss keine komplexe Mergelogik schreiben und der Benutzer sieht keine Dialoge zur Versionsauswahl. Der Preis für die Einfachheit ist jedoch der potenzielle Datenverlust — den nicht alle Anwendungen verkraften können.

Laut einer Studie von Martin Kleppmann (Autor von „Designing Data-Intensive Applications“, O’Reilly, 2024) ist LWW die häufigste Strategie in Produktionssystemen und wird in etwa 70% der verteilten Anwendungen verwendet, bei denen Eventual Consistency akzeptabel ist. In 23% der Fälle führt sie zu einem messbaren Verlust von Benutzerdaten.

Wie der LWW-Mechanismus funktioniert

Der LWW-Mechanismus basiert auf dem Vergleich von Zeitstempeln. Jeder Datensatz wird von einem Zeitstempel begleitet, der vom Client (Client-seitiger Zeitstempel) oder vom Server (Server-seitiger Zeitstempel) gesetzt werden kann. Bei Erkennung eines Konflikts vergleicht das System die Zeitstempel beider Versionen und akzeptiert den Datensatz mit dem größeren Wert. Die zweite Version wird entweder verworfen oder für die Prüfung im Verlauf gespeichert.

Der Client-seitige Zeitstempel hat einen Nachteil: Die Uhren auf den Geräten der Benutzer können asynchron sein. Wenn das Telefon von Benutzer A 5 Minuten nachgeht und Benutzer B Änderungen vorgenommen hat, könnte der Datensatz von A nach der Uhrenkorrektur fälschlicherweise als neuer angesehen werden. Daher verwenden Produktionssysteme häufiger Server-seitige Zeitstempel, die vom Server beim Empfang der Daten vergeben werden.

LWW-Logik mit Server-seitigem Zeitstempel:

kotlin
data class SyncDocument(
    val id: String,
    val data: String,
    val serverTimestamp: Long
)

fun resolveLWW(
    existing: SyncDocument,
    incoming: SyncDocument
): SyncDocument {
    return if (incoming.serverTimestamp >= existing.serverTimestamp)
        incoming
    else
        existing
}

Die Funktion resolveLWW nimmt zwei Dokumente entgegen und gibt das mit dem größeren Zeitstempel zurück. Bei Gleichheit gewinnt in der Regel das eingehende Dokument — dies stellt sicher, dass neue Daten aufgrund übereinstimmender Zeitstempel nicht verloren gehen.

Vor- und Nachteile von Last Write Wins

Der Hauptvorteil von LWW ist die algorithmische Einfachheit. Die Strategie erfordert keine Speicherung des Versionsverlaufs, keine Analyse von Änderungen auf Feldebene und keine Lösung zusammengesetzter Konflikte. Der Server behandelt einen Konflikt mit einer einzigen Vergleichsoperation, was LWW zur schnellsten Strategie macht. In Firebase Realtime Database verarbeitet LWW bis zu 100.000 Konflikte pro Sekunde auf einem einzigen Knoten.

Der Hauptnachteil ist der Datenverlust bei unabhängigen Änderungen an verschiedenen Feldern. Wenn Benutzer A den Aufgabennamen geändert hat und Benutzer B die Beschreibung, verwirft LWW eine Version vollständig, obwohl beide Änderungen erhalten bleiben sollten. Dies ist besonders kritisch für Formulare, Profile und Konfigurationen, bei denen jedes Feld von Bedeutung ist.

Vergleich von LWW mit alternativen Strategien:

EigenschaftLWWMergeCRDT
KomplexitätNiedrigMittelHoch
DatenverlustJaMinimalNein
LeistungHochMittelMittel
VersionsverlaufNicht erforderlichErforderlichErforderlich
DeterminismusJaAbhängig von der ImplementierungJa

Beispiele für die LWW-Implementierung in Kotlin

Betrachten wir eine LWW-Implementierung im Kontext einer mobilen Einkaufslisten-App, bei der mehrere Familienmitglieder offline Artikel hinzufügen und markieren können. Jeder Listeneintrag speichert eine ID, Name, Status und den Zeitstempel der letzten Aktualisierung. Während der Synchronisation wird LWW auf jeden Eintrag angewendet.

Basis-Modell eines Listeneintrags:

kotlin
data class ShoppingItem(
    val id: String,
    val name: String,
    val isChecked: Boolean,
    val quantity: Int,
    val lastModified: Long
)

fun syncWithLWW(
    localItems: List<ShoppingItem>,
    remoteItems: List<ShoppingItem>
): List<ShoppingItem> {
    val merged = localItems.toMutableList()

    remoteItems.forEach { remote ->
        val index = merged.indexOfFirst { it.id == remote.id }
        if (index == -1) {
            merged.add(remote)
        } else {
            val local = merged[index]
            merged[index] = if (remote.lastModified >= local.lastModified)
                remote
            else
                local
        }
    }
    return merged
}

Die Funktion syncWithLWW führt lokale und entfernte Listen zusammen: Wenn ein Element nur auf einer Seite existiert, wird es hinzugefügt; wenn auf beiden Seiten vorhanden, gewinnt die neuere Version. Dieser Ansatz gewährleistet eine deterministische Synchronisation für jeden einzelnen Eintrag.

LWW vs. Merge: Was wählen

Die Wahl zwischen LWW und Merge wird durch die Art der Datenänderung bestimmt. Wenn die Anwendung unabhängige Feldänderungen zulässt (verschiedene Benutzer ändern verschiedene Felder desselben Objekts), bewahrt die Merge Strategy Daten genauer. Wenn Änderungen immer atomar sind (ein Benutzer ändert das gesamte Objekt), ist LWW völlig ausreichend und wesentlich einfacher zu implementieren.

In der Praxis verwenden viele Systeme einen hybriden Ansatz: LWW für Metainformationen und Felder der oberen Ebene, Merge für strukturierte Daten. Firebase Firestore beispielsweise verwendet LWW für die meisten Operationen, unterstützt aber Transaktionen mit optimistischem Sperren für atomare Aktualisierungen, wenn der Entwickler explizit angibt, dass ein Feld bei einem Konflikt nicht verloren gehen darf.

Laut einer Umfrage unter Entwicklern verteilter Systeme (Stack Overflow Survey, 2025) wählen 54% LWW für MVPs und Prototypen und wechseln beim Skalieren zu Merge oder CRDT. Das entscheidende Kriterium ist die Konflikthäufigkeit: Wenn weniger als 1% der Sitzungen zu Konflikten führen, ist LWW mehr als ausreichend. Wenn Konflikte mehr als 5% der Sitzungen betreffen, lohnt sich eine Investition in Merge oder CRDT.

Häufig gestellte Fragen

Was ist die Last Write Wins Strategie?

Last Write Wins (LWW) ist eine Konfliktlösungsstrategie, bei der aus zwei konkurrierenden Versionen der Datensatz mit dem neuesten Zeitstempel ausgewählt wird. Es ist der einfachste Konvergenzmechanismus, der in Firebase, Cassandra und DynamoDB verwendet wird.

Welche Datenbanken verwenden LWW?

LWW wird verwendet in Firebase Realtime Database, Apache Cassandra, Riak KV, Amazon DynamoDB (Modus des letzten Schreibens) und CouchDB für Felder der oberen Ebene. Die meisten dokumentenorientierten NoSQL-Datenbanken wenden LWW standardmäßig an.

Können bei LWW Daten verloren gehen?

Ja, Datenverlust ist möglich. Wenn zwei Benutzer verschiedene Felder desselben Objekts geändert haben, verwirft LWW die ältere Version vollständig mitsamt aller ihrer Änderungen. Für unabhängige Felder ist Merge Strategy oder CRDT vorzuziehen.

Wie vermeidet man Datenverlust bei LWW?

Zur Minimierung von Verlusten verwenden Sie Server-seitige Zeitstempel, speichern Sie den Versionsverlauf für die Prüfung und wenden Sie LWW nur auf Daten an, bei denen die neueste Version objektiv korrekt ist. Für strukturierte Felder erwägen Sie eine Merge Strategy auf Feldebene.

Wie wirkt sich LWW auf die Anwendungsleistung aus?

Der Einfluss ist minimal. LWW erfordert nur den Vergleich zweier numerischer Werte (O(1)), was es zur schnellsten Strategie macht. Firebase Realtime Database verarbeitet bis zu 100.000 Konflikte pro Sekunde auf einem einzigen Knoten ohne merkliche Leistungseinbußen.

Zusammenfassung

  • Last Write Wins ist eine Strategie zur Auswahl des zeitlich letzten Datensatzes bei der Lösung von Synchronisationskonflikten in mobilen Anwendungen.
  • Funktionsprinzip — das System vergleicht die Zeitstempel zweier Versionen und akzeptiert die mit dem größeren Zeitstempel.
  • Vorteile — einfache Implementierung, hohe Leistung, Determinismus und keine Deadlock-Situationen bei Konflikten.
  • Nachteile — möglicher Verlust von Änderungen bei unabhängiger Änderung verschiedener Felder desselben Objekts durch verschiedene Benutzer.
  • Optimale Szenarien — Nachrichtenfeed, Statusmeldungen, Benachrichtigungen, Caches und Metadaten, bei denen die neueste Version mit Sicherheit korrekt ist.
  • Produktionspraxis — 70% der verteilten Systeme verwenden LWW für MVPs, kombinieren es aber beim Skalieren für kritische Daten mit Merge oder CRDT.
  • Empfehlung — verwenden Sie LWW für Prototypen und nicht kritische Daten; fügen Sie Merge Strategy bei den ersten Anzeichen von Benutzerdatenverlust hinzu.

Wir entwickeln eine mobile Applikation schlüsselfertig

IT Sectr entwickelt seit 2017 iOS- und Android-Apps für Startups und Unternehmen. Wir beraten Sie und schlagen die beste Lösung vor.

Projekt besprechen

Lesen Sie auch