BZT Frauenfeld Modul 141 : Datenbanksystem in Betrieb nehmen Unterrichtsmaterial Christian Inauen BZT Frauenfeld [email protected] BZT Frauenfeld Juli 2015 Abstract Das Modul 141 findet jeweils im HS des 3ten Lehrjahres statt. Im Moment werden folgende Technologien eingesetzt: • MySQL Version 5.6 auf einem Ubuntu Image 14.04 • MSSQL Server 2012 auf einem Windows Server 2012 • MonogoDB auf einem Ubuntu Images 14.04 Technische Grundvoraussetzung ist eine funktionierende USB3 SSD-Disk um die Uebungen auch zuhause bearbeiten zu können. Inhaltsverzeichnis Abstract 1 List of Tables 5 List of figures 6 1 Einführung MSSQL 8 1.1 Neueste Features . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 1.2 Komponenten des MSSQL-Server . . . . . . . . . . . . . . . . . . 10 1.3 Versionen des MSSQL-Servers . . . . . . . . . . . . . . . . . . . . 12 1.3.1 Enterprise Edition . . . . . . . . . . . . . . . . . . . . . . 12 1.3.2 Business Intelligence . . . . . . . . . . . . . . . . . . . . . 12 1.3.3 Standard Edition . . . . . . . . . . . . . . . . . . . . . . . 12 1 1.3.4 Web Edition . . . . . . . . . . . . . . . . . . . . . . . . . . 12 1.3.5 Express Edition . . . . . . . . . . . . . . . . . . . . . . . . 13 1.3.6 LocalDB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 1.3.7 Developer Edition . . . . . . . . . . . . . . . . . . . . . . . 13 1.4 Komponenten UM einen MSSQL-Server . . . . . . . . . . . . . . 13 2 Voraussetzungen MSSQL 2.1 Hardware 16 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 2.2 Betriebssysteme . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 2.3 Software . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 3 Bedienung MSSQL 18 3.1 Das Management Studio . . . . . . . . . . . . . . . . . . . . . . . 19 3.1.1 Server registieren . . . . . . . . . . . . . . . . . . . . . . . 22 3.1.2 Der Objekt-Explorer . . . . . . . . . . . . . . . . . . . . . 22 3.1.3 Der Abfrageeditor . . . . . . . . . . . . . . . . . . . . . . . 25 3.1.4 Praxis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 3.2 Das Kommandozeilentool: SQLCMD . . . . . . . . . . . . . . . . 26 3.3 Der Konfigurations-Manager . . . . . . . . . . . . . . . . . . . . 27 3.4 System-Datenbanken . . . . . . . . . . . . . . . . . . . . . . . . . 28 A Datentypen in MySQL 5.6 31 A.1 Ganzzahlen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31 A.2 Fliesskommazahlen . . . . . . . . . . . . . . . . . . . . . . . . . . 32 A.2.1 Decimal / Beschreibung . . . . . . . . . . . . . . . . . . . 32 A.3 Spezielle Datentypen . . . . . . . . . . . . . . . . . . . . . . . . . 33 A.4 Datum und Uhrzeit . . . . . . . . . . . . . . . . . . . . . . . . . . 35 A.5 Zeichenketten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36 A.6 Räumliche Datentypen . . . . . . . . . . . . . . . . . . . . . . . . 37 B References 38 C Gruppenübung “Integrität” 39 D Übungen : ER-Modelle und Transformation 40 D.1 Vorlesungsbeispiel . . . . . . . . . . . . . . . . . . . . . . . . . . 40 D.2 Theorie 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40 D.3 Theorie 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41 D.4 Kardinalitäten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41 D.5 Modellfirma / ERM erstellen . . . . . . . . . . . . . . . . . . . . . 42 2 D.6 Transformationsübung 1 . . . . . . . . . . . . . . . . . . . . . . . 42 D.7 Transformationsübung 2 . . . . . . . . . . . . . . . . . . . . . . . 42 D.8 Transformationsübung 3 . . . . . . . . . . . . . . . . . . . . . . . 44 E Übung: Normalisierung 45 E.1 Theorie 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45 E.2 Theorie 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45 E.3 Normalisierungsübung 1 . . . . . . . . . . . . . . . . . . . . . . . 45 E.4 Normalisierungsübung 2 . . . . . . . . . . . . . . . . . . . . . . . 46 E.5 Normalisierungsübung 3 . . . . . . . . . . . . . . . . . . . . . . . 46 E.6 Normalisierungsübung 4 . . . . . . . . . . . . . . . . . . . . . . . 46 E.7 Interpretation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46 F Übung: Eigene Datenbank, von A-I 48 F.1 Beispielauftrag (oder Ihr eigenes Beispiel) . . . . . . . . . . . . 49 F.2 ERM erstellen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49 F.3 Transformieren . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50 F.4 Normalisieren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50 F.5 Storage Engine wählen . . . . . . . . . . . . . . . . . . . . . . . . 50 F.6 Definition / Repetition der Datentypen . . . . . . . . . . . . . . . 50 F.7 Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50 F.8 Integrität . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51 F.9 Installationsscript erstellen . . . . . . . . . . . . . . . . . . . . . 51 F.10 System-Arbeiten . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51 F.10.1 Kontrolle der Serverdienste . . . . . . . . . . . . . . . . . 51 F.10.2 Root-Passwort . . . . . . . . . . . . . . . . . . . . . . . . . 52 F.11 Installation ausführen . . . . . . . . . . . . . . . . . . . . . . . . 52 F.12 Benutzerzugriff einschränken . . . . . . . . . . . . . . . . . . . 52 F.12.1 Benutzer definieren . . . . . . . . . . . . . . . . . . . . . 52 F.12.2 Zugriffe einschränken / austesten . . . . . . . . . . . . . 52 F.13 Weiterführende Arbeiten / mögliche Ideen . . . . . . . . . . . . 53 F.13.1 Apache2 einrichten . . . . . . . . . . . . . . . . . . . . . . 53 F.13.2 PHP Script erstellen . . . . . . . . . . . . . . . . . . . . . . 53 F.14 Zusatz: Workbench installieren auf Ubuntu 14.04 . . . . . . . . 53 G Übung zu Performance / mysqlslap und explain 54 G.1 mysqlslap . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54 G.2 explain . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55 3 H Übung zu Performance / PHP 56 H.1 PHP - Script . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56 H.2 Sysbench . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57 I J Übung : MySQL / Import und Export 58 I.1 Voraussetzungen . . . . . . . . . . . . . . . . . . . . . . . . . . . 58 I.2 mysqldump / lokal . . . . . . . . . . . . . . . . . . . . . . . . . . 58 I.3 mysqldump / remote . . . . . . . . . . . . . . . . . . . . . . . . . 59 I.4 mysqldump / remote und ssh-gesichert . . . . . . . . . . . . . . 59 I.5 Weiterführendes : FIFO-Datei . . . . . . . . . . . . . . . . . . . . 60 Übung : Backup in MySQL 61 J.1 Voraussetzungen . . . . . . . . . . . . . . . . . . . . . . . . . . . 61 J.2 Backup mit File-Copy . . . . . . . . . . . . . . . . . . . . . . . . . 61 J.3 Backup / Point in Time Restore . . . . . . . . . . . . . . . . . . . 62 J.4 Erweitert : Script mit mysqldump . . . . . . . . . . . . . . . . . 62 K Übung : PHP und Bilder aus einer Datenbank 63 K.1 Datenbank vorbereiten . . . . . . . . . . . . . . . . . . . . . . . . 63 K.2 Images uploaden . . . . . . . . . . . . . . . . . . . . . . . . . . . 64 K.3 Images anzeigen . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64 L Übung: Datenbank importieren und exportieren 67 L.1 Import von Datenbanken (Registrierung) . . . . . . . . . . . . . 67 L.2 Bedingung der verschiedenen Zugriffsmethoden . . . . . . . . 68 L.3 Export von Datenbanken (Import und Export-Assistent) . . . . 68 M LBV Beschreibung 72 M.1 Grobbeschreibung . . . . . . . . . . . . . . . . . . . . . . . . . . 72 M.2 Teil 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73 M.3 Teil 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73 M.4 Teil 3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74 N Images 76 N.1 Ubuntu 14.04 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76 N.2 Windows 2012 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77 O Lernziele Modulnummer 141 78 O.1 Handlungsziele . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78 P Semesterplan 81 4 List of Tables Tabellenverzeichnis A.1 Datentypen / Ganzzahlen . . . . . . . . . . . . . . . . . . . . . . 32 A.2 Datentypen / Fliesskommazahlen . . . . . . . . . . . . . . . . . . 32 A.3 Speicherbedarf bei einem Decimal . . . . . . . . . . . . . . . . . 33 A.4 Datentypen / Spezielle Datentypen . . . . . . . . . . . . . . . . . 35 A.5 Datentypen / Datum und Uhrzeit . . . . . . . . . . . . . . . . . . 36 A.6 Datentypen / Zeichenketten . . . . . . . . . . . . . . . . . . . . . 37 A.7 Datentypen / Räumliche Datentypen . . . . . . . . . . . . . . . . 37 P.1 Semesterplan . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83 5 List of figures Abbildungsverzeichnis 1.1 Komponenten des MSSQL-Servers . . . . . . . . . . . . . . . . . 11 1.2 Komponenten um eine MSSQL-Datenbank . . . . . . . . . . . . 14 1.3 Werkzeuge um eine MSSQL-Datenbank . . . . . . . . . . . . . . 15 3.1 Anmeldebildschirm / Managementstudio . . . . . . . . . . . . . 20 3.2 Managementstudio . . . . . . . . . . . . . . . . . . . . . . . . . . 21 3.3 Objektexplorer . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 3.4 SQLCMD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 3.5 SQLCMD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28 3.6 Systemdatenbanken . . . . . . . . . . . . . . . . . . . . . . . . . 29 D.1 Vorlesungsbeispiel . . . . . . . . . . . . . . . . . . . . . . . . . . 40 D.2 Musterrechnung . . . . . . . . . . . . . . . . . . . . . . . . . . . 42 D.3 Transformationsübung 1 . . . . . . . . . . . . . . . . . . . . . . . 43 D.4 Transformationsübung 2 . . . . . . . . . . . . . . . . . . . . . . 43 D.5 Transformationsübung 3 . . . . . . . . . . . . . . . . . . . . . . 44 E.1 Normalisierungsübung 1 . . . . . . . . . . . . . . . . . . . . . . 46 E.2 Normalisierungsübung 2 . . . . . . . . . . . . . . . . . . . . . . 46 E.3 Normalisierungsübung 3 . . . . . . . . . . . . . . . . . . . . . . 46 E.4 Normalisierungsübung 4 . . . . . . . . . . . . . . . . . . . . . . 47 E.5 Interpretation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47 6 L.1 Datenquelle auswählen . . . . . . . . . . . . . . . . . . . . . . . 70 L.2 Option für Export . . . . . . . . . . . . . . . . . . . . . . . . . . . 70 L.3 Quellen wählen . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71 7 Kapitel 1 Einführung MSSQL Nach Wikipedia: Der Microsoft SQL Server (auch kurz MSSQLServer) ist ein relationales Datenbankmanagementsystem von Microsoft. Microsoft SQL Server entstand aus einer Zusammenarbeit der Firmen Microsoft und Sybase Ende der 1980er Jahre. 1989 wurde die erste Version für das von Microsoft und IBM entwickelte Betriebssystem OS/2 veröffentlicht. Das Produkt entsprach prinzipiell dem Sybase SQL Server 4.0 für Unix und VMS. 1992 erschien der Microsoft SQL Server 4.2 für OS/2 1.3. Im Anschluss mit dem Release von Windows NT im Jahr 1993 erschien schon bald Microsoft SQL Server 4.21, der anstatt auf OS/2 auf Windows NT als Betriebssystem setzte. In dieser Zeit lockerte sich ausserdem die Kooperation zwischen Microsoft und Sybase. Im Jahr 1995 erschien mit Microsoft SQL Server 6.0 eine eigenständige Weiterentwicklung der Kooperation, dem 1996 die Version 6.5 folgte. Mit der Version 7.0, die im Jahr 1999 erschien, verabschiedete sich Microsoft von der mit Sybase entwickelten Codebasis und brachte eine vollkommen neue Datenbank-Engine auf den Markt. Diese war auch Basis in den darauffolgenden Versionen SQL Server 2000 (Versionsnummer 8.0), SQL Server 2005 (Versionsnummer 9.0), SQL Server 2008 (Versionsnummer 10.0), SQL Server 2008 R2 (Versionsnummer 10.50) und SQL Server 2012 (Versionsnummer 11.0) und SQL Server 2014 (Versionsnummer 12.0) 8 1.1 Neueste Features SQL Server 2012 Der unter dem Codenamen Denali entwickelte SQL Server 2012 wurde am 6. März 2012 veröffentlicht. Bei den Editionen liess Microsoft die erst beim Vorgänger eingeführte Datacenter Edition wieder wegfallen und führte stattdessen eine neue Edition Business Intelligence ein. Die Neuerungen oder Verbesserungen fanden in allen Bereichen des SQL Servers statt, darunter • im Datenbankmodul, • dem Analyse Service, • dem Reporting Service und • der Replikation. Zu den wichtigsten Änderungen bzw. Neuerungen gehören unter anderem • Performanceoptimierung für SharePoint, • die Hochverfügbarkeitslösung “Always On”, • die Cloud-Lösung “Azure”, • die Data Quality Services “DQS”, • Contained Database und • Columnstore Index. Ausserdem wurde die SQL-eigene Programmierschnittstelle T-SQL um weitere Funktionen ergänzt. SQL Server 2014 Die aktuelle Version 2014 (Codename Hekaton, freigegeben am 1. April 2014) des SQL Servers wurde in Hinblick auf die performante Verarbeitung grosser Datenmengen weiter optimiert, um die EchtzeitTransaktionsverarbeitung zu verbessern. Hierzu gehören die Fähigkeit, Tabellen oder ganze Datenbanken komplett im Hauptspeicher zu halten (In-Memory-Datenbank) sowie eine verbesserte Handhabung spaltenbasierter Indexe. Es ist nun auch möglich, SQL-Server-Datendateien in Azure abzulegen und eine SQL-Server-Datenbank auf einem virtuellen Computer in Azure zu hosten. 9 1.2 Komponenten des MSSQL-Server Der SQL Server beschränkt sich keinesfalls auf die Datenbank-Engine. SQL Server ist mittlerweile eine komplette Produktfamilie, die sich um den Kern schart. Damit ist der SQL Server nicht nur ein reines Datenbanksystem. Er bietet auch Lösungen für viele Anwendungen im Datenbankumfeld. Die Zusatzprodukte, oft unter dem Begriff Business Intelligence (BI) zusammengefasst, sind folgende Dienste: • Integration Services: Die Integration Services (IS) sind ein umfassendes Werkzeug, um zum Beispiel Daten von A nach B zu transferieren. Dabei sind komplexe Workflows mit Verzweigungen und unzähligen Möglichkeiten realisierbar. Reporting Services: Aufgabe dieser Services ist es, Berichte, die auf Daten aus der Datenbank basieren, in verschiedenen Formen zur Verfügung zu stellen. Das kann zum Beispiel eine HTML-Seite oder ein PDF-Dokument sein, das per E-Mail verschickt wird. Ziel ist es, das gesamte Berichtswesen eines Unternehmens abbilden zu können. Daher sind diese Berichte auch nicht statisch. Vielmehr erlauben sie es einem Benutzer, durch die Eingabe von Parametern das Ergebnis zu verändern oder über einen definierten Drill Down immer detailliertere Daten abzurufen. Ein wichtiger Bestandteil der Reporting Services ist neben der Berichtserstellung die Berichtsverteilung. Reporting Services lassen sich sehr gut in Share Point integrieren. • Analysis Services: Diese dienen der Realisierung von Data-WarehouseLösungen. Geschäftsleitung, Controller und Marketingmanager benötigen immer anspruchsvollere Analysen und Trendinformationen. Die Basis dafür liegt zu einem Grossteil in den bereits auf Servern gespeicherten Unternehmensdaten. In der Praxis werden zur Lösung dieser Aufgabenstellung OLAP-Systeme (Online Analytical Processing; deutsch: analytische Online-Verarbeitung) benötigt, indem auf einfache Weise Informationszusammenstellungen aus OLTP-Daten erstellt werden, die dann für anspruchsvolle Datenanalysen genutzt werden können. Die Analysis Services bieten diese Funktionalität auf einem sehr hohen Niveau und haben den SQL Server in diesem Bereich zu einem der führenden Produkte gemacht. • Service Broker: Dieser Service zielt auf grosse verteilte Anwendungen ab. Der Service Broker verwaltet Warteschlangen, die mit 10 SQL-Anweisungen “gefüttert” werden können. Die Inhalte der Warteschlange werden dann der Reihe (englisch: queue) nach abgearbeitet. Diese Warteschlangen können nicht nur am lokalen Server positioniert sein, sondern auch remote abgearbeitet werden. • Master Data Services: Darunter versteht man, wenn Organisationen ihre Stammdaten unternehmensweit zentralisiert vereinheitlichen und für gezielte Analysen bereitstellen. • Data Quality Services: Dies ist ein in dieser Version neues Tool, mit dessen Hilfe die Datenqualität in bestehenden Systemen verbessert werden kann. Lücken in Datenbeständen können damit besser aufgefunden und bereinigt werden. Dies können Fragestellungen sein wie: “Sind alle notwendigen Relationen vorhanden und gesetzt?” Die Abbildung 1.1 auf der Seite 11 stellt die verschiedenen Komponenten graphisch dar. Abbildung 1.1: Komponenten des MSSQL-Servers 11 1.3 Versionen des MSSQL-Servers In der folgenden Tabelle sind die verschiedenen Versionen, in der der MSSQL-Server angeboten wird, aufgelistet. 1.3.1 Enterprise Edition Dies ist die von Featureseite umfangreichste SQL Server-Edition, die optimal für grosse Unternehmen und hochkomplexe Anforderungen geeignet ist und mit der hohe Anforderungen an das Datenbankmanagement erfüllt werden können. Dazu zählt die Unterstützung sehr grosser OLTP-Systeme, hochkomplexer Datenanalysen, von Data-Warehousing-Systemen und von Webanwendungen für Unternehmen. 1.3.2 Business Intelligence Diese Edition steht zwischen der Standard und Enterprise Edition. Sie bietet den Grossteil der Features im Bereich von Business Intelligence, aber verfügt im Gegensatz zur Enterprise Edition nicht über die vollen Möglichkeiten im Bereich der Hochverfügbarkeit und fortgeschrittenen Sicherheit. 1.3.3 Standard Edition Dieses Angebot richtet sich an kleine und mittelständische Unternehmen, welche die erweiterten Leistungsoptionen der SQL Server 2014 Enterprise Edition nicht benötigen. Im Lieferumfang der Edition sind die wesentlichen Funktionen von Business Intelligence enthalten. 1.3.4 Web Edition Die Web Edition unterscheidet sich von der Standard Edition in erster Linie durch die Lizenzierung, die ausschliesslich auf CPU-Basis erfolgt. 12 1.3.5 Express Edition Die Express Edition ist eine frei erhältliche Datenbank, die einfach zu verwenden und zu verwalten ist. Sie ist auch in Microso Visual Studio integriert und für die Entwicklung von datengesteuerten Anwendungen geeignet. Die Datenbank kann sowohl als eine Clientdatenbank als auch als einfache Serverdatenbank eingesetzt werden. SQL Server Express wendet sich an kleinere Softwarehersteller und Serverbenutzer sowie Entwickler, die nicht hauptberuflich Webanwendungen entwickeln. Die Express Edition gibt es auch als Variante mit Tools und mit Advanced Services. Express Edition mit Tools enthält zusätzlich bereits mit dem Management Studio eine grafische Entwicklungs- und Verwaltungsumgebung. Die Express Edition mit Advanced Services erlaubt zusätzlich noch, eine Volltextsuche einzusetzen, und enthält ein Frontend, um Berichte für die SQL Server Reporting Services zu erstellen. 1.3.6 LocalDB Die LocalDB wird eingesetzt, wenn SQL Server in eine andere Anwendung eingebettet werden soll. Sie kommt mit minimalen Ressourcen aus und läu nicht als Service, sondern ist in den Prozess eingebettet. Daher ist sie für den Einsatz von mobilen Anwendungen geeignet, bei denen kein MultiuserZugriff auf die Datenbank benötigt wird, denn dieser ist nicht möglich. 1.3.7 Developer Edition1 Die Developer Edition ist eine sehr kostengünstige Edition für Ent wickler. Diese Edition darf keine Produktivsysteme hosten; sie entspricht aber ihrem Umfang nach der Enterprise Edition. 1.4 Komponenten UM einen MSSQL-Server In der Praxis benötigen Sie keine Datenbank, sondern eine Datenbankanwendung. Auch wenn die Datenbank als “Motor” einer Anwendung o die 1 Die Developer-Version können de/evalcenter/dn205290 beziehen Sie 13 von http://technet.microso .com/de- wichtigste Komponente darstellt, ist ein Motor ohne ein Chassis o nur wenig von Nutzen. Das Chassis ist die Anwendung, die aus einer Datenbank eine Datenbankanwendung macht. Eine Anwendung wird mit einer Entwicklungsumgebung erstellt und grei über standardisierte Schnittstellen mithilfe von SQL auf ein Datenbanksystem zu. Einen Überblick über einsetzbare Programmiersprachen und Schnittstellen zeigt die Abbildung 1.2 auf Seite 14. Abbildung 1.2: Komponenten um eine MSSQL-Datenbank Eine Datenbankanwendung besteht in der Regel aus folgenden Komponenten: • Datenbankmanagementsystem als Backend für die Verwaltung der Daten • User-Interface als Frontend für die Bedienung der Anwendung • Server- und/oder clientseitige Programmierung für die Abbildung von Logiken Die Abbildung 1.3 auf Seite 15 zeigt mögliche, beteiligte Komponenten bei einer Umsetzung einer datenbankgestützten Applikation. 14 Abbildung 1.3: Werkzeuge um eine MSSQL-Datenbank 15 Kapitel 2 Voraussetzungen MSSQL 2.1 Hardware Voraussetzung für die Nutzung von Microso SQL Server 2014 ist eine fehlerfreie Installation. Dazu muss Ihr Computer bestimmte Systemanforderungen bezüglich Hardware und Betriebssystem erfüllen. • Speicherplatz: Der benötigte Festplattenspeicher hängt von den zu installierenden Komponenten ab. Das Datenbankmodul braucht dabei ca. 811 MB. Weitere 591 MB benötigen jeweils die Integration Services und 304 MB sind für die Reporting Services erforderlich. Die Clientkomponenten beanspruchen mit 1823 MB viel Kapazität. Weitere 375 MB werden von der Online-Dokumentation benötigt. Während des Setups sind auf dem Systemlaufwerk mindestens 6 GB freier Platz nötig. • Arbeitsspeicher: Hier unterscheiden sich die Varianten Express Edition und die übrigen Editionen. Für die Express Edition wird 1GB empfohlen - für die die restliche Konfigurationen werden 4GB empfohlen. • Prozessor: Sie benötigen für 32-Bit-Versionen des SQL Servers 2014 einen Pentium III-Prozessor mit mindestens 1,0 GHz Taktfrequenz (2 GHz oder mehr wird empfohlen). Für eine 64-Bit-Version benötigen Sie mindestens einen Pentium IV- oder Xeon-Prozessor mit 64-Bit-Unterstützung und 1,4 GHz Taktfrequenz. 16 2.2 Betriebssysteme Die folgende Tabelle zeigt die verschiedenen OS/Software-Kombinationen auf: Editionen OS Enterprise, BI, Windows Server 2008 SP2, Windows Server 2008 R2 Web SP1, Windows Server 2012, Windows Server 2012 R2 Standard, Windows Server 2008 SP2, Windows Server 2008 R2 Developer, SP1, Windows Server 2012, Windows Server 2012 R2, Express Windows 7 SP1, Windows 8, Windows 8.1 2.3 Software Für die Installation von SQL Server 2014 sind ausserdem erforderlich: • .NET Framework 3.5 SP1 • .NET Framework 4.0 (dieses wird, wenn nicht vorhanden, mit installiert) Für die Clientkomponenten wird zusätzlich benötigt: • Windows PowerShell 2.0 Fehlt das .NET Framework 4.0, erledigt das SQL Server Setup-Programm dies für Sie. Das .NET-Framework 3.5 SP1 und PowerShell 2.0 müssen Sie selber installieren oder je nach verwendetem Betriebssystem auch nur aktivieren. ACHTUNG : Wollen Sie eine deutschsprache Version von SQL-Server installieren, muss das OS die Sprache Deutsch/Deutschland aktiviert haben. Nach der Installation kann die Sprache wieder gewechselt werden auf Deutsch/Schweiz 17 Kapitel 3 Bedienung MSSQL Es gibt eine Reihe von graphischen (und auch konsolenbasierten) Tools um den MSSQL-Server bedienen und administrieren zu können. In der Folge möchte ich Ihnen die wichtigsten Tools kurz vorstellen. Die Liste der Möglichkeiten um den MSSQL-Server zu bedienen ist sehr gross, hier die komplette Auswahl: • SQL Server Management Studio: Das Management Studio ist quasi das Hauptwerkzeug des SQL Server 2014. Es basiert auf der Shell vom Visual Studio und kommt daher Entwicklern von der Optik und der Handhabung her o bekannt vor. Es ist sowohl das Haupttool zur Verwaltung als auch dasjenige zur Entwicklung. Der integrierte Abfrageeditor dient zum Erstellen und Generieren von Abfragen und kann somit auch von Nichtspezialisten verwendet werden. In der Vollversion unterstützt es nicht nur das Datenbankmodul, sondern auch andere Dienste wie zum Beispiel die Integration oder Analysis Services. In der einfachen Installationsvariante, die bei der freien Express Edition zum Einsatz kommt, wird ausschliesslich das Datenbankmodul unterstützt, sozusagen der Bereich der klassischen relationalen Datenbank. • SQL Server-Konfigurations-Manager: Der Konfigurations-Manager dient zur Einstellung der verwendeten Netzwerkprotokolle und zur Konfiguration der SQL Server-Dienste. • SQLCMD: Das Tool SQLCMD (SQL Command) ist das Kommandozeilentool für den Einsatz von SQL und Transact-SQL. • SQL Server-Installationscenter: Das Installationscenter wird für das nachträgliche Ergänzen von Features zu einer existierenden Installa18 tion verwendet. • SQL Server Profiler: Der Profiler dient zur Überwachung von Anweisungen und Prozessen auf dem Server. In erster Linie übernimmt er die Auswertung der Leistung und die Analyse der ausgeführten Anweisungen. • Datenbankoptimierungsratgeber: Mithilfe des Optimierungs- ratgebers können Sie Ihre Datenbank analysieren und Tipps für Verbesserungen der Leistung erhalten. • SQL Server Data Tools: Dieses Tool bietet Entwicklern die Möglichkeit, mit einem Tool alle Bereiche der Datenbankentwicklung abzudecken. Ausserdem ermöglicht es das Entwickeln von .Net-Prozeduren ohne eine Vollversion des Visual Studios. • SQL Server Data Tools BI: Dieses Tool hat in der Version 2012 den Namen Visual Studio Shell und davor den Namen Business Intelligence Development Studio getragen. Über diese spezielle Form des Visual Studio werden Projekte für Analysis Services, Integration Services und Reporting Services erstellt. • Import/Export-Assistent: Ein komfortabler Assistent für den einfachen Import und Export von Daten in oder aus einer Datenbank. Bereitstellungsassistent für Integration Services: Mit diesem Assistenten können Integration Services-Projekte einfach in einen Integration Services-Katalog auf einem Server übertragen werden. • Projektkonvertierungs-Assistent: Mit diesem Assistenten können Integration Services Pakete von Vorversionen für die aktuelle Version konvertiert werden. 3.1 Das Management Studio Beim Starten des Management Studios müssen Sie sich erstmalig anmelden. In der Regel melden Sie sich am Datenbankmodul (Database Engine) an. Melden Sie sich am Datenbankmodul über Windows-Authentifizierung oder über SQL Server-Authentifizierung mit Eingabe Ihres Benutzernamens und Ihres Kennwortes an (Abbildung 3.1 auf Seite 20). Nach erfolgter Anmeldung werden Ihnen im Management Studio folgende Fenster angezeigt (Abbildung 3.2 auf Seite 21): • Objekt-Explorer: Hier sehen Sie alle Objekte des Servers, an dem Sie 19 Abbildung 3.1: Anmeldebildschirm / Managementstudio 20 sich angemeldet haben. • Details zum Objekt-Explorer: Hier werden Details zur jeweiligen Auswahl im Objekt-Explorer angezeigt. Manchmal wird dieser nicht angezeigt, dann können Sie die Details über das Menü Ansicht oder die Taste (F7) einblenden. Der Vorteil dieser Details ist nicht nur, dass man mehr an Informationen auf einen Blick sieht als im ObjektExplorer, sondern dass es in manchen Situationen praktisch ist, mehrere Objekte gleichzeitig markieren und bearbeiten zu können. Abbildung 3.2: Managementstudio Neben den beiden erwähnten Fenstern können noch folgende Fenster sinnvollerweise angezeigt werden: • Registrierte Server • Vorlagen-Explorer • Projektmappen-Explorer • Eigenschaftsfenster AUFTRAG: Betrachten Sie die Auswahl der Fenster und finden Sie deren Verwendung selbst heraus! Die Fenster lassen sich, windows-typisch, verschieben und an anderen Orten andocken. 21 3.1.1 Server registieren Wenn Sie mit mehreren Servern arbeiten, können Sie diese Verbindungen über das Fenster Ansicht\Registrierte Server organisieren. AUFTRAG: Arbeiten Sie mit einem Klassenkameraden zusammen und registrieren Sie den Server Ihres Klassenkameraden in Ihrem MGMT-Studio 3.1.2 Der Objekt-Explorer Der Objekt-Explorer ist die Ansicht die Sie wohl am meisten verwenden werden (Abbildung 3.3 auf Seite 23). Im Objekt-Explorer haben Sie vor allem folgende wichtige Objekte im Zugriff: • Datenbanken: Neben den Benutzerdatenbanken werden die Systemdatenbanken sowie Datenbank-Momentaufnahmen (Snapshots) in eigenen Ordnern angezeigt. Datenbank-Snapshots speichern Momentauszüge aus der Datenbank, die nur gelesen und beispielsweise für Auswertungen verwendet werden können. Über die einzelnen Datenbanken gelangen Sie in weiterer Folge zu allen Datenbankobjekten. Lesen Sie hierzu mehr in den folgenden Kapiteln. • Sicherheit: Hier werden Objekte wie Anmeldungen und Serverrollen verwaltet, die für die Organisation der Sicherheit und der Zugriffsberechtigungen auf dem Datenbankserver benötigt werden. Ausserdem finden Sie an dieser Stelle die Features Überwachungen und die Kryptografie vor (nicht Express Edition). • Serverobjekte: Hier finden Sie Sicherungsmedien, Endpunkte (nicht Express Edition) und Verbindungsserver (Linked Server). Letztere benötigen Sie für die Verbindung mehrerer Server miteinander. Sind Server auf diese Art miteinander verlinkt, können Sie in einer Abfrage auf mehrere Datenbankserver gleichzeitig zugreifen. Ausserdem finden Sie in der Rubrik Serverobjekte noch Trigger, womit hier im Speziellen die DDL-Trigger gemeint sind. • Replikation: Hier können Sie Objekte erstellen und verwalten, die Sie für verteilte Datenbanken benötigen. Die Bedeutung der Replikation 22 Abbildung 3.3: Objektexplorer 23 hat allerdings in den letzten Jahren stark abgenommen. Durch die Verfügbarkeit von schnellen Datenleitungen, sowohl in terrestrischer als auch mobiler Form, wird nämlich häufig der einfachere Onlinezugriff auf eine zentrale Datenbank dem Verteilen und Abgleichen der Datenbestände mit all seinen Synchronisationsproblemen vorgezogen. Die Express Edition kann hierbei nur der Abonnent (Empfänger), nicht der Verleger sein. • Hohe Verfügbarkeit mit AlwaysOn: Bei AlwaysOn handelt es sich um ein Feature, hinter dem sich eine bedeutende Weiterentwicklung für Hochverfügbarkeitsszenarien verbirgt. Daher steht dieses Feature auch nur bei der Enterprise Edition zur Verfügung. Im Menüpunkt Verwaltung sind folgende Punkte zusammengefasst: • Richtlinienverwaltung: Sie können zum Beispiel Richtlinien für die Benennung von Objekten erstellen. Diese werden dann bei der Erstellung von Datenbankobjekten erzwungen. • Datensammlung: Dieses Feature – früher als Datenauflistung bezeichnet – erlaubt es, Konfigurationen für ein Verwaltungs-DataWarehouse vorzunehmen (nicht Express Edition). • Ressourcenkontrolle: Um zu verhindern, dass einzelne Prozesse den ganzen Server blockieren, gibt es dieses Feature. Hierbei können die beanspruchten Ressourcen für einzelne Prozesse limitiert und optimiert werden. Auch dieses Feature steht bei der Express Edition nicht zur Verfügung. • Erweiterte Ereignisse: Hier bekommen Sie Informationen darüber, ob Ihr System in Ordnung ist, vor allem in Zusammenhang mit AlwaysOn. • Wartungspläne: Wartungspläne führen Wartungsarbeiten wie zum Beispiel Sicherungen, Index-Reorganisationen oder Prüfungen der Datenbankintegrität gemeinsam oder getrennt zu festgelegten Zeiten aus. Wartungspläne gibt es bei der Express Edition nicht, da sie den hier fehlenden Server-Agent benötigen. • SQL Server-Protokolle: Hier werden unterschiedliche Vorgänge protokolliert – wie zum Beispiel Anmeldungen oder das Anfügen und das Sichern von Datenbanken. Vor allem Fehler unterschiedlichster Art werden hier festgehalten. 24 • Datenbank-E-Mail: Über den SQL Server können SMTP-Mails versendet werden. Diese lassen sich zum Beispiel für Benachrichtigungen aus Datenbanken heraus verwenden oder um Administratoren in bestimmten Situationen zu informieren. In der Express Edition müssen Sie auf dieses Feature verzichten. • Distributed Transaction Coordinator: Dieser Dienst wird benötigt, wenn Sie Transaktionen verwenden, bei denen mehr als ein Server beteiligt ist. • Legacy: Hier finden Sie Komponenten, die zur Gewährleistung der Abwärtskompatibilität benötigt werden. Hierzu gehören beim SQL Server 2014 nur mehr die alten Datenbankwartungspläne. AUFTRAG: Arbeiten Sie sich durch Menüpunkte des Objektexplorers und verifizieren Sie die Möglichkeiten! 3.1.3 Der Abfrageeditor Eine Kernkomponente des Management Studios ist der Abfrageeditor. Dieser dient zum Erstellen und Absetzen von SQL- und Transact-SQLAnweisungen. Er enthält auch einen grafischen Editor, der beim Schreiben von Statements hilfreich ist. Um ein Abfrageeditor-Fenster zu öffnen, wählen Sie eine der folgenden Varianten: • Markieren Sie eine Datenbank im Objekt-Explorer und wählen Sie im Kontextmenü den Befehl Neue Abfrage. Die bereits bestehende Anmeldung des im Objekt-Explorer markierten Servers wird dann verwendet. Auch die markierte Datenbank wird im Abfrageeditor-Fenster als Vorgabe übernommen. • Wählen Sie den Befehl Datei\Neu\Abfrage mit aktueller Verbindung. Die bereits bestehende Anmeldung des im Objekt-Explorer markierten Servers wird dann ebenso verwendet. Es muss auch gar nicht das Server-Objekt selber markiert sein, es kann ein beliebiges Objekt im Baum darunter ausgewählt sein. • Wählen Sie im Menü Datei den Befehl Neu\Datenbankmodul-Abfrage. Sie werden daraufhin zur Eingabe neuer Anmeldeinformationen aufgefordert. 25 Im neuen Abfrageeditor-Fenster können Sie nun SQL- und Transact-SQLAnweisungen eingeben und ausführen. Anweisungen werden hierbei über das Ausführen-Symbol mit dem Ausrufezeichen oder über die Taste (F5) ausgeführt. Das Ergebnis wird im unteren Bildschirmbereich angezeigt. AUFTRAG: Testen Sie den Abfrageneditor aus! 3.1.4 Praxis Natürlich können Sie das Management-Studio auch unabhängig des SQLServers installieren - und das wird in der Praxis auch häufig gemacht. Damit können DB-Administratoren von Ihrem Arbeitsplatz aus bequem alle SQL-Server im Netzwerk bedienen und administrieren ohne jedes Mal eine Remote-Desktop Verbindung herstellen zu müssen. Voraussetzung dafür ist natürlich, dass die Remote-Verbindungsprotokolle aktiviert sind und auch die Firewalls diese Verbindungen erlauben. 3.2 Das Kommandozeilentool: SQLCMD Ab und zu ist es hilfreich, auch von der Kommandozeile aus auf den SQL Server zuzugreifen, zum Beispiel wenn SQL-Skripte als Bestandteile anderer Verwaltungsaufgaben – zum Beispiel auf Betriebssystemebene – ausgeführt werden sollen (Abbildung 3.4 auf Seite 27). Parameter Bedeutung -S server Name oder IP-Adresse des Servers. Wird dieser Parameter weggelassen, wird die lokale Standardinstanz verwendet. -U anmelde- Anmeldename bei einer Anmeldung mit SQL name Server-Authentifizierung -P kennwort Kennwort bei einer Anmeldung mit SQL Server-Authentifizierung -E Anmeldung mittels Windows-Authentifizierung -d datenban- Name der Datenbank, zu der nach der Anmeldung kname gewechselt werden soll 26 Parameter Bedeutung -i Pfad zur SQL-Skript-Datei, die nach dem Anmelden eingabedatei ausgeführt werden soll. Wird diese Option verwendet, wird SQLCMD nach dem Ausführen des Skripts wieder beendet. -o Name einer Datei, in welche die Ausgaben geschrieben ausgabedatei werden. Dies ist mit der Option Ausgabe in Datei im Management Studio vergleichbar. Ein Beispielaufruf könnte zum Beispiel so aussehen: sqlcmd -U user -P passwort -S srvsql2014 Abbildung 3.4: SQLCMD 3.3 Der Konfigurations-Manager Der Konfigurations-Manager (Abbildung 3.5 auf Seite 28) ist ein Snap-in der Microso Management-Konsole. Als solches kann er entweder direkt über 27 das Windows-Startmenü oder über die Verwaltung des Arbeitsplatzes aufgerufen werden. Der Konfigurations-Manager hat drei Aufgaben: • Verwaltung der SQL Server-Dienste: Die einzelnen Dienste können gestartet und beendet, ihre Startart und ihr Dienstkonto festgelegt werden. Am Symbol ist zu erkennen, ob ein Dienst gestartet ist oder nicht. Bei gestarteten Diensten ist in einem weissen Kreis ein grünes Dreieck abgebildet. Ist ein Dienst nicht gestartet, ist an dieser Stelle ein rotes Viereck zu sehen. • Netzwerkkonfiguration für den Server: Hier können Sie Netzwerkprotokolle für den Server aktivieren und deaktivieren. In der Regel verwenden Sie dies nach dem Setup, um TCP/IP für den Remotezugriff zu aktivieren. Für dieses Protokoll lassen sich hier weitere Einstellungen vornehmen; beispielsweise zum Port, der standardmässig mit 1433 belegt ist. • Protokolle für den Client: Für diesen Rechner als Client können Sie hier die verwendbaren Protokolle einstellen. Sind mehrere aktiv, wird eine Reihenfolge festgelegt, nach der der Client versucht, mit dem jeweiligen Protokoll eine Verbindung zu einem Server aufzubauen. Abbildung 3.5: SQLCMD 3.4 System-Datenbanken Microsoft-SQL Server-Systeme verfügen über vier Systemdatenbanken (Abbildung 3.6 auf der Seite 29): 28 • master • model • msdb • tempdb Im Management Studio werden diese zur besseren Unterscheidung von den benutzererstell- ten Datenbanken durch den eigenen Ordner Systemdatenbanken getrennt. Abbildung 3.6: Systemdatenbanken master-Datenbank Die master-Datenbank enthält eine Aufzeichnung aller Informationen, die auf Systemebene für ein SQL Server-System wichtig sind. Dazu zählen • alle Anmeldekonten und alle Systemkonfigurationseinstellungen, • das Vorhandensein aller anderen Datenbanken, einschliesslich der Speicherorte der Datenbankdateien, • die Initialisierungsinformationen für den SQL Server. model-Datenbank Die model-Datenbank wird als Vorlage für alle Datenbanken verwendet, die in einem System erstellt werden. Bei der Neuanlage einer Datenbank 29 wird der erste Teil der Datenbank derart erstellt, dass der Inhalt der modelDatenbank kopiert wird. Anschliessend wird der verbleibende Teil der neuen Datenbank mit leeren Seiten aufgefüllt. Wichtig ist: Da die Datenbank tempdb bei jedem Start von SQL Server neu erstellt wird, muss die modelDatenbank immer in einem SQL Server-System vorhanden sein. msdb-Datenbank Die msdb-Datenbank wird vom SQL Server-Agent verwendet, um Termine für Warnungen und Aufträge zu planen und Operationen aufzuzeichnen. Auch Integration Services-Pakete können in dieser Datenbank gespeichert werden, damit sie direkt am Server ausgeführt werden können. Jede Datenbank, einschliesslich der Systemdatenbanken, verfügt über einen eigenen Satz von Dateien. Diese Dateien werden nicht mit anderen Datenbanken gemeinsam verwendet. tempdb-Datenbank Die Datenbank tempdb nimmt alle temporären Tabellen und andere temporäre Objekte auf. Diese Datenbank wird darüber hinaus in allen anderen Situationen verwendet, in denen temporärer Speicherplatz benötigt wird, beispielsweise für Arbeitstabellen, die von SQL Server erzeugt werden. tempdb ist eine globale Ressource. Die temporären Tabellen und temporär gespeicherten Prozeduren für alle Benutzer, die eine Verbindung zum System hergestellt haben, werden in dieser Datenbank gespeichert. tempdb wird bei jedem Start von SQL Server neu erstellt; das System startet somit mit einer leeren Kopie dieser Datenbank. Da temporäre Tabellen und temporär gespeicherte Prozeduren beim Trennen von Verbindungen automatisch gelöscht werden und keine Verbindung aktiv ist, wenn das System heruntergefahren wird, enthält tempdb niemals Inhalte, die von einer SQL Server-Sitzung bis zur nächsten gespeichert werden. Standardmässig wird tempdb während der Ausführung von SQL Server nach Bedarf vergrössert. Anders als andere Datenbanken wird tempdb jedoch bei jedem Start des Datenbankmoduls durch das Neuerstellen auf die Anfangsgrösse zurückgesetzt. 30 Anhang A Datentypen in MySQL 5.6 A.1 Ganzzahlen Datentyp Speicherplatz Beschreibung TINYINT 1 Byte Bereich mit Vorzeichen: -128 bis 127 Bereich ohne Vorzeichen: 0 bis 255 SMALLINT 2 Bytes Bereich mit Vorzeichen: -32.768 bis 32.767 Bereich ohne Vorzeichen: 0 bis 65.535 MEDIUMINT 3 Bytes Bereich mit Vorzeichen: -8.388.608 bis 8.388.607 Bereich ohne Vorzeichen: 0 bis 16.277.215 INT 4 Bytes Bereich mit Vorzeichen: -2.147.483.648 bis 2.147.483.647 Bereich ohne Vorzeichen: 0 bis 4.294.967.295 BIGINT 8 Bytes Bereich mit Vorzeichen: -9.223.372.036.854.775.808 bis 9.223.372.036.854.775.807 Bereich ohne Vorzeichen: 0 bis 18.446.744.073.709.551.615 SERIAL 8 Bytes Ein Alias für BIGINT UNSIGNED NOT NULL AUTO_INCREMENT UNIQUE 31 Datentyp Speicherplatz Beschreibung Tabelle A.1: Datentypen / Ganzzahlen A.2 Fliesskommazahlen Datentyp Speicherplatz Beschreibung DECIMAL variiert Fixkommazahlen (M, D) Die maximale Anzahl an Ziffern (M) ist 65 (Standard: 10), die maximale Anzahl an Nachkommastellen (D) ist 30 (Standard: 0) FLOAT 4 Bytes Erlaubte Werte sind -3,402823466 x 1038 bis -1,175494351 x 10−38 , 0 und 1,175494351 x 10−38 bis 3,402823466 x 1038 DOUBLE 8 Bytes Erlaubte Werte sind -1,7976931348623157 x 10308 bis -2,2250738585072014 x 10−308 , 0 und 2,2250738585072014 x 10−308 bis 1,7976931348623157 x 10308 REAL 8 Bytes Synonym für DOUBLE Tabelle A.2: Datentypen / Fliesskommazahlen A.2.1 Decimal / Beschreibung Die Deklarations-Syntax für eine DECIMAL-Spalte funtioniert über DECIMAL(M, D) Die Werte M und D: • M Ist die maximale Anzahl an Zeichen (Precision). Sie hat einen Bereich von 1-65 Zeichen. 32 • D Ist die Anzahl der Zeichen die rechts vom Decimal-Punkt platziert werden sollen. D muss zwischen 0-30 sein und darf nicht grösser als M sein Die Berechnung des Speicherplatzes funktioniert anhand der Zeichen die verwendet werden. Folgende Tabelle beschreibt den Speicherbedarf pro Zeichen: Zeichen Anzahl Bytes 0 0 1–2 1 3–4 2 5–6 3 7–9 4 Tabelle A.3: Speicherbedarf bei einem Decimal Folgende Beispiele: • DECIMAL(18,9) Hier werden total 18 Zeichen verwendet - 9 Stellen vor und 9 Stellen nach dem Komma. Entsprechend werden 4 Bytes für die Zahl vor dem Komma, und 4 Bytes für die Zahl nach dem Komma eingesetzt • DECIMAL(20,6) Hier werden total 20 Zeichen verwendet - 14 Stellen vor und 6 Stellen nach dem Komma. Entsprechend werden 7 Bytes (9 Stellen und 5 Stellen) für die Zahl vor dem Komma, und 3 Bytes für die Zahl nach dem Komma eingesetzt ACHTUNG: Die Implementation des DECIMALS wurden in den verganenen MySQL-Version immer mal wieder überarbeitet. Sie müssen diesen Datentyp bei einer allfälligen Migration umbedingt im Auge behalten A.3 Spezielle Datentypen 33 Datentyp Speicherplatz Beschreibung BIT ca.(M+7)/8B Ein Bitfeld-Typ (M), der M Bits pro Wert speichert (Standard ist 1, Maximum ist 64) BOOLEAN 1 Byte Ein Synonym für TINYINT(1), ein Null-Wert wird als falsch angesehen, Nicht-Null-Werte werden als Wahr angesehen BINARY L Byte(s) Ähnlich wie der CHAR-Typ, speichert aber binäre Byte-Zeichenketten anstelle von nicht-binären Buchstaben-Zeichenketten VARBINARY L+1 Byte(s) Ähnlich wie der VARCHAR-Typ, speichert aber binäre Byte-Zeichenketten anstelle von nicht-binären Buchstaben-Zeichenketten TINYBLOB L+1 Byte(s) BLOB-Spalte mit einer maximalen Länge L von 255 Zeichen Gespeichert mit einem Ein-Byte-Präfix, der die Länge des Wertes in Bytes angibt BLOB L+2 Byte(s) BLOB-Spalte mit einer maximalen Länge von 65.535 Zeichen Gespeichert mit einem Zwei-Byte-Präfix, der die Länge des Wertes in Bytes angibt MEDIUMBLOB L+3 Byte(s) BLOB-Spalte mit einer maximalen Länge von 16.777.215 Zeichen Gespeichert mit einem Drei-Byte-Präfix, der die Länge des Wertes in Bytes angibt LONGBLOB L+4 Byte(s) BLOB-Spalte mit einer maximalen Länge von 4.294.967.295 oder 4 GiB Zeichen 34 Datentyp Speicherplatz Beschreibung Gespeichert mit einem Vier-Byte-Präfix, der die Länge des Wertes in Bytes angibt ENUM 1-2 Byte(s) Aufzählung Gewählt aus einer Liste von bis zu 65.535 Werten SET 1, 2, 3, 4 String-Objekt oder 8Byte Ein einzelner Wert gewählt aus einem Satz von bis zu 64 Einträgen Tabelle A.4: Datentypen / Spezielle Datentypen A.4 Datum und Uhrzeit Datentyp Speicherplatz Beschreibung DATE 3 Bytes Datum Unterstützter Bereich ist 1000-01-01 bis 9999-12-31 DATETIME 8 Bytes Kombination aus Datum und Uhrzeit Unterstützter Bereich ist 1000-01-01 00:00:00 bis 9999-12-31 23:59:59 TIMESTAMP 4 Bytes Zeitstempel Unterstützter Bereich ist 1970-01-01 00:00:01 UTC bis 2038-01-09 03:14:07 UTC Gespeichert als Anzahl der Sekunden seit Beginn der UNIX-Epoche (1970-01-01 00:00:00 UTC) TIME 3 Bytes Uhrzeit Unterstützter Bereich ist -838:59:59 bis 838:59:59 YEAR 1 Byte Jahr 35 Datentyp Speicherplatz Beschreibung Vier- (4, Standard) oder zweistelliges (2) Format Erlaubte Werte sind 70 (1970) bis 69 (2069) oder 1901 bis 2155 und 0000 Tabelle A.5: Datentypen / Datum und Uhrzeit A.5 Zeichenketten Datentyp Speicherplatz Beschreibung CHAR L Byte(s) Zeichenkette mit fester Länge (0 bis 255, Standard: 1) L Rechts wird immer bis zur angegebenen Länge mit Leerzeichen aufgefüllt VARCHAR L+1 Byte(s) Zeichenkette mit variabler Länge (0 bis 65.535) L Die tatsächliche maximale Länge hängt von der maximalen Anzahl an Zeilen ab TINYTEXT L+1 Byte(s) TEXT-Spalte mit einer maximalen Länge von 255 Zeichen Gespeichert mit einem Ein-Byte-Präfix, der die Länge des Wertes in Bytes angibt TEXT L+2 Byte(s) TEXT-Spalte mit einer maximalen Länge von 65.535 Zeichen Gespeichert mit einem Zwei-Byte-Präfix, der die Länge des Wertes in Bytes angibt MEDIUMTEXTL+3 Byte(s) TEXT-Spalte mit einer maximalen Länge von 16.777.215 Zeichen 36 Datentyp Speicherplatz Beschreibung Gespeichert mit einem Drei-Byte-Präfix, der die Länge des Wertes in Bytes angibt LONGTEXT L+4 Byte(s) TEXT-Spalte mit einer maximalen Länge von 4.294.967.295 oder 4 GiB Zeichen Gespeichert mit einem Vier-Byte-Präfix, der die Länge des Wertes in Bytes angibt Tabelle A.6: Datentypen / Zeichenketten A.6 Räumliche Datentypen Datentyp Beschreibung GEOMETRY Typ, der die Geometrie irgendeinen Typs speichern kann POINT Punkt im 2-dimensionalen Raum LINESTRING Kurve mit linearer Interpolation zwischen Punkten POLYGON Vieleck (Polygon) MULTIPOINT Punkte-Sammlung MULTILINESTRING Kurven-Sammlung mit linearer Interpolation zwischen Punkten MULTIPOLYGON Polygon-Sammlung GEOMETRY Sammlung von Geometrie-Objekten irgendeinen Typs COLLECTION Tabelle A.7: Datentypen / Räumliche Datentypen 37 Anhang B References 38 Anhang C Gruppenübung “Integrität” Quelle: http://help.sap.com/abapdocu_70/de/ABENDB_INTEGRITY.htm Phase 1 : Expertenrunde / Einarbeitung (15min) Erarbeiten Sie sich in Ihrer Gruppe das Wissen zu einem der drei 3 Themenbereiche und finden Sie ein einfaches Beispiel um es später weitergeben zu können. Erstellen Sie dabei ein Dokument als Zusammenfassung. Phase 2 : Austauschrunde (ca. 10min) Formieren Sie die Gruppen neu, so dass Sie nur noch aus “Themenfremden” Mitgliedern besteht. Erklären Sie nun, der Reihe nach, Ihre Themenbereich Ihren neuen Gruppenmitgliedern. Formieren Sie sich zu Gruppen zu folgenden Themen: 1. Thema 1: Semantische Integrität 2. Thema 2: Relationale Integrität 3. Thema 3: Operationale Integrität 39 Anhang D Übungen : ER-Modelle und Transformation D.1 Vorlesungsbeispiel Betrachten Sie die Abbildung D.1 auf Seite 40. Abbildung D.1: Vorlesungsbeispiel D.2 Theorie 1 Wie würden Sie die folgenden Begriffe definieren: 40 Entity : . . . Attribute : . . . Relationship : . . . D.3 Theorie 2 Nennen Sie drei verschiedene Ausprägungen von Kardinalitäten. 1. : … 2. : … 3. : … D.4 Kardinalitäten Die folgende Tabelle zeigt jeweils zwei Entitätstypen und den zugehörigen Beziehungstyp. Geben Sie für jede Beziehung die Kardinalität an. Schüler hat Tutor. Schüler bekommt heute Zeugnis. Schüler darf arbeiten an Computer. Schüler hat ausgeliehen Buch. Schüler besucht Kurs. Schüler ist befreundet mit Schüler. 41 D.5 Modellfirma / ERM erstellen Betrachten Sie die Rechnung in Abbildung D.2 auf Seite 42 als Muster einer Modellfirma. Abbildung D.2: Musterrechnung 1. Stellen Sie fest, welche Entitätstypen und Beziehungen sich daraus ableiten lassen. 2. Skizzieren Sie ein Modell der Modellfirma. 3. Formulieren Sie Geschäftsregeln für die Modellfirma. D.6 Transformationsübung 1 Betrachten Sie die Abbildung D.3 auf Seite 43. Transformieren Sie das Beispiel in die geeigneten Tabellen. D.7 Transformationsübung 2 Ueberführen Sie das ERM aus Abbildung D.4 auf Seite 43 in DB-Tabellen. Bemerkung zum „Diagram-Dialekt“: • Der durchgezogene Strich bedeutet genau einer (EINS) • Der gestrichelte einer oder keiner • Der Krähenfuß auf der anderen Seite bedeutet einer oder mehrere 42 Abbildung D.3: Transformationsübung 1 Abbildung D.4: Transformationsübung 2 43 D.8 Transformationsübung 3 Betrachten Sie die Abbildung D.5 auf Seite 44. Abbildung D.5: Transformationsübung 3 Transformieren Sie das Beispiel in die geeigneten Tabellen. 44 Anhang E Übung: Normalisierung E.1 Theorie 1 Formulieren Sie in ein, zwei kurzen Sätzen die Definitionen der ersten bis dritten NF: 1 NF : . . . 2 NF : . . . 3 NF : . . . E.2 Theorie 2 Was ist Normalisierung (1)? Und welches Ziel wird damit verfolgt (2)? 1:… 2:… E.3 Normalisierungsübung 1 Betrachten Sie die Tabelle in der Abbildung E.1 auf Seite 46. Bringen Sie sie in die 1 Normalform. 45 Abbildung E.1: Normalisierungsübung 1 E.4 Normalisierungsübung 2 Betrachten Sie die Tabelle in der Abbildung E.2 auf Seite 46. Bringen Sie sie in die 1 Normalform. Abbildung E.2: Normalisierungsübung 2 E.5 Normalisierungsübung 3 Betrachten Sie die Tabelle in der Abbildung E.3 auf Seite 46. Bringen Sie sie in die 3 Normalform. Abbildung E.3: Normalisierungsübung 3 E.6 Normalisierungsübung 4 Betrachten Sie die Tabelle in der Abbildung E.4 auf Seite 47. Bringen Sie sie in die 3 Normalform. E.7 Interpretation Es die Datenbank aus Abbildung E.5 auf Seite 47 gegeben. Was passiert nun in folgenden Fällen: 1 : Ein neues Fach Kunst soll eingeführt werden, jedoch ist noch kein Lehrer dafür verfügbar. … 46 Abbildung E.4: Normalisierungsübung 4 2 : Lehrer Jagger (Jag) wird pensioniert. … 3 : Das Fach Info wird der Fachhelfer Lotech durch den Fachhelfer Heiend . . . ersetzt. Abbildung E.5: Interpretation 47 Anhang F Übung: Eigene Datenbank, von A-I1 • Form : Arbeiten Sie an Ihrem Projekt alleine. Konstruktive Diskussionen zwischen den Lernenden ist erlaubt und erwünscht - beachten Sie aber: Mit dieser Übung können Sie Ihre eigenen Wissenlücken entdecken. Das ist eine Chance! • Zeit : 3 Lektionen • Auftrag : Erstellen Sie eine (kleine) Datenbank von von A bis I (von A bis Installation) selbst. Bearbeiten Sie die notwendigen Schritte der Reihe nach - wir folgen thematisch den Kapitel 4 und 5 aus dem Buch. Sie dürfen für diese Aufgabe ein eigenes Projekt wählen (z.Bsp. Musiksammlung usw.) oder Sie verwenden die Vorgabe (Student/Kurs-Datenbank). Die Lösungen und Hinweise welche abschliessend zugänglich sind wurden für die Student/Kurs-Datenbank erstellt. Achtung: Beachten Sie den Aufwand!! Ziel : Ziel soll es sein, dass Sie die Handlungen in den gelesenen Kapitel 4 bis 5 aus einem eigenen Ideenkonstrukt selbstständig durchführen und somit sämtlich Tätigkeiten in einem neuen Zusammenhang selbstständig umsetzen. Als Abschluss der Übungen erhalten Sie einen Datenbank, angereichert mit Testdaten. Der Zugriff auf die Testdaten sind für einige Benutzer eingeschänkt. 1 Es ist “nur” A bis I weil uns noch ein paar Dinge fehlen. Wie z.Bsp Views…etc. 48 Weiterführende Arbeiten : Auf dieser Testdatenbank werden wir weiterführende Aufgaben in ähnlicher Weise umsetzen (Backup / Views / Stored Procedures). F.1 Beispielauftrag (oder Ihr eigenes Beispiel) Erstellen Sie eine Datenbank die die Informationen einer Schulorganisation abbildet. Teil “unserer” Schule sind Schüler, die über eine Schülernummer identifiziert werden. Ebenfalls müssen für die Schüler die Informationen über ihren Adresse und Ihr Geburtsdatum gespeichert werden. Die Schule selbst organisiert sich in Kursen in welche sich die Schüler einschreiben können und für den die Schüler Punkte bekommen. Die Kurse selbst werden über eine Kursnummer identifiziert. Weitere Eigenschaften eines Kurses sind: • Fach : Das ist eine 5-stellige Kursbezeichnung • Thema : Das ist eine Fachbeschreibung in Stichworten. Sie umfasst 50 Zeichen. • Art : Ein Kurs kann entweder ein Leistungskurs (LK) oder ein Grundkurs (GK) sein • Halbjahr : Die Eigenschaft Halbjahr bezeichnet in einem Freitext (10 Zeichen) eindeutig den Zeitpunkt des Kurses (z.Bsp. HS2015 - Herbstsemester 2015) • Stunden : Die Eigenschaft Stunden beschreibt wieviele Lektionen das Fach benötigt. Im Maximum werden für ein Fach 100 Lektion eingesetzt Der Chefsekretär wünscht eine schnelle Suche auf der Datenbasis der Schüler. Er verwendet zur Suche immer die Kombination aus Geburtsdatum und Nachname des Schülers. F.2 ERM erstellen Erstellen Sie aus den gegebenen Information ein ERM das die Situation am Besten beschreibt. Benutzen Sie dazu ein ERM Ihrer Wahl - ein mögliches Produkt ist Staruml (http://staruml.io) 49 F.3 Transformieren Transformieren Sie nun Ihr ERM nach den Transformationsregeln (versuchen Sie sich wirklich an die Regeln zu erinnern und nicht einfach nur zu “wursteln”) in möglich Datenbanktabellen. Die Darstellung dieser Tabellen bleibt Ihnen überlassen. F.4 Normalisieren Es ist nun möglich, dass Ihr Design nicht optimal in unser RDBMS MySQL passt. Gehen Sie Schritt für Schritt durch die Normalisierungsschritte und normalisieren Sie für Ihr Projekt sinnvoll. F.5 Storage Engine wählen Es stehen Ihnen in MySQL verschiedene Storage Engine Typen zur Auswahl - jede mit Vor- und Nachteilen. Vergleichen Sie die SE im Buch ab Seite 55 miteinander und entscheiden Sie sich bei jeder Tabelle für eine SE. Begründen Sie Ihre Wahl und notieren Sie sich die Gedanken dazu. F.6 Definition / Repetition der Datentypen Vergleichen Sie die Anforderungen aus der Projektbeschreibung mit den zu Verfügung stehenden Attributtypen für MySQL und entscheiden Sie sich für jedes Attribut für einen Typ. Notieren Sie sich auch hier die Entscheidungen. F.7 Index Lesen Sie gegebenenfalls die Informationen zu den verschiedenen Indextypen nochmals durch. Brauchen Sie allenfalls Indextypen auf speziellen Attributen? Chefsekretär? 50 F.8 Integrität Betrachten Sie Integritätsbedingungen - haben Sie welche die Sie auf Ihrer Datenbank erzwingen wollen? In unserem Beispiel werden keine “Datenleichen” geduldet. Sprich: 1. Ein Kurs kann nicht gelöscht werden solange Schüler eingeschrieben sind 2. Wenn ein Schüler gelöscht wird, müssen auch seine Einschreibungen gelöscht werden F.9 Installationsscript erstellen Sie haben nun alle Informationen zusammen um ein komplettes Installationsskript für Ihre neue Datenbank zu schreiben. Folgende Vorgaben: • Das Script muss “bedingt” arbeiten • Das Script muss komplett “reproduzierbar” sein F.10 System-Arbeiten Kümmern wir uns um unser DBMS - zuerst sind ein paar Vorbereitungen nötig, bevor wir unser Script einsetzen können. F.10.1 Kontrolle der Serverdienste 1. Kontrollieren Sie den Status des MySQL-Serverdienstes. 2. Kontrollieren Sie die Remote-Verbindungsmöglichkeiten des MySQLServers. Auf welchen Ports hört der MySQL-Server? 3. Finden Sie die Log-Dateien des MySQL-Servers? Gibt es auffällige Meldungen darin? Notieren Sie sich die Informationen. 51 F.10.2 Root-Passwort Sie hatten sehr erholsame Sommerferien und haben leider das Passwort des Root-Users für das DBMS vergessen. Setzen Sie es zurück auf “admin”. F.11 Installation ausführen Installieren Sie nun die Datenbank wie im Buch beschrieben über das Script. F.12 Benutzerzugriff einschränken In unserem Beispiel ist eine Benutzereinschränkung zwingend. Wir werden mit mehreren technischen Benutzern arbeiten. F.12.1 Benutzer definieren Wir arbeiten in unserem Beispiel mit folgenden Benutzern: 1. schuelerdbadmin : Datenbank-Admin für die Schüler/Kursdatenbank. Alle Rechte auf dieser einen Datenbank (aber nicht in allen Datenbanken auf dem DBMS!) 2. appadmin : Technischer Benutzer für eine spätere PHP-Anbindung. Rechte um alle Dateninhalten zu verändern/löschen/erstellen. Darf Kurse erstellen 3. appuser : Technischer Benutzer für eine spätere PHP-Anbindung. Rechte um alle Dateninhalten zu lesen und in der Tabelle Schüler Änderungen vor zu nehmen. Nur Lese-Rechte auf den Kursinhalten F.12.2 Zugriffe einschränken / austesten Erstellen Sie nun die Benutzer gemäss den Vorgaben und testen Sie die Wirksamkeit der Einschänkungen aus. 52 F.13 Weiterführende Arbeiten / mögliche Ideen Wir können eine einfaches Webfrontend für unsere neue Datenbank dazuentwickeln. F.13.1 Apache2 einrichten Installieren Sie apache2 gemäss der Anleitung (ohne phpmyadmin): https:// www.howtoforge.com/ubuntu-lamp-server-with-apache2-php5-mysql-on-14. 04-lts F.13.2 PHP Script erstellen Erstellen Sie mittels mysqli2 (PHP-Bibliothek) eine erste, einfach Verbindung mit der Datenbank: F.14 Zusatz: Workbench installieren auf Ubuntu 14.04 Die Installation von MySQL-Workbench ist in diesem Ubuntu-Release mit dieser MySQL-Version nicht ganz trivial. Bei Fragen weshalb : fragen. Die nachstehende Anleitung hilft Ihnen die Software zu installieren: 1. Auf Image kopieren: mysql-workbench-community-6.3.4-1ubu1404amd64.deb 2. Abhängigkeiten installieren: apt-get install libctemplate2 libgtkmm-2.4-1c2a libtinyxml2.6.2 libzip2 python-paramiko 3. Installieren von DEB-Package: sudo dpkg -i mysql-workbench-community-6.3.4-1ubu1404-amd64.deb 4. Starten mit mysql-workbench 2 Doku unter http://php.net/manual/en/book.mysqli.php 53 Anhang G Übung zu Performance / mysqlslap und explain Sie haben die Verwendung der beiden Methoden • mysqlslap und • explain im Unterricht kennen gelernt. Die Software mysqlslap ist in der MySQLInstallation im bin-Verzeichnis enthalten. EXPLAIN selbst ist ein SQL-Befehl der hilft SQL-Selects zu analysieren. Im folgenden lernen wir die Commands auf unseren Datenbanken anzuwenden. Diese Übung wird Ihr VM-Image erheblich belasten. Erstellen Sie zur Sicherheit im vorneherein einen Snapshot (so das Sie im Notfall den Stecker ziehen können) Bemerkung: Über das Zeichen “>” lässt sich der Output eines Befehls in eine Textdatei umleiten. G.1 mysqlslap Eine Hilfestellung für die Software erhalten Sie über “man mysqlslap” 54 1. Suchen Sie in Ihrer Server-Installation nach der Software mysqlslap. Wo liegt die Datei auf Ihrem Server? 2. Die Software mysqlslap kann als allgemeinen Befehl (ohne spezifische Datenbank) 3. Erweitern Sie Ihren Befehl um die Optionen und notieren Sie die Testresultate : • –concurrency • –iterations • –number-of-queries 4. Über die Software top oder htop lässt sich das Verhalten des Servers bei den Lasttests gut beobachten 5. Seien Sie nett, und spendieren Sie Ihrer VM etwas mehr Memory und CPU. Führen Sie die Tests von oben nochmals durch. Stellen Sie Unterschiede fest? 6. Versuchen Sie nun die Tests auf eine unserer Testdatenbanken (zum Beispiel einen speziellen SQL) G.2 explain Der SQL-Befehl EXPLAIN wird im Abschnitt 7.3.3 im Buch ausführlich erklärt. Führen Sie das Beispiel aus dem Buch auf der Datenbank der Videothek durch. Haben Sie die verschiedenen Parameter verstanden? Notieren Sie in eigenen Worten den Sinn der Spalten: • id : • select_type : • table : • possible_keys : • key_len : • ref : • rows : • extra : 55 Anhang H Übung zu Performance / PHP Sie erhalten für diese Übung zwei Dateien: • testscript.php (PHP-Script das hilft unsere Umgebung zu testen) • createsql.sql (Erstellt unsere Testumgebung) H.1 PHP - Script 1. Es gibt eine globale Variable $loop mit der die Iterationen gesteuert werden können 2. Es gibt im testscript.php ein Beispiel-Funktion doInsertInnodb(). Sie dient als Beispiel für den Aufruf eines Inserts in unsere innodbTaballe. Verstehen Sie sie? 3. Erstellen Sie auf der Basis von doInsertInnodb() eine Funktion doInsetMyISAM() die (der Name sagt es) Testdaten in die MyISAM-Taballe einspielt 4. Testen Sie Ihre Funktion - alles okay? Kontrollieren Sie ob die Daten wirklich eingespielt wurden 5. Erstellen Sie nun eine Zeitvergleich zwischen den beiden Funktionen, in dem Sie die (siehe “TESTDURCHFUEHREN”) mehrfach für Ihre Funktionen ausführen 56 H.2 Sysbench 1. Sie haben aus der Testreihe mit dem PHP-Script von vorhin ein paar Messresultate erhalten. Sind wir ehrlich: Ihrer VM ist relativ langweilig. Ändern Sie das über die Verwendung der Software sysbench 2. Installieren Sie die Software sysbench über das Kommando: “sudo aptget install sysbench” 3. Weitere Informationen zur Verwendung der Software erhalten Sie über “man sysbench” 4. Führen Sie die Lasttests mit PHP unter der Belastung durch Sysbench • CPU • Memory • File I/O 57 Anhang I Übung : MySQL / Import und Export I.1 Voraussetzungen Arbeiten Sie mit Ihrem MySQL-Server und einer Datenbank Ihrer Wahl. Alternativ können Sie die auch die “World-Datenbank” nach Anleitung von der Seite http://dev.mysql.com/doc/index-other.html installieren. Erstellen Sie sicherheitshalber einen Snap-Shot Ihrer VM! I.2 mysqldump / lokal 1. Erstellen Sie in einem ersten Schritt ein einfaches Backup Ihrer Datenbank mit den “mysqldump”-Kommando 2. Wir testen jetzt eine Reihe von verschiedenen Optionen durch. Die entsprechenden Beschreibungen entnehmen Sie bitte der Man-Page zum Kommando. 1. Suchen Sie die Option, damit Sie alle Datenbanken auf Ihrem Server in einem Kommando-Aufruf exportieren können. Betrachten Sie Ihr Export-File. Was passiert wenn Sie dieses wiederholt auf einer bestehenden Datenbank einlesen? 2. Exportieren Sie nochmals alle Datenbanken, allerdings mit der Option, dass zu jeder Datenbank auch ein Drop-Befehl eingefügt 58 wird. Kontrollieren Sie diese Export-Datei - sind alle Daten enthalten? Importieren Sie nun diesen Export auf Ihre bestehende Datenbank 3. Manchmal ist es notwendig, dass nur bestimmte Tabellen aus bestimmten Datenbanken exportiert werden können. Suchen Sie die entsprechenden Optionen und testen Sie sie aus. 4. Exportieren Sie Daten vom letzten Schritt in eine CSV-Datei. Öffnen Sie die Datei mit Excel - ist es brauchbar? I.3 mysqldump / remote In diesem Abschnitt arbeiten Sie mit Ihrem Banknachbarn zusammen. Wir wollen Datenbanken über das Netzwerk exportieren und importieren. Damit das funktioniert, müssen gewisse Optionen in der my.cnf (Repetition) und der Datenbanksecurity aktiviert sein (ebenfalls Repetition). Bei Fragen: bitte fragen! Aktivieren Sie die entsprechenden Optionen und testen Sie sie mit einem einfachen mysql -u root -p -h IP aus! 1. Versuchen Sie in einem ersten Schritt den Export von einer beliebigen Datenbank des entfernten Servers auf Ihrer lokalen Datenbank zu importieren. 2. Drehen Sie nun den Spiess um: Testen Sie auch den anderen Weg! Frage: Was muss netzwerktechnisch gegeben sein, dass diese Zugriff funktionieren? Wie sehen die Zugriffe in Ihrem Unternehmen bezgl. den Netzwerkservern aus? I.4 mysqldump / remote und ssh-gesichert Manchmal sind direkt Zugriffe auf DBMS-System nicht gegeben - aber oft ist es möglich per SSH auf die Server zugreifen zu können. Sie haben eine Möglichkeit kennen gelernt, wie Sie das bezgl. DBMS ausnutzen können. Damit diese Übung funktioniert, müssen Sie SSH-Zugriff haben auf den entfernten Server. Testen Sie das aus! Wenn es nicht klappen sollte - bitte melden! 59 1. Versuchen Sie in einem ersten Schritt den Export von einer beliebigen Datenbank des entfernten Servers auf Ihrer lokalen Datenbank zu importieren - per SSH! 2. Drehen Sie nun den Spiess um: Testen Sie auch den anderen Weg! I.5 Weiterführendes : FIFO-Datei Da ein Export und Import über das Netzwerk unter Umständen ziemlich lange dauern kann (und das Netzwerk nicht immer zu Verfügung stehen muss), gibt es die Möglichkeit den Export auf eine FIFO-Datei umzuleiten und den Import von dieser FIFO-Datei konsumieren zu lassen. Das erhöht die Stabilität enorm! Lesen Sie sich in die Verwendung von FIFO-Dateien ein (Recherche / Google) und testen Sie die Übungen von oben mit dieser FIFO-Datei aus. 60 Anhang J Übung : Backup in MySQL J.1 Voraussetzungen Arbeiten Sie mit Ihrem MySQL-Server und einer Datenbank Ihrer Wahl. Alternativ können Sie die auch die “World-Datenbank” nach Anleitung von der Seite http://dev.mysql.com/doc/index-other.html installieren. Erstellen Sie sicherheitshalber einen Snap-Shot Ihrer VM! J.2 Backup mit File-Copy Sie haben verschiedene Backup-Möglichkeiten im Unterricht kennen gelernt - eine davon ist das file-basierende Backup. Welche Einschränkungen kennen Sie hier? 1. Suchen Sie auf Ihrem MySQL-Server die entsprechenden Dateien. Stoppen Sie den Server und erstellen Sie eine Sicherheitskopie Ihrer Daten. Repetition: Welche Storage Engines haben Sie im Einsatz? 2. Stoppen Sie den MySQL-Server. Löschen Sie nun die Daten auf Ihrem Orginal-Speicherplatz und kopieren Sie die Daten von Ihrem Partner an dessen Stelle. Starten Sie den MySQL-Server erneut. Kontrollieren Sie die Daten auf Ihrem Server. 61 J.3 Backup / Point in Time Restore 1. Modifizieren Sie die /etc/mysql/my.cnf derart, dass der Server neu Binary-Logs erstellt 2. Starten Sie den MySQL-Server neu und kontrollieren Sie ob neu die Binary-Logs geschrieben werden 3. Führen Sie mittels mysqldump ein Full-Backup der Datenbank Ihrer Wahl aus und speichern Sie die Datei als fullbackup.sql. Ändern Sie nun einige Dinge in Ihrer Datenbank (Inserts / Updates usw.). Als Abschluss löschen Sie eine Tabelle 4. Stoppen Sie den MySQL-Server 5. Konvertieren Sie das Binary-Log in ein SQL-File (mittels mysqlbinlog) und speichern Sie das File als mysqllog.sql. Suchen Sie darin nach dem Zeitpunkt, in welchem Sie “versehentlich” die Tabelle gelöscht hatten. 6. Extrahieren Sie aus mysqllog.sql den Teil, bevor Sie die Tabelle gelöscht haben und speichern diesen Teil (mittels mysqlbinlog) als mysqllog_extrakt.sql 7. Führen Sie einen Restore der Datei fullbackup.sql aus. 8. Führen Sie anschliessen den Restore für mysqllog_extrakt.sql aus 9. Verifizieren Sie, dass der Restore funktioniert hat J.4 Erweitert : Script mit mysqldump Da mysqldump nur ein dummes CLI-Kommando ist, können Sie es natürlich nach Belieben in Bash-Scripts nutzen. Erstellen Sie ein Bash-Script das einen Export von allen Datenbanken auf Ihrem DBMS ausführt und rufen Sie Ihr Script aus CRON auf. 62 Anhang K Übung : PHP und Bilder aus einer Datenbank Wir werden in dieser Übung Bilder in einer Datenbank ablegen und über eine andere Webseite wieder anzeigen lassen. Wir benutzen dazu unser Linux-Image - diesese muss allerdings mit folgenden zwei Komponenten ausgestattet werden: 1. Webserver (typischerweise Apache oder Nginx) 2. PHP im Webserver mit MySQL-Unterstützung Folgen Sie der Anleitung unter (https://www.howtoforge.de/anleitung/ubuntu14.04-linux-apache-mysql-php-lamp/)[https://www.howtoforge.de/anleitung/ubuntu14.04-linux-apache-mysql-php-lamp/] um die beiden Komponenten zu installieren. Passen Sie in den Beispieldateien jeweils Ihre Angaben an (Datenbank, Tabelle, Benutzer und Passwort) K.1 Datenbank vorbereiten Damit die Datenbank die Bilder überhaupt speichern kann, benötigen wir ein entsprechendes Datenmodell. Erstellen Sie eine neue Tabelle (und/oder eine neue Datenbank) mit folgenden Attributen: 63 1. imageId tinyint(3), not null, autoincrement 2. imageType varchar(25), not null, default ” 3. imageDate mediumblob, not null K.2 Images uploaden Damit wir ein Image in der Datenbank einfügen können, folgen wir folgenden 3 Schritten: 1. Image hochladen 2. Image Eigenschaften auslesen 3. Image in Blob speichern Betrachten Sie dazu die komplette Datei : imageUpload.php 1 2 // --> Image als Binarydaten 3 $imgData =addslashes( file_get_contents($_FILES[’userImage’][’tmp_name’])); 4 5 6 // --> Eigenschaften des Bildes auslesen 7 $imageProperties = getimageSize($_FILES[’userImage’][’tmp_name’]); 8 9 10 // --> Alles in der DB speichern 11 $sql = ”INSERT INTO output_images(imageType ,imageData) VALUES(’{$imageProperties[’mime’]}’, ’{$imgData}’)”; 12 Die restlichen Code-Fragmente sind HTML- oder PHP-spezifisch. Verstehen Sie sie? Wenn nicht: Fragen! K.3 Images anzeigen Damit wir das Bild aus der Datenbank in einer Webseite anzeigen können, folgen wir folgenden Schritten: 64 1. Image Informationen und Binäre Daten aus dem BLOB auslesen 2. Content-Type in HTML setzen (image/jpg, image/gif, …) mittels PHP header() 3. Zusammen anzeigen Betrachten Sie dazu die kompletten Datein : imageView.php, listimages.php imageView.php : Reines Auslesen der Image-Informationen. Wird aufgerufen von listimages.php 1 2 // --> Select auf das entsprechende Bild 3 $sql = ”SELECT imageType, 4 imageData FROM output_images 5 WHERE imageId=” . $_GET[’image_id’]; 6 7 // ...diverses 8 9 10 // --> Resultat auslesen / Contenttype setzen und Bild-Daten ausgeben $row = mysql_fetch_array($result); 11 header(”Content-type: ” . $row[”imageType”]); 12 echo $row[”imageData”]; listimages.php : HTML-Informationen, alle Bilder selektieren und dann einzeln (über imageView.php) ausgeben 1 2 // --> Alle IDs von den Bildern holen 3 $sql = ”SELECT imageId FROM output_images ORDER BY imageId DESC”; 4 5 $result = mysql_query($sql); 6 7 // ...diverses 8 9 // --> PHP-Funktion im Body um die Bilder nun 10 // einzeln aus der Datenbank zu holen 11 <?php 12 while($row = mysql_fetch_array($result)) { 13 ?> 65 14 <img src= 15 ”imageView.php?image_id=<?php echo $row[”imageId”]; ?>” /> 16 <br/> 17 <?php 18 } 19 mysql_close($conn); 20 ?> 66 Anhang L Übung: Datenbank importieren und exportieren Die Beispieldatenbank zum Unterricht können Sie auf verschiedene Arten auf Ihr System bekommen. Die wichtigsten drei Arten sind: 1. Erstellen Sie eine neue Datenbank mit dem Beispielskript 2. Sie verwenden ein Backup der Datenbank, um diese damit wieder herzustellen 3. Sie verwenden die Datenbankdateien, um diese am Server zu registrieren Wir werden jetzt eine Kurzvariante der dritten Variante durchspielen. L.1 Import von Datenbanken (Registrierung) 1. Kopieren Sie die Dateien wawi_data.mdf und wawi_log.ldf in ein lokales Verzeichnis auf Ihrem Rechner, zum Beispiel in den StandardDatenbankordner MSSQL12.MSSQLSERVER\MSSQL\DATA. 2. Starten Sie das SQL Server Management Studio und melden Sie sich am zuvor installierten SQL Server mit der Windows-Authentifizierung an. 3. Klicken Sie auf den Ordner Datenbanken mit der rechten Maustaste und wählen Sie den Befehl Anfügen . . . aus. 67 4. Klicken Sie auf Hinzufügen . . . und wählen Sie die gewünschte Datenbank, beispiels- weise die primäre Datendatei wawi_data.mdf der Datenbank wawi. 5. Nach einem Klicken auf OK wird die gewählte Datenbank im Dialog angezeigt. 6. Bestätigen Sie abermals mit OK , um den Vorgang erfolgreich abzuschliessen. 7. Als Ergebnis wird die neue Datenbank wawi im Objekt-Explorer angezeigt. L.2 Bedingung der verschiedenen Zugriffsmethoden Nachdem Sie die Datenbank im vorhergehenden Schritt importiert haben, können Sie nun den • Abfrageeditor und • die SQLCMD-Konsole ausprobieren. Erstellen Sie verschiedene SQL-Befehle und testen Sie sie in den beiden Werkzeugen aus! L.3 Export von Datenbanken (Import und ExportAssistent) Ein sehr praktisches Tool ist der Import/Export-Assistent. Er erlaubt es in wenigen Schritten, Daten in oder aus einer SQL Server-Datenbank zu bringen. Er kann wahlweise aus dem Management Studio heraus oder auch direkt über Start gestartet werden. Der Import/Export-Assistent basiert auf der Technologie der Integration Services. Nutzen wir ihn in der ersten Variante, um die Artikeltabelle aus der Beispieldatenbank wawi nach Excel zu exportieren. 1. Markieren Sie die Datenbank wawi und wählen Sie im Kontextmenü den Befehl Tasks/Daten exportieren . . . aus. Der Assistent startet mit 68 einem Startbildschirm, den Sie für spätere Starts des Assistenten auch deaktivieren können. Fahren Sie gleich mit der Schaltfläche Weiter fort. 2. Der erste eigentliche Schritt ist die Auswahl der Datenquelle für den Export. In der Version 2014 wird standardmässig nicht mehr der SQL Server Native Client, sondern der .Net Framework Data Provider für ODBC dazu vorgeschlagen. Übernehmen Sie dazu die Optionen wie in Abbildung L.1 auf Seite 70 vorgeschlagen wird. 3. Im nächsten Schritt ist das Ziel für den Export auszuwählen. Die zur Verfügung stehende Auswahl ist teilweise davon abhängig, ob die entsprechenden Programme auch auf dem Rechner installiert sind. So können Sie ohne installiertes Access und Excel in diese Formate nicht exportieren. Führen Sie anfänglich einen Export nach einem beliebigen Format aus. Probieren Sie alle Formate durch! 4. Der nächste Schritt ist die Auswahl, welche Daten aus der gewählten Datenbank exportiert werden sollten. Wie Sie in Abbildung L.2 auf Seite 70 sehen, haben Sie dazu prinzipiell die zwei Möglichkeiten, entweder eine Tabelle oder Sicht auszuwählen oder ein SQL-Statement zu verwenden. Für ein SQL Statement steht allerdings innerhalb des Assistenten nur ein einfaches Eingabefeld ohne jeglichen Komfort zur Verfügung. 5. Wählen Sie aus der Auflistung die Tabelle artikel für den Export aus. Über die Schaltfläche Zuordnungen bearbeiten . . . könnten Sie Spaltennamen und Datentypen anpassen (Abbildung L.3 auf Seite 71). 6. Sollten aus Sicht des Assistenten mögliche Probleme bei den Datentypzuordnungen zwischen Quell- und Zielspalten auftauchen, werden diese als Warnungen im nachfolgenden Dialog angezeigt. 7. Schliessen Sie den Assistenten mit den abschliessenden Zusammenfassungen ab. 69 Abbildung L.1: Datenquelle auswählen Abbildung L.2: Option für Export 70 Abbildung L.3: Quellen wählen 71 Anhang M LBV Beschreibung M.1 Grobbeschreibung • Anzahl Jahre Gültig X Jahre • Detailbeschreibung Der Lernende wird darauf vorbereitet, DatenbankmanagementSysteme nach Vorgaben und Anforderungen in auszuwählen, in Betrieb zu nehmen und anschliessen auch zu betreiben. Betrachtet werden während des Moduls zwei verschiedene DatenbankmanagemntSysteme um auch Verknüpfungen besser herstellen zu können. • Ergänzung Die Leistungsbeurteilung (LB) besteht aus drei benoteten Bewertungsblöcken: – Bewertungsblock 1, bestehend aus einer schriftlichen Leistungsbeurteilung (Theoretische Komponenten des Themas schriftlich bearbeiten) – Bewertungsblock 2, bestehend aus einer schriftlichen und praktischen Leistungsbeurteilung (Installation von DBMS / Konfiguration DBMS und Anbindung von Applikationen) – Bewertungsblock 3, bestehend aus einer schriftlichen und praktischen Leistungsbeurteilung (Installation von DBMS / Konfiguration DBMS und Anbindung von Applikationen) 72 M.2 Teil 1 • Form Schriftliche Einzelprüfung / Schriftlicher Test • Zeitpunkt für dieses Element in Bezug auf die Lektionen (ca. im Modulverlauf) 20% • Gewichtung 20% • Dauer in Lektionen (ca. Anteil der Unterrichtszeit) 1 • Element-Beschreibung Schriftliche Einzelarbeit bestehend aus: – Mulitple-Choice Aufgaben – Schriftliche Fragenstellungen – Schriftliche Aufgabenstellung (Uebungen) • Hilfsmittel Es dürfen keine Hilfsmittel benutzt werden • Bewertung 20% • Zu überprüfende Handlungsziele – 1.1 / 1.3 – 2.2 – 5.1 – 6.1 M.3 Teil 2 • Form Schriftliche Einzelprüfung / Schriftlicher Test zum DBMS 1 • Zeitpunkt für dieses Element in Bezug auf die Lektionen (ca. im Modulverlauf) 60% • Gewichtung 40% • Dauer in Lektionen (ca. Anteil der Unterrichtszeit) 2 • Element-Beschreibung Schriftliche Einzelarbeit bestehend aus 2 Teilen, einem reinem theoretischem und einem praktischen Teil. • Hilfsmittel 73 – Für den theortischen Teil dürfen keine Unterlagen verwendet werden – Für den praktischen Teil dürfen alle Unterlagen verwendet werden • Bewertung – 1/3 der Punkte für den Theorie-Teil – 2/3 der Punkte für den Praxis-Teil • Zu überprüfende Handlungsziele – 1.2 / 1.3 – 2.1 / 2.3 – 3.1 / 3.2 / 3.3 – 4.1 – 5.2 / 5.3 / 5.4 M.4 Teil 3 • Form Schriftliche Einzelprüfung / Schriftlicher Test zum DBMS 2 • Zeitpunkt für dieses Element in Bezug auf die Lektionen (ca. im Modulverlauf) 100% • Gewichtung 40% • Dauer in Lektionen (ca. Anteil der Unterrichtszeit) 2 • Element-Beschreibung Schriftliche Einzelarbeit bestehend aus 2 Teilen, einem reinem theoretischem und einem praktischen Teil. • Hilfsmittel – Für den theortischen Teil dürfen keine Unterlagen verwendet werden – Für den praktischen Teil dürfen alle Unterlagen verwendet werden • Bewertung 74 – 1/3 der Punkte für den Theorie-Teil – 2/3 der Punkte für den Praxis-Teil • Zu überprüfende Handlungsziele – 1.2 / 1.3 – 2.1 / 2.3 – 3.1 / 3.2 / 3.3 – 4.1 – 5.2 / 5.3 / 5.4 75 Anhang N Images Folgende Inhalte müssen auf den Images installiert und entsprechend verteilt werden. N.1 Ubuntu 14.04 Software: • MySQL 5.6 • PHPmySQL • MongoDB • MongoDB-Frontend? • Minimalistic Unity-GUI • PERL und PHP • Apache2.0 • PDF-Reader • Shutter • Tastatur kontrollieren Unterlagen: • PDF zu Linux 76 N.2 Windows 2012 Software: • .NET Unterlagen: • Ebooks? • Tastatur und Regionen konrollieren • Patchen abstellen • Firewall abstellen 77 Anhang O Lernziele Modulnummer 141 Name : Datenbanksystem in Betrieb nehmen Kompetenzen: • Datenbanksystem installieren • Datenbanksystem konfigurieren • Urladung durchführen • Funktionalität sicherstellen und Übergabe in den produktiven Betrieb durchführen. O.1 Handlungsziele 1. Datenbanksystem nach Vorgaben (zB. Anzahl Benutzer, Speicherbedarf, Transaktionsvolumen, Verfügbarkeitsanforderungen) installieren und für den produktiven Betrieb einrichten bzw. vorbereiten. Handlungsnotwendige Kenntnisse: 1. Kennt Arten von Datenbanken (zB. relationale-, objektorientierte, hierarchische, Verteilte DB) und deren typische Merkmale der physischen Datenorganisation. 2. Kennt wichtige Parameter zur Konfigurierung eines Datenbanksystems und deren Bedeutung für die Funktionalität und Performance. 3. Kennt eine Vorgehensweise um ein Datenbanksystem nach Vorgaben umzusetzen. 78 2. Datenbank und Tabellen nach Vorgabe einrichten. Testdaten laden und geforderte Funktionalität überprüfen. Urladung/Datenmigration vorbereiten, dokumentieren und durchführen. Handlungsnotwendige Kenntnisse: 1. Kennt die grundlegenden Aktionen und ihre Abfolgen, welche zum Aufsetzen einer Datenbank in einem Datenbanksystem notwendig sind. 2. Kennt den Normalisierungsprozess zur Überführung von logischen Schemas in Datenbankschemas. 3. Kennt die Bedeutung von Funktionen und Komponenten des Data Dictionary (Katalog der Metadaten) in einem Datenbanksystem. 3. Datenbanksystem für den operativen Betrieb vorbereiten, Security-, Backup-, Restart- und Recovery-Prozeduren (Scripts) bereitstellen und testen. Systemtests (Volumen-, Stress- und Crash-Tests) durchführen. Handlungsnotwendige Kenntnisse: 1. Kennt Sinn und Zweck von Security-, Backup-, Restart- und Recovery-Prozeduren in einem Datenbanksystem für die Sicherstellung des operativen Betriebs. 2. Kennt die wesentlichen Schritte, die bei einem Test durchlaufen werden. 3. Kennt spezifische Testmethoden für Datenbanksysteme zur Überprüfung von Performance und Verfügbarkeit. 4. Mittels Standardreports Performance und Verfügbarkeit überprüfen und interpretieren und. Erforderliche Optimierungsmassnahmen durchführen. Handlungsnotwendige Kenntnisse: 1. Kennt mögliche Optimierungsmassnahmen zur Verbesserung der Performance und Verfügbarkeit. 5. Grundberechtigungen für den produktiven Einsatz einrichten und Standardreports in Form von Views, Stored Procedure endbenutzergerecht zur Verfügung stellen. Handlungsnotwendige Kenntnisse: 79 1. Kennt die Vorgehensweise für die Inbetriebnahme und Betriebsfreigabe einer Datenbank. 2. Kennt Möglichkeiten zur Vergabe von Zugriffsrechten. 3. Kennt das Vorgehen um Business Logik in Stored Procedures abzubilden. 4. Kennt das Vorgehen um Abfragen in Views zur Verfügung zu stellen. 6. Übergabe in die operative Umgebung planen durchführen und Abnahmeprotokoll erstellen. Handlungsnotwendige Kenntnisse: 1. Kennt den Inhalt und Aufbau einer Dokumentation (zB. Installations-, Lizenz-, Betriebs- und Wartungsdokumentation). 80 Anhang P Semesterplan Wochennr. Inhalt / Lernziele Aufgaben 33 Begrüssung, Administratives Grundlegendes Kapitel 1 nachlesen bis Kapitel 2.4 vorbereiten 34 Normalisierung, Uebungen zur Normalisierung, ER-Modelle, Transformation Uebungen zur Transformation, Kapitel 2 fertig lesen 35 Repetition ERM, Transformation, Erster Kontakt mit MySQL (Kapitel 3 - Prüfungsvorbereitung 4.1 ausführen) Kapitel 3 - 4.1 fertig machen 36 SCHILF : SCHULFREI 37 LB 1 Datenbankzugriff einschränken Kapitel 4 auf (Theorie und Praxis) Image abschliessen 81 Wochennr. Inhalt / Lernziele Aufgaben 38 Selbstständige Arbeit an Projekt Abschluss selbständige Arbeit/Projekt Workbench-Installation 39 Prüfungsbesprechung Theorie zu SQL-Joins / Teil 1 40 Kapitel 5.1 lesen Theorie zu SQL-Joins / Teil 2 Theorie zu SP / Views Praxis zu SP / Views auf Kapitel 5.1 auf Videodatenbank DB ausführen 41 HERBSTFERIEN 42 HERBSTFERIEN 43 Repetition SP / Views auf eigener DB 44 Theorie zu Storage Engines / Kapitel 7 Performance vorbereiten Praxis zu Storage Engines / Performance 45 Systemeigenschaften (Filesystem / / Zugriffsmög- ini-Files / Security lichkeiten) PHP - Connection Kapitel 6 Theorie und Praxis zu Import / Export Theorie zu Backup Theorie-Backup vorbereiten 46 Praxis Backup Attribute / Datentypen repetieren Attribute 47 Google / Cloud-Service Prüfungsvorbereitung 48 LB 2 KEINE 49 Installation MSSQL Theorie Hintergrund MSSQL 82 Wochennr. Inhalt / Lernziele Aufgaben 50 Prüfungsbesprechung LB 2 Import, Export und Backup bei MSSQL 51 MSSQL : 52 WEIHNACHTSFERIEN 53 WEIHNACHTSFERIEN 1 LB3 Prüfungsvorbereitung 2 Reservetermin Prüfungsvorbereitung 3 Modulprüfung KEINE 4 Prüfungsbesprechung, Abschluss E xkurs NOSQL Tabelle P.1: Semesterplan 83