Einführung in Datenbanksysteme EINFÜHRUNG IN DATENBANKSYSTEME F. Steyer Einsatz, Nutzen von Datenbanksystemen Entwicklung von Datenbanksystemen Entwicklung von relationalen Datenbanksystemen Architektur eines Datenbanksystems Architektur eines Anwendungsystems Architektur eines Datenbanksystems im Client/Server-Verbund Architektur eines Anwendungsystems im Rechnernetz Architektur eines Anwendungsystems lokal und im Internet Bereiche Benutzungsbereich Operationsbereich Datenbereich Technikbereich Sonstiges Datenunabhängigkeit, Datenintegrität Dateien Datenbanklebenszyklus Datenbankliteratur 01.05.2012 Fehler und Wünsche bitte an den Autor. BEUTH/Steyer Einführung in Datenbanksysteme Einsatz, Nutzen von Datenbanksystemen Technische Argumente - Permanente Datenhaltung - Integrierte Datenhaltung - Standardisierung (Daten/Funktionen/Schnittstellen/Architektur) - Endbenutzerwerkzeuge und Anwendungsgeneratoren - Prototyping von Anwendungen Betriebswirtschaftliche Argumente - Erhöhung der Produktivität in der Entwicklung von Anwendungssoftware - Verbesserung der Qualität der Anwendungssoftware - Effizientere und flexiblere Wartung der Anwendungssoftware - Datenaustausch Einsatzgebiete von Anwendungen - Es gibt zwei Benutzungsarten von Datenbanksystemen DB als genaues Abbild der Wirklichkeit (Modell, OLTP) DB als Datenspeicher (Archiv, OLAP) - breites Spektrum kommerzieller Anwendungen (Banken, Versicherungen, Kommunalverwaltungen) - zunehmende Akzeptanz in technischen Anwendungen (Buchungssysteme, Leitsysteme, Lagerverwaltung, CIM, FM) - Zentrale Rolle bei der Bürointegration (Text- und Dokumentenverwaltung, DTP) - Neue Einsatzgebiete bei Software Engineering - Künstliche Intelligenz und CAD BEUTH/Steyer Einführung in Datenbanksysteme Entwicklung von Datenbanksystemen JAHR TECHNIK EIGENSCHAFTEN konventionelle Dateiverarbeitung starre Satzstruktur pro Satz ein Schlüssel Vorläufer bis 1968 Vorläufer bei den Datenmodellen 1968-1975 erste DBS verschiedener Struktur: (Bäume, Netze) batchorientierte DBS wenige Benutzerhilfen nur für Grossrechner Codasyl-Normung 1975-1980 verbesserte Netzwerkmodelle erste relationale Systeme dialogorientierte DBS Mehrbenutzerfähigkeit DBS für Minis ANSI/SPARC-Norm Relationale Systeme 1980-1985 verbesserte relationale Systeme Erweiterung der Toolumgebung von DBS portable DBS Data Dictionary Systeme SQL-Normung DBMS für Micros und PCs Endbenutzerunterstützung ausfallsichere DBVS Datenbankmaschinen Weiterentwicklungen 1985-heute verteilte DBS objektorientierte DBS Non-Standard-DBMS 1990-heute Datenbankmaschinen getrennt von den Datenbankoberflächen Datenbank im Internet BEUTH/Steyer neue Anwendungsgebiete, z.B. SW-Entwicklung, Büroautomation,CAD/CAM/CIM Kombinierbarkeit von Datenbankmaschinen und -oberflächen verschiedener Hersteller über eine Standardschnittstelle ODBC Einführung in Datenbanksysteme Entwicklung der relationalen Datenbanksysteme Theorie/Forschung 1970 E.F. Codd bei IBM San Jose 'A Relational Model of Data for Large Shared Data Banks', wird veröffentlicht (Comm. ACM, 13/6, June 1970) 1974 D.O. Chamberlin et al. bei IBM San Jose, 'Structured Query Language (SEQUEL)' 1977 Forschungssystem System R lauffähig ORACLE von Relational Software Inc. Erste Produkte 1981 SQL/DS und DB2 von IBM 1985 SQL-Schnittstelle für Ingres von Relational Technology Inc. und IDM von Britton Lee Inc. 1986 SYBASE von Sybase Inc. Normierung 1986 American National Standards Institute (ANSI) International Standards Organization (ISO) und Deutsche Industrie Norm (DIN) übernehmen SQL Anwendungen Vielzahl an DB-Softwareprodukten mit SQL-Schnittstelle, z.B. Oracle Einschätzung Internationale Standardisierungen durch ANSI, ISO, DIN, X/OPEN Industriestandardisierung durch Software-Produkte wie DB2, Oracle, MS SQL Server SQL als Datenbankstandard wird die nächsten Jahre dominieren, Nachfolgesysteme werden wenigstens SQL beherrschen (Aufwärtskompatibilität). Die Anwendungsprogrammierung wurde durch die ODBC-Normierung stark vereinfacht. Anwender wollen ihre Investitionen schützen bzgl. Anwendungssoftware, Schulung und Personalmarkt. SQL verschwindet aber zunehmend in der Tiefe der Systeme (im DB-Server, unter Window-Oberflächen), hat sich aber als funktionaler DB-Standard für Programmierer und Toolentwickler etabliert. BEUTH/Steyer Architektur eines Datenbanksystems Client/Server-Architektur eines Datenbanksystems Anwendungsprogramme Dialog Dienstprogramme XML Netzserverfähigkeit Mehrbenutzerfähigkeit Zugriffsschutz Transaktionsschutz Leistung Speicherfunktionen Benutzerdaten Data Dictionary Logdaten TFH Berlin/Steyer ODBC Internet Architektur eines Datenbanksystems Datenbankoberflächen: Dialog: Editor für den interaktiven Datenbank-Zugang Lokaler Speicher für Sitzungsgeschichte Anwendungsprogramme: beliebige Programmiersprachen für dedizierte Oberflächen Datentypkonversion notwendig DB-Bibliothekszugriff notwendig Dienstprogramme: Wartung und Pflege des Datenbanksystems wichtige Tätigkeiten: save/restore sonst: Überwachung/Leistungssteigerung/kleinere Anpassungen ODBC dynamischer Microsoft-Anschluss XML von der Datenbank gelieferte normierte Darstellungsform Internet Datenbankzugriff durch Webserver Datenbankoberfläche sind dann Web-Pages Schichten eines Datenbankmanagementsystems und Realisierung: Netzserverfähigkeit sockets Mehrbenutzerfähigkeit pipes Zugriffsschutz Benutzertabelle Privilegientabelle Transaktionsschutz Logprotokolldatei und die Fähigkeit zur Nacharbeit Leistung Indexdatei Speicherorganisation durch Bäume (geordnet, balanciert, Mehrweg- ) Auch Benutzung des Systempuffers Speicherfunktionen Dateisystem des Betriebssystems oder raw I/O Speicherorganisation durch Bäume (entpricht einem mehrstufigen Index) Operationen sind nur noch schreiben und lesen von 4KSpeicherblöcken Daten auf der Platte: Benutzerdaten Data Dictionary Logprotokolldaten TFH Berlin/Steyer Architektur eines Datenbanksystems Datenbanksystem als Schalenmodell mit Schnittstellen (SS) 1) ServerSS sockets 2) MehrbenutzerSS pipes 3) EinbenutzerSS Bibliotheken 4) ZugriffsschutzSS Privilegientabelle (permanent) und Lockliste/Lockrequestliste (temporär) 5) TransaktionsSS Logdatei 6) LeistungsSS 7) SpeicherSS TFH Berlin/Steyer Indexe, Bäume, Systempuffer Sekundärspeicher (Platte) Einführung in Datenbanksysteme Architektur eines Anwendungssystems Oberfläche Anwendungsprogramm Datenverwaltung BEUTH/Steyer Einführung in Datenbanksysteme Datenbanken im Client/Server-Verbund mit Frontend- und Backend-Systemen Backend-DBS: z.B. SQL Server Fertige Tools (z.B. Enterprise Manager, Query Analyser, bcp) Programme (z.B. VB, Java) Frontend-DBS Access Internet BEUTH/Steyer Einführung in Datenbanksysteme Datenbanksysteme im Rechnernetz am Anfang: monolithisches System bald: Client-Server-System (n Clients, 1 Server) heute : Service-orientierte Architektur (n Clients, m Servers) BEUTH/Steyer Einführung in Datenbanksysteme SW-Architektur mit Datenbank lokal Oberfläche Programme Datenbank SW-Architektur mit Datenbank im Internet Browser BEUTH/Steyer Server Einführung in Datenbanksysteme Operationsbereich: Zugriffssprache SQL – Vorläufer Dateien und Programme Bäume Graphen schliesslich Tabellen SQL – Generationen ANSI oder ISO SQL (1983-1986) DDL (CREATE SCHEMA, CREATE TABLE, CREATE VIEW, GRANT) DML (DECLARE CURSOR, OPEN, FETCH, CLOSE, DELETE, UPDATE, SELECT, INSERT, UPDATE, DELETE, COMMIT, ROLLBACK) DModL (MODULE, PROCEDURE) Cobol, Fortran, Pascal, PL/1 SQL/89 Integritätserweiterungen (DEFAULT, UNIQUE, NOT NULL, CHECK, PRIMARY KEYS, referential integrity:u.a. Ada, C, embedded SQL SQL/92 Standardkataloge, neue Datentypen, mehr Orthogonalität, neue Join-Typen, Isolation levels, Cursor, dynamisches SQL, SQLSTATE (in kleinerem Umfang z.Zt. existierender Standard) SQL/99 Triggers, Call level interface, Prozedursprache, loop, for, ADTs mit Funktionen, Dot Notation, ADT-Privilegien, Roles, Typensystem, Zeilentypen, Client-Module, Server-Module, Ausnahmebehandlung (undo, redo, continue), Savepoints, Rekursion, Cursor-Erweiterungen, referentielle Integrität Ergebnis: Tabellensprache SQL = DDL union DML union DCL union ProzL DDL = {create database, drop database, create table, drop table, create view, drop view, create index, drop index} DML = {insert, update, delete, select} DCL = {create user, drop user, grant, revoke} ProzL = {create trigger, drop trigger, create procedure, drop procedure, execute} BEUTH/Steyer Einführung in Datenbanksysteme Operationsbereich: SQL und Dialekte IBM SQL Oracle - SQL SQL Kern MS - SQL BEUTH/Steyer Einführung in Datenbanksysteme Benutzungsbereich: Benutzertypen Ein Benutzer ist jeder, der etwas mit der Datenbank zu tun hat: Endbenutzer, Entwickler, Administrator traditionell drei Gruppen: Endbenutzer: gelegentlich, einfache Oberfläche, kleinere Aufgaben Anwendungsentwickler: Entwicklung von Anwendngssystemen Administratoren: systemnahe oder anwendungsnahe Verwalter, Operatoren SQL-artig (Oracle) - create user, change user, drop user - grant { connect | resource | dba } to meier identified by z97d - grant select on person to meier Ablauf: - Superuser wird bei Installation festgelegt. - Superuser legt Datenbankadministratoren an. - Jeder Datenbankadministrator legt seine Mitarbeiter-User an (resource, connect). (2) Windows like (Access) visuell mit Menü, Tabelle, Ankreuzen: ->Menü->Zugriffsrechte->neu: Name, Passwort, Gruppe ->Menü->Zugriffsrechte->Gruppe: neu ->Menü->Zugriffsrechte->Berechtigungen Die Benutzer eines Datenbanksystems befinden sich in dem Bereich zwischen EDV-Abteilung und Anwender-/Fachabteilung. Sie unterscheiden sich nach Breite und Tiefe. EDV-Abteilung Fachabteilung Endbenutzer (Betriebsphase) Benutzerservice (Betriebsphase) Anwendungsprogrammierer (Einführungsphase, Betriebsphase, Änderungsphase) Systemanalytiker (Planungsphase) Datenbankadministrator (Einführungsphase, Betriebsphase, Änderungsphase) DB-Operating (Betriebsphase) BEUTH/Steyer Einführung in Datenbanksysteme Benutzungsbereich: Benutzersicht (VIEW) Es soll jeder nur das sehen, was er braucht und darf. Definition : benutzerdefiniertes Fenster, spaltenweise, zeilenweise, virtuell, joined Zweck : Datenschutz und Übersichtlichkeit Realisierung: Speicherung der Definition, Und-Verknüpfung mit jedem Befehl, der den Benutzersichtnamen verwendet Probleme : kostet das System etwas Mehrarbeit, bringt manchmal kryptische Fehlermeldungen Beispiel fremdsprachige Benutzersicht deutsche Basistabelle Benutzungsbereich: Privilegien Es darf nicht jeder alles überall sehen und tun. Definition : permanente (längerdauernde) Zugriffskontrolle bzgl. - welche Aktion auf welchem Objekt wer Zweck : Zugriffsschutz, Datensicherheit Realisierung : Planung in der Zeit der Systemanalyse, Schulung Privilegientabelle, die als Filter für jedes Kommando fungiert Probleme : kleine Verzögerung immer Die Oberflächen werden immer "höher", d.h. entfernen sich immer mehr vom DBMS. Die Benutzer werden immer datenbankunausgebildeter. SQL verschwindet in den Tiefen der Systeme, bleibt aber als funktionaler Standard erhalten. meier Tab1 form1 BEUTH/Steyer Operationen (select, insert, update, delete, definieren, benutzen) x x Einführung in Datenbanksysteme Benutzungsbereich: Sperren Es dürfen nicht alle alles gleichzeitig machen. Es gibt zwei Arten: exclusive: verbietet anderen Lesen und Schreiben, shared: erlaubt wenigstens paralleles Lesen SQL-artig (Oracle, 1989) einzeln: lock table person in share mode lock row with pid = 4711 in person in exclusive mode oder neuer (1992): isolation levels 0 read uncommitted (ungesperrt) 1 read committed (1 Zeile kurz gesperrt, Beispiel Umbuchung) 2 repeatable read (1 Zeile länger gesperrt, Beispiel Gehaltserhöhung) 3 cursor stability (Ergebnismenge gesperrt) entscheidend sind also die Sperrbereiche und die Sperrdauer Windows like (Access): Beim Öffnen schon ist ankreuzbar: gemeinsam oder exklusiv. Sperrstrategie kann eingestellt werden: Aber die Granularität ist grob. Definition Zweck Realisierung : temporäre (kürzerdauernde) Zugriffskontrolle - "exclusive" verbietet anderen Lesen und Schreiben - "shared" erlaubt wenigstens paralleles Lesen : operationale Datensicherheit : Sperrliste, die als Filter für jedes Kommando fungiert Probleme : langes Warten evtl. oder gar Deadlock BEUTH/Steyer Einführung in Datenbanksysteme Datenbereich: TABELLE, VIEW und materialisierte VIEW („OLAP“: online analytic processing) Tabelle: Daten und Definition sind gespeichert View: nur Definition ist gespeichert, Daten werden jedesmal aus der Tabelle geholt oder abgeleitet Materialisierte View: Daten sind doch (in die Nähe) gespeichert. Zweck: schnellerer Aufbau SQL: statt CREATE VIEW ... nun CREATE TABLE … und INSERT SELECT … Notwendig ist ein periodischer Update. Realisierung einer Tabelle oft mit dynamischen Baumstrukturen. Beispiel für das Verhältnis Tabelle – Views: - Tabelle mit Daten liegt in der Zentrale - Views mit besonderen Darstellungen liegen in den Filialen (englisch, französisch) Datenbereich: INDEX Umorganisierte Hilfsdatei zu einer Tabelle beschleunigt das Lesen. Tabelle Indexdatei einfach zu finden x y y x aufwendig zu finden lesefreundlich, änderungsunfreundlich SQL: CREATE INDEX <indexname> ON <tabellenname>(<tabellenspalte>) Indexe über mehrere Tabellenspalten sind möglich. BEUTH/Steyer Einführung in Datenbanksysteme Technikbereich: Transaktion benutzerdefinierte Befehlsfolge, die ganz oder garnicht ausgeführt wird, auch wenns länger dauert impliziter Beginn am Anfang der Sitzung implizites Ende am Ende der Sitzung dazwischen mit "commit" Ende und Anfang zugleich (früher mal begin transaction, end transaction) Zweck : Realisierungsgarantie auch längerer Abläufe Realisierung: Im Log-Protokoll werden alle Datenänderungen (kein Lesen) schnell parallel notiert und bei Bedarf nachgearbeitet oder rückgängig gemacht ("rollback, undo"). SQL Probleme : COMMIT, ROLLBACK : Je weiter zurück die Dinge liegen, die man ungeschehen machen will, desto mehr Platz für das Protokoll braucht man. ACID-Eigenschaften: A (atomicity): C (consistency): I (isolation): D (durability): Eine Transaktion ist unteilbar, wird also ganz oder gar nicht ausgeführt. VOR und NACH der Transaktion ist der Datenbestand konsistent. Die Einzelaktionen können ungestörte durchgeführt werden. Die Ergebnisse werden dauerhaft/permanente gespeichert. Beispiel: Eine Geldüberweisung ist eine Transaktion. Sie besteht aus zwei Datenbankoperationen, der Operation auf einer Zeile (Reduzierung des Kontostandes), der Operation auf der anderen Zeile (Erhöhung des Kontostandes). Beide Operationen müssen gemeinsam oder gar nicht stattfinden.: BEUTH/Steyer Einführung in Datenbanksysteme Technikbereich: Operationale Sicherheit Bei gleichzeitiger Mehrfachbenutzung tritt evtl. lost update auf (Die spätere Änderung überschreibt die frühere.) oder inconsistent analysis (Lesen und Ändern passieren gleichzeitig.) Abhilfe für beides ist sperren. 1. Problem: Lost update in der Datenbank: meier 500 user 1 user 2 meier +100 meier -100 Ablauf: - user1 holt den Satz mit 500 - user2 holt den Satz mit 500 - user1 addiert 100: 600 - user2 subtrahiert 100: 400 - user1 schreibt zurück: 600 - user2 schreibt zurück: 400 Ergebnis: Die Änderung des user1 (+100) geht verloren. Abhilfe: user1 müsste den Satz während der ganzen Zeit sperren. 2. Problem: Inconsistent analysis user1 user2: adam berta cäsar dora emil fritz 400 700 200 900 100 100 Addition von oben nach unten Änderungen von unten nach oben Ergebnis: Die Summanden haben verschiedene Änderungszustände. Abhilfe: user1 müsste die Tabelle während der ganzen Zeit sperren. BEUTH/Steyer Einführung in Datenbanksysteme Sonstiges: Datenbanklebenszyklus (Kreis, eigentlich Spirale) Änderung und Anpassung Datenbankentwurf Betrieb und Überwachung Installation Anwendungsprogramme Daten definieren und laden DATENBANKENTWURF - Benutzeranforderungen - konzeptionelles Modell - logisches, externes, internes DB-Schema INSTALLATION - Einlesen des Installationsbandes - Setzen der Umgebung, Initialisierung der Datenbereiche - Hochfahren des Datenbanksystems, Laden der Systemtabellen - Probebetrieb, Sicherung DATEN DEFINIEREN UND LADEN - Laden des Datenbankschemas, Probebetrieb - Laden der Daten mit Sicherungen ANWENDUNGSPROGRAMME - Subsysteme, Pflichtenheft, Tools, Testfälle, Dokumentation - Aus Sicht der Datenbank achten auf Mehrbenutzerproblematik, Datenabsicherung, Datenintegrität, Laufzeit, Blockaden, Sicherung BETRIEB UND ÜBERWACHUNG - Sicherungskonzept, Wiederherstellverfahren - Tagesaktivitäten (interaktiver Betrieb), Nachtaktivitäten ( Stapelläufe, Druck, Sicherungen) - Bedienerausbildung - Monitoring für die Leistungsbewertung (für kritische Bereiche, Lastspitzen) - Notfallplanung (Bereitschaft, Notbetrieb) ÄNDERUNG UND ANPASSUNG - Anpassung an neue Anforderungen (logische Änderungen) - Optimierung (physische Änderungen auf Hardware-, Betriebssystem-, Datenbank- und Programmebene) BEUTH/Steyer