Tag 2
1 Dokumentationsaufträge
1.1 Beschreiben Sie in eigenen Worten die Abkürzung ACID
ACID steht für Atomicity (Atomarität), Consistency (Konsistenz), Isolation (Isolation) und Durability (Dauerhaftigkeit). Es beschreibt/regelt wie mit Transaktionen in Datenbankmanagementsystemen gearbeitet wird, damit die Daten nicht fälschlich sind.
A: Eine Transaktion besteht aus mehreren Aktionen. Die Atomicity sagt, ob die gesamte Transaktion ausgeführt wird oder gar nicht. Tritt zwischen den Aktionen ein Fehler auf, wird der Stand wieder auf den vor der Transaktion gesetzt (Rollback). Eine erfolgreich ausgeführte Transaktion wird im System gespeichert (meistens mittels Logging). Ein Rollback wird komplett aus dem System entfernt, somit ist nicht zu sehen, dass dieser Rollback zustanden gekommen ist.
C: Die Datenbank wir vor und nach einer Transaktion immer auf die Consistency überprüft. Heisst, dass die Daten gültig sein müssen. Z.B. darf bei einem INT-Datenfeld keine Kommazahl enthalten sein. Ist die Gültigkeit nach der Transaktion nicht mehr gegeben, wird ein Rollback ausgeführt.
I: Arbeiten mehrere Prozesse/Benutzer an der Datenbank, ist die Isolation dafür zuständig, dass es keine "Lost Updates" gibt. Heisst, führt Prozess A eine Transaktion von 3sec aus und Prozess B fängt bei 1sec nach Prozess A an, wird die Transaktion von Prozess B gesperrt bis Prozess A mit der Transaktion fertig ist. Somit ist das ungewollte Überschreiben von Daten ausgeschlossen.
D: Die Durability ist dafür zuständig, dass die Daten nach einer erfolgreichen Transaktion dauerhaft gespeichert sind. Somit ist gewährleistet, dass bei einem Systemabsturz die Daten nach dem Neustarten weiterhin verfügbar sind. Dies wird wie bei der Atomicity mit Logging realisiert.
1.2 Beschreiben Sie in eigenen Worten die Abkürzung BASE
BASE steht für Basically Available Soft state Eventual Cosistency. Dieses Prinzip verzichtet auf eine komplette Konsistenz, dafür ist das System schneller und Verfügbarkeit ist erhöht. Es kann passieren, dass es ab und zu inkonsistente Daten gibt. BASE ist das Gegenstück von ACID.
1.3 Beschreiben Sie den Begriff "Transaktion"
Eine Transaktion besteht aus mehreren Aktionen. Die Daten werden erst in die Datenbank geschrieben, wenn die komplette Transaktion erfolgreich ist. Kommt es zu einem Fehler während einer Transaktion, wird ein Rollback ausgeführt (Zustand vor Transaktion). Transaktion und das ACID-Prinzip verhindern das es zu einem inkonsistenten Zustand kommt.
1.4 Beschreiben Sie das "CAP-Theorem"
Von Consistency (Konsistenz), Availabilty (Verfügbarkeit) und Partition Tolerance (Ausfalltoleranz) können immer nur zwei Eigenschaften erfüllt werden. Dass sagt das CAP-Theorem. Das Theorem kann sich als Dreieck vorgestellt werden, wobei jeder Punkt ein Buchstabe ist. Eine Applikation kann immer nur auf einer Kante des Dreiecks sein.
C: Ähnlich wie bei ACID, aber nicht gleich. Bei einem aufgeteilten System müssen nach einer Transaktion auf allen Systemen die gleichen Daten bestehen.
A: Alle Anfragen müssen eine erfolgreiche Antwort geben.
P: Ein System arbeitet weiter, wenn Knoten untereinander nicht mehr kommunizieren können. Heisst, System A kann die Daten nicht mehr zu System B replizieren.
1.4.1 Beispiele
Relationale Datenbankenmanagementsysteme (RDBMS)
Eine RDBMS wie z.B. MySQL haben vorallem Konsistenz im Fokus. Die Daten sollten immer gültig und richtig sein. Die Verfügbarkeit ist dabei auch sehr hoch. Somit fällt RDBMS in die Kategorie CA.
Bank-Anwendung
Für einen Geldautomaten ist das wichtigste die Konsistenz. Ein Kunde sollte nie einen falschen Kontostand haben. Eine Abhebung oder Einzahlung muss immer richtig verbucht werden. Die Anforderungen an die Anwendungen sollte auch weiter funktionieren, wenn Knoten untereinander nicht mehr kommunizieren können. Somit fällt eine Bank-Anwendung in die Kategorie CP.
1.5 Beschreiben Sie was "Transaktionen" sind
Eine Transaktion ist die Ausführung von mehreren Aktionen. Eine Transaktion wird nur ausgeführt, wenn sie fehlerfrei ist. Ansonsten wird nichts gemacht.
Ohne Isolation
Zeitpunkt | Transaktion 1 | Transaktion 2 | Ergebnis |
---|---|---|---|
1 | Aktion 1 | Keine Einträge gefunden. | |
2 | Aktion 1 | Keine Einträge gefunden. | |
3 | Aktion 2 | Eintrag wird hinzugefügt. | |
4 | Aktion 2 | Eintrag wird nochmal hinzugefügt. |
Mit Isolation
Zeitpunkt | Transaktion 1 | Transaktion 2 | Ergebnis |
---|---|---|---|
1 | Aktion 1 | Keine Einträge gefunden. | |
2 | [Aktion 1] | Tabelle gesperrt: Transaktion muss warten. | |
3 | Aktion 2 | Eintrag wird hinzugefügt. | |
4 | Aktion 1 | Transaktion wird fortgeführt. Neuer Datensatz wird gefunden. |
1.6 Suchen Sie sich ein DBMS aus dem Internet raus (nicht MySQL, nicht MongoDB, nicht neo4j) und beschreiben Sie das DBMS. Versuchen Sie dabei so gut als möglich die Abkürzungen ACID und BASE einzusetzen
DBMS: CouchDB
CouchDB ist ein Open-Source DBMS von Apache. Es ist eine NoSQL-Datenbank, die ihre Daten mit JSON-Dokumenten speichert. Es nutzt das BASE-Prinzip um die Daten zu verarbeiten. Es ist auf Ausfalltoleranz und Verfügbarkeit aufgebaut, somit im CAP-Theorem in der Kategorie AP. Es nutzt BASE, um eine höhere Verfügbarkeit und Skalierbarkeit zu erreichen. Um die Inkonsistenten Daten zu vermindern, nutzt CouchDB einen Mechanismus um Konflikte zu beheben. Die Dokumente werden mit Versionen und Zeitstempeln gespeichert. Die möglichen konfliktbehafteten Dokumente werden markiert. Wie mit dem Konflikt umgegangen wird, liegt in den Händen des Programmierers.
2 Übungen
2.1 Installation eines RDBMS - MySQL
2.1.1 Recherche
Hersteller | Oracle (seit 2008, davor MySQL AB) |
Lizenzen | GPLv2, proprietär, kommerziell |
Support | Community Edition -> mind. 5 Jahre Enterprise Edition -> mind. 3 Jahre |
Software-Features | Skalierbarkeit, Verfügbarkeit, Integrität |
Software-Releasezyklen | 12-18 Monate |
2.1.2 Voraussetzungen der Installation
Welches Betriebssystem setzen Sie ein? Hardware?
Ich setze Ubuntu ein. Empfohlen wird eine Dual-Core-CPU mit mindestens 2.0Ghz und 4GB RAM. Für das Netzwerk wird 1Gbit/s empfohlen und 2GB Speicherplatz.
In welcher Version ist Ihr Betriebssystem vorhanden? Kernel?
[...]
Description: Ubuntu 22.04.1 LTS
Release: 22.04
Codename: jammy
5.15.0-58-generic
Aus welcher Quelle installieren Sie Ihre Software?
MySQL bietet den Download direkt auf der offiziellen Seite an. Für Linux kann die Installation per APT gemacht werden.
sudo apt install mysql-server
In welcher Version installieren Sie Ihre Software (und deren Abhängigkeiten)?
Um die Version des Installation-Paket herauszufinden, kann folgender Command ausgeführt werden.
sudo apt show mysql-server
In meinem Fall wird die Version 8.0.32-ubuntu0.22.04.2
installiert.
Welche Dienste laufen sonst noch auf dem Server?
Aktuell läuft auf dem Server noch nichts. Laufende Dienste können mit dem Befehl top
angezeigt werden.
2.1.3 Prozess der Installation
Als erstes installiere ich "mysql-server" per APT. Alle Abhängigkeiten werden mitinstalliert (siehe Bild).
Nach der Installation kann der Dienst gestartet werden. Anschliessend muss das Root Passwort gesetzt werden und das "mysql_secure_installation" Skript ausgeführt werden.
Danach kann das IDENTIFIED WITH
wieder auf auth_socket
gesetzt werden. Somit kann sich ohne Passwort als sudo angemeldet werden.
Immer mit dem Root User zu arbeiten ist nicht sicher. Daher erstelle ich einen neuen User, der nur SELECT
, CREATE
, INSERT
usw. ausführen kann.
Als letztes überprüfe ich noch, ob der Dienst und die richtige Version läuft.
Eine ausführliche Anleitung kann hier (Digital Ocean) gefunden werden.
2.1.4 Test der Installation
Kann der Dienst gestartet werden und läuft er danach ohne Fehler?
sudo systemctl start mysql.service
systemctl status mysql.service
Auf DBMS per Konsole zugreifen.
sudo mysql -u root -p
Alle Datenbanken anzeigen.
SHOW DATABASES;
Alle User anzeigen.
USE mysql; SELECT user FROM user;
Version des DBMS anzeigen.
SELECT version();
Datenbank und Tabellen erstellen und löschen.
CREATE DATABASE testing_installation;
USE testing_installation;
CREATE TABLE test_table (test varchar(255));
SHOW TABLES;
SELECT * FROM test_table;
DROP DATABASE testing_installation;
Quellen: