Prof. Dr. rer.nat.habil. Bernhard Thalheim Information Systems Engineering Department of Computer Science Christian-Albrechts-University Kiel Olshausenstr. 40 D - 24098 Kiel Vorlesung Informationssysteme 0. Einführung WS 2016/17 0 Grundlagen und Ziele Für die Erörterung im schriftlichen Teil der Vorlesung: Systematik Hier: Informationssysteme aus der Sicht des Informatikers Informatik: Wissenschaft (oder Kunst) der formalen Sprachen zur Beschreibung von abstrakten Dingen und Handlungsabläufen • erfinden Syntax Form der formalen Sprache, Standardisierung, Rückgriff auf existierende Verständigungsmittel, verschiedene Detailisierung (bis hin zu abstrakten Maschinen) • verwirklichen (d.h. beherrschbar) implementieren erst nach Festlegung der Semantik, verschiedene Semantiken (operationale, ...) • nutzen Beschreibung der Aufgaben mit den Mitteln der Sprache, Methodologie schwierigste Teile: von informal zu formal Semantik Pragmatik Wolkenbild mit Maschine Semiotisches Dreieck: Syntax, Semantik, Pragmatik formale Sprache erfinden verwirklichen benutzen Paradigmen \ Theorie Abstraktion Entwurf Unsere Vorlesungsanwendungen : Universitätsdatenbank (Verwaltung von Studenten (, Mitarbeitern, Ressourcen (Gebäude, HW, SW, Bücher, ...), Fonds, Stundenplanung, ... )) mit unterschiedlichen Sichten Universitätsbibliothek (Bcher, Leser, Ausleihe) 0.1 Information, Kommunikation Zeitalter 1. Zeitalter der manuellen Produktion Jäger, Sammler, Landwirte, Handwerker CAU Kiel, IfI, ISE β WS 2016/17 Informationssysteme 0. Einführung 2 2. Industriezeitalter 3. Informationszeitalter Der Mensch ändert sich nicht so sehr wie die Technik suggeriert. Psychologische Barrieren • Verarbeitungskapazität des Menschen • Formulierungsfähigkeit des Menschen • Gewohnheiten des Menschen US-Diskussion der ‘Y’-Gesellschaft und der Trennung Wir sind bereits in Informationen ertränkt. • Anstelle von mehr Information brauchen wir Information • zur rechten Zeit, • der richtigen Sorte, • in der richtigen Dosis, • in der richtigen Form, • im vollen Umfang, • zu akzeptablen Kosten für alle Benutzer (bzw. Anwendungen) unserer Informationssystemes. • Der Mensch ist das einzige Ziel der Information. • Gespeicherte Information muß verarbeitet werden, ehe sie Nutzen bringt. Information Daten + empfangen + ausgewählt durch Interesse + integriert 0.1.1 Einleitung Verschiedene Arten von Informationssystemen (Sammlung von Daten): Computerized Information System CIS Management-Informationssysteme POI-Systeme, meist Spreadsheet-unterstützt, graphische Oberfläche, einfache Bedienung, Vernetzung mit Partnern mit unterschiedlichen Aufgaben im System, hierarchisch Entscheidungsunterstützungssysteme meist stand-alone-Lösungen, Expertensystem-shell-basiert, verschiedene Unterstützung für Äbwägen, Diskussion, Rücknahme (Hyper)textsysteme Volltextsysteme mit umfangreichen Verweismöglichkeiten und evt. logischen Ableitungen (zwischen den Zeilen) (Supertextsysteme) Information-Retrieval-Systeme meist über Deskriptoren organisiert, einfache Funktionen, einfache Datenstrukturen, effiziente Suche, schwierig zu erweitern, unscharfe Suche, unscharfe Daten CAU Kiel, IfI, ISE β WS 2016/17 Informationssysteme 0. Einführung 3 Dokumentationssysteme hierarchisch, Deskriptoren, komplexe Struktur, eingeschränkte, schnelle Suche Büroinformationssysteme kleine Anwendungssysteme, kooperative Lösung Datenbanksysteme Datenbeschreibungssprache (basierend auf Datenmodell), viele Funktionen, optimierend, verteilte Systeme, Konsistenz, Sicherheit, konkurrierender Zugriff und Fehlerbehandlung (Zurückfahren), Sichten für verschiedene Nutzer Wissensbanken Datenbanken sind übergreifend Entwicklung der DBMS führte zur Integration verschiedener Funktionen anderer Arten von CIS • graphische Oberfläche • deduktive Datenbanken • aktive Datenbanken • parallele Datenbanken • Deskriptoren • Wissensverarbeitung • objektorientierte Entwicklung • Reasoning-Funktionen zum Abwägen und Ableiten • groupware-middleware-Datenbanken • telekommunikative, mobile Datenbanken Trotzdem: Datenbanksysteme haben nicht die gesamte Funktionalität von allen CIS (und werden diese auch nicht anstreben). Volltextsysteme, Entscheidungsunterstützungssysteme, inexakte, inkonsistente Daten, ... Entscheidungsunterstützungssysteme sind spezielle Datenbanken. Vielfältige Anwendungen: Materialwirtschaft, Reservierungssysteme, Bibliotheksverwaltungssysteme, Versicherungswirtschaft, Banken, Meldewesen, Auskunftswesen, Produktionsplanung und -steuerung, Personalverwaltung, Auftragsverwaltung, ... Neuartige Anwendungen: CAx, Büroinformationssystem, Geoinformationssysteme, Prozeßdatenverarbeitung, Versuchsdaten, intelligente Systeme, statische Systeme, Multimediasysteme, ... Musikverarbeitung Riesiger Marktsprung (siehe Übersicht) Kennzeichen einer DB • große Mengen von Daten large amount • dauerhaft persistent • verläßlich dependable • verschiedene Benutzer • Sicherheit der Daten shared security CAU Kiel, IfI, ISE β WS 2016/17 Informationssysteme 0. Einführung 4 • effizient • verwalten • Anfragen storage management queries ad-hoc-Anfragesprachen • Änderungen updates ‘Unternehmen’ kann Informationssystem auf verschiedene Arten benutzen; evt. auch gemischt 1. System ist “Modell” der Welt (Daten als Gegebenheiten) 2. System verwaltet ‘Original’dokumente (Bsp. Programmentwicklungssystem, Referatesystem) 3. System wird als ‘schwarzes Brett’ benutzt (gemeinsame Hinterlegung von Daten; Austausch (Bsp. Patienteninformationssystem)) ⇒ Anforderungen • “Daten” strukturieren (für alle Benutzer verstehbar + verwaltbar) • verschiedenartige Benutzer wirken zusammen, unabhängig - wie ? wie sicher ? • Gestaltung von Oberflächen bei gleichzeitiger einheitlicher Verwaltung • Kommunikation ⇒ Besonderheiten von Informationssystemen • Modellierung formalisierbarer statischer und dynamischer Gesichtpunkte von ‘Unternehmen’ • anschauliche Beschreibungen • formale Beschreibungen • Datenmodelle (logische, relationale, objektorientierte) • Algorithmenmodelle (Transaktionen) • Implementierungen • Structured Query language, QBE, Quel, Datalog, ... • Algorithmen, Datenstrukuren für (relationale) Operationen • unterliegende System (C++, Ontos, ...) • Dauerhaftigkeit und Teilhabe • Transaktionen • Schemaentwurf • Sicherheit • Schichtenarchitektur Außerdem: ‘Unternehmen’ bestehen aus Menschen; DB als technisches Hilfsmittel ⇒ Definition von Information , Kommunikation, Wirklichkeit und Modell erforderlich Hinzu: Informationssystem beeinflußt auch den Geschäftsablauf Historie Generationen verschiedene Einteilungen; evt. analog zu Rechnergenerationen semantische Begriffe Modelle CAU Kiel, IfI, ISE β WS 2016/17 Informationssysteme 0. Einführung 5 1. Filesysteme auf Band bzw. später auf Platte 50-er + 60-er Redundanz, Gefahr der Inkonsistenz, Inflexibilität, eingeschränkte Produktivität (aufwendige Programmierung), Datenschutzprobleme, Einhaltung und Durchsetzung von Standards 2. Prärelationale Systeme 70-er Unterscheidung der physischen und logischen Sicht Katalog, verschiedene Benutzer hierarchisches und Netzwerk-Datenmodell Redundanzvermeidung, zentrale Integritätskontrolle, Strukturierung, DML und DDL relativ implementationsnah, navigierender Zugriff Effizienzprobleme, Konsistenzprobleme, Sicherheitsprobleme, Compatibilität 1961 C. Bachman’s Vorschlag, 1965-70 IMS DB/DS (Netzwerk), Dodd’s APL für PL/1, Sabre (IBM + Am. Airlines), IBM’s hierarch. System 1971 CODASYL DBTG Vorschlag; IDMS, IDS II, DMS verschied. Hersteller 1985 Vorschlag für NDL (Network defintion language) 3. Relationale Systeme Dreiebenenarchitektur, Unabhängigkeit der konzeptionellen Darstellung mächtige Sprachen mengenorientiert, Programm-Daten-Unabhängigkeit, Datenabstraktion, insert, delete, update 1970 E.F. Codd (Childs); 1975 VLDB, 1972 ACM SIGMOD; 1976 P.P. Chen SQUARE, SEQUEL (SQL), QBE, QUEL 1985 Preliminary SQL, 1986 ANSI SQL, SQL 89, SQL 2; 199x SQL 3 (x > 5) Etappen der Entwicklung des relationalen Systeme 80-er • Codd’s Arbeit in den Comm. of the ACM, 1970 • MacAIMS (1970-71) (R. Godstein, J. Strnad) • IS/1, PRTV (71-75) • Große Debatte von Codd/Date und Charlie Bachmann • System R (Mitte 70er) • System Ingres (Mitte 70er) • frühe relationale Produkte (79-83) • Tandem NonStop SQL (87) mit ersten besseren Leistungsparametern Hauptbeträge zur Entwicklung der Technologie • Arbeiten von Hall, Todd, Hitchcock, Immon, Stonebraker, Strnad (parallel zu Codd 1971 im IFIP Congress) zu IS/1- und PRTV-Prototypen • Arbeiten von Chamberlin, Traiger u.a. zum R Prototypen • Arbeiten von Zloof zu QBE • Arbeiten von Stonebraker zum Ingres Prototypen • Arbeiten von Armstrong, Fagin u.a. zur Abhängigkeitstheorie 4. Postrelationale Systeme 90-er aufgrund obiger neuartiger Anwendungen Erweiterung der Funktionalität umfangreichere Typenkonstruktoren, verbesserte Semantik, umfangreichere Operationalität, Verhalten, Mehrnutzerbetrieb, offene Systeme, objektorientierte Systeme, Versionen, räumliche Daten, aktive Anwendungen Vermutung: keine universellen Systeme, eher anwendungsspezifische goodies: benutzerdefinierte Datentypen, Vererbung Falsche Ansichten zu OODB CAU Kiel, IfI, ISE β WS 2016/17 Informationssysteme 0. Einführung 6 • blobs + gespeicherte Prozeduren = Objekte Typ hat Zustands- und Verhaltenscharakteristika (blobs nur Zustand), Typen sind in Hierarchie (?), klare Trennung von Typ-Spezifikation und -Implementation • richtige DBMS unterstützen SQL besser Vielzahl von Sprachkonzepten • Client-Server = Client-Server relationales Client-Server-Modell ist Auswuchs der mainframe-Architektur (Steuerung, auch für Terminals und Benutzeroberflächen durch Server); besser Verteilung nach Rechenleistung etc. auf Server Objektrelationale Modelle XMLbasierte Modelle i } 6 16 Universelle Modelle Objektorientierte Modelle Deduktive Modelle ] 6 Relationale Modelle 6 Navigationsmodelle 6 File Strukturen Datenabstraktionshierarchie XMLAlgebraWirrwarr HERMAlgebraAusdrücke ] 6 Logikbasierte Ausdrücke Erweiterte EntityRelationshipModelle 6 EntityRelationshipModelle 6 Relationale Algebra 6 Normalisierungstheorie 6 Anfrageberechnungsstrategien 6 Rekursionsmodelle Baumstrukturen 6 6 Implementations- Strukturierte programme Programmierung Algorithmische Hierarchie Modellieringshierarchie Abbildung 1: Generationen 1, 2, 3, 4 von Datenbankverwaltungssystemen Relationale Systeme β CAU Kiel, IfI, ISE WS 2016/17 Informationssysteme 0. Einführung 7 1. SQL - Linie SQL ist De-Facto-Standard der relationalen Datenbankwelt • 1970 : Codd’s Arbeit • 1974 : Chamberlain’s SEQUEL verschiedene Versionen 1975 (SEQUEL-XRM), 1977 (SEQUEL/2 - R), Standardisierung, 1981 (ORACLE, SQL/DS), 1983 (DB2), DG/SQL (1984), SYBASE (1986), ... History of SQL 1970 E.F. Codd publishes Definition of Relational Model 1975 Initial version of SQL Implemented (D. Chamberlin) IBM experimental version: System R (1977) w/revised SQL IBM commercial versions: SQL/DS and DB2 (early 1980s) Oracle introduces commercial version before IBM’s SQL/DS INGRES 1981 & 85 ShareBase 1982 & 86 Data General (1984) Sybase (1986) by 1992 over 100 SQL products Genealogy of Relational Database Management Systems v6.0, 1986 OpenIngres 2.0, 1997 vR3, 2004 v9.0, 2006 v10, 2010 Ingres Monet Database System (Data Distilleries) DABA (Robotron, TU Dresden) Ingres v5.x, 1970s VectorWise (Actian) VectorWise MonetDB (CWI) Postgres MonetDB Netezza IBM PostgreSQL v1, 1995 v6, 1997 Greenplum Berkeley Ingres Empress Embedded Informix v1.0, 1980s IBM Informix v10, 2005 v4.0, 1990 v5.0, 1992 IBM Red Brick Warehouse C-Store Informix Sybase SQL Server v4.0, 1990 v10, 1993 v11, 2007 PostgreSQL v11.70, 2010 v12.10, 2013 Red Brick v6.0, 1994 v7.0, 1995 Sybase ASE v11.5, 1996 Microsoft SQL Server H-Store H-Store Informix Vertica Analytic DB Volt DB v11.9, 1998 DATAllegro v3.0, 1988 v1.0, 1987 Expressway 103 v1.0, 1981 Sybase IQ v11, 1995 v12.0, 1999 v12, 1999 Watcom SQL Powersoft CODD RIVER VoltDB HP code brand BAY AREA PARK Greenplum v9, 2010 Illustra v9.0, 2000 alpha, 1979 Pivotal EMC v8, 2005 Red Brick Netezza v7, 2000 v12.5, 2001 v12.5.1, 2003 v10, 2001 v11, 2003 v15.0, 2005 Vertica v16.0, 2012 SAP Sybase ASE v15, 2009 Sybase SQL Anywhere Sybase IQ Microsoft SQL Server v1, 1992 v2, 1993 Microsoft Access v3, 1995 v4, 1997 v5, 1999 SQL Anywhere v12, 2007 v14, 2010 Access v1, 1989 FoxPro v4.21, 1993 VisualFoxPro (Microsoft) v6, 1994 v6.5, 1995 v7, 1998 mSQL v3, 1983 v4, 1984 v5, 1985 v8, 2000 v9, 2005 v10, 2008 v11, 2012 Oracle Oracle v8, 1997 v8i, 1999 v9i, 2001 v10g, 2003 v10gR2, 2005 v11g, 2007 v11gR2, 2009 v12c, 2013 Infobright Infobright v5.1, 1986 v3.1, 1997 MySQL v2, 1979 v3.21, 1998 v3.23, 2001 v4, 2003 v4.1, 2004 v5, 2005 v5.1, 2008 MySQL v7, 1992 Paradox (Ansa) Oracle Sun InnoDB (Innobase) Borland Teradata v1, 1983 MariaDB MariaDB v10, 2013 v5.5, 2010 TimesTen Oracle Paradox Corel Oracle Multics Relational Data Store (Honeywell) 1990s RDB (DEC) 1980s ShareBase (BrittonLee) v6.1, 1997 v4, 1995 RELATIONAL CREEK v1, 1988 v1, 1983 v6.2, 2006 v12, 2007 v14.0, 2012 Teradata v13.0, 2009 Teradata RDB v10.2, 2008 v8.1, 1998 DB2/400 Derby DB2 UDB for iSeries Informix v5, 1997 Apache Derby DB2 for iSeries 2010s v6, 2008 IBM DB2 z/OS v7, 2001 v6, 1999 v4, 1992 Derby v9, 2007 v8, 2004 Transbase v10, 2010 DB2 for z/OS DB2 for VSE & VM DB2 for VSE & VM v5, 1996 DB2 UDB v3, 1993 v2, 1988 System/38 Cloudscape v2, 1992 Solid DB persons v6.0, 2005 v7, 2010 SQL/400 DB2 v5.1, 2004 Empress Embedded v3, 1993 SQL/DS System-R (IBM) v13.10, 2010 Aster Database JBMS NCR DB2 MVS BAY AREA PARK TimesTen v4, 1994 v6, 1999 v7, 2001 v8, 2003 IBM v9, 2006 TinyDB Transbase (Transaction Software) Solid DB EXASolution EXASolution dBase REDABAS (Robotron) dBase (Ashton Tate) Borland IBM IS1 InterBase dBase Inc. InfiniDB Firebird Ashton Tate Groton Database Systems Firebird v1, 2003 GDBM Berkeley DB 1970s v1, 1991 NDBM DBM SQLite Sleepycat v2, 1997 v3, 1999 v4, 2001 HSQLDB Mariposa (Berkeley) Gamma (Univ. Wisconsin) v1.5, 2004 v2, 2006 v2, 2012 2000s IBM Peterlee Relational Test Vehicle BerkeleyDB v1.8, 2005 CODD RIVER SQLite v5, 2010 Oracle v1.6, 2001 DB2 for LUW HSQLDB v2.0, 2010 SAP v1.7, 2002 SAP HANA VDN/RDS DDB4 (Nixdorf) HANA Siemens SAP DB P*TIME MaxDB MaxDB FileMaker (Nashoba) Nonstop SQL (Tandem) v1, 1987 v2, 1989 AdabasD (Software AG) Claris (Apple) II, 1988 v1, 1985 Nonstop SQL v3, 2011 Compaq HP FileMaker Pro v2, 1992 v3, 1995 v4, 1997 FileMaker Inc. v5, 1999 v7, 2004 Neoview v9, 2007 v10, 2009 FileMaker Felix Naumann, Jana Bauckmann, Claudia Exeler, Jan-Peer Rudolph, Fabian Tschirschnitz Key to lines and symbols Contact - Hasso Plattner Institut, Potsdam, [email protected] v9, 2006CC Publishing Date AdabasD v11, 2011 v14, 2015 v8, 2005 v6, 2002 Acquisition Design - Alexander Sandt Grafik-Design, Hamburg Versions Discontinued Branch (intellectual and/or code) Crossing lines have no special semantics Version 5.0 - October 2015 http://www.hpi.uni-potsdam.de/naumann/projekte/rdbms_genealogy.html • SQL-Standardisierung SEQUEL/Original SQL - 1974 SQL/86 - Ratification and acceptance of a formal SQL standard by ANSI (American National Stan- CAU Kiel, IfI, ISE β WS 2016/17 Informationssysteme 0. Einführung 8 dards Institute) and ISO (International Standards Organization). SQL/92 - Major revision (ISO 9075), Entry Level SQL-92 adopted as FIPS 127-2. SQL/99 - Added regular expression matching, recursive queries (e.g. transitive closure), triggers, support for procedural and control-of-flow statements, non-scalar types, and some object-oriented features (e.g. structured types). SQL/2003 - Introduced XML-related features (SQL/XML), Window functions, Auto generation. SQL/2006 - Lots of XML Support for XQuery, an XML-SQL interface standard. SQL/2008 - Adds INSTEAD OF triggers, TRUNCATE statement. • SQL:2011 or ISO/IEC 9075:2011 Parts Part 1: Framework (SQL/Framework) Part 2: Foundation (SQL/Foundation) Part 3: Call-Level Interface (SQL/CLI) Part 4: Persistent Stored Modules (SQL/PSM) Part 9: Management of External Data (SQL/MED) Part 10: Object Language Bindings (SQL/OLB) Part 11: Information and Definition Schemas (SQL/Schemata) Part 13: SQL Routines and Types Using the Java Programming Language (SQL/JRT) Part 14: XML-Related Specifications (SQL/XML) • SQL-Schnittstellen anderer Systeme (IDM (1984), INGRES (1985), SESAM (1989), UDS (1989)) VisualSQL als Zusammenführung von SQL, Quel und visuellen Sprachen 2. QUEL - Linie logisch-orientierte Sprache 3. QBE -Linie Query-by-example nicht durchgesetzt ... intelligente Oberflächen 4. Datenbankprogrammiersprachen DBPL, ADABPL, Galileo, Persistente Programmiersprachen Einbettung in PASCAL, Modula-2, QUEST, ... 5. VisualSQL - unsere Eigenentwicklung - steht auch jedem zur Verfügung Verschiedene Benutzer verschiedene Rollen • Administrator (Datenbankadministrator) Ressourcenverwaltung, Zutrittsrechte, internes Schema, tuning und monitoring, Sicherheit und Zuverlässigkeit • Entwerfer (Unternehmensadminstrator) konzeptionelles Schema, externe Schemata, Software-Entwicklung • Systemanalytiker, Anwendungsprogrammierer Anforderungserhebung, Software-Entwicklung • Endbenutzer • Zufälliger Benutzer unterschiedliche Info, komplexe Auswertungen, schnell mal reinschauen, manager, Anfragen nicht vorhersehbar • Naiver (oder parametrischer) Benutzer Anwendungsprogramme, ‘canned transactions’, Sachbearbeiter, ... CAU Kiel, IfI, ISE β WS 2016/17 Informationssysteme 0. Einführung 9 • Voll ausgebildeter Benutzer komplexe Anforderungen, gute Kenntnis von DBS und Schnittstellen, Techniker, wissenschaftler, Analytiker, ... • DBMS und Tools Designer und Implementierer • Operatoren und Wartungspersonal Nutzen von DBMS 1. Kontrollierte Redundanz 2. Daten-sharing 3. Eingeschränkter Benutzerzugriff concurrency, user view security, authorization 4. Verschiedene Interfaces 5. Darstellung komplizierter Beziehungen der Daten 6. Integritätserzwingung 7. Robustheit, Wiederanlauf Vorteile von DB 1. Standarderzwingung 2. Flexibilität 3. Verringerte Anwendungsentwicklung 4. Up-to-date-Information für alle Benutzer 5. Aufgabenverteilung ⇒ Einsatz von DBMS • heterogene Benutzergruppen, gemeinsame Datenhaltung • keine oder kontrollierte Redundanz gewünscht • Benutzerverwaltung, Authorisierung • Unterschiedliche Schnittstellen für unterschiedlich geschulte Benutzer • komplexe Daten, komplexe Beziehungen zwischen den Daten • Integritätsmechanismen sollen genutzt werden • Backup, Fehlerbehandlung • geringe Entwicklungszeit für sich ändernde Anwendungen Ein DBMS sollte man nicht benutzen, wenn • hoher overhead wegen backup, recovery β CAU Kiel, IfI, ISE WS 2016/17 Informationssysteme 0. Einführung • hoher initialer Aufwand (HW + SW) bei geringem Nutzen • Allgemeinheit der vorhandenen Funktionen • security, safety, concurrency control, recovery, integrity • Anwendung und DB sind eher einfach • real-time-Forderungen, die dem overhead gegenüberstehen • kein Mehrfachparallelzugriff auf Daten 0.1.2 Information ‘Information’ - vielseitig belegt Ereignisse untereinander in Beziehung gesetzt unter Gesichtspunkt inwieweit Unsicherheit verringert wird Absteckung des Möglichen Wahrscheinlichkeitstheoretische Sicht von Informationen Gegeben ist eine Zufallsvariable a = (a1 , ..., an ) p(ai ) Wahrscheinlichkeiten des Eintreffens von ai a - Ausschnitt aus Menge der möglichen Ereignisse Informationsgehalt des Wertes ai der Zufallsvariablen a : Unsicherheit, die durch das tatsächliche Eintreffen von ai beseitigt wird Nichtereignis versus Ereignis Formalisierung durch Maß • I(ai ) = I(ai ) mit folgenden Anford. f (p(ai )) • f ist stetig in [0,1] • f ist antiton (wahrscheinlichere Ereignisse enthalten weniger Information) • Informationsgehalt ist additiv: f (p1 ∗ p2 ) = f (p1 ) + f (p2 ) ⇒ dadurch ist I bis auf Konstante eindeutig festgelegt I(ai ) = −ld(p(ai )) = ld( 1 ) p(ai ) falls p(ai ) ̸= 0 Informationsgehalt von einem einzelnen Wert ai falls p(ai ) = 1 , dann keine Unsicherheit beseitigt wird nun der gesamte Informationsgehalt der Zeichen von a betrachtet, d.h. H(a) = n ∑ p(ai )I(ai ) i=1 ist der mittlere Informationsgehalt von a (Entropie) durch weitere Ausnutzung der WMS-Grundlagen angewandt auf Übertragung von Signalen = − n ∑ i=1 p(ai ) ld(p(ai )) 10 CAU Kiel, IfI, ISE β WS 2016/17 Informationssysteme 0. Einführung Kanal Sender −→ Empfänger bedingte Wahrscheinlichkeiten, unabhängige Zufallsgrößen, ... z.B. Hvor (x|y) und Hnach (x|y) Unsicherheiten von x unter y vor und nach Ausführung D(x, y) := Hvor (x|y) − Hnach (x|y) übertragene Information Modelltheoretische Sicht von Informationen Klasse K von Strukturen gegeben (M = (D, r1 , ..., rn ), ri τi -stellige Relationen) “Ereignisse” werden durch FOPL-Formeln dargestellt Aussage entweder wahr oder falsch in M (falls wahr, dann M Modell von α) d.h. M odK (α) = {M ∈ K | M |= α} ⊆ K bzw. M odK (Φ) = ∩M odK (α) falls Φ bekannt, dann unsicher, welches Modell vorliegt sicher, fall ||M odK (Φ)|| = 1 ; höchst unsicher, falls M odK (Φ) = K Beispiel: S := if x ≥ 8 then y := 1 else y := 0 nach Ausführung der Anweisung und bei Beobachtung von y verringert sich Unsicherheit über x w(eakest) p(recondition) {S} Φ x - Sender; y - Empfänger damit verändert der Informationsfluß von x nach y unsere Kenntnis über die Modellklasse mitunter ist auch Information redundant 0.1.3 Kommunikation ebenso überladen kommunikatives Handeln: Verständigung über ihre Handlungssituation Sprache zur Mittlung Kommunikation als Synthese dreier Selektionen: • Information, ausgewählt aus einem Vorrat an Möglichen • Mitteilung, von Sender gewählt für sein Verhalten • Verstehen zur Veränderung der Möglichkeiten des Empfängers daran anschließend: Ablehnung oder Annahme des Verstandenen 0.1.4 Wirklichkeit und Modell Abstraktion als Mittel der Modellierung verschiedene Arten 1. Datenabstraktion • Klassifizierung / Instantiierung • Aggregation / Dekomposition (Tupel-, Mengen-, Listen-, Clusteroperatoren) • Hierarchien (Generalisierung / Spezialisierung) 11 CAU Kiel, IfI, ISE β WS 2016/17 Informationssysteme 0. Einführung 12 2. Lokalisierungsabstraktion • Unterscheidung zwischen Definition und Verwendung (Wiederverwendung, Wiederholung) • naming • binding • scoping 3. Implementationsabstraktion • Verkapselung (Modularisierung) • Sichtbarkeit , hiding • mapping 0.2 Architektur Architektur mit einer Vielzahl von Sichten Modellierungsarchitektur z.B. Dreiebenenarchitektur dient dem Verständnis Modularchitektur (auch als technische Architektur) Typische Ausprägungen Schichtenarchitektur je nach Anwendungsaktivität oft auch eigenständige Architekturvariante Anwendungsarchitektur entspricht Diagramm der Aktivitäten (wie z.B. Gehirnaktivität) Architektur der Komponenten mit entsprechenden Schnittstellen Architektur als glass box mit einer Abstraktion von Interna der Komponenten Infrastruktur-Architektur mit den entsprechenden Begleitsystemen, Schnittstellen, Kollaboration Integrationsarchitektur im Sinne der Gestalltung der Landschaft Landschaftsarchitekt DBS = DBn + DBMS Dreiebenenarchitektur einer DB-Anwendung darauf aufbauend: 5-Schichten-Modell eines DBMS 1. Ebene derBenutzersprache Benutzerschnittstelle 2. Ebene der Anfrageverarbeitung 3. Ebene der Zugriffstrukturen und Code-Erzeugung 4. Ebene der Synchronisation paralleler Zugriffe 5. Ebene der Speicherverwaltung Darauf aufbauend hat das System verschiedene Schnittstelle Geräteschnittstelle CAU Kiel, IfI, ISE β WS 2016/17 Abstraktionsebene Informationssysteme 0. Einführung zugeordnete Sprache Externe Ebene Externes Externes Schema ... Schema n 1 6 ? ? Interne Ebene DatenDefinition I Konzeptionelle Ebene 6 - 13 DatenManipulation R - DatenAdministration - Abbildung 2: Dreiebenen-Modellierungsarchitektur bzw. -schichtung • Mengen-Schnittstelle select, insert, delete, modify 1 ↔ 2 views, Relationen • Tupel-Schnittstelle fetch, store, erase, update 2 ↔ 3 Cursor, Tupel • Record-Schnittstelle retrieve, add, change, dispose, change 3 ↔ 4 (Index-)Records • Seiten-Schnittstelle read, write 4 ↔ 5 Seiten, Segmente Service des DBMS am Beispiel der Anfrageverarbeitung 1. Überprüfung der Syntax 2. Authorisierungs- und Existenztest 3. Generieren der notwendigen internen Operationen und Speichermechanismen 4. Generieren eines effizienten Programmes 5. Berechnen der Anfrage in der DB 6. Aufbereiten der Anfrageergebnisse (Operand) 7. Sicherstellen, daß Ergebnis während der Ausführung der Anfrage nicht geändert wird darauf aufbauend verschiedene Sprachen für den Benutzer Data Definition Language (DDL): Definition des konzeptionellen Schemas einer Datenbank falls keine zusätzliche Storage Definition Language (SDL) vorhanden auch implizit (d.h. abgeleitet aus DDL-Definitionen) oder explizit Defintion des internen Schemata View Definition Language: Sichtendefinitionssprache zur Definition der externen Schemata Data Manipulation Language (DML): Datenmanipulationssprache zur Modifikation der vorhandenen Datenbank und zur Wiedergewinnung von Informationen CAU Kiel, IfI, ISE β WS 2016/17 Informationssysteme 0. Einführung 14 DBMS Kommunikations-Subsystem InputOutputProzessor Authorisierungkontrolle Parser Precompiler Compiler UpdateProzessor QueryProzessor Optimierer Zugriffsplanerstellung Code-Erzeugung Integritätsprüfung und -erzwingung Verteilungsmanager Recovery Manager Synchronisation paralleler Zugriffe Transaktionsverwaltung Scheduler Speicherverwaltung Data-Manager 6 6 ? Support Systeme Graphische etc. Buffer-Manager 6 ? Logbuch 6 ? - Data Dictionary Datenbank Datenbank Datenbank Datenbank ... Datenbank ? Betriebssystem Abbildung 3: Einfache Sicht (Schichtenarchitektur der Module) auf moderne DBMS CAU Kiel, IfI, ISE β WS 2016/17 Informationssysteme 0. Einführung 15 DBMS InputOutputProzessor Authorisierungkontrolle UpdateProzessor QueryProzessor Code-Erzeugung Speicherverwaltung Data-Manager 6 6 ? Support Systeme Graphische etc. 6 ? Logbuch 6 ? - Data Dictionary Datenbank ? Betriebssystem Abbildung 4: DBMS einfachster Prägung (meist als Einstiegsdroge benutzt) CAU Kiel, IfI, ISE β WS 2016/17 Informationssysteme 0. Einführung 16 Retrieval für die Abfrage Insert für das Einfügen von Daten Delete für das Löschen von Daten Update für die Modifikation der Daten Konzepte der DML können auf unterschiedlicher programmiersprachlicher Basis existieren nicht prozedural / prozedural mengenorientiert / satzorientiert data sublanguage / host language Host Language des unterlegten Programmiersystemes Moderne DBMS bieten eine deklarative DDL, eine deklarative DML und auch eine embedded host language an. Alles andere kann aus diesen Sprachen generiert werden. Die DDL umfaßt auch direkte Möglichkeiten zur Darstellung von Sichten. Die Sprachen basieren auf entsprechenden Datenbankmodellen und auf Typensystemen, die den Programmiersprachen entlehnt sind. Wir unterscheiden heute je nach Datenbankmodell Relationale DBMS (auf der Grundlage des relationalen DB-Modelles), Hierarchische DBMS (auf der Grundlage des hierarchischen DB-Modelles), Netzwerk-DBMS (auf der Grundlage des Netzwerk-DB-Modelles) und neuerdings Objektorientierte DBMS (auf der Grundlage von DB-Modellen mit umfangreicheren Typensystemen und einer direkten Darstellung von Objekten mit ihren Identifikationsmechanismen und ihren Methoden), XML-DBMS als Erweiterung von Ausspiel- und Austauschformaten hin zur objektentfalteten Speicherung von Dingen der Realität mit Eigenbeschreibung, Objektrelationale DBMS als Erweiterung relationaler und universeller Systeme, sowie eine Reihe weiterer Arten von DBMS. Klassifikation von DBMS Datenmodell relational, Netzwerk, hierarchisch, oo # Benutzer Single oder Mehrfachbenutzer # Knoten Zentralisiert oder verteilt • homogen • heterogen • förderiert • interoperabel Kosten Zugriff Typen von Zugriffspfaden General purpose Allgemeine Anwendungen oder Spezialanwendungen CAU Kiel, IfI, ISE β WS 2016/17 Informationssysteme 0. Einführung 17 Architektur Wie gut kann der Server seine Ressourcen im Mehrnutzerbetrieb ausschöpfen ? Einprozeßarchitektur Module der Anwendung und für Zugriff in einem Prozeß zusammengefaßt. + : keine zusätzliche Kommunikation - : selten im Unix-Umfeld Mehrprozeßarchitektur Volle Parallelität der einzelnen Module. + : für viele Anwender und viele parallele Prozesse Zugriffsprogramm nur einmal geladen; Ressourcenminimierung + : einfache Kontrolle der beteiligten DB-Prozesse Single-Threaded-Single-Server-Arch. Jedem Anwendungsprogramm wird sein Prozeß zugeordnet, der über die volle Funktionalität des Servers verfügt. evt. auch Weiteruntergliederung des Servers in verschiedene spezialisierte Prozesse; + : Verarbeitung läßt sich parallelisieren; effizienter Parallel-Server-Arch. Einzelne Funktionen sind in einem Cluster-System (Rechnerzusammenschluß ohne Hauptspeicher und mit gemeinsamer Peripherie) zusammengefaßt Multi-Threaded-Single-Server-Arch. Ein zentraler DB-Prozeß bedient alle Front-End-Prozesse. + : Ein Prozeß wird nur einmal geladen und verteilt die Arbeit auf parallel arbeitende spezialisierte Prozesse. (weniger Speicherbelastung, jedoch wird dann zentraler Prozeß evt. Engpaß) Multi-Threaded-Multi-Server-Arch. Mehrere Backendprozesse versorgen die Frontendprozesse mit Daten. (evt. mit Priorisierung der einzelnen Klassen zur Effzienzverbesserung) (+ : für viele hundert Benutzer noch gute Antwortzeiten) Warum Optimierung ? Weg vom mainframe zur Unix-Umgebung Massives paralleles Processing als Ausweg Bislang offen: wahre Bedeutung von Multiprozessoren und Multiprozessing Ziel war: Anwendungsunabhängigkeit (nicht mehr Programmieren von Seiten, cache Größe, sharing memory, Code-Längen) wichtige Leistungsparameter • Throughput: heute Tausende von Datenbank Requests / Sekunde (TDRPS) frühere Meinung: nur für high-end Firmen; aber heute Ausweitung der DB Technologie auf BS Routinen (Speichertabellen und hartkodierte Werte mit abgelegt) - damit neue Herausforderung • Relationale Technologie und Implementation: bislang effizienter Zugriff für ein Attribut (einschließlich tuning) • Skalierbarkeit und modulares Wachstum: große Zugriffsrate insbesondere in im Netz (mit logischen zentralen ‘Warenhaus’) erfordert spezielle Zugänge zur Leistungserhöhung, Zugriffszeitreduktion, Erhöhung der Flexibilität und für Erweiterbarkeit Das Throughput-Problem Verarbeitung nach Warteschlangen-Theorie Service-Zeit: Beginn mit dispatch vom Programm, Ende mit Prozessorfreigabe Damit einige Parameter: • Ankunftsrate der Prozesse (wartende und ankommende) • Service-Rate (Zeit pro Service und Prozeß) • Serviceintensität (# simultane (concurrent) Operationen) • Länge der Warteschlange (insbesondere der Prozesse gleicher Priorität) • Scheduling delay • Servicekapazität CAU Kiel, IfI, ISE β WS 2016/17 Informationssysteme 0. Einführung 18 2 Basisstrategien: Multiprogramming (mehrere Prozesse auf einem Prozessor) und Multiprocessing (ein Programm auf mehreren Prozessoren) nunmehr Multiprocessing statt Multiprogramming (eigentlich nur Pseudoparalleleität) multitasking (oder synonym multithreading) =⇒ Granularität muß reduziert werden Pipelining, shared Speicherressourcen, nachrichtenbasierte Interprozeßkommunikation Wissenschaftliche Anforderungen • Referentielle Integrität, Integritätsbedingungen • Komplexe Strukturen • Sicherheit • Komplexe Transaktionen • Intelligentes Suchen (Index aufwärts, abwärts, ...) Wichtigste Auswahlkriterien für Systeme 1. Multiuserfähigkeit 2. Datenbankinterne Datenbeschreibungs- und manipulationsprache 3. Sicherheit 4. Leistungsfähigkeit Einige Leistungen der Datenbanktechnologie: I. Technologie auf sicherer theoretischer Basis Mit der Entwicklung des relationalen Datenbankmodelles Strukturierung von Datenbanken Semantik von Datenbanken Generische Operationen Optimierungstheorie Interoperabilität, Verteilung, middleware Dynamik von Datenbankanwendungen Benutzerunterstützung Ausgereifte Datenbankmodelle Darauf aufsetzend: Theorie semantischer und objekt-orientierter Datenbanken Ausgereifte Technologie Ausgereifte, standardisierte Programmiersprachen SQL92 (SQL2), Einbettungsprinzipien in Wirtssprachen Ausgereifte Architektur von Systemen Einbettung in Betriebssysteme, graphische Systeme, ... Komponentenarchitektur, 3-Ebenen-Architektur Verteilung (two tier, three tier, trader) Benutzbarkeit für jedermann: Benutzungsoberflächen Vielfältige Einsatzgebiete durch Erweiterungen der Technologie Informationssysteme, Wissensbanken, Information-Retrieval-Systeme, Suchmaschinen, Dokumenten-Management-Systeme, Entscheidungsunterstützungsysteme, MIS, EIS, Data Warehouse, Internet-DB, Multimedia-DB, Dienste CAU Kiel, IfI, ISE β WS 2016/17 Informationssysteme 0. Einführung 19 Sichere Technologie Sicher für den Anwender Verhalten der Datenbank gesichert Daten gegen Schäden der HW/SW gesichert Sicher gegen Fremdbenutzer Einhaltung der Sicherheitsforderungen Veränderungssicherheit Nachvollziehbarkeit Sicherheitsnormen auf B-, sogar A-Niveau Sicher gegen den Anwender und seine Fehler (Konsistenzerzwingung), seine Nachlässigkeiten (Transaktionskonzept), seine Neugier (Sichten) Ausgereifte Pragmatik vorhanden: Methodiken und Vorgehensmodelle zum Entwurf und zur Implementation von Datenbankanwendungen insbesondere für relationale Anwendungen Beherrschung des Anwendungs-Engineering über die volle Lebenszeit der Anwendung mit Redesign, ReEngineerung Beherrschung der Abstraktion Somit: Regelmäßiges semiotisches Dreieck (Syntax, Semantik, Pragmatik) 0.3 Der grundlegende Zugang zur Modellierung formale Sprache erfinden verwirklichen benutzen Paradigmen \ Theorie • • Abstraktion • Entwurf • Begriffsgerüste Sinn von Informationssystemen • (handelnde) Personen • (strukturelle) Verpflichtungen innerhalb der Unternehmen • die von einer jeweils ausgeführten (sozialen) Rolle abhängen • ihr dazu notwendiges Wissen über das Unternehmen • ihre (formalen) Handlungen • die zugrundeliegenden Mitteilungen Wissen der Anwendung Drei Abstraktionsarten statische Gesichtspunkte einer Anwendung Struktur in Abhängigkeit des Typensystems meist nur Datenabstraktion • Seiendes (entity) : Ding, das wirklich exisitert • Beziehung (relationship) : Zusammenhang • Eigenschaft, Attribut : extensional (Dinge sind durch ihre Eigenschaften vollständig beschrieben und identifizierbar) Dinge stehen in Beziehung bzw. besitzen Eigenschaften CAU Kiel, IfI, ISE β WS 2016/17 Informationssysteme 0. Einführung 20 • Rolle evt. auch mehrmals • Klassenbildung als Abstraktionsprinzip Gesamtheit der Dinge modellieren • Aussonderung : Separation / Spezialisierung • Verallgemeinerung : Generalisierung von Gemeinsamkeiten • Aggregation : Semantik einschränkende Bedingungen für wirklichkeitsgetreue Nachbildung der Anwendung • eindeutige Bestimmung aller Objekte : Schlüsselbedingung • Hierarchie der Objekte Aussonderungsbedingungen (specialization, IsA): Objekte sind auch Objekte in anderen Klassen Verallgemeinerungsbedingungen (partition constraints, uniqueness constraints): Beziehungen zwischen Objekten in einer Verallgemeinerungsklasse • Bedingungen für Beziehungsklassen • funktionaler Zusammenhang (viele-eins-Bedingung) • jedes Komponentenobjekt einbezogen ? Seinsbedingung (existence constraint) • Verweisbedingung auf Objekte der Komponentenklassen • allgemeine Bedingungen - inhärente Bedingungen des Modells • Gesamtheitsregel (universe of discourse) : Gesamtheit der möglichen Seienden ist durch folgende Angaben ... vollständig beschrieben • Verneinungsregel : Ist eine Beziehung weder direkt noch indirekt dargestellt, dann gilt sie nicht. Sichten und abgeleitete Begriffe : aus den Objekten der DB erschließbar Lokalisierungs- und Implementationsabstraktion, mitunter auch Datenabstraktion • Regeln zur Generierung des nicht direkt dargestellten Wissens abgeleitete Begriffe und Typen (Vorfahren aus Eltern-Kind-Beziehung) • Regeln zur Generierung des Ausschnittes, der für handelnde Personen sichtbar sein soll oft als Implementationsabstraktion verstanden für externe Sichten (Sichtbarkeit, hiding) Modularisierung (Verkapselung) oft nur nebenrangig daneben aber auch als Lokalisierungsabstraktion (Unterscheidung zwischen Definition und Verwendung, naming, binding, scoping) dynamische Gesichtpunkte der Anwendung Operationen - Handlungen zur Darstellung des dynamischen Verhaltens • • • • Änderungsoperationen - zur Veränderung im Wissen Retrievaloperationen - zur Erschließung des Wissens ohne Veränderung der DB Sprache zur Generierung von Programmen (siehe Theorie der Programmiersprachen) Rollenveränderungen von dargestellten Objekten Semantik zur Darstellung von zugelassenen und verbotenen Handlungsfolgen Verpflichtungen innerhalb einer Rolle beschrieben durch • welches Wissen zugänglich (Sichten (konsistent zu deren Definition)) und welche Handlungsfolgen ausgeführt werden müssen, evt. unter Berücksichtung von Ursachen (aktive Elemente) • welches Wissen zugänglich (Sichten (konsistent zu deren Definition)) und welche Handlungsfolgen ausgeführt werden dürfen, evt. unter Berücksichtung von Voraussetzungen Mitteilungen an einen oder den anderen Empfänger, die sie ihrerseits verstehen und verarbeiten sollten CAU Kiel, IfI, ISE β WS 2016/17 Informationssysteme 0. Einführung 21 zeit(un)abhängige Beschreibungen • zeitunabhängig wird meist die Semantik vorausgesetzt, evt. auch Operationen, fast immer die Struktur • zeitabhängig ist z.B. aufzählendes Wissen, insbesondere Inhalt der Datenbank Daraus folgt: 3 1 2 Schichten bei der Darstellung einer Datenbank 1. Datenstrukturen (des zugrundegelegten DBMS oder allgemeine) (Datenschema) 2. Struktur, Operationen, Semantik, Sichten, ... (Datenbank-Schema) 3. Datenbankinstanz, die dem DB-Schema entspricht 4. Beispieldaten Zur Erinnerung: Grundbegriffe der Logik, der Mengenlehre, der Theorie der Programmiersprachen Einige wichtige Begriffe • Syntax • Alphabet • Variable (Individuen-, Funktions-, Prädikaten-) • induktive Definition von Formeln • Interpretation • Gültigkeit • Modell • Allgemeingültigkeit, Erfüllbarkeit • Folgerung • Ableitungsregeln • die durch Ψ ausgesonderte Menge Allgemeines Vorgehen • Typen sind über ihre Typausdrücke definiert. Den (freien) Variablen werden wiederum Typen zugeordnet. • Die Zuordnungsvorschrift für Typausdrücke kann sowohl hierarchisch als auch zyklisch sein. Wählt man eine zyklische Struktur, dann sind meist nur Topoi-Semantiken geeignet. Wählt man hierarchische Strukturen, dann kann meist eine Mengensemantik noch garantiert werden. • Typen haben eine assoziierte Semantik (statische). • Typen haben Operationen zu ihrer Manipulation und Veränderung. Man kann diese Operationen generisch definieren, wenn die Typenstruktur hierarchisch aufgebaut ist. (siehe Vorlesung Theorie der Programmiersprachen: Semantik von goto) CAU Kiel, IfI, ISE β semantische Begriffe Seiendes einfach zusammenges. Beziehung Eigenschaft / Attribut WS 2016/17 Informationssysteme 0. Einführung Grundbegiffe aus Logik/Mengenlehre Syntax Semantik Konst.-zeichen Elem. ∈ Wertemenge Grundterm (mit Fkt.-z.) atomare Grundaussage Tupel einer Relation Rolle (bei Bezieh.) (2-stell.) atomare Grundaussage / Grundterm Stelle eines Präd.-z. Komp. einer Relation Klassenbildung Gesamtheit Aussonderung Menge v. Konst.-zeich. Formel ϕ Universum dM,ϕ , 2M Verallgemein. ∨ Vereinigung Aggregation ∧, = ∩,× (implikative) Aussage mit =-Konklusion Modellklasse Bedingung Schlüsselbeding. Aussonderungsbed. Verallgemein.-bed. 1-n-Beding. Seinsbeding. Verweisbeding. Regel Gesamtheitsregel Verneinungsregel Sichtregel Handlung Information Tupel einer (2-stell.) Rel. Funktionswert 22 Konzepte imperativer Prog.-Spr. Konstante Strukturbaum eines Terms Verbund (reecord), Aufruf Boolesch-wert. Proz. Verbund (record) Aufruf einer attribut.wertigen Fkt.-proz. Komp.-bezeichner (Verbund) formaler Parameter (F.-proz.) Deklaration Typendeklarat. Menge, Deklar. (Bool.-w.) Funkt.-proz. Deklarat. eines varianten Verbundtyps Deklarat. von Feldund Verbundtypen Deklarat. einer Prozedur mit =-Konklusion Deklaration einer Prozedur Ableit.-regel, Formeln Ableit.-regel, Formeln Formeln logische Implikation logische Implikation Relation Verkleinerung der Modellklasse Mitteilung konjunktiv hinzugefügte Aussage Aussage Verstehen Widerspruchsfreiheit Erfüllbarkeit Zustandänderung (Wertzuweisung) akt. Parameter beim Prozeduraufruf Ausführung einer Proz. 0.4 Database Systems at the First Level as Abstract State Machines In this section we describe the semantics of a first level database using abstract state machines. The specification is executable using AsmL 1.5, however, we used syntax from AsmL 2.0 at several places in order to make the specification more readable. Currently we are converting the specification to AsmL 2.0 format. 0.4.1 The Database System as an Input-Output Engine At the first level we describe databases from the outside point of view. The structure of the database is fixed, i.e. we do not consider any create/delete table operations. The semantics of those is simple enough. The common data types between inner and outer representation are view names, relation names and procedure names (for stored procedures) and attribute names (including primary and secondary keys). Therefore the interface specification is as follows: type type type type type ViewName RelationName ProcedureName AttributeName TypeName = = = = = String String String String String CAU Kiel, IfI, ISE β WS 2016/17 Informationssysteme 0. Einführung 23 For the representation of stored procedures it is essential to have complete freedom as to how the body of the procedure is defined. This is achieved by allowing the complete power of ASM for the definition of the body. To this end, only an interface is given, how the computations of a procedure should function, and the rest can be given as an ASM procedure. See also 0.4.4 below for some concrete examples of stored procedures. interface ProcedureStep stepAction(params as Seq of Data) as Set of Request stepResult(params as Seq of Data) as Data structure StoredProcedure transactional as Boolean params as Seq of String // means sequence of types contents as Seq of ProcedureStep 0.4.2 Structuring of the Database First, we define the global types necessary for databases. These types are • Database, • Request, with the kinds • Insert • Delete • Update • Call (of a stored procedure) • simple Select (provide a relation as result) • general Select (just provide any result data) and • Answer, which can be a status message or a relation in case of a simple select request. Moreover, we want to use variables at several places. Therefore we define the global database structure as follows: structure Database content as Map of RelationName to Relation procs as Map of ProcedureName to StoredProcedure constraints as Set of Constraint structure Request case Insert relName as RelationName ins as Tuple case Delete relName as RelationName del as Tuple case Update relName as RelationName upd as Tuple case Call pname as ProcedureName pparams as Seq of Data presult as Variable case SimpleSelect what as Seq of AttributeName From as RelationName Where as Constraint result as Relation CAU Kiel, IfI, ISE β WS 2016/17 Informationssysteme 0. Einführung 24 case OutputSelect result as Set of Tuple structure Answer case StatusAnswer status as String case RelationAnswer rel as Relation class Variable name as String value as Data 0.4.3 The Global States of the Database System Now we define the global state variables: an input, an output, a set of variables and the database. var var var var input as Set of Request = {} output as Seq of Answer = [] variables as Set of Variable = {} database as Database = Database({|->},{|->},{}) The action on the database depends on the input as follows (compare again with ??): DBAction() = choose inp in input do input:= input difference { inp } ProcessAction(inp) ProcessAction(inp as Request) = match inp with Insert(n,t): DBChange(n,inp) Delete(n,t): DBChange(n,inp) Update(n,t): DBChange(n,inp) Call(p,par,v): let proc = database.procs(p) if proc = undef then output:= output + [StatusAnswer("no such procedure: " + p.name) as Answer] else DBCall(proc,par,v) SimpleSelect(what,n,constr,result): //very simple version first let res = database.content(n) if res = undef then output:= output + [StatusAnswer("relation " + n.name + " not defined") as Answer] else output:= output + [RelationAnswer(res) as Answer] This behaviour is refined with the definition of DBChange for a simple change to the database and DBCall for the call of a stored procedure. A single change to the database is described using the function DBStep DBChange(n as RelationName, r as Request) = let rel = database.content(n) if rel=undef then output:= output + [StatusAnswer("no such relation") as Answer] else let newDB = DBStep(database.content, n, r) if check(newDB,database.constraints) then database.content:= newDB output:= output + [StatusAnswer("ok") as Answer] else CAU Kiel, IfI, ISE β WS 2016/17 Informationssysteme 0. Einführung 25 output:= output + [StatusAnswer("constraint violation") as Answer] DBStep(cont as Map of RelationName to Relation, n as RelationName, r as Request) as Map of RelationName to Relation = let rel = cont(n) let newrel = match r with Insert(_,t): Relation(rel.attributes, rel.members union {t}) Delete(_,t): Relation(rel.attributes, rel.members difference {t}) Update(_,t): Relation(rel.attributes, (rel.members difference sameKeys(n, rel.members, t)) union {t}) cont override { n |-> newrel } An update to a relation consists of two steps: first, all tuples which have the same key values are deleted, and second, the new tuple is inserted. The tuples with the same key values are computed using the function sameKeys below. sameKeys(n as RelationName, r as Set of Tuple, t as Tuple) as Set of Tuple = let attr = database.content(n).attributes let keys = { (d as KeyConstraint).key | d in database.constraints where d is KeyConstraint and (d as KeyConstraint).rel = n } bigUnion({ { tup | tup in r where getKey(attr,tup,k)=getKey(attr,t,k) } | k in keys }) getKey(n as Seq of AttributeName, t as Tuple, k as Set of AttributeName) as Seq of Data = let len = if length(t.contents) < length(n) then length(t.contents) else length(n) [t.contents(idx) | idx in [ 0 .. len ] where n(idx) in k] DBCall(p as StoredProcedure, par as Seq of Data, res as Variable) = let chk = ParamCheck(p,par) if chk and p.transactional then machine var localDB as Map of RelationName to Relation = database.content foreach pstep in p.contents do foreach act in pstep.stepAction(par) do match act with Insert(n,t): if localDB(n)=undef then output:= output + [StatusAnswer("no such relation") as Answer] else localDB:= DBStep(localDB, n, act) Delete(n,t): if localDB(n)=undef then output:= output + [StatusAnswer("no such relation") as Answer] else localDB:= DBStep(localDB, n, act) Update(n,t): if localDB(n)=undef then output:= output + [StatusAnswer("no such relation") as Answer] else localDB:= DBStep(localDB, n, act) _: output:= output + [StatusAnswer("invalid action in stored procedure") as Answer] step if check(localDB,database.constraints) then database.content:= localDB output:= output + [StatusAnswer("stored procedure ok") as Answer] else output:= output + [StatusAnswer("constraint violation in stored procedure") as Answer] else if chk then CAU Kiel, IfI, ISE β WS 2016/17 Informationssysteme 0. Einführung 26 foreach pstep in p.contents do foreach act in pstep.stepAction(par) do ProcessAction(act) else output:= output + [StatusAnswer("illegal parameters for stored procedure") as Answer] ParamCheck(p as StoredProcedure, par as Seq of Data) as Boolean = let len = length(p.params) let ldiff = length(par) - len ldiff >= 0 and (forall idx in [0 .. len-2] holds p.params(idx)=par(idx).typ) and (p.params(len-1)="*" or (p.params(len-1)=par(len-1).typ and length(par)=len)) This concludes the top level view of databases. We proceed with defining relations and tuples. Moreover, we define a basic set of data types allowed within the database. structure Relation attributes as Seq of AttributeName members as Set of Tuple structure Tuple contents as Seq of Data // no nested Tuples allowed structure Data typ as String case PUndef case PInteger val as Integer case PString val as String case PShort val as Short case PByte val as Byte case PChar val as Char case PBoolean val as Boolean case PDate val as Date case PTimeStamp val as Float // could add more here converter converter converter converter converter converter converter converter (x (x (x (x (x (x (x (x as as as as as as as as Integer) as Data = PInteger("Integer",x) String) as Data = PString("String",x) Short) as Data = PShort("Short",x) Byte) as Data = PByte("Byte",x) Char) as Data = PChar("Char",x) Boolean) as Data = PBoolean("Boolean",x) Date) as Data = PDate("Date",x) Float) as Data = PTimeStamp("TimeStamp",x) We also have to define what constraints are and how they are checked. We distinguish between only two kinds of constraints, namely key constraints and domain constraints. A key constraint says, that the values on the corresponding attributes are unique within the relation. A domain constraint is used for type-checking the attribute values. structure Constraint case KeyConstraint rel as RelationName key as Set of AttributeName case DomainConstraint rel as RelationName attr as AttributeName domain as TypeName check(cont as Map of RelationName to Relation, constr as Set of Constraint) CAU Kiel, IfI, ISE β WS 2016/17 Informationssysteme 0. Einführung 27 as Boolean = forall c in constr holds forall r in dom(cont) holds checkOne(c,r,cont(r)) checkOne(c as Constraint, n as RelationName, rel as Relation) as Boolean = match c with KeyConstraint(RelationName(r),k): if r <> n.name then true else let relSize=size(rel.members) let keyCount=size({ getKey(rel.attributes,t,k) | t in rel.members }) machine if relSize <> keyCount then write("Key constraint violation: "); prettyPrint(c) step relSize = keyCount DomainConstraint(RelationName(r),attr,TypeName(d)): if r <> n.name then true else forall t in rel.members holds if length(rel.attributes) <> length(t.contents) then machine write("Domain constraint violation: ") write("wrong number of elements in "); prettyPrint(t) step false else machine let elem=getKey(rel.attributes,t,{attr}) if head(elem).typ <> d then write("Domain constraint violation: ") write(" Attribute "); write(r); write("."); write(attr.name) write("="); prettyPrint(head(elem)); write(" must be "); write(d) write(" and not "); writeln(head(elem).typ) step head(elem).typ = d 0.4.4 An Application Example The next part is devoted to an example taken in the context of internet information services. We (partially) define a database of restaurants. We define first some simplifications for defining the database structure: structure DataDesc name as AttributeName typ as TypeName // would be good to have MetaType here mkDataDesc(attr as String, atype as String) as DataDesc = DataDesc(AttributeName(attr), TypeName(atype)) mkRelation(name as String, key as Seq of DataDesc, members as Seq of DataDesc) = let relName = RelationName(name) database.content:= database.content override { relName |-> Relation([k.name | k in key] + [k.name | k in members],{}) } database.constraints:= database.constraints union { KeyConstraint(relName,{k.name | k in key}) as Constraint } union { DomainConstraint(relName, k.name, k.typ) as Constraint | k in key } union CAU Kiel, IfI, ISE β WS 2016/17 Informationssysteme 0. Einführung 28 { DomainConstraint(relName, m.name, m.typ) as Constraint | m in members } Now the macro mkRelation is used to create the database structure. Please note that we left this out of our description of database semantics as it is a static structure. As you can see below, it might still cause some work for a real database. InitSampleDB() = machine variables:= { resVar } step mkRelation("Restaurant", [ mkDataDesc("no","Integer") ], [ mkDataDesc("name","String"), mkDataDesc("street","String"), mkDataDesc("place","String"), mkDataDesc("po_code","String"), mkDataDesc("telephone","String"), mkDataDesc("fax","String"), mkDataDesc("email","String"), mkDataDesc("url","String") ]) step mkRelation("Person", < omitted > ) step mkRelation("Contact", [ mkDataDesc("restaurant_id","Integer") ], [ mkDataDesc("person_id","Integer") ]) step mkRelation("Owner", < omitted > ) step mkRelation("Operation_mode", < omitted > ) step mkRelation("Mode", < omitted > ) step mkRelation("Cuisine_kind", [ mkDataDesc("cuisine_id","Integer") ], [ mkDataDesc("description","String") ]) step mkRelation("Cuisine", [ mkDataDesc("restaurant_id","Integer"), mkDataDesc("cuisine_id","Integer") ], []) step mkRelation("Offers", < omitted > ) step mkRelation("Multimedia", < omitted > ) step mkRelation("Offer_description", < omitted > ) step mkRelation("Special_offers", < omitted > ) step mkRelation("Business_hours", < omitted > ) step mkRelation("Description", < omitted > ) step mkRelation("Location", < omitted > ) step mkRelation("Service_offers", < omitted > ) step mkRelation("Service", < omitted > ) step mkRelation("Cards", [ mkDataDesc("card_id","Integer") ], [ mkDataDesc("description","String") ]) step mkRelation("Credit_cards", [ mkDataDesc("restaurant_id","Integer"), mkDataDesc("card_id","Integer") ], [ ]) step mkRelation("Ambiente_kind", [ mkDataDesc("ambiente_id","Integer") ], [ mkDataDesc("description","String") CAU Kiel, IfI, ISE β WS 2016/17 Informationssysteme 0. Einführung 29 ]) step mkRelation("Ambiente", [ mkDataDesc("restaurant_id","Integer"), mkDataDesc("ambiente_id","Integer") ], [ ]) step mkRelation("Intern", < omitted > ) step mkRelation("Acquisition_url", [ ], [ mkDataDesc("url_menu","String"), mkDataDesc("url_map","String"), mkDataDesc("url_pics","String"), mkDataDesc("url_video","String") ]) The next step is to define two sample stored procedures for the database. These are fairly general procedures for deleting the tuples in a relation and for inserting tuples into a relation thereby creating a unique index for each of the entries. Both kinds of procedures are used later on to modify the database. class SP_DeleteStep implements ProcedureStep stepAction(params as Seq of Data) as Set of Request = let n as RelationName = RelationName((params(0) as PString).val) { Delete(n,t) as Request | t in database.content(n).members where t.contents(1) = params(1) } stepResult(params as Seq of Data) as Data = 0 as Data class SP_FillStep implements ProcedureStep stepAction(params as Seq of Data) as Set of Request = let n as RelationName = RelationName((params(0) as PString).val) { Insert(n,Tuple([idx as Data, params(idx)])) as Request | idx in [1..length(params)-1] } stepResult(params as Seq of Data) as Data = length(params) as Data InitProcedures() = database.procs(ProcedureName("sp_delete")):= StoredProcedure(true, ["String", "String"], // these are the parameter types [ new SP_DeleteStep() as ProcedureStep ]) database.procs(ProcedureName("sp_fill")):= StoredProcedure(true, ["String", "*"], // these are the parameter types, ’*’ means any type [ new SP_FillStep() as ProcedureStep ]) Now we define some sample requests. We obtain the following AsmL specification: InitInsertRequests() = input:= { Call(ProcedureName("sp_fill"), ["Service_offers" as Data, < omitted > ], resVar) as Request, Call(ProcedureName("sp_fill"), ["Operation_mode" as Data, < omitted > ], resVar) as Request, Call(ProcedureName("sp_fill"), ["Cuisine_kind" as Data, "american", "arabian", "argentinean", "australian", "balkan", "bavarian", < many more omitted > ], resVar) as Request, Call(ProcedureName("sp_fill"), ["Ambiente_kind" as Data, "asian", "historic building", "dignified", "bucolic", "luxurious", "modern", "nostalgic", "oriental", "rustic" CAU Kiel, IfI, ISE β WS 2016/17 Informationssysteme 0. Einführung 30 ], resVar) as Request, Call(ProcedureName("sp_fill"), ["Cards" as Data, "American Express", "DinersCub", "Euro Card", "Euro-cheque", "EC-card", "Visage", "Mastercard", "Tele-Cash", "Restaurant-cheque" ], resVar) as Request, Insert(RelationName("Acquisition_url"), Tuple([ "1" as Data, "2", "3", "4" ])) as Request } InitUpdateRequests() = input:= { Update(RelationName("Cards"), Tuple([ 2 as Data, "Diners Club" ])) as Request, Update(RelationName("Cards"), Tuple([ 6 as Data, "Visa" ])) as Request, // it is not clear whether the following line should produce a key constraint violation Insert(RelationName("Cards"), Tuple([ 7 as Data, "Mastercard" ])) as Request, Insert(RelationName("Acquisition_url"), Tuple([ "a" as Data, "b", "c", "d" ])) as Request, Update(RelationName("Acquisition_url"), Tuple( [ "http://www.informatik.tu-cottbus.de/˜cbnet/cb_db/gast/speisekarten/" as Data, "http://delaware.informatik.tu-cottbus.de/Stadtkarte/image.pl?place=", "http://www.informatik.tu-cottbus.de/˜cbnet/cb_db/gast/bilder/", "http://www.informatik.tu-cottbus.de/˜cbnet/cb_db/gast/video/" ])) as Request } InitCallRequests() = input:= { Call(ProcedureName("sp_delete"), ["Ambiente" as Data,"dummy"], resVar) as Request, Call(ProcedureName("sp_delete"), ["Ambiente_kind" as Data,"modern"], resVar) as Request } InitRetrieveRequests() = input:= { SimpleSelect([],RelationName("Cards"),undef,undef) as Request, SimpleSelect([],RelationName("xxx"),undef,undef) as Request } Now we put everything together to get an executable AsmL specification. The idea is always to initialize a sequence of requests and execute them afterwards using until fixpoint do DBAction(). Please note, that the requests are executed non deterministically and not in the order they are given. run() = machine InitSampleDB() InitProcedures() InitInsertRequests() step until fixpoint do DBAction() step writeln("The result is: ") prettyPrint(output) prettyPrint([StatusAnswer("ready") as Answer]) output:= [] InitUpdateRequests() step until fixpoint do DBAction() step prettyPrint(output) prettyPrint([StatusAnswer("ready") as Answer]) output:= [] InitCallRequests() step until fixpoint do DBAction() step prettyPrint(output) prettyPrint([StatusAnswer("ready") as Answer]) output:= [] InitRetrieveRequests() CAU Kiel, IfI, ISE β WS 2016/17 Informationssysteme 0. Einführung step until fixpoint do DBAction() step prettyPrint(output) prettyPrint([StatusAnswer("ready") as Answer]) output:= [] writeln(); writeln("The database is: ") prettyPrint(database) 0.4.5 Executing the Abstract Database Machine We can now test the database engine by running the specification. The result is as follows: The result is: Status: ok Status: stored procedure ok Status: stored procedure ok Status: stored procedure ok Status: stored procedure ok Status: stored procedure ok Status: ready Key constraint violation: Key(Acquisition_url)= {} Status: ok Status: ok Status: ok Status: constraint violation Status: ok Status: ready Status: stored procedure ok Status: stored procedure ok Status: ready Relation: card_id description #3 "Euro Card" #4 "Euro-Cheque" #5 "EC-Card" #6 "Visa" #7 "Mastercard" #8 "Tele-Cash" #9 "Restaurant-Cheque" #1 "American Express" #2 "Diners Club" Status: relation xxx not defined Status: ready After executing all the requests, the database has the values given below: The database is: Relation Description: <empty> Relation Mode: <empty> Relation Operation_mode: < omitted > Relation Acquisition_url: url_menu url_map url_pics url_video "http://www.informatik.tu-cottbus.de/˜cbnet/cb_db/gast/speisekarten/" "http://delaware.informatik.tu-cottbus.de/Stadtkarte/image.pl?place=" "http://www.informatik.tu-cottbus.de/˜cbnet/cb_db/gast/bilder/" "http://www.informatik.tu-cottbus.de/˜cbnet/cb_db/gast/video/" Relation Restaurant: <empty> Relation Owner: <empty> Relation Intern: <empty> Relation Cards: card_id description #3 "Euro Card" 31 CAU Kiel, IfI, ISE β WS 2016/17 Informationssysteme 0. Einführung #4 "Euro-Cheque" #5 "EC-Card" #6 "Visa" #7 "Mastercard" #8 "Tele-Cash" #9 "Restaurant-Cheque" #1 "American Express" #2 "Diners Club" Relation Credit_cards: <empty> Relation Cuisine: <empty> Relation Cuisine_kind: cuisine_id description #1 "american" #2 "arabian" #3 "argentinean" #4 "australian" #5 "balkan" #6 "bavarian" < some more omitted > Relation Location: <empty> Relation Multimedia: <empty> Relation Business_hours: <empty> Relation Person: <empty> Relation Service_offers: < omitted > Relation Service: <empty> Relation Offers: <empty> Relation Offer_description: <empty> Relation Ambiente: <empty> Relation Ambiente_kind: ambiente_id description #8 "oriental" #9 "rustic" #1 "asian" #2 "historic building" #3 "dignified" #4 "bucolic" #5 "luxurious" #7 "nostalgic" Relation Special_offers: <empty> Relation Contact: <empty> < now showing the constraints that are in the database > Domain(Acquisition_url.url_map)= String Domain(Acquisition_url.url_pics)= String Domain(Acquisition_url.url_speisekarte)= String Domain(Acquisition_url.url_video)= String < many more domain constraints omitted > Key(Acquisition_url)= {} Key(Cards)= {card_id} < more key constraints omitted > Press any key to continue 32