ACID beschreibt die Garantien, die dir eine Transaktion gibt. Atomicity heißt, entweder landen alle Writes oder keiner. Consistency heißt, die Transaktion bringt die Datenbank von einem gültigen Zustand in den nächsten und respektiert dabei ihre Constraints. Isolation heißt, dass nebenläufige Transaktionen die halbfertige Arbeit der anderen nicht sehen, so weit das Isolationslevel es zusagt. Durability heißt, dass die Daten einen Crash überleben, sobald ein Commit zurückkommt.
Warum Interviewer das fragen
Fast jeder Produktionsbug rund um Geld, Lagerbestand oder doppelte Writes geht auf ein Missverständnis an dieser Stelle zurück. Der Interviewer will prüfen, ob du das als Garantien der Datenbank behandelst und nicht als Magie, und vor allem, ob du weißt, dass Isolation einstellbar ist und der Default in den meisten Systemen nicht volle Serialisierbarkeit ist. Präzise Definitionen zeigen, dass du über Korrektheit unter Nebenläufigkeit nachdenken kannst.
So baust du deine Antwort auf
- Definier jeden der vier Buchstaben in einem Satz.
- Betone, dass Isolation ein Regler ist und keine einzelne Einstellung.
- Verknüpf eine der Eigenschaften mit einem echten Bug, den du gesehen hast.
- Erwähn, was sich ändert, sobald du verteilt bist.
Beispielantwort
Atomicity ist alles oder nichts: Wenn ich ein Konto belaste und ein anderes gutschreibe, committen entweder beide Writes oder keiner. Consistency heißt, die Transaktion hinterlässt die Datenbank so, dass ihre Constraints erfüllt sind, Foreign Keys und Check Constraints halten also auf beiden Seiten. Isolation ist die spannende, weil sie ein Regler ist und kein Versprechen. Die meisten Datenbanken stehen per Default auf Read Committed, was Non-Repeatable Reads und Phantom Rows weiterhin erlaubt, wenn du also serialisierbares Verhalten annimmst, lieferst du irgendwann eine Race Condition aus. Durability heißt, dass der Write einen Stromausfall überlebt, sobald das Commit zurückkommt, in der Regel weil er im Write Ahead Log gelandet und geflusht ist. Erwischt hat es mich bei einem Endpoint zum Einlösen von Gutscheinen. Wir haben die verbleibenden Nutzungen geprüft und dann in zwei getrennten Statements unter Read Committed dekrementiert, und zwei gleichzeitige Requests haben beide eine verbleibende Nutzung gesehen. Der Fix war ein einziges bedingtes Update mit einer where-Klausel auf den Restzähler, womit Prüfung und Write atomar waren.
Steht dieses Vorstellungsgespräch bald an? GhostPilot hört bei deinem Live-Call mit, erkennt die Frage in dem Moment, in dem sie gestellt wird, und bringt dir eine strukturierte Antwort in Echtzeit auf den Bildschirm. Probier es im nächsten Mock aus, oder hol dir einen $29 Session Pass, kein Abo, für den Ernstfall.
So funktioniert esNachfragen, mit denen du rechnen solltest
- Auf welchem Isolationslevel läuft deine Datenbank standardmäßig?
- Was ist ein Phantom Read und welches Level verhindert es?
- Wie verändern sich diese Garantien, sobald du über Nodes shardest?
Weitere Fragen für Softwareentwickler
Dein Interviewer stellt seine eigene Version davon. Kopier deine echte Stellenbeschreibung in den kostenlosen Question Predictor und bekomm die 20 Fragen, die diese Rolle am wahrscheinlichsten stellt, samt dem, worauf jede wirklich abzielt.
Meine Fragen vorhersagen