Engineering Kiosk Episode #165 Pessimistisches und Optimistisches Sperren in Datenbanken: Eine Geschichte

#165 Pessimistisches und Optimistisches Sperren in Datenbanken: Eine Geschichte

Diese Episode in deiner Podcast-App hören...

Shownotes / Worum geht's?

Pessimistisches und Optimistisches Sperren in Datenbanken.

Im Engineering Kiosk Adventskalender 2024 sprechen befreundete Podcaster⋅innen und wir selbst, Andy und Wolfi, jeden Tag kurz & knackig innerhalb von wenigen Minuten über ein interessantes Tech-Thema.

Unsere aktuellen Werbepartner findest du auf https://engineeringkiosk.dev/partners

Das schnelle Feedback zur Episode:

👍 (top)  👎 (geht so)

Sprungmarken

(00:00:00) Pessimistisches und Optimistisches Sperren in Datenbanken

Hosts

Feedback

 

Transkript

Das Transkript wurde automatisiert per Speech-to-Text erstellt und kann daher Fehler enthalten.

Andy Grunwald (00:00:08 - 00:00:40) Teilen

Herzlich willkommen zu einem weiteren Türchen vom Engineering Kiosk Adventskalender. Heute dreht sich alles um das Thema Datenbanken. Wir starten mit einem wahren Kracher, um dir ein Lächeln ins Gesicht zu zaubern. Ich hoffe, die Query konnte sich noch einen Platz am Tisch sichern. Aber die Zeit um Weihnachten ist auch die Zeit für schöne Geschichten. Heute präsentiert Wolfgang euch eine schöne Weihnachtsgeschichte rund um Wichtel und Weihnachtswünsche. Wolfgang, gib alles.

Wolfi Gassler (00:00:41 - 00:05:39) Teilen

Die Weihnachtswerkstatt wie Die Wichtel mit optimistischem Locking Weihnachten retteten in der hochmodernen Weihnachtswerkstatt des Notebooks wird die Arbeit von einer riesigen Taskdatenbank gesteuert. Darin sind alle Weihnachtswünsche von 2 Milliarden Kindern gespeichert und tausend fleißige Wichtel arbeiten rund um die Uhr Ÿousand um diese Wünsche zu erfüllen. Um Chaos zu vermeiden, verwendet die Datenbank pessimistisches Locking. Sobald ein Wichtel wie Trixi einen Task aus der Datenbank zieht, wird dieser sofort gesperrt, damit kein anderer Wichtel denselben Task bearbeiten kann. Doch eines Nachts, als die Deadline bedrohlich näher rückt, passiert das Undenkbare. Neun, acht, sieben, sechs, fünf, vier, drei, zwei, eins. Bau eines magischen Spielzeugroboters für Andy in Duisburg wird gesperrt und bleibt gesperrt. Wichtel Max versucht die Aufgabe zu übernehmen, aber die Datenbank meldet das gesperrt. Zugriff verweigert. Das ist unmöglich. Ruft Max. Wer hat den Task gesperrt? Die Wichtel durchsuchen fieberhaft die Werkstatt, bis sie Trixi schlafend hinter einem riesigen Geschenksberg finden, noch mit ihrem Tablet in der Hand. Der Task ist immer noch gesperrt, obwohl Trixi längst eingeschlafen ist. Und die Deadline rückt näher und der Weihnachtsmann sieht besorgt auf die Anzeige. Task Q blockiert. Doch da kommt Wichtel Eller, die kluge IT Expertin, um die Ecke und schlägt eine radikale Lösung vor. Wir müssen auf optimistisches Locking umstellen. Wichtel Max runzelt die Stirn. Aber, aber, aber was, wenn zwei von uns denselben Task bearbeiten? Wird das nicht chaotisch? Ella holt ihr magisches IT Tablet hervor und beginnt zu erklären. Stell dir vor, jeder Task in der Datenbank hat eine Versionsnummer, die bei seiner Erstellung auf eins gesetzt wird, sagt sie und zeichnet ein Task Symbol in die Luft. Wenn jetzt ein Wichtel wie du oder Trixi den Task bearbeiten, wird diese Versionsnummer mitgelesen und gemerkt. Nehmen wir an, fährt sie fort. Du öffnest den Task 9000078 95321 Spielzeugroboter für Andi. Und Die Versionsnummer des Tasks ist erste du fängst an zu arbeiten und gleichzeitig öffnet auch Trixi denselben Task und sieht ebenfalls die Versionsnummer. Erste nehmen wir an, fährt sie fort. Du öffnest den Task 9000863 21 Spielzeugroboter für Andi und Die Versionsnummer des Tasks ist erste. Du fängst an zu arbeiten und gleichzeitig öffnet auch Trixi denselben Task und sieht ebenfalls die Versionsnummer erste. Ihr merkt beide nicht, dass ihr gleichzeitig daran arbeitet. Max nickt mehr oder weniger verständnisvoll, aber aber was passiert, wenn wir beide fertig sind? Ella lächelt. Und jetzt kommt die Magie des optimistischen Lockings. Beim Speichern prüft die Datenbank, ob sich die Versionsnummer des Tasks verändert hat, während ihr beide daran gearbeitet habt. Angenommen, Trixi speichert zuerst. Die Datenbank sieht, die aktuelle Versionsnummer ist eins, also wird die Änderung akzeptiert. Jetzt erhöht die Datenbank die Versionsnummer auf zweite. Ÿousand, wenn du danach speichern willst, erklärt Ella weiter, vergleicht die Datenbank die Versionsnummer eins, die du gemerkt hast, mit der aktuellen Versionsnummer zweite. Ah. Max schlägt sich mit der Hand auf die Stirn und wenn die Nr. Nicht übereinstimmt, merkt die Datenbank, dass ich mit veralteten Daten gearbeitet habe. Genau, sagt Ella. Dein Speichern wird abgelehnt und du bekommst eine Meldung, dass sich der Task geändert hat. Du kannst die neue Version laden und deine Änderungen erneut vornehmen, falls sie noch relevant sind. Das ist clever, ruft Max beeindruckt. So wird nichts gesperrt, aber wir arbeiten trotzdem sicher und merken es beim Speichern, wenn wirklich ein Konflikt entsteht. Ganz genau, lächelt Ella. Das nennen wir optimistisches Locking. Es setzt darauf, dass nicht ständig Konflikte passieren und nur wenn wirklich jemand anderer schneller ist, müssen wir eingreifen. So sparen wir uns unnötige und vor allem teure atomare Blockierungen und arbeiten viel schneller. Also scheint jetzt Weihnachten gerettet zu sein, denn dank optimistischem Locking laufen alle Tasks wieder reibungslos. Die Wichtel können mehr Aufgaben gleichzeitig bearbeiten und die Datenbank bewältigt den Ansturm ohne Sperrungen schneller und reibungsloser als je zuvor. Die Wichtel konnten ohne ständige Sperrungen arbeiten und selbst wenn mal ein Konflikt auftauchte, wurde dieser schnell und effizient gelöst. So war der magische Schlitten des Weihnachtsmann pünktlich beladen und die Deadline war gerettet. Als die Wichtel dann nach der hektischen Nacht versammelt am wärmenden Kamin saßen und den Erfolg feierten, sagte der Weihnachtsmann mit einem zufriedenen Lächeln. Es ist schön zu sehen, dass wir mit einer optimistischen Herangehensweise so viel Geschwindigkeit und Effizienz gewonnen haben. Unsere Datenbank hat uns etwas Wertvolles gelehrt. Man muss nicht immer auf den schlimmsten Fall vorbereitet sein. Wenn wir darauf vertrauen, dass Dinge gut gehen und nur dann eingreifen, wenn wirklich ein Problem auftritt, können wir viel produktiver und entspannter arbeiten. Und damit im Namen von allen Wichteln und dem Weihnachtsmann frohe Weihnachten.

Andy Grunwald (00:05:39 - 00:06:03) Teilen

Danke Wolfgang für diese schöne Weihnachtsgeschichte. Ich bin richtig froh, dass Weihnachten dank kluger Strategien nun für alle Kinder gerettet ist. Wenn ihr auch mal eine gute Tat tun wollt, empfiehlt diese Episode doch mal ein paar Freunden oder Kolleginnen weiter oder teilt diese auf Social media. Dies würde uns, Wolfgang und mich, ebenfalls sehr froh machen. Bis dahin eine schöne Adventszeit wünscht euch euer engineering Kiosk.