Skip to content

Datenbank-Archiktetur

Grundlegende Begriffe

  • Datenbank Eine Datenbank ist eine strukturierte Sammlung von Daten, die dauerhaft gespeichert und organisiert werden, um effizient abgefragt, aktualisiert oder verwaltet zu werden. Sie besteht aus Tabellen, Objekten oder anderen Entitäten, die logisch miteinander verknüpft sind (z. B. relationale Tabellen, Dokumente oder Graphen).

  • Datenbanksystem Ein Datenbanksystem umfasst die Kombination aus der eigentlichen Datenbank (Datenbestand) und den Softwarekomponenten (Datenbankmanagementsystem), die für die Verwaltung, Abfrage und Sicherung dieser Daten zuständig sind. Es ermöglicht die Interaktion mit der Datenbank über Schnittstellen (z. B. SQL, NoSQL-APIs) und stellt Mechanismen wie Transaktionsverarbeitung oder Zugriffskontrolle bereit.

  • Datenbankmanagementsystem (DBMS) Ein Datenbankmanagementsystem (DBMS) ist die Software, die als zentrale Steuerungsinstanz eines Datenbanksystems fungiert. Es bietet Funktionen wie:

    • Definition der Datenstruktur (Schema-Management),
    • Abfragen (z. B. über SQL),
    • Datenintegrität (z. B. durch Constraints),
    • gleichzeitigen Mehrbenutzerzugriff (Concurrency Control),
    • Backup und Wiederherstellung.

Die drei Ebenen: Vom Nutzer zur Festplatte

Das ANSI-SPARC-Modell teilt eine Datenbankarchitektur in drei logische Ebenen, die jeweils unterschiedliche Verantwortlichkeiten haben. Diese Trennung ermöglicht es, Änderungen in einer Ebene vorzunehmen, ohne die anderen Ebenen direkt zu beeinflussen, und fördert so die Flexibilität und Wartbarkeit der Datenbank.


1. Die Externe Ebene (Sicht-Ebene): Der Blick des Anwenders

Diese Ebene ist die direkteste Schnittstelle für Benutzer und Anwendungen. Sie definiert, welche Daten für bestimmte Benutzer oder Anwendungen sichtbar und zugänglich sind. Stell dir das als eine maßgeschneiderte "Ansicht" der Datenbank vor.

  • Was passiert hier? Benutzer interagieren über Anwendungen (z.B. ein Webformular, eine Desktop-Anwendung oder ein Python-Skript) mit der Datenbank. Diese Anwendungen senden Anfragen (Abfragen) an die Datenbank und zeigen die Ergebnisse an.
  • Das Besondere: Nicht jeder Benutzer benötigt Zugriff auf alle Daten in der Datenbank. Ein Mitarbeiter in der Buchhaltung benötigt beispielsweise Zugriff auf Finanzdaten, während ein Lagerarbeiter Zugriff auf Bestandsinformationen benötigt. Sichten (Views) ermöglichen es, die Daten basierend auf den Bedürfnissen des Benutzers anzupassen.
  • Beispiel: Eine Kundenberatungssoftware zeigt dem Kunden nur seine eigenen Bestellungen und Kontodaten an. Sie hat keinen Zugriff auf die Daten anderer Kunden oder interne Informationen. Dies ist eine maßgeschneiderte Sicht auf die gesamte Datenbank.


2. Die Konzeptionelle Ebene (Logik-Ebene): Das Datenmodell

Diese Ebene beschreibt die Struktur der Datenbank, unabhängig von der konkreten Implementierung. Sie definiert Entitäten (z.B. Kunden, Produkte, Bestellungen), deren Attribute (z.B. Kundenname, Produktpreis, Bestelldatum) und die Beziehungen zwischen ihnen (z.B. ein Kunde gibt eine Bestellung auf).

  • Was passiert hier? Datenbankdesigner definieren die Datenbankstruktur und erstellen ein logisches Datenmodell. Dieses Modell dient als Blaupause für die physische Implementierung.
  • Das Besondere: Die konzeptionelle Ebene ist unabhängig von der physischen Speicherung. Das bedeutet, dass Änderungen an der physischen Implementierung (z.B. die Wahl einer anderen Datenbanksoftware) die Anwendung nicht unbedingt beeinflussen, solange die Datenstruktur logisch erhalten bleibt.
  • Beispiel: Das ER-Modell (Entitäts-Beziehungsmodell) visualisiert die Datenbankstruktur und hilft dabei, die Beziehungen zwischen verschiedenen Entitäten (z.B. Kunden, Bestellungen, Produkten) zu definieren.


3. Die Interne Ebene (Physische Ebene): Die Datenspeicherung

Diese Ebene beschreibt, wie die Daten tatsächlich auf der Festplatte gespeichert werden. Sie beinhaltet Details wie die Wahl der Datentypen, die Indizierung und die physische Anordnung der Datenblöcke.

  • Was passiert hier? Datenbankadministratoren optimieren die Datenbank für Leistung und Speichereffizienz.
  • Das Besondere: Änderungen in dieser Ebene sollten so wenig wie möglich die anderen Ebenen beeinflussen. Eine Umstellung von einer HDD auf eine SSD oder die Verwendung eines anderen Indexierungsalgorithmus sind Beispiele für Änderungen auf dieser Ebene.
  • Beispiel: Die Datenbanksoftware verwendet unterschiedliche Algorithmen zur Komprimierung der Daten und zur Optimierung der Abfragegeschwindigkeit. Die physische Anordnung der Daten auf der Festplatte (z.B. die Verwendung von Partitionen oder RAID) beeinflusst ebenfalls die Leistung.

Datenunabhängigkeit

Das eigentliche Ziel dieses Modells ist die Freiheit. Wir unterscheiden zwei Arten:

  1. Logische Datenunabhängigkeit: Wir können die Struktur der Tabellen ändern (z. B. eine neue Tabelle hinzufügen oder zwei zusammenführen), ohne dass wir sofort alle Python-Programme oder Benutzeroberflächen umschreiben müssen. Wir passen einfach die "Sicht" (externe Ebene) an.
  2. Physische Datenunabhängigkeit: Wir können die Hardware austauschen, von MySQL auf PostgreSQL umsteigen oder die Speicherart ändern, ohne dass sich an unserer logischen Tabellenstruktur oder an der App etwas ändert.