{"id":23162,"date":"2022-03-27T13:11:22","date_gmt":"2022-03-27T11:11:22","guid":{"rendered":"https:\/\/blog.mi.hdm-stuttgart.de\/?p=23162"},"modified":"2023-08-06T21:39:25","modified_gmt":"2023-08-06T19:39:25","slug":"slog-deterministische-datenbanksysteme-die-losung-fur-alle-probleme","status":"publish","type":"post","link":"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/2022\/03\/27\/slog-deterministische-datenbanksysteme-die-losung-fur-alle-probleme\/","title":{"rendered":"SLOG &#8211; Deterministische Datenbanksysteme die L\u00f6sung f\u00fcr alle* Probleme?"},"content":{"rendered":"\n<h2 class=\"wp-block-heading\">*zumindest im Bereich georeplizierter Datenbanken<\/h2>\n\n\n\n<p>Wir leben in einer globalisierten Welt, in welcher wir Anwendungen auf der ganzen Welt nutzen k\u00f6nnen. Egal wo wir gerade sind, k\u00f6nnen wir auf diese Programme und Daten zugreifen. Doch diese M\u00f6glichkeit stellt Softwaresysteme heutzutage vor gro\u00dfe Herausforderungen. Nutzer m\u00f6chten so schnell wie m\u00f6glich auf Daten zugreifen und gehen davon aus, dass die Daten, die sie bekommen auch korrekt und auf dem richtigen Stand sind. Um die Verf\u00fcgbarkeit der Daten f\u00fcr die Nutzer zu erh\u00f6hen, werden moderne Datenbank- und Softwaresysteme repliziert. Das hei\u00dft es werden Kopien derselben Daten hergestellt und regelm\u00e4\u00dfig abgeglichen, um die Daten auf dem gleichen Stand zu halten. Moderne Anwendungen replizieren Daten also \u00fcber geografische Regionen hinweg. Jedoch zwingen bestehende Datenbanksysteme, welche geografische Replikationen unterst\u00fctzen, die Nutzer auf mindestens eines der folgenden Merkmale zu verzichten, um eine hohe Verf\u00fcgbarkeit zu erreichen:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Strict Serilizability:<\/strong> Bei strikter Serialisierbarkeit scheinen die Operationen in einer bestimmten Reihenfolge zu erscheinen, die mit der Echtzeit-Reihenfolge der Operationen \u00fcbereinstimmen. Das hei\u00dft wenn zum Beispiel Operation A abgeschlossen ist, bevor Operation B beginnt, sollte A in der Serialisierungsreihenfolge vor B erscheinen. Die Serialisierbarkeit ist der Ausf\u00fchrungsplan f\u00fcr die parallele Ausf\u00fchrung mehrere Transaktionen. Es gibt die Reihenfolge vor, in welcher die einzelnen Operationen der Transaktion ausgef\u00fchrt werden und es verh\u00e4lt sich wie ein System, das auf einer einzigen Maschine l\u00e4uft und die Transaktionen sequenziell verarbeitet.<\/li>\n\n\n\n<li><strong>Low-latency writes:<\/strong> Um strikte Serialisierbarkeit zu erreichen muss auf Schreibvorg\u00e4nge mit geringer Latenz verzichtet werden. Um die strenge Serialisierbarkeit in georeplizierten Datenspeichern zu garantieren, muss es mindestens ein Koordinationsprotokoll geben, um einen Schreibvorgang auf alle Replikate zu \u00fcbertragen. Genau diese Koordination erm\u00f6glicht zwar die strikte Serialisierbarkeit, erh\u00f6ht aber die Latenzzeit bei jedem Schreibvorgang. Je weiter die Regionen voneinander entfernt sind, desto l\u00e4nger dauert es einen Schreibvorgang abzuschlie\u00dfen.<\/li>\n\n\n\n<li><strong>High transaction throughput:<\/strong> Im Allgemeinen wird die Geschwindigkeit eines Datenbanksystems anhand des Transaktionsdurchsatzes gemessen, ausgedr\u00fcckt als Anzahl der Transaktionen pro Sekunde. In replizierten Datenbanken kann es zu einer bereichs\u00fcbergreifenden Koordinierung kommen, das hei\u00dft wenn bei Lese- und Schreibvorg\u00e4ngen auf eine weiter entfernte Region zugegriffen werden muss. Normalerweise sind die mit dem Nutzer verbunden Daten stark auf den physischen Standort des Nutzers ausgerichtet. Beliebige Transaktionen k\u00f6nnen jedoch auf mehrere Datenelemente zugreifen, wobei jedes Datenelement in einer anderen Region verwaltet wird. Hier muss schlie\u00dflich wieder eine regions\u00fcbergreifende Koordinierung stattfinden, dies ist zeitaufw\u00e4ndig. Das Zeitfenster in den kollidierenden Transaktionen nicht ausgef\u00fchrt werden k\u00f6nnen ist gro\u00df und der Transaktionsdurchsatz verringert.&nbsp;<\/li>\n<\/ul>\n\n\n\n<p>Um die Probleme zu l\u00f6sen, die sich zur Erf\u00fcllung der genannten Eigenschaften ergeben, gibt es unterschiedliche Ans\u00e4tze. Ein Ansatz ist Determinismus. Was das genau hei\u00dft und wie es genau funktioniert wollen wir an dem System \u201eSLOG\u201c genauer betrachten. SLOG ist laut dem Paper von Run et al. \u201eSLOG: Serializable, Low-Latency, Geo-Replicated Transactions\u201c der erste Systementwurf, welcher alle drei genannten Eigenschaften erf\u00fcllt.<\/p>\n\n\n\n<p>Nachdem im Folgenden die Probleme georeplizierter Datenbanken noch einmal genauer betrachtet werden, wird der Begriff Determinismus vor allem im Kontext von modernen Datenbanksystemen gekl\u00e4rt und das Prinzip wird anhand des Systems SLOG noch einmal genauer erl\u00e4utert.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Was ist das Problem?<\/strong><\/h2>\n\n\n\n<p>Die Probleme, die uns in replizierten Datenbanken begegnen, erschlie\u00dfen sich bereits aus der vorangegangenen Erkl\u00e4rung der drei Eigenschaften moderner Anwendungen. Im Folgenden wird das Ganze noch einmal Schritt f\u00fcr Schritt genauer betrachten und es wird klar, warum es zu diesen Problemen kommt.<\/p>\n\n\n\n<p>Single-Node-Datenbanken \u2013 Datenbanken, die f\u00fcr eine einzige Maschine konzipiert wurden \u2013 funktionieren sehr gut. Wenn Kunde 2 den Artikel 3 kaufen m\u00f6chte, werden diese zwei Items gelocked und erst dann sind die \u00c4nderungen m\u00f6glich (vgl. Abbildung 1). In einem einfachen Datenbanksystem ist die Serialisierbarkeit also ohne gro\u00dfes Zutun garantiert und \u00fcber die anderen zwei Eigenschaften muss sich gar nicht gek\u00fcmmert werden, da diese in diesem Kontext noch gar nicht wirklich relevant sind.<\/p>\n\n\n\n<figure class=\"wp-block-image aligncenter size-large\"><a href=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2022\/03\/SingleNode.jpg\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"246\" data-attachment-id=\"23164\" data-permalink=\"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/2022\/03\/27\/slog-deterministische-datenbanksysteme-die-losung-fur-alle-probleme\/singlenode\/\" data-orig-file=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2022\/03\/SingleNode.jpg\" data-orig-size=\"1450,348\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;Julia Grimm&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;1648320204&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"SingleNode\" data-image-description=\"\" data-image-caption=\"\" data-large-file=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2022\/03\/SingleNode-1024x246.jpg\" src=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2022\/03\/SingleNode-1024x246.jpg\" alt=\"\" class=\"wp-image-23164\" srcset=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2022\/03\/SingleNode-1024x246.jpg 1024w, https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2022\/03\/SingleNode-300x72.jpg 300w, https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2022\/03\/SingleNode-768x184.jpg 768w, https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2022\/03\/SingleNode.jpg 1450w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/a><figcaption class=\"wp-element-caption\"><em>Abbildung 1: Single-Node-DB <\/em><\/figcaption><\/figure>\n\n\n\n<p>Bei Multi-Node-Datenbanken wird das ganze schon etwas schwieriger und es braucht ein bisschen mehr Anstrengung. Man spricht hierbei auch von einem Scalability Problem. Die Kunden und die Artikel sind nicht mehr wie im Single-Node-Beispiel auf einer Maschine, sondern auf vier Maschinen aufgeteilt. Jede Maschine nutzt nur den Code welcher relevant f\u00fcr ihn ist. Jedoch muss es irgendeine Kommunikation zwischen beiden Maschinen geben, die den Maschinen gegenseitig best\u00e4tig, dass jede Maschine das getan hat, was sie auch tun soll. Jede Maschine muss ihren Part der Transaktion eigenst\u00e4ndig durchf\u00fchren. Diese Kommunikationsproblem kann durch Locking oder auch durch eine Two-Phase-Commit-Protokoll gel\u00f6st werden (vgl. Abbildung 2). Hierbei ergibt sich jedoch aufgrund dieser Protokolle wieder ein neues Problem. Durch das gesamte Protokoll muss gelockt werden. Dies f\u00fchrt zu einer Reduzierung der Geschwindigkeit unserer Transaktionen, da die Zeitr\u00e4ume, \u00fcber die die Locks gehalten werden m\u00fcssen, lange sind.<\/p>\n\n\n\n<figure class=\"wp-block-image aligncenter size-full\"><a href=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2022\/03\/MultiNodeDB.gif\"><img loading=\"lazy\" decoding=\"async\" width=\"853\" height=\"480\" data-attachment-id=\"23165\" data-permalink=\"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/2022\/03\/27\/slog-deterministische-datenbanksysteme-die-losung-fur-alle-probleme\/multinodedb\/\" data-orig-file=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2022\/03\/MultiNodeDB.gif\" data-orig-size=\"853,480\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"MultiNodeDB\" data-image-description=\"\" data-image-caption=\"\" data-large-file=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2022\/03\/MultiNodeDB.gif\" src=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2022\/03\/MultiNodeDB.gif\" alt=\"\" class=\"wp-image-23165\"\/><\/a><figcaption class=\"wp-element-caption\"><em>Abbildung 2: Multi-Node-DB<\/em><\/figcaption><\/figure>\n\n\n\n<p>Wenn wir jetzt aber repliziere Datenbanken haben, also Kopien der Datenbank auf der ganzen Welt verteilt, m\u00fcssen solche Locks noch viel l\u00e4nger gehalten werden, was noch mehr Zeit ben\u00f6tigt.&nbsp; &nbsp;&nbsp;&nbsp;<\/p>\n\n\n\n<p>Durch das Nutzen von replizierten Datenbanken an verschiedenen Locations wird N\u00e4he zu den Nutzern erreicht und um dadurch die Verf\u00fcgbarkeit zu steigern. Hierbei wird eine Transaktion erst in der eigentlichen Location durchgef\u00fchrt und danach \u2013 genauer gesagt nach dem das Commit-Protokoll durchgef\u00fchrt wird \u2013 wird die die Datenbank synchron in allen Locations auf der ganzen Welt repliziert (vgl. Abbildung 3). Das Problem ist hier, wie bereits erw\u00e4hnt, dass die Locks sehr lange gehalten werden m\u00fcssen, bis die Replikation abgeschlossen ist.<\/p>\n\n\n\n<figure class=\"wp-block-image aligncenter size-full\"><a href=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2022\/03\/ReplicaDB.gif\"><img loading=\"lazy\" decoding=\"async\" width=\"853\" height=\"480\" data-attachment-id=\"23166\" data-permalink=\"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/2022\/03\/27\/slog-deterministische-datenbanksysteme-die-losung-fur-alle-probleme\/replicadb\/\" data-orig-file=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2022\/03\/ReplicaDB.gif\" data-orig-size=\"853,480\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"ReplicaDB\" data-image-description=\"\" data-image-caption=\"\" data-large-file=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2022\/03\/ReplicaDB.gif\" src=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2022\/03\/ReplicaDB.gif\" alt=\"\" class=\"wp-image-23166\"\/><\/a><figcaption class=\"wp-element-caption\"><em>Abbildung 3: Georeplizierte DB<\/em><\/figcaption><\/figure>\n\n\n\n<p>War es bei den Multi-Node-Datenbanken noch so, dass die Latenz vom Commit-Protokoll das Problem war, ist es bei replizierten Datenbanken nun die Latenz unseres Replikationsprotokolls. Beide Protokolle verursachen Latenzen durch das Halten von Locks.<\/p>\n\n\n\n<p>Genau diese Herausforderung kann durch Determinismus gel\u00f6st werden.&nbsp; &nbsp;<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Was ist Determinismus im Kontext von Datenbanken?<\/strong><\/h2>\n\n\n\n<p>Determinismus gibt es in allen m\u00f6glichen Fachgebieten, wie z.B. der Linguistik, der Biologie oder auch der Theologie. Laut Wikipedia ist \u201eder Determinismus (von lateinisch determinare \u201afestlegen\u2018, \u201aGrenzen setzen\u2018, \u201abegrenzen\u2018) die Auffassung, dass alle \u2013 insbesondere auch zuk\u00fcnftige \u2013 Ereignisse durch Vorbedingungen eindeutig festgelegt sind.\u201c Diese Definition trifft es im Zusammenhang mit verteilten Datenbanksystemen eigentlich schon ganz gut. Denn das ist was versucht wird in deterministischen Systemen zu erreichen. Genauer gesagt, wenn zwei getrennte Kopien des Systems die gleiche Eingabe sehen, dann sind sie in der Lage diese Eingabe unabh\u00e4ngig voneinander zu verarbeiten und aufgrund des Determinismus garantiert die gleiche Ausgabe (den gleichen Endzustand) zu ergeben.<\/p>\n\n\n\n<p>Lange war die st\u00e4rkste Garantie in Datenbanksystemen die Serialisierbarkeit. Hierbei wird sichergestellt, dass der Endzustand des Datenbanksystems auch bei der gleichzeitigen Verarbeitung vieler Transaktionen, dem entspricht, als h\u00e4tte es alle Transaktionen seriell verarbeitet. Jedoch wird hierbei keine Garantie \u00fcbernommen, in welcher seriellen Reihenfolge die Transaktionen verarbeitetet werden. Bei deterministischen Systemen wird aber die \u00c4quivalenz einer seriellen Reihenfolge garantiert. Es gibt also eine Verarbeitung von Transaktionen in einer einzigen vorbestimmten seriellen Reihenfolge. Dadurch gibt es nur einen m\u00f6glichen Zustand, in dem sich das System befinden kann, trotz des Vorhandenseins von potenziell nicht-deterministischem Code in der Transaktionslogik.<\/p>\n\n\n\n<p>Um nur einen m\u00f6glichen Endzustand zu erreichen, m\u00fcssen moderne deterministische Datenbanksysteme bei einem Anfangszustand und einer definierten Eingabe in das System, die Eingaben vorverarbeiten.<\/p>\n\n\n\n<p>Normalerweise arbeiten verschiedene Kommunikations-Threads, die es in bestehenden nicht-deterministischen Datenbanksystemen gibt, unabh\u00e4ngig voneinander. F\u00fcr deterministische Datenbanksysteme ist diese Architektur nicht praktikabel, da Determinismus nur garantiert werden kann wenn es eine klare, allgemeine vereinbarte Eingabe gibt. Um diese Garantie aber zu erf\u00fcllen, muss eine Aufzeichnung der Eingabe erstellt werden, nach der sich das gesamte System richten kann. In einer Ein-Maschinen-Architektur zum Beispiel kann dies erreicht werden, in dem alle Transaktionen durch einen Thread geleitet werden, der die Eingabetransaktionen in der Reihenfolge aufzeichnet, in der er sie beobachtet.<\/p>\n\n\n\n<p>F\u00fcr die Erstellung eines solchen deterministischen Ausf\u00fchrungsplans f\u00fcr mehrere replizierte Datenbanksysteme im Vergleich zu herk\u00f6mmlichen nichtdeterministischen Systemen ist mehr Wissen \u00fcber die Transaktion erforderlich, bevor sie verarbeitet werden kann. Vor allem aber muss die gesamte Transaktion w\u00e4hrend des Planungsprozesses vorhanden sein. Au\u00dferdem erfordert die Vorausplanung in der Regel Kenntnisse dar\u00fcber, auf welche Daten eine Transaktion zugreifen wird. Dieses Wissen wird entweder statisch aus der Inspektion des Transaktionscodes abgeleitet, durch konservative Sch\u00e4tzungen vorgenommen oder es werden Teile der Transaktion spekulativ ausgef\u00fchrt. In georeplizierten, hochskalierbaren Systemen kann dies zum Beispiel durch ein Protokoll wie Paxos geschehen. Hierbei werden alle Transaktionen vor der Verarbeitung durch dieses Protokoll geleitet, um einen Konsensus \u00fcber das System hinweg zu erzielen. Dies hat jedoch den Nachteil, dass jede Transaktion die regions\u00fcbergreifende Latenzzeit f\u00fcr die Ausf\u00fchrung von Paxos \u00fcber die Regionen hinweg bezahlen muss.<\/p>\n\n\n\n<p>Jedes System sieht in einem deterministischen System durch ein Konsensus-Protokoll wie Paxos dieselbe Eingabetransaktion, und solange sie dieselbe Eingabe sehen, werden sie in denselben Endzustand gelangen. Die einzige Koordination, die in einem deterministischen Datenbanksystem noch stattfinden muss, ist die Kommunikation, die erforderlich ist, um sich \u00fcber die Eingabe in das System zu einigen. Jegliche andere Kommunikation wie zum Beispiel Locking oder Two-Phase-Commit-Protokolle werden dann nicht mehr ben\u00f6tigt und Determinismus verringert dadurch die Latenzzeit und verbessert den Durchsatz.<\/p>\n\n\n\n<p>Die einzige Latenz, die wir jetzt noch haben ist die des Konsensus-Protokolls. Dies kann mit dem System SLOG gel\u00f6st werden, welches noch diesen Schritt weiter geht und versucht die Latenz, verursacht durch das globale Konsensus-Protokoll, zu entfernen.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Wie funktioniert SLOG?<\/strong><\/h2>\n\n\n\n<p>SLOG ist nicht der einzige deterministische Ansatz. Jedoch ist SLOG der einzige Ansatz, welcher den globalen Konsensus eliminiert und dadurch alle drei Eigenschaften garantieren kann. Dieses System entfernt den globalen Paxos-Prozess, um die Latenzzeit zu verringern. Im Folgenden wollen wir SLOG oberfl\u00e4chlich betrachten und sehen wie SLOG diesen Schritt im Vergleich zu herk\u00f6mmlichen deterministischen Ans\u00e4tzen weitergeht.<\/p>\n\n\n\n<p>Wie schafft es SLOG nun dieses Konsensus-Protokoll abzuschaffen? SLOG verwendet eine Master-orientierte Architektur. Hierbei wird jedes Datenelement in einer sogenannten \u201eHome\u201c-Region oder Heimatregion verwaltet, was bedeutet, dass jeder Datensatz einen prim\u00e4ren Speicherort besitzt. <em>S<\/em>chreib- und linearisierbare Lesevorg\u00e4nge eines Datenelements m\u00fcssen an seine Heimatregion gerichtet sein und am prim\u00e4ren Speicherort verarbeitet werden. Eine Region in SLOG ist eine Gruppe von Servern, die \u00fcber ein Netzwerk mit niedriger Latenz verbunden sind. Jede SLOG-Region enth\u00e4lt eine Reihe von Servern, auf die die in dieser Region gespeicherten Daten aufgeteilt (und repliziert) werden. Ein Teil dieser Daten wird von dieser Region beherrscht (sie ist die Heimatregion f\u00fcr diese Daten) und der Rest ist eine Kopie von Daten aus einer anderen Heimatregion. Jedes Datenelement hat also seine prim\u00e4re Location (Heimatregion), was so viel bedeutet wie Nutzer in Berlin haben ihre prim\u00e4re Location in Berlin, Nutzer in Sydney haben ihre prim\u00e4re Location in Sydney. Wenn ich als Berliner nun Daten aus Sydney lesen m\u00f6chte, muss ich die Daten auch aus der Region Sydney lesen, weil diese Up-to-date sind.<\/p>\n\n\n\n<p>Die Transaktionen in SLOG werden basierend auf dieser Aufteilung in Heimatregionen in zwei Kategorien eingeteilt:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Single-Home: Die Daten, auf die zugegriffen werden soll, haben ihr Home-Replika in derselben Region<\/li>\n\n\n\n<li>Multi-Home: Die Daten, auf die zugegriffen werden soll, haben ihr Home-Replika in unterschiedlichen Regionen<\/li>\n<\/ul>\n\n\n\n<p>Lese- und Schreibzugriffe auf nahe gelegene Daten erfolgen schnell und ohne regions\u00fcbergreifende Kommunikation. F\u00fcr Lese- und Schreibvorg\u00e4nge auf entfernte Daten sowie f\u00fcr Transaktionen, die auf Daten aus mehreren Regionen zugreifen, einer Multi-Home-Transaktion, fallen jedoch regions\u00fcbergreifende Kommunikationskosten an. Die Ausf\u00fchrung von Multi-Home-Transaktionen stellen auch das technisch schwierigste Problem bei der Entwicklung von SLOG dar. Das Ziel besteht darin, strenge Serialisierungsgarantien und einen hohen Durchsatz bei einer potenziell gro\u00dfen Anzahl von Multi-Home-Transaktionen aufrechtzuerhalten, auch wenn diese auf konkurrierende Daten zugreifen und eine Koordinierung \u00fcber physisch entfernte Regionen hinweg erfordern.<\/p>\n\n\n\n<p>Auch SLOG verwendet ein Koordinationsprotokoll, um denselben Endzustand zu erreichen und nutzt einen solchen deterministischen Ausf\u00fchrungsrahmen wie oben beschrieben, um Skalierbarkeits- und Durchsatzbeschr\u00e4nkungen zu \u00fcberwinden. Jedoch ersetzt SLOG das globale Protokoll durch ein regionales Protokoll. In SLOG wird der globale, auf Paxos-basierte, Log entfernt und durch ein lokales Log-Protokoll, welches ebenfalls auf Paxos basiert, ersetzt. Jede Region unterh\u00e4lt ein lokales Eingabeprotokoll, das \u00fcber Paxos auf ihren Servern implementiert wird. Dieses lokale Protokoll enth\u00e4lt nur Transaktionen, die voraussichtlich Daten ver\u00e4ndern, die in dieser Region verwaltet werden. Dieses Eingabeprotokoll wird in Batches an alle anderen Regionen gesendet. Jeder Batch ist mit einer Sequenznummer gekennzeichnet und die anderen Regionen verwenden diese Sequenznummer, um sicherzustellen, dass sie keine Chargen aus dieser Region \u00fcbersehen haben. Auf diese Weise ist jede Region schlie\u00dflich in der Lage das vollst\u00e4ndige lokale Protokoll von jeder anderen Region zu rekonstruieren<\/p>\n\n\n\n<p>Angenommen wir haben eine Transaktion, welche nur auf Datenelemente aus einer Region zugreift (Single-Home-Transaktion), sieht das ganze wie in der folgenden Abbildung 4 aus:<\/p>\n\n\n\n<figure class=\"wp-block-image aligncenter size-full\"><a href=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2022\/03\/SingleHome.gif\"><img loading=\"lazy\" decoding=\"async\" width=\"853\" height=\"480\" data-attachment-id=\"23167\" data-permalink=\"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/2022\/03\/27\/slog-deterministische-datenbanksysteme-die-losung-fur-alle-probleme\/singlehome\/\" data-orig-file=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2022\/03\/SingleHome.gif\" data-orig-size=\"853,480\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"SingleHome\" data-image-description=\"\" data-image-caption=\"\" data-large-file=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2022\/03\/SingleHome.gif\" src=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2022\/03\/SingleHome.gif\" alt=\"\" class=\"wp-image-23167\"\/><\/a><figcaption class=\"wp-element-caption\"><em>Abbildung 4: SLOG-Single-Home-Transaction<\/em><\/figcaption><\/figure>\n\n\n\n<p>Wenn nun eine Transaktion auf Datenelemente aus zwei verschieden Regionen auftritt (T3 und T5 in Abbildung 5), wird diese aufgeteilt. Man spricht dann von einer Multi-Home-Transaktion:<\/p>\n\n\n\n<figure class=\"wp-block-image aligncenter size-full\"><a href=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2022\/03\/MultiHome.gif\"><img loading=\"lazy\" decoding=\"async\" width=\"853\" height=\"480\" data-attachment-id=\"23168\" data-permalink=\"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/2022\/03\/27\/slog-deterministische-datenbanksysteme-die-losung-fur-alle-probleme\/multihome\/\" data-orig-file=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2022\/03\/MultiHome.gif\" data-orig-size=\"853,480\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"MultiHome\" data-image-description=\"\" data-image-caption=\"\" data-large-file=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2022\/03\/MultiHome.gif\" src=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2022\/03\/MultiHome.gif\" alt=\"\" class=\"wp-image-23168\"\/><\/a><figcaption class=\"wp-element-caption\"><em>Abbildung 5: Multi-Home-Transaction<\/em><\/figcaption><\/figure>\n\n\n\n<p>Das globale Paxos-Log, welches zuvor in anderen deterministischen Ans\u00e4tzen f\u00fcr Multi-regionale Datenbanken vorhanden war, weicht einer lokalen Version eines solchen Paxos-Protokolls pro Region, welches nur noch asynchron an die anderen Regionen repliziert wird (vgl. Abbildung 6).<\/p>\n\n\n\n<figure class=\"wp-block-image aligncenter size-full\"><a href=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2022\/03\/LocalLogsSLOG.gif\"><img loading=\"lazy\" decoding=\"async\" width=\"853\" height=\"480\" data-attachment-id=\"23169\" data-permalink=\"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/2022\/03\/27\/slog-deterministische-datenbanksysteme-die-losung-fur-alle-probleme\/locallogsslog\/\" data-orig-file=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2022\/03\/LocalLogsSLOG.gif\" data-orig-size=\"853,480\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"LocalLogsSLOG\" data-image-description=\"\" data-image-caption=\"\" data-large-file=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2022\/03\/LocalLogsSLOG.gif\" src=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2022\/03\/LocalLogsSLOG.gif\" alt=\"\" class=\"wp-image-23169\"\/><\/a><figcaption class=\"wp-element-caption\"><em>Abbildung 6: SLOGs lokale Protokolle<\/em><\/figcaption><\/figure>\n\n\n\n<p>Die lokalen Protokolle werden in jede andere Region repliziert und sind unterschiedlich verschachtelt, was dazu f\u00fchrt, dass T3 zum Beispiel in jeder Region anders angeordnet ist (vgl. Abbildung 7), was aber nicht weiter problematisch ist, da die Daten disjunkt sind.&nbsp;<\/p>\n\n\n\n<figure class=\"wp-block-image aligncenter size-large\"><a href=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2022\/03\/LocalOrder.jpg\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"576\" data-attachment-id=\"23170\" data-permalink=\"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/2022\/03\/27\/slog-deterministische-datenbanksysteme-die-losung-fur-alle-probleme\/localorder\/\" data-orig-file=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2022\/03\/LocalOrder.jpg\" data-orig-size=\"1280,720\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"LocalOrder\" data-image-description=\"\" data-image-caption=\"\" data-large-file=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2022\/03\/LocalOrder-1024x576.jpg\" src=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2022\/03\/LocalOrder-1024x576.jpg\" alt=\"\" class=\"wp-image-23170\" srcset=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2022\/03\/LocalOrder-1024x576.jpg 1024w, https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2022\/03\/LocalOrder-300x169.jpg 300w, https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2022\/03\/LocalOrder-768x432.jpg 768w, https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2022\/03\/LocalOrder.jpg 1280w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/a><figcaption class=\"wp-element-caption\"><em>Abbildung 7: SLOGs lokale Transaktionsreihenfolge<\/em><\/figcaption><\/figure>\n\n\n\n<p>Die Regionen weichen nicht voneinander ab, da<\/p>\n\n\n\n<ol class=\"wp-block-list\" type=\"1\">\n<li>das globale Protokoll in jeder Region die urspr\u00fcngliche Reihenfolge der lokalen Protokolle, die es verschachtelt, beibeh\u00e4lt.<\/li>\n\n\n\n<li>lokale Protokolle aus verschiedenen Regionen auf disjunkte Daten zugreifen.<\/li>\n\n\n\n<li>die deterministische Verarbeitungsmaschine sicherstellt, dass die Transaktionen so verarbeitet werden, dass das Endergebnis dem Ergebnis der Verarbeitung in der seriellen Reihenfolge entspricht, die im globalen Protokoll der jeweiligen Region vorliegt.<\/li>\n<\/ol>\n\n\n\n<p>Single-Home-Transaktionen (T1, T2, T4) werden \u00fcbertragen, sobald sie in ihrer Prim\u00e4rregion abgeschlossen sind.<\/p>\n\n\n\n<p>Multi-Home-Transaktionen (T3, T5), die auf Daten in mehreren Regionen zugreifen, m\u00fcssen auf die asynchrone Replikation des Eingabeprotokolls warten, bevor sie die Transaktion festschreiben k\u00f6nnen (sie m\u00fcssen auf das Eintreffen des Protokolls warten). Die Transaktion wird verarbeitet, sobald die entsprechenden Protokolls\u00e4tze in jeder lokalen Region vorhanden sind.<\/p>\n\n\n\n<p>Durch die Aufteilung in Single-Home und Multi-Home wird realisiert, dass die meisten Transaktionen schnell sind (Single-Home). Auch wenn die Transaktionen in mehreren Regionen etwas langsamer sind, verschlechtern sich die Latenzen und der Durchsatz nicht so stark.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Fazit<\/h2>\n\n\n\n<p>Determinismus verringert die Latenzzeit und verbessert den Durchsatz, in dem es die M\u00f6glichkeit lokaler Deadlocks ausschlie\u00dft und verteilte Commit-Protokolle wie z.B. Two-Phase-Commit reduziert, beziehungsweise g\u00e4nzlich eliminiert. Experimente haben gezeigt, dass der Durchsatz bei deterministischen Systemen im Vergleich zu nicht-deterministischen Systemen bei zunehmender Konkurrenz deutlich besser performt (vgl. Abbildung 8).<\/p>\n\n\n\n<figure class=\"wp-block-image aligncenter size-large\"><a href=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2022\/03\/Throughput_Vergleich.jpg\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"576\" data-attachment-id=\"23172\" data-permalink=\"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/2022\/03\/27\/slog-deterministische-datenbanksysteme-die-losung-fur-alle-probleme\/throughput_vergleich\/\" data-orig-file=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2022\/03\/Throughput_Vergleich.jpg\" data-orig-size=\"1280,720\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"Throughput_Vergleich\" data-image-description=\"\" data-image-caption=\"\" data-large-file=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2022\/03\/Throughput_Vergleich-1024x576.jpg\" src=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2022\/03\/Throughput_Vergleich-1024x576.jpg\" alt=\"\" class=\"wp-image-23172\" srcset=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2022\/03\/Throughput_Vergleich-1024x576.jpg 1024w, https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2022\/03\/Throughput_Vergleich-300x169.jpg 300w, https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2022\/03\/Throughput_Vergleich-768x432.jpg 768w, https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2022\/03\/Throughput_Vergleich.jpg 1280w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/a><figcaption class=\"wp-element-caption\"><em>Abbildung 8: Durchsatzvergleich deterministischer und nicht-deterministischer Systeme<\/em><\/figcaption><\/figure>\n\n\n\n<p>Herk\u00f6mmliche deterministische Systeme haben zwar weiterhin mit Latenzen (bzgl. des Konsensus-Protokolls) zu k\u00e4mpfen, jedoch gibt es Systeme wie SLOG, die versprechen auch diese Latenz zu verringern oder sogar zu eliminieren, um alle drei in der Einleitung genannten Eigenschaften zu erf\u00fcllen. &nbsp;<\/p>\n\n\n\n<p>F\u00fcr Datenbankreplikationen ist der offensichtlichste Vorteil deterministischer Datenbanksysteme die Gew\u00e4hrleistung, dass, solange alle Replikate denselben Input erhalten, diese nicht voneinander abweichen. Weitere Vorteile in der deterministischen Architektur sind auf jeden Fall die Skalierbarkeit, die Modularit\u00e4t und die Gleichzeitigkeit. Nicht-deterministische Ausf\u00e4lle f\u00fchren in einem deterministischen System nicht zu einem Transaktionsabbruch, da die Datenbank ihren Zustand zum Zeitpunkt des Absturzes immer wiederherstellen kann, was diese Systeme auch robuster gegen Fehler macht.<\/p>\n\n\n\n<p>Auf den ersten Blick scheinen deterministische Architekturans\u00e4tze in verteilten Datenbanken die L\u00f6sung f\u00fcr viele bekannte Probleme, doch leider ist dieser Ansatz nicht f\u00fcr alle Datenbankanwendungen praktikabel. Da f\u00fcr den Planungsprozess die gesamte Transaktion vorhanden sein muss, sind deterministische Datenbanksysteme schlecht geeignet f\u00fcr ORM-Tools und andere Anwendungen, die Transaktionen nur in Teilen an die Datenbank \u00fcbermitteln.<\/p>\n\n\n\n<p>Deterministische Datenbanksysteme haben sich als vielversprechender Weg zur Verbesserung der Skalierbarkeit, Modularit\u00e4t, des Durchsatzes und der Replikation von transaktionalen Datenbanksystemen erwiesen. Leider bieten alle neueren Implementierungen nur begrenzte oder gar keine Unterst\u00fctzung f\u00fcr interaktive Transaktionen, so dass sie in vielen bestehenden Implementierungen bisher nicht eingesetzt werden k\u00f6nnen.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Quellen<\/h2>\n\n\n\n<p>Abadi, Daniel J. \u201eSLOG: Serializable, Low-Latency, Geo-Replicated Transactions\u201c. Gehalten auf der CMU Database Group &#8211; Vaccination Database Tech Talks (2021), CARNEGIE MELLON UNIVERSITY, 1. Februar 2021. <a href=\"https:\/\/www.youtube.com\/watch?v=TAdiilOOvNI&amp;t=645s\">https:\/\/www.youtube.com\/watch?v=TAdiilOOvNI&amp;t=645s<\/a>.<\/p>\n\n\n\n<p>\u201eDeterminismus\u201c. In <em>Wikipedia<\/em>, 25. Dezember 2021. <a href=\"https:\/\/de.wikipedia.org\/w\/index.php?title=Determinismus&amp;oldid=218485694\">https:\/\/de.wikipedia.org\/w\/index.php?title=Determinismus&amp;oldid=218485694<\/a>.<\/p>\n\n\n\n<p>Faleiro, Daniel J. Abadi, Jose M. \u201eAn Overview of Deterministic Database Systems\u201c. Zugegriffen 15. M\u00e4rz 2022. <a href=\"https:\/\/cacm.acm.org\/magazines\/2018\/9\/230601-an-overview-of-deterministic-database-systems\/fulltext\">https:\/\/cacm.acm.org\/magazines\/2018\/9\/230601-an-overview-of-deterministic-database-systems\/fulltext<\/a>.<\/p>\n\n\n\n<p>Ren, Kun, Dennis Li, und Daniel J. Abadi. \u201eSLOG: Serializable, Low-Latency, Geo-Replicated Transactions\u201c. <em>Proceedings of the VLDB Endowment<\/em> 12, Nr. 11 (Juli 2019): 1747\u201361. <a href=\"https:\/\/doi.org\/10.14778\/3342263.3342647\">https:\/\/doi.org\/10.14778\/3342263.3342647<\/a>.<\/p>\n\n\n\n<p>\u201eStrict Serializability\u201c. Zugegriffen 23. M\u00e4rz 2022. <a href=\"https:\/\/jepsen.io\/consistency\/models\/strict-serializable\">https:\/\/jepsen.io\/consistency\/models\/strict-serializable<\/a>.<\/p>\n\n\n\n<p>\u201eTransaction throughput\u201c. Zugegriffen 23. M\u00e4rz 2022. <a href=\"https:\/\/docs.oracle.com\/cd\/E17276_01\/html\/programmer_reference\/transapp_throughput.html\">https:\/\/docs.oracle.com\/cd\/E17276_01\/html\/programmer_reference\/transapp_throughput.html<\/a>.<\/p>\n\n\n\n<p>Featured image: <a href=\"https:\/\/www.keysight.com\/content\/dam\/keysight\/en\/img\/prd\/ixia-homepage-redirect\/network-visibility-and-network-test-products\/Network-Monitoring.jpg\" target=\"_blank\" rel=\"noreferrer noopener\">https:\/\/www.keysight.com\/content\/dam\/keysight\/en\/img\/prd\/ixia-homepage-redirect\/network-visibility-and-network-test-products\/Network-Monitoring.jpg<\/a><\/p>\n\n\n\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>*zumindest im Bereich georeplizierter Datenbanken Wir leben in einer globalisierten Welt, in welcher wir Anwendungen auf der ganzen Welt nutzen k\u00f6nnen. Egal wo wir gerade sind, k\u00f6nnen wir auf diese Programme und Daten zugreifen. Doch diese M\u00f6glichkeit stellt Softwaresysteme heutzutage vor gro\u00dfe Herausforderungen. Nutzer m\u00f6chten so schnell wie m\u00f6glich auf Daten zugreifen und gehen davon [&hellip;]<\/p>\n","protected":false},"author":1033,"featured_media":23173,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[656,650,223],"tags":[602,604,607,606,601],"ppma_author":[864],"class_list":["post-23162","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-databases","category-scalable-systems","category-ultra-large-scale-systems","tag-database","tag-datenbanken","tag-determinismus","tag-serilizability","tag-slog"],"aioseo_notices":[],"jetpack_featured_media_url":"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2022\/03\/Network-Monitoring.jpg","jetpack-related-posts":[{"id":23579,"url":"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/2022\/08\/30\/google-geodata-visualizer\/","url_meta":{"origin":23162,"position":0},"title":"Google Geodata Visualizer","author":"sk331","date":"30. August 2022","format":false,"excerpt":"Ein Projekt von Kai Kustermann, Michael Litschko, Sarah Mauff und Sebastian K\u00f6pp Einleitung Im Sommersemester 2022 haben wir uns als 4-k\u00f6pfige Gruppe dazu entschlossen, einen Google Geodata Visualizer zu erstellen. Das Projekt ist aus der Idee einer McDonald\u2019s-Achievement-Card entstanden. Die Idee war eine Website, die dem Benutzer anzeigt, welche McDonald\u2019s\u2026","rel":"","context":"In &quot;Cloud Technologies&quot;","block_context":{"text":"Cloud Technologies","link":"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/category\/scalable-systems\/cloud-technologies\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2022\/08\/16.png?resize=350%2C200&ssl=1","width":350,"height":200},"classes":[]},{"id":21163,"url":"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/2021\/09\/15\/cloud-basierter-password-manager\/","url_meta":{"origin":23162,"position":1},"title":"Cloud basierter Password Manager","author":"bs103","date":"15. September 2021","format":false,"excerpt":"von Benjamin Schweizer (bs103) und Max Eichinger (me110) Abstract K\u00f6nnen Passwort Manager Anbieter meine Passw\u00f6rter lesen? Wir wollten auf Nummer sichergehen und haben unseren Eigenen entwickelt. Dieser Artikel zeigt auf welche Schritte wir hierf\u00fcr unternehmen mussten.Dabei haben wir unser Frontend mittels Flutter und unser Backend in AWS umgesetzt. Au\u00dferdem gehen\u2026","rel":"","context":"In &quot;Cloud Technologies&quot;","block_context":{"text":"Cloud Technologies","link":"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/category\/scalable-systems\/cloud-technologies\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2021\/09\/image0-4-150x150.png?resize=350%2C200&ssl=1","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2021\/09\/image0-4-150x150.png?resize=350%2C200&ssl=1 1x, https:\/\/i0.wp.com\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2021\/09\/image0-4-150x150.png?resize=525%2C300&ssl=1 1.5x, https:\/\/i0.wp.com\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2021\/09\/image0-4-150x150.png?resize=700%2C400&ssl=1 2x, https:\/\/i0.wp.com\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2021\/09\/image0-4-150x150.png?resize=1050%2C600&ssl=1 3x"},"classes":[]},{"id":25735,"url":"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/2023\/09\/13\/fastchat-your-words-instantly-delivered\/","url_meta":{"origin":23162,"position":2},"title":"FastChat &#8211; Your Words, Instantly Delivered","author":"Michael Dick","date":"13. September 2023","format":false,"excerpt":"Einf\u00fchrung Herzlich willkommen zu unserem Blogbeitrag \u00fcber FastChat, einer neuen Web-Chat-Anwendung, die das Kommunizieren im Internet auf ein neues Level hebt. In diesem Beitrag m\u00f6chten wir euch die Hintergrundgeschichte zu diesem Projekt, unsere Ziele und die Funktionalit\u00e4ten vorstellen, welche wir erfolgreich umgesetzt haben. Tauchen wir ein!\u00a0 Unsere Idee f\u00fcr FastChat\u2026","rel":"","context":"In &quot;Allgemein&quot;","block_context":{"text":"Allgemein","link":"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/category\/allgemein\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2023\/09\/W_QwicX4WJDR2dKB4QjdppG7EF6IIhCEhDAhLUwZVqX2aHDevpVSAuBbz3tV3zaTEtIeWbiE3At_usAvJ3fl5Fx3Rohme2aszYrChgGMn6oyTmHH9_6xo1xrIQwnjpvaZ_iFRnKrl0m9L_3o2H3j7wo.png?resize=350%2C200&ssl=1","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2023\/09\/W_QwicX4WJDR2dKB4QjdppG7EF6IIhCEhDAhLUwZVqX2aHDevpVSAuBbz3tV3zaTEtIeWbiE3At_usAvJ3fl5Fx3Rohme2aszYrChgGMn6oyTmHH9_6xo1xrIQwnjpvaZ_iFRnKrl0m9L_3o2H3j7wo.png?resize=350%2C200&ssl=1 1x, https:\/\/i0.wp.com\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2023\/09\/W_QwicX4WJDR2dKB4QjdppG7EF6IIhCEhDAhLUwZVqX2aHDevpVSAuBbz3tV3zaTEtIeWbiE3At_usAvJ3fl5Fx3Rohme2aszYrChgGMn6oyTmHH9_6xo1xrIQwnjpvaZ_iFRnKrl0m9L_3o2H3j7wo.png?resize=525%2C300&ssl=1 1.5x, https:\/\/i0.wp.com\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2023\/09\/W_QwicX4WJDR2dKB4QjdppG7EF6IIhCEhDAhLUwZVqX2aHDevpVSAuBbz3tV3zaTEtIeWbiE3At_usAvJ3fl5Fx3Rohme2aszYrChgGMn6oyTmHH9_6xo1xrIQwnjpvaZ_iFRnKrl0m9L_3o2H3j7wo.png?resize=700%2C400&ssl=1 2x"},"classes":[]},{"id":20831,"url":"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/2021\/08\/27\/die-elektronische-patientenakte-wie-sicher-ist-die-zentrale-digitalisierung-im-gesundheitswesen\/","url_meta":{"origin":23162,"position":3},"title":"Die elektronische Patientenakte \u2013 Wie sicher ist die zentrale Digitalisierung im Gesundheitswesen?","author":"Fabiola Dums","date":"27. August 2021","format":false,"excerpt":"Oftmals ist es f\u00fcr \u00c4rzte schwer Behandlungen optimal durchzuf\u00fchren, weil Befunde fehlen oder der Arzt keine Informationen dar\u00fcber hat wie fr\u00fchere Behandlungen abgelaufen sind. Um dies in Zukunft vermeiden zu k\u00f6nnen, wurde am 01. Januar 2021 die elektronische Patientenakte (kurz: ePA) in einem 3 Phasen Modell eingef\u00fchrt. In der ersten\u2026","rel":"","context":"In &quot;Allgemein&quot;","block_context":{"text":"Allgemein","link":"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/category\/allgemein\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2021\/08\/ti_uebersicht-150x150.png?resize=350%2C200&ssl=1","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2021\/08\/ti_uebersicht-150x150.png?resize=350%2C200&ssl=1 1x, https:\/\/i0.wp.com\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2021\/08\/ti_uebersicht-150x150.png?resize=525%2C300&ssl=1 1.5x, https:\/\/i0.wp.com\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2021\/08\/ti_uebersicht-150x150.png?resize=700%2C400&ssl=1 2x"},"classes":[]},{"id":27142,"url":"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/2025\/02\/27\/entwicklung-eines-skalierbaren-file-share-services-mit-aws\/","url_meta":{"origin":23162,"position":4},"title":"Entwicklung eines skalierbaren File-Share-Services mit AWS","author":"Max Tyrchan","date":"27. February 2025","format":false,"excerpt":"tl;dr: Unser Semester-Projekt bestand im Aufbau einer skalierbaren File-Share-L\u00f6sung auf AWS auf Basis von NextCloud. Unsere Motivation bestand darin die volle Kontrolle \u00fcber die eigenen Daten zu erlangen, individuelle Anpassbarkeit zu erm\u00f6glichen und eine Kosteneffizienz zu erreichen. Es wurden klare Ziele in den Bereichen Verf\u00fcgbarkeit, Performanz, Sicherheit und Skalierbarkeit definiert,\u2026","rel":"","context":"In &quot;System Engineering&quot;","block_context":{"text":"System Engineering","link":"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/category\/system-designs\/system-engineering\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2025\/02\/logo_nextcloud_blue-2.png?resize=350%2C200&ssl=1","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2025\/02\/logo_nextcloud_blue-2.png?resize=350%2C200&ssl=1 1x, https:\/\/i0.wp.com\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2025\/02\/logo_nextcloud_blue-2.png?resize=525%2C300&ssl=1 1.5x, https:\/\/i0.wp.com\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2025\/02\/logo_nextcloud_blue-2.png?resize=700%2C400&ssl=1 2x, https:\/\/i0.wp.com\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2025\/02\/logo_nextcloud_blue-2.png?resize=1050%2C600&ssl=1 3x"},"classes":[]},{"id":24997,"url":"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/2023\/07\/24\/digitaler-nachlass-was-bleibt-zuruck-wenn-wir-gehen\/","url_meta":{"origin":23162,"position":5},"title":"Digitaler Nachlass &#8211; Was bleibt zur\u00fcck, wenn wir gehen?","author":"Mike Buchhammer","date":"24. July 2023","format":false,"excerpt":"Die Digitalisierung hat unser Leben in den letzten Jahren stark gepr\u00e4gt. Allein in Deutschland sind bereits 87% aller Menschen ab zehn Jahren online [1]. Wir teilen unser Leben auf sozialen Netzwerken, nutzen Online-Banking und speichern unsere wertvollen Erinnerungen in der Cloud. Doch was geschieht mit all unseren digitalen G\u00fctern, sobald\u2026","rel":"","context":"In &quot;Allgemein&quot;","block_context":{"text":"Allgemein","link":"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/category\/allgemein\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]}],"jetpack_sharing_enabled":true,"authors":[{"term_id":864,"user_id":1033,"is_guest":0,"slug":"jg165","display_name":"Julia Grimm","avatar_url":"https:\/\/secure.gravatar.com\/avatar\/09f53b617d0b420d909ca65887590b8dc574590c7fb01dd20968805c0f294c42?s=96&d=mm&r=g","0":null,"1":"","2":"","3":"","4":"","5":"","6":"","7":"","8":""}],"_links":{"self":[{"href":"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/wp-json\/wp\/v2\/posts\/23162","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/wp-json\/wp\/v2\/users\/1033"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/wp-json\/wp\/v2\/comments?post=23162"}],"version-history":[{"count":8,"href":"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/wp-json\/wp\/v2\/posts\/23162\/revisions"}],"predecessor-version":[{"id":25336,"href":"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/wp-json\/wp\/v2\/posts\/23162\/revisions\/25336"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/wp-json\/wp\/v2\/media\/23173"}],"wp:attachment":[{"href":"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/wp-json\/wp\/v2\/media?parent=23162"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/wp-json\/wp\/v2\/categories?post=23162"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/wp-json\/wp\/v2\/tags?post=23162"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/wp-json\/wp\/v2\/ppma_author?post=23162"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}