Doppelbuchungen verhindern: warum Systeme versagen, und das Modell, das es nicht kann

Doppelbuchungen passieren fast nie, weil ein Kalender „einen Fehler gemacht hat“. Sie passieren, weil die Software prüfte, ob ein Termin frei war, und ihn reservierte, als zwei getrennte Schritte mit einer Lücke dazwischen – und eine zweite Kundin durch die Lücke schlüpfte. Schließen Sie diese Lücke, und der Rest des Kalenders kann so einfach oder aufwendig sein, wie Sie wollen. Lassen Sie sie offen, und kein noch so poliertes Buchungs-Widget verhindert, dass gelegentlich zwei Personen auf demselben Stuhl landen.

Wo die Lücke wirklich entsteht

Die übliche Abfolge hinter fast jeder Buchung: prüfen „ist dieser Termin noch frei?“, „ja“ als Antwort bekommen, dann die Buchung schreiben. Ein Lesen, dann ein Schreiben – und dazwischen, wie kurz auch immer, ein Zeitfenster. Eine zweite Anfrage, die denselben Termin während dieses Fensters prüft, sieht ebenfalls „ja, noch frei“. Beide glauben nun, einen freien Termin zu buchen, weil er es in dem Moment, in dem jede von ihnen hinsah, tatsächlich war.

Sie können nicht durch das Durchklicken einer Demo an einem ruhigen Dienstagnachmittag erkennen, ob Prüfung und Schreibvorgang darunter sicher gekoppelt oder gefährlich getrennt sind – der Kalender sieht so oder so identisch aus.

Warum "einfach einen schöneren Kalender" das nicht löst

Viel Buchungssoftware ist unter dem Widget ein generischer Formular-Baukasten, der nie dafür ausgelegt war, dass zwei Personen gleichzeitig dasselbe begrenzte Gut beanspruchen. Die Terminauswahl kann flüssig sein, die Verfügbarkeit live wirken, der Bestätigungsbildschirm sauber – und das Backend prüft trotzdem mit einem Lesevorgang und schreibt mit einem separaten, späteren Schreibvorgang. Echter, gleichzeitiger Traffic findet die Naht.

Das Modell, das die Lücke wirklich schließt

Behandeln Sie „prüfen“ und „reservieren“ nicht länger als zwei Vorgänge: Führen Sie die Verfügbarkeitsprüfung erneut aus und schreiben Sie die Buchung innerhalb einer einzigen Datenbanktransaktion, die die Zeilen für diesen Termin sperrt. Welche Anfrage auch zuerst ankommt, sie schließt ihre Prüfung-und-Schreiben ununterbrochen ab; die zweite wartet, bis sie an der Reihe ist, und prüft dann erneut gegen die neue Realität. Es bleibt kein Zeitfenster, in dem auf veralteten „noch verfügbar“-Informationen gehandelt werden könnte – die Datenbank erzwingt die Reihenfolge, statt dass Anwendungscode nur hofft, dass nichts kollidiert.
Buchungen und Terminplanung im Olmira-Adminbereich

Was wirklich passiert, wenn zwei Personen gleichzeitig auf „buchen“ klicken

1

Beide Anfragen treffen kurz nacheinander ein

2

Eine Anfrage erhält die Sperre zuerst

3

Die erste Anfrage prüft neu und schreibt — beides zusammen

4

Die zweite Anfrage prüft erneut gegen die neue Realität

5

Der zweite Kunde erfährt es sofort

Wie Olmira das löst

Die Buchungslogik von Olmira führt die erneute Verfügbarkeitsprüfung und das Schreiben der Buchung als einen einzigen Schritt aus, innerhalb einer einzigen gesperrten Datenbanktransaktion — wenn also zwei Kunden gleichzeitig denselben Termin ansteuern, wird eine Buchung festgeschrieben, und der anderen wird mitgeteilt, noch bevor Geld fließt, dass der Termin gerade weg ist. Dieselbe Sperre umfasst auch die zugrunde liegende Ressource, nicht nur den verkauften Service, sodass zwei verschiedene Services, die sich einen Raum oder eine Person aus dem Team teilen, sie ebenfalls nicht unbemerkt doppelt belegen können. Ein separater, kleinerer Schutz fängt das häufigere Missgeschick ab — derselbe Kunde klickt zweimal auf „buchen“ — und bittet ihn um eine Bestätigung, statt still zwei Termine anzulegen. Wie das zusammenspielt, sehen Sie auf der Buchungsseite.

Verwandte Leitfäden

Personal, Räume, Ausrüstung

No-Shows: Was die Zahl wirklich bewegt

Ein Kalender, der die Wahrheit über freie Zeiten sagt

Echte Zeitfenster, geprüft und gesperrt im Moment der Buchung — keine Vermutung auf Basis dessen, was die Seite vor einer Sekunde geladen hat.