Problem: Hauptspeicher ist flüchtig (volatil)
Daten, die ein Programm ver arbeitet, existieren zunächst nur im Hauptspeicher
nach einem Neustart des Programms sind sie verloren
Persisterz (Dauerhaftigkeit)
Datenhaltung auf nicht ftüchtigen Speichermedien
Daten überleben den Kontext ihrer Erzeugung
Daten sind verfügbar, selbst wenn die erzeugende Software nicht mehr läuft
Anspruch an DBIS
wenn ein Schreibvorgang quittiert wird, sind die Daten persistent, auch wenn danach ein Fehler auftritt
Integrität
Korrekt im Sinne der Anwendung
fachliche Korrektheit: Daten müssen die reale Welt Korrekt repräsentieren
konsistenz: Wiederspruchsfreiheit
Logische Korrektheit: Datenbanken enthält keine widersprüchlichen Informationen
werden oft synonym verwendet
Anspruch an DBMS
Konsistenz bzw. Integrität der Datenbank muss während das Systembetriebs aufrecht erhalten werden
Unterstützung bei Konsistenzsicherung durch Integritätsregeln
Semantische Integritätgregeln
Kriterien, welche die Datensätze erfüllen müssen
was muss ich machen?
Bsp. CHECK (Gehalt>0)
Eindeutigkeit (Entity Integrity)
Definiert über ausgezeichnete Schlüsselattribute
Bsp. Personalnummer ...
Referentielle Integrität
Datensätze dürfen nicht gelöscht werden, solange sie noch referen ziert werden
keine “dangling references”
mehrfaches Vorhanden sein gleicher oder begrifflich / funktionaler äquivalenter Daten/ Komponenten
Redundanz von Daten
Gleiche Informationen mehrfach gespeicht
Gefahr der Inkonsistenz
Redundanz ermöglicht Inkonsistenz
Bsp. Verschiedene Adressen zu einem Kunden
Erhöhter Aufwand bei der Anwendungsentwicklung
Einzelne logische Aktualisierung (z.B. Adressänderung) muss mehrfach ausgeführt werden
Besondere Pronleme durch Mehrbenutzerbetrieb
Datenbanksysteme können durch automatische Synchronisierung von Datenbestände unterstützten
Redundanzvermeidung durch Integration
Einheitliche Verwaltung aller benötigten Daten
Möglichkeiten für kontrollierte, nicht-redundante Datenhaltung
Minimierung von Redundanzen durch integrierte Datenhaltung
Redundanzkontrolle durch geeignete Datenmodellierung (Normalisierung)
Redundanzfrei geht nicht
Nebenhäufigkeitskontrolle (Isolation)
Gleichzeitig ausgeführte Transaktionen sollen korrekt ablaufen
Serialisierung von Lese- und Schreibaktionen (logische Hintereinander - Ausführung)
Schreibender Zugriff auf DB durch mehrere Benutzer bzw. App ohne unerwünschte Nebenwirkungen
Transaktion:
Zusammenfassung aufeinander folgender Operationen, die eine DB von einem konsistenten Zustand wieder in einen konsistenten Zustand überführt
ACID-Prinzip
Atomicity
Consistency
Isolation
Durability
Schutz vor unbefugtem Zugriff
Sicherheitsmechanismen in DBMS
Authentifizierung und Autorisierung durch feingranulare Rollen- und Rechtekonzepte
je nach DBMS gibt es Rechte für Lesen/Ändern/Einfügen/Löschen sowie administrative Funktionen bis hin zur Ressourcen-Kontrolle
Einsatz von Verschlüsselungstechnologien
Problem: Fehlersituationen
Welche Arten von Fehlern fallen Ihnen ein?
Was für Folgen können Fehler haben?
Anforderungen an DBMS
Hohe Zuverlässigkeit/Ausfallsicherheit für hohe Verfügbarkeit
Wiederherstellbarkeit eines konsistenten Zustands nach einem Systemfehler
Performance
DBS muss die geforderten Antwortzeiten (insbes. bei der Suche) und Durchsätze (bei Schreiboperationen) erfüllen können
Skalierbarkeit
Wird die Hardware-Leistung ver-N-facht, sollte auch das N-fache Daten- bzw. Transaktionsvolumen verarbeitet werden können oder sich die Performance um Faktor N steigern
Probleme bei Datenverwaltung direkt durch Anwendung
kein standardisiertes Format
Daten werden mehrfach verwaltet Daten aus mehreren Dateien nur mit hohem Aufwand kombinierbar
Dateninkonsistenzen bei gleichzeitigem Zugriff durch mehrere Benutzer oder kein Zugriff auf die Daten von anderen Benutzern
Keine Datenunabhängigkeit, d.h. hoher Aufwand für die Entwicklung maßgeschneiderter, aber unflexibler Programme
Ab frühen 60er Jahre: Einführung von Datenbanksystemen
nur ein zentraler Datenbestand, der die (eigentlichen) Daten, Metadaten (Daten über die Daten) und auf den Daten ausführbare Funktionen enthält
Schema einer Relation
Strukturbeschreibung
Notation: <Relationenname> (<Attribut 1> , ... <Attribut n>)
Grad einer Relation: Anzahl der Attribute
Kardinalität einer Relation: Anzahl der Datensätze (Tupel)
Vorteile
Leicht verständliches Datenmodell
Einfache und flexible Datenabfragen mit SQL
Datenzugriff mengenorientiert, statt satz-orientiert
Nachteile
Geschachtelte oder dynamische Strukturen schlecht abbildbar
Daten eines Objekts (Student) werden auf viele Relationen verteilt -> viele Verknüpfungen (Joins) notwendig
Flexibilität erfordert hohe Rechnerleistung
Breiter Einsatz ab Mitte 80er Jahre
Marktreife war erreicht, Rechner leistungsfähig genug
Bessere Flexibilität führt zu Verdrängung hierarchischer und netzwerkbasierter DBMS
Warum ein Standard-DBMS verwenden?
Vereinfachung der Anwendungsentwicklung
Mehrbenutzerfähigkeit eingebaut
Einfache und sichere Speicherung der Daten
Flexibler Datenzugriff
Aber: DBMS bietet immer Kompromisslösung
Mehrbenutzerfähigkeit vs. Performance
Verfügbarkeit (Redundanz) vs. Konsistenz
Lizenz- und Support-Kosten
Eigenentwicklung für Datenhaltung kann sinnvoll sein
Spezifische Anforderungen in Bezug auf Performance, Skalierbarkeit, Verfügbarkeit, Sicherheit, Funktionalität
Spezielle Anforderungen an Datenmodellierung
Nur eine Anwendung, d.h. keine Mehrfachverwendung der Datenstrukturen
Meist lohnt sich das aber nicht!
Bessere Steuerung der DB-Ressourcen durch Bündelung der Kommunikation
Weitere Ebene zur Lastverteilung
Zentralisierte Installation der Server-Software
(Potenzielle) Nachteile
Erhöhte Komplexität der Anwendung durch Aufteilung in Client und ApplicationServer
Zusätzlicher Kommunikationsoverhead
Technologien für Application Server
Proprietär: Server für bestimmte Anwendungen (z.B. SAP)
Web-basiert: Applikation auf Web-Server (PHP, JSP, ...), Web-Services, Ausführungsumgebungen basierend auf JEE, z.B. Redhat JBoss, IBM WebSphere, Oracle Weblogic, Apple WebObjects
Dauerhaftigkeit:
Speicherung der Daten für immer.
Integrität und Konsistenz:
fachliche Korrekheit - reale Welt korrekt darstellen
logische Korrekrheit - Widerspruchsfreiheit
während des Systembetriebs
Redundanz (Minimierung von Redundanzen):
sonst Inkonsistenz
(erhöhter Speicheraufwand)
Mehrbenutzerbetrieb:
Serialisierung von Lese- und Schreibaktionen
Transaktionale Verarbeitung
-> Atomicity -> Consistency -> Isolation -> Durability
Datensicherheit:
Verfügbarkeit und Fehlertoleranz:
Performance und Skalierbarkeit:
geforderten Antwortzeiten
N-fache Daten- bzw. Transaktionsvolumen
Redundanz ist das mehrfache Vorhandensein gleicher oder begrifflich/funktional äquivalenter Daten/Komponenten.
Redundanz sollte vermieden werden, aufgrund von Gefahr der Inkonsistent, erhöhtem Aufwand bei der Anwendungsentwicklung und einem erhöhten Speicherverbrauch.
Ein DBS kann durch integrierte Datenhaltung Redundanz minimieren und durch Normalisierung kontrollieren.
Für eine erhöhte Datensicherheit und eine bessere Performance.
Ist die Zusammenführung von Daten aus mehreren unterschiedlichen Quellen in einer einzigen Aussicht.
Ein Vorteil ist hierbei die Vermeidung von Datenredundanz und Sicherung der Konsistenz der Daten, zeit sparen, verbessert die Zusammenarbeit, liefert mehr nützliche Informationen.
Ein Nachteil ist die komplizierte Implementierung des Vermittlercodes. <==
Semantische Integritätsregeln : Kriterien, welche die Datensätze erfüllen müssen.
Eindeutigkeit : definiert über ausgezeichnete Schlüsselattribute.<=
Referentielle Integrität : Datensätze dürfen nicht gelöscht werden, solange sie referenziert werden.
Nebenläufigkeitskontrolle (Isolation): Gleichzeitig ausgeführte Transaktionen sollen korrekt ablaufen.
NoSQL Datenbank-Systeme (Not Only SQL): Verzichtet auf "Mittelklasse-Komfort relationaler DBS zugunsten von Performance und Skalierbarkeit.
Vorteile sind eine einfache Programmierung, hohe Verfügbarkeit durch Redundanz kostengünstiger Hardware.
Ein Nachteil ist die "nackte" Funktionalität - kein SQL.
Objektorientierte DBs: Persistierung von Objekten in OO-Programmiersprachen ohne Paradigmenwechel.
Server stellt über ein festgelegtes Protokoll den Dienst bereit.
Der Client stellt Anfrage und erhält die Antwort vom Server.
Diese kommunizieren in der Regel über ein Netzwerk.
Die Schwäche hierbei ist wenn der Server ausfällt, kann der Client nicht arbeiten.
Die erste Schicht: Client (Front End) Darstellung hat (fast keine Logik) ->"Thin Client".
Die zweite Schicht: Application Server -> Dieser übernimmt höhere Dienste und stellt Anwendungsobjekte und -methoden zur Verfügung. Er zentralisiert die Kommunikation zur Datenbank.
Die dritte Schicht ist der Datenbank-Server (Back-End)
Ein Datenbank-Administrator ist für die Software-Installation und Wartung zuständig. Ebenfalls legt er die Datenbank an, verwaltet die Speicherplätze und das physische Datenbankdesign. Er macht BackUp und Recovery und beobachtet das System.
Zuletzt geändertvor 9 Monaten