docs: add obsidian hwr docs

This commit is contained in:
theoleuthardt 2026-04-09 11:24:56 +02:00
parent b2636f4b92
commit 850aa3455d
245 changed files with 30757 additions and 0 deletions

View file

@ -0,0 +1,199 @@
# Andere Typen von Datenbanken Zusammenfassung
**Dozent:** A. Zimmermann | HWR Berlin | 2026 | **Folien 144**
---
## 1. Hierarchische Datenbanken (Folien 214)
### Konzept
- Vermutlich die **ältesten Datenbanken**, heute nur noch historische Bedeutung
- Bei Bedarf durch relationale Datenbanken simulierbar
- Datenbestand: Datensätze mit fester oder variabler Struktur
- Semantische Beziehungen sind **fest programmmäßig durch Verweise** implementiert (Vorgänger-Nachfolger-Prinzip)
### Vorteile
- Theoretisch sehr schnelle Such-, Einfüge- und Änderungsvorgänge
### Nachteile
- **Unflexible baumartige Struktur**
- Mit der Zeit werden Zugriffe langsamer (Einfüge-/Löschoperationen) → Baum muss in Gleichgewicht gebracht werden (zeit- und speicheraufwendig)
### Merkmale
- Gut geeignet für: **Dateisysteme**, LDAP, Internet-Domänen, Stücklisten
- Datensätze können mehr als zwei Verweise enthalten → nicht nur binäre, sondern auch **n-äre Bäume**
- Knoten können auf Bäume mit anders strukturierten Datensätzen verweisen (Bäume/Unterbäume = Entitätstypen)
- Nicht-hierarchische Beziehungen: durch verkettete Listen implementiert
### IMS von IBM
- Älteste, bis heute eingesetzte hierarchische Datenbank
- Komponenten: Datenbank, IMS Explorer, IMS SOAP Gateway, IMS Java Connector, IMS Data Provider .NET
---
## 2. Netzartige Datenbanken (Folien 1517)
### Konzept
- Entstehen aus hierarchischen DB durch **Verweisfelder für Rückwärtsbewegung**
- **Verallgemeinerung** der hierarchischen Datenbanken
- Unterschiedliche Entitätstypen vertreten, Beziehungen durch besondere Art der Datensätze modelliert
### Vorteile
- Theoretisch vielfältige Verweise möglich
### Nachteile
- Unflexible netzartige Struktur
- Modellierung der Beziehungen eingeschränkt
- Saubere Trennung der Entitätstypen kaum möglich
### Merkmale
- Geeignet für: **geografische Elemente**, Makrostrukturen des Internets
- Jeder Knoten kann mehrere Vorgänger und Nachfolger haben
- Semantische Darstellung der Beziehungen meist programmiert
- Bekannter Vertreter: **UDS** (Universal Datenbank System) von Siemens
- Ca. 20 Jahre im Einsatz, dann durch **relationale Datenbanken verdrängt**
---
## 3. Verteilte Datenbanken (Folien 1825)
### Konzept
- **Verbund von mehreren** (meist relationalen) Datenbanken
- Zusammenfassung von Informationseinheiten auf **mehreren Knoten** (Computern), über ein Netzwerk verbunden
- **Metadaten** (Zugriffsdaten) in einer übergeordneten Datenbank zusammengefasst
- Verteilte Transaktionen bestehen aus Teil-Transaktionen in den Komponenten-Datenbanken
### Vorteile
- Optimale Darstellung der Unternehmensstruktur durch lokale Datenbestände
- Unabhängigkeit der Teil-Datenbanken voneinander
- Orts-, Plattform- und Netzwerkunabhängigkeit
- Ständiger Betrieb
- Effizienz durch parallele Verarbeitung
- Transparenz der Anfragen und Anweisungen
- Ergebnis- statt Sourcedaten-Transfer
### Nachteile
- Vorbereitungsaufwand (Konzepte, Planung, Koordination)
- Zusätzliche Administration der Metadaten (Backup/Restore, Konsistenz)
- Aufwendige Entwicklung der Abfragen
- Abhängigkeit von Lauffähigkeit der einzelnen Teil-Datenbanken
### Entwurf
Wie bei konventionellen relationalen DB, plus zusätzliche Schritte:
1. **Fragmentierungsschema** erstellen
2. **Zuordnungsschema** erstellen
### Fragmentierung
Relationen werden in disjunkte Fragmente zerlegt:
- **Horizontale Zerlegung** Datensätze nach Kriterien zusammengefasst (z.B. Status='Prof')
- **Vertikale Zerlegung** Attribute zusammengefasst (z.B. Vorname + Nachname)
- **Kombinierte Zerlegung** horizontal + vertikal
Anforderungen:
- **Vollständigkeit** Rekonstruktion ergibt vollständige Datenbank
- **Disjunktion** Fragmente überlappen sich nicht
### Zuordnung (Allocation)
- Fragmente auf Knoten verteilen (theoretisch redundanzfrei)
- Aus Sicherheits-/Leistungsgründen: **Replikation**
- Benutzer arbeiten idealerweise nur mit dem Gesamtschema (Transparenz)
### Verteilte Transaktionen
- DBMS muss globale Transaktion in **Teil-Transaktionen** zerlegen
- Entweder alle erfolgreich oder alle zurückgesetzt
- Jede Teil-DB muss **UNDO- und REDO-Funktionalität** beherrschen
- **Two-Phase-Commit**: prepare → ready/failed → commit/abort
---
## 4. Objektorientierte Datenbanken (Folien 2629)
### Konzept
- Idee der OO: Daten und Aktionen (Methoden) zusammen bringen → **Kapselung**
- Idee der DB: Daten und deren **Beziehungen** modellieren, unabhängig von Aktionen
- Diese beiden Ideen sind **schwer zu vereinbaren**
### Eigenschaften
- Vorteilhaft bei **Klassenhierarchien** unter Daten
- Komplexe Objekte speicher- und abrufbar
- **Keine Normalisierung**
- Abfragen langsamer als bei relationalen DB
- Geringe Kompatibilität zu allgemeinen Anwendungen
### Beispiele
- **db4o** geringe Speichergröße, für Java/.NET, keine SQL-Abfragesprache (QBE wird unterstützt), unterstützt Transaktionen (COMMIT, ROLLBACK)
- **Oracle** objektrelationaler Ansatz: Objekttypen (analog zu Klassen) mit Daten, Funktionen und Prozeduren, instanziierbar in PL/SQL
---
## 5. No-SQL-Datenbanken (Folien 3043)
### Konzept
- **No-SQL = Not only SQL** betont die Existenz anderer Datenbanken neben relationalen
- Relationale DB bleiben wichtig für Anwendungen mit strengen Konsistenz-/Sicherheitsanforderungen
### Gründe für No-SQL
- Enorm große Datenvolumen (TiB- und PiB-Bereiche)
- Kurze Laufzeiten der Abfragen nötig
- Konsistenz nicht vorrangig (Daten meist nur abgefragt)
- **Verfügbarkeit vor Konsistenz** (z.B. DNS)
- Speicher für relationale DB wird teuer
### Eigenschaften
- Einfaches/schwaches/kein Schema
- Einfache horizontale und vertikale **Skalierung** (horizontal bevorzugt)
- **BASE-Prinzip** statt ACID
- Keine Normalformen, keine JOINs, denormalisiert
- Hohe Leistung und Verfügbarkeit dank **Replikation**
### BASE vs. ACID
| BASE | ACID |
|---|---|
| **B**asically **A**vailable Verfügbarkeit ggf. auf Kosten der Konsistenz | **A**tomic Transaktion ununterbrechbar |
| **S**oft State Konsistenz an Entwickler delegiert | **C**onsistent konsistenter Zustand gewährleistet |
| **E**ventually Consistent Abfragen auch bei inkonsistentem Zustand | **I**solated Transaktionen verletzen einander nicht |
| | **D**urable ausgefallene Transaktion gefährdet eigene Daten nicht |
### Vertreter der No-SQL-Datenbanken
#### Document-Stores
- **Schemafrei**, Daten in Dokumenten mit eindeutiger ID
- Keine einheitliche Struktur, verschachtelbar
- Felder können verschiedene Datentypen und Arrays haben
- Hohe Skalierbarkeit
- Beispiele: **MongoDB, CouchDB** (halb-strukturierte Formate: XML, JSON)
- Nachteil: keine Normalisierung → Datenredundanz möglich, Konsistenz durch Anwendung
#### Key-Value-Stores
- Nur **Schlüssel und zugehörige Werte** gespeichert
- Einfaches Schema, Schlüssel sortierbar
- Werte: Zahlen, Zeichenketten, Listen, Dokumente, Tabellen (nicht einheitlich)
- Daten im **Hauptspeicher (In-Memory)** oder auf Datenträger (On-Disc)
- Beispiele: **Berkeley DB, Redis, Amazon DynamoDB**
- Schnelle einfache Abfragen, aber komplexe Beziehungen schwer zu implementieren
#### Wide-Column-Stores
- Datensätze haben **unterschiedliche Struktur** (schemafrei)
- Milliarden von Feldern pro Datensatz möglich
- Feldstruktur: Spaltenname (Schlüssel), Daten, Zeitstempel
- **Column Families** für zusammenhängende Spalten
- Beispiele: **MS Azure Cosmos DB, Cassandra**
- Gut für Big Data Analytics / DWH
- Nicht verwechseln mit spaltenorientierten relationalen DB (die haben festes Schema)
#### XML-Datenbanken
- Daten im **XML-Format** gespeichert
- Abfragesprache: **XPath**
- Beispiel: **BaseX**
- Schnell für ganze Dokumente, langsam bei großen Datenmengen
- Fehlende Operationen wie COMMIT, ROLLBACK
- Eher **Verarbeitungssysteme für XML-Dokumente** als echte Datenbanken
#### Graph-Datenbanken
- Daten in drei Klassen: **Knoten, Attribut, Kante** (Graph-Struktur)
- Knoten = Tupel (Datensätze), Kanten = Beziehungen
- Effektiv für **"wer-kennt-wen"**-Informationen
- Nachteile: keine einheitliche Abfragesprache, keine direkten Zugriffe auf Knoten via Attributen
### Fazit
Die No-SQL-Datenbanken sind **sehr effektiv in ihrem Spezialgebiet**.