programmierung
und datenbanken

Joern Ploennigs

Datenbanktypen

Midjourney: Database Tree, ref. Gustav Klimt

Wiederholung: Hörsaalfrage¶

Was ist Vererbung, Generalisierung, Kapselung, Polymorphismus?

No description has been provided for this image
Midjourney: Object oriented man

Widerholung: Objekteigenschaften¶

Vererbung Generalisierung Polymorphismus Kapzelung
Attribute und Methoden von Elternklassen werden an Kinder vererbt. Das hilft Redundanzen und Fehler zu vermeiden. Gemeinsamkeiten werden in generalisierten Eltern-Klassen implementiert Kinderklassen können Methoden überschreiben und somit umdefinieren. Kapselung von Daten und Methoden in Objekten ist ein Schutzmechanismus, um schadhafte Änderungen einzuschränken.

Wiederholung: Hörsaalfrage¶

Was ist die Wasserfallmethode?

No description has been provided for this image
Midjourney: Waterfall

Lineare Methode - Wasserfallmethode¶

  • Traditionelles Modell das häufig noch in der Ausschreibung großer Systeme gefordert wird

  • Entwicklung ist in mehrere sequenzielle Schritte aufgeteilt und jeder Schritt muss vor dem nächsten beendet werden

  • Benutzerbeteiligung nur in der Anforderungsdefinition

  • Jeder Aktivität wird dokumentiert → Gut geeignet für Ausschreibungen (nach der Anforderungsdefinition oder dem Entwurf, ISO 9000)

No description has been provided for this image

Wiederholung: Hörsaalfrage¶

Was ist die Agile Methode?

No description has been provided for this image
Midjourney: Sprinter and Waterfall

Agile Methode¶

  • Moderne Methode um mit sich an ständig ändernden Anforderungen anpassen

  • Ziel der schrittweisen Entwicklung der Lösung, um Aufwand und Komplexität einzelner Schritte in Grenzen zu halten

  • Startet mit einer einfachen und ausbaufähigen Implementierung (MVP – Minimal Viable Produkt)

  • Schrittweise Erweiterung und Verbesserung des Produktes mit regelmäßigen Releases (meist alle 3 Monate)

  • Entwurfsfehler der ersten Iterationen können zu kompletten Neuentwurf führen

No description has been provided for this image

Ablauf¶

Datenbanken Definition¶

📘 Definition: Datenbank

Unter einer Datenbank (DB) versteht man die logisch zusammengehörenden Daten, die von einem DBMS (Datenbankmanagementsystem) verwaltet werden

📘 Definition: Datenbanksystem

Datenbank und Datenbankmanagementsystem zusammen bezeichnet man als Datenbanksystem

Zur Datenbank gehören neben den reinen 'Nutzdaten' auch die für die Verwaltung vom Datenbankmanagementsystem angelegten Objekte (beispielsweise Indizes und Logdateien)

Warum bringen wir Geld „auf die Bank"?¶

  • Zentrale und langfristige Aufbewahrung

  • Sicherung vor Verlusten

  • Effizienz durch spezielles Dienstleistungsangebot (Daueraufträge, Portfolio, …)

  • Übersicht behalten

  • Vernetzung mit dem globalen Finanznetzwerk

No description has been provided for this image
Midjourney: thief breaking into a bank safe

Warum bringen wir Daten auf die „Bank"?¶

  • Effizienter speichern und laden von Daten durch verschiedenen Clients (Webserver, Geräte, etc.)
  • Verwaltung von sehr (sehr) großen Datenmengen (Skalierbarkeit)
  • Organisation der Daten in vorgegebene Datenstrukturen (Normalisierung)
  • Langfristiges speichern der Daten (Persistierung)
  • Schnelles suchen der Daten durch Indexierung
  • Abgesicherte Prozesse zum Ändern der Daten (Transaktionen)
  • Nachvollziehbares Verändern von Daten durch Transaktions-Logs
  • Automatische Datenanalyse (OLAP)

Grundkonzepte Dateien¶

  • Struktur: Jede Anwendung strukturiert die Daten entsprechend der darin vorkommenden Datenarten (Format, Struktur …).
  • Dateisystem: Jede Anwendung legt die Daten entsprechend seiner Anforderungen (Zugriff, Endung, Ort …) ab.

Grundkonzepte Datenbanken¶

  • Struktur: Alle Anwendung nutzen die gleiche Struktur die in der Datenbank modelliert wurde
  • Dateisystem: Alle Anwendungen greifen auf die gleichen Daten zu. Zugriffe werden durch Transaktionen synchronisiert und protokolliert.

Die Codd'schen Regeln (Codd, 1985, 1990)¶

  • Integration: einheitliche, nichtredundante Datenverwaltung
  • Operationen: Speichern, Suchen, Ändern
  • Katalog: Zugriffe auf Datenbankbeschreibungen im Data Dictionary
  • Benutzersichten: Jeder Nutzer sieht die Daten die er sehen darf in der Art wie er sie sehen möchte
  • Integritätssicherung: Korrektheit des Datenbankinhalts
  • Datenschutz: Ausschluss unauthorisierter Zugriffe, nur berechtigte Nutzer
  • Transaktionen: mehrere DB-Operationen als Funktionseinheit (ganz oder gar nicht)
  • Synchronisation: parallele Transaktionen koordinieren
  • Datensicherung: Wiederherstellung von Daten nach Systemfehlern

Datenbanken Typen - Übersicht¶

Verteilung der Datenbanktypen

Relationale Datenbanken¶

RDBMS werden bereits seit Anfang der 1980er Jahre verwendet und basieren auf dem relationalen (=tabellenorientierten) Datenmodell

  • Das Schema einer Tabelle (=Relationenschema) ist definiert durch den Tabellennamen und eine fixe Anzahl von Attributen (=Spalten) mit entsprechenden Datentypen

  • Da Daten in Tabellen organisiert werden, sind sie stark strukturiert mit einer durch die Tabelle definierten Struktur (Normalisierung)

  • Die Standardsprache zum Aufbau/Änderung/Löschen ist SQL

  • Populäre Systeme: Oracle, MySQL, Microsoft SQL Server, PostgreSQL, IBM Db2

NoSQL Datenbanken¶

NoSQL Datenbankmanagementsysteme sind Datenbanken die kein relationales (=tabellenorientierten) Datenmodell verwenden und damit in der Regel auch kein SQL unterstützen

  • Sie finden seit etwa 2009 zunehmend Verbreitung

  • Populäre Systeme: MongoDB, CouchDB, Cassandra, Redis, Neo4j, Amazon DynamoDB, HBase, OrientDB

  • Hauptgründe:

    • Hohe Anforderungen an Skalierbarkeit
    • Fehlertoleranz moderner Web-Applikationen
    • Big Data Szenarien
    • Daten sind oft nur semi-strukturiert (lassen sich nicht in ein Schema pressen)

Dokumentenorientierte Datenbanken¶

Document Stores zeichnen sich durch eine schemafreie Organisation der Daten aus:

  • Datensätze haben keine einheitliche Struktur

  • Die Typen der Werte einzelner Spalten können pro Datensatz unterschiedlich sein

  • Spalten können mehr als einen Wert haben (Arrays)

  • Datensätze können eine verschachtelte Struktur haben

  • Zur Darstellung der „Dokumente" wird meist JSON verwendet

  • Populäre Systeme: MongoDB, Amazon DynamoDB, Databricks, Azure Cosmos DB, Couchbase

Key-Value Datenbanken¶

Key-Value Stores sind die wohl einfachste Form von Datenbankmanagementsystemen

  • Sie können lediglich Paare von Schlüsseln und Werten abspeichern, sowie die Werte anhand des Schlüssels wieder zurückliefern

  • Damit ähneln sie dem dict in Python

  • Diese Einfachheit macht sie attraktiv für:

    • Ressourcenbegrenzte Systeme wie embedded PCs
    • Entwicklung von Web-Interfaces
  • Populäre Systeme: Redis, Amazon DynamoDB, Azure Cosmos DB, Memcached, Hazelcast

Suchmaschinen Datenbanken¶

Suchmaschinen sind NoSQL DBMS spezialisiert auf die Suche nach Dateninhalten wie Text:

  • Features

    • Unterstützung komplexer Suchbegriffe
    • Volltextsuche
    • Stemming (Stammformreduktion eines Wortes)
    • Ergebnisreihung
    • Gruppierung von Suchergebnissen
    • Verteilte Suche für hohe Skalierbarkeit
  • Populäre Systeme: Elasticsearch, Splunk, Solr, OpenSearch, MarkLogic

Graphdatenbanken¶

Graph DBMS stellen Datensätze in Form von Knoten (Nodes) und Beziehungen (Edges) zueinander dar

  • Sie ermöglichen insbesondere die Modellierung von Verbindungen
  • Ideal für Netzwerkanalysen, soziale Netzwerke, Empfehlungssysteme
  • Populäre Systeme: Neo4j, Microsoft Azure Cosmos DB, Virtuoso, IBM KITT

Datenbanken Typen in der Vorlesung¶

  • Fokus auf: Relationale DB (71.9%)

    • Einfach zu benutzen
    • Meist verbreitet
    • Solide Grundlage
  • Auch: Key-Value DB:

    • Einfache Konzepte
    • Praktische Übungen

Datenbanken in Python¶

  • Zugriff über jeweils passende Bibliothek der Datenbank

  • Oracle, Redis, MongoDB, etc.

from replit import db

# Daten speichern
db["entry"] = 5

# Daten abrufen
value = db["entry"]
print(value)  # Output: 5

fragen?

programmierung
und datenbanken