Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Relationale Datenbank MySQL

Ähnliche Präsentationen


Präsentation zum Thema: "Relationale Datenbank MySQL"—  Präsentation transkript:

1 Relationale Datenbank MySQL
HTML PHP ASP ActiveX PERL XML JavaScript MYSQL

2 Gliederung 0. Einblick Datenbanken Einführung MySQL
2. Relationale Datenbank

3 Einblick Datenbanken Momentan gängige Datenbanken:
Oracle (32% Marktanteil) DB2 (33% Marktanteil) MySQL (21 % Marktanteil) SQL-Server (11% Marktanteil, von Microsoft)

4 Dateiorgansation Datenbanken
Einkauf Produktion Artikel Lieferanten Bestellungen Bestand Artikel Aufträge Stücklisten Arbeitspläne Hoher Bedarf an Kommunikation und Datenaustausch ReWe Vertrieb Kunden Forderungen Verbindlichkeiten Lieferanten Artikel Kunden Angebote Aufträge

5 Was ist MySQL ? MySQL ist ein echter Multi-User, Multi-Treaded SQL Datenbank und wird von allen großen Providern oder auch Suchmaschinenbetreibern eingesetzt. MySQL ist eine CLient/Server Implentierung, bestehend aus einem Server-Dämon mysqld und vielen Client Programmen, sowie Bibliotheken für PERL, PHP/3, PHP/4, ASP. Die bedeutsamsten Vorteile von MySQL sind:  Geschwindigkeit,  Stabilität  einfache Bedienbarkeit. MySQL wurde ursprünglich entwickelt, weil auf TCX (dem Server der Entwickler) ein SQL Server benötigt wurde, der sehr große Datenbanken handeln konnte, und zwar um eine Größenordnung schneller, als die Datenbankhersteller damals liefern konnten. MySQL ist nun seit 1996 auf vielen Seiten im Einsatz.

6 Begriffe Eine Datenbank ist eine strukturierte Sammlung von Daten - Datenbasis Aufbau, Verwaltung und Strukturierung werden von einem Datenbank-Management- System (DBMS) übernommen. Die Abfrage erfolgt über spezielle Abfragesprachen, wie z.B. SQL (Structured Query Language) oder ODBC (Open DataBase Connectivity)

7 ODBC Open DataBase Connectivity, (ODBC), Ein Standard für den Zugriff auf verschiedene Datenbanksysteme. ODBC hat Schnittstellen für Java, Visual Basic, C++, SQL ODBC Treiberpaket beinhaltet Treiber für Access, Paradox, dBase, Excel and Btrieve ODBC übersetzt Abfragen jeweils in die datenbankspezifische Sprache.

8 ODBC Vorteile: Datenbankunabhängige Entwicklung möglich
Zugriff auf entfernte Datenbanken Nachteile: Langsam gegenüber nativen Zugriffen Microsoft Fixiertheit Notwendigkeit, eigene Treiber für die Datenbanken zu installieren und Datenbanken u.U. selbst eintragen zu müssen

9 Datenbanktypen hierarchisch Daten werden in einer Baumstruktur gespeichert objektorientiert besitzt sämtliche Merkmale objektorientierter Programmierung, wie Klassen, Objekte, Vererbung usw

10 Datenbanktypen relational Daten werden in Tabellen gespeichert. Die Tabellen sind durch Beziehungen (relations) miteinander verknüpft. Dadurch ist es möglich, Daten aus mehreren Tabellen zu kombinieren bei Abfragen. Merkmale Eine Relation zwischen zwei Tabellen entsteht dadurch, dass eine Tabelle ein Feld mit Primärschlüsselwerten einer anderen Tabelle enthält. Relationen machen eine DB der Tabellenkalkulation(Tabelle) überlegen

11 MySQL - Merkmale MySQL ist ein Datenbank Management System für relationale Datenbanken. Es ist in kompilierter Form und auch als Source-Code frei verfügbar. Es läuft auf Windows und UNIX Servern Installation und Administration ist relativ einfach Es hat Programmierschnittstellen zu den wichtigsten Programmiersprachen: Java, C++, Perl, PHP …

12 MySQL - Sicherheit MySQL besitzt ein zuverlässige Sicherheitskonzept. Es basiert auf: Benutzer Passworte Zugriffsrechte: Administrator kann Zugriffsrechte auf Datenbanken, Tabellen und einzelne Felder innerhalb der Tabelle für jeden einzelnen Benutzer festlegen

13 MySQL - Datentypen MySQL kennt 27 Datentypen, u.a.:
INTEGERS (ganzzahlige Zahlen), FLOAT, DOUBLE (Gleitkommazahlen) DECIMAL (Festkommazahlen) CHAR, VARCHAR (Zeichenketten) TEXT, BLOB (Texte, Binärobjekte) DATE, TIME, DATETIME (Datum) TIMESTAMP, YEAR (Datum) SET, and ENUM (Auswahl aus vorgegebenen Werten)

14 Attribute für Tabellenspalten
beeinflussen die Eigenschaften von Tabellenspalten (=Datenfeldern) Angabe von Attributen erfolgt bei der Spaltendeklaration in der CREATE-Anweisung (Tabellenerstellung) Die Angabe ist optional Attribute für Datentypen Syntax der Spaltendeklaration: Spaltenname, Spaltentyp [NOT NULL|NULL] [DEFAULT Standardwert]

15 Attribute für Datentypen
Bedeutung Feldtyp [DEFAULT Standardwert] Wert eintragen, wenn sonst keine Angaben Alle [NULL] Spalte darf NULL-Werte enthalten [NOT NULL] Spalte darf keine NULL-Werte enthalten [AUTO_INCREMENT]: automatisch generierte Zahlenfolge INTEGER

16 Attribute für Datentypen
Bedeutung Feldtyp [(M)] Anzeigenbreite INTEGER [(M,D)] Anzeigenbreite, Zahl der Nachkommastellen Dezimalzahlen (FLOAT, DOUBLE) [UNSIGNED] Ohne Vorzeichen - Nur positive Werte möglich INTEGER, FLOAT, DOUBLE [ZEROFILL] Füllt bis zur Anzeigenbreite mit Nullen auf

17 Attribute für Datentypen
Bedeutung Feldtyp [PRIMARY KEY] Primärschlüssel, eindeutig Alle [KEY] Schlüssel [INDEX] Tabellenindex – beschleunigt Suchabfragen [UNIQUE] Eindeutiger Indexwert, darf nur einmal vorkommen INTEGER CHAR

18 Tabellenindizes Indizes können für eine oder mehrere Tabellenspalten angelegt werden. Indizes sind sinnvoll bei Spalten, die oft als Suchkriterium benutzt werden. Sie beschleunigen Suchabfragen. Indizes benötigen Speicherplatz und verlangsamen das Einfügen von neuen Datensätzen.

19 Beziehung zwischen SQL und MySQL
SQL ist eine Programmiersprache. MySQL ist ein RDBMS (relationales Datenbank-Management-System), das SQL benutzt, um Daten zu bearbeiten, zu erstellen und anzuzeigen.

20 Relationale Datenbank
Tabelle Feld Eintrag Schlüssel Beziehung Normalisierung

21 Relationale Datenbank
Ein Primärschlüssel ist ein eindeutiges Feld innerhalb der Tabelle. Kein anderer Datensatz in diesem Feld hat den gleichen Wert. Dies dient dazu, einen Datensatz von allen anderen Datensätzen in dieser Tabelle zu unterscheiden. Ein Fremdschlüssel repräsentiert den Wert des Primärschlüssel für eine verknüpfte Tabelle. Es dient als strukturelle Link, der die Beziehung zwischen verschiedenen Tabellen definiert.

22 Relationale Datenbank
Type der Beziehung Eins-zu-eins (1:1) Eine-zu-vielen (1:n) Viel-zu-vielen (m:n)

23 Relationale Datenbank
Eins-zu-eins Beziehung Tabelle1 ... Datensatz Tabelle2 ... Datensatz Kunde Kundennummer

24 Relationale Datenbank
Eine-zu-vielen Beziehung Tabelle1 ... Datensatz Tabelle2 ... Datensatz Kunde Bestellung

25 Relationale Datenbank
Viele-zu-vielen Beziehung Tabelle1 ... Datensatz Tabelle2 ... Datensatz Bestellung Artikel

26 Anlegen von Indexen und Tabellen
Die MySQL-Anweisung zum Erzeugen von Tabellen lautet: CREATE TABLE tabelle ( spaltenname Datentyp [NOT NULL], ...) Für jede Spalte sind Bezeichnung und Typ anzugeben, zusätzlich kann mit NOT NULL festgelegt werden, daß die Spalte keine unbestimmten NULL- Werte beinhalten darf, was z.B. bei Schlüsselspalten erforderlich ist CREATE INDEX (Index für Tabelle anlegen) Löschen von Indexen und Tabellen Logische Objekte können vollständig (d.h. sowohl die Beschreibung als auch die beinhalteten Daten!) aus einer Datenbank gelöscht werden. Für Tabellen und Indexen lauten die SQLAnweisungen: DROP TABLE DROP INDEX

27 MySQL MySQL –Syntax CREATE CREATE DATABASE Datenbankname
CREATE TABLE Tabellenname DROP DROP DATABASE Datenbankname DROP TABLE Tabellenname INSERT INSERT INTO Tabellenname VALUES (Wert, Wert, Wert, ...) UPDATE UPDATE Tabellenname SET Spaltenname = Wert WHERE x = y

28 Abfragen von Tabellen • SELECT ist der wichtigste SQL Befehl. Jede Anfrage an eine Datenbank beginnt mit SELECT. Die Techniken zur Abfrage von Datenbanken werden auch zu deren Veränderung mit DELETE, INSERT und UPDATE verwendet. • Der SELCT Befehl kann auf eine oder mehrere Tabellen angewendet werden. Das Ergebnis der Suche ist wieder eine Tabelle. Die Auswahl der Spalten für die Ergebnistabelle nennt man Projektion, die der Zeilen Selektion. Werden für eine Anfrage Daten aus mehreren Tabellen zusammengetragen, spricht man von einem Join.

29 SQL-Queries dazu SELECT raum FROM vorlesung;
SELECT zeit FROM vorlesung WHERE titel LIKE ‘Math%'; SELECT name FROM studentin WHERE matrnr IN (SELECT matrnr FROM hoeren WHERE vorlnr = 'Inf 001');

30 MySQL DELETE DELETE FROM Tabellenname WHERE a = b JOIN CROSS JOIN
INNER JOIN (Beinhaltet nur die Datensätze, bei denen die Inhalte der verknüpften Felder beider Tabellen gleich sind.) LEFT JOIN Sortieren ORDER BY Spaltennamen

31 MySQL Aggregat-Funktionen:
Funktionen, die in Spalten zusammenfassende, mathematische Berechnung durchführen. COUNT() COUNT(DISTINCT) MAX() MIN() AVG() SUM() STD()

32 Interaktion Clientseitige Möglichkeiten Serverseitige Möglichkeiten
Sicherstellen der Anzeigefähigkeit von gelieferten Informationen (bspw. PlugIns) Sicherstellen von „richtigen“ Anfragen an den Server (Eingabeüberprüfungen) Transformation von gelieferten Informationen in der gewünschten Art und Weise (Formatierung von Siteinhalten, StyleSheets) Serverseitige Möglichkeiten Entgegennahme von HTML- Requests  Lieferung von HTML-Seiten Transformation der Requests in der gewünschten Art und Weise  z.B. Übersetzung der Anfrage in ein MySQL-Statement oder auch zurück, d.h. Umwandlung eines Abfrageergebnisses in ein HTML-Dokument Weiterleitung von Client-Requests an andere Server, insbes. Datenbankserver

33 Interaktion Mit einem solchen Modell besteht die Möglichkeit, in Kombination der serverseitigen und clientseitigen Programmierung Webapplikationen zu erstellen, die die gewohnte Interaktivität von Computerprogrammen bieten gestatten es, den Added Value für eine Site zu erzeugen Man wird hiermit in die Lage versetzt, dem User Webseiten präsentieren zu können, welche sich frei nach seinen Wünschen konfigurieren lassen! d.h. entsprechend seines Verhaltens kann auf die Eingaben des Nutzers reagiert werden.

34 Dynamische Webseiten Verarbeitung des HTML-Dokuments/Query-Resultats mittels Computer-Programm CGI-Scripts (i.d.R. PERL) ASP (Active Server Pages) JSP (Java Server Pages) PHP ... HTML-Formulare URL-Extensions (Datenübertragung zum Web-Server) JavaScript (Darstellung & Transformation der Informationen) Java (Darstellung & Transformation der Informationen) CSS/DHTML (Darstellung der Informationen) PlugIns (Darstellung von Informationen, teilweise auch Transformationen) MySQL-Queries werden dazu benutzt den Datenbestand abzufragen und zu analysieren

35 Konzept der Datenanbindung ist flexibel
Zugriff auf eine einfache Textdatei (TDC) Zugriff über Datenbankabfragesprache SQL auf eine Datenbank, die SQL-Befehle verarbeiten kann. Anbindung einer HTML-Datei an Daten aus einer Datenbank, die über die Datenbank-Schnittstellen OLE-DB oder ODBC verfügen beispielsweise MS Access, Oracle oder SQL-Server wie MySql Speichern von Daten möglich Ebenfalls ActiveX-Control notwendig

36 Datenbankabfrage mit PHP
$db_connection mysql_select_db(„ PHP_DB "); $db_result = mysql_query( "SELECT * FROM Kunden“, $db_connection); mysql_close($db_connection); ?> MySQL Login Rechnung Name KundenNummer Db_connection SELECT * FROM Db_result PHP PHP_DB

37 Datenbankabfrage mit PHP
15,00 € Müller 123 450,45€ Münz 122 Rechnung Name KundenNummer Resultat nach Select <?php $db_result =mysql_query( "SELECT KundenNummer,Name,Rechnung FROM Kunden“, $db_connection); while( $row =mysql_fetch_array( $db_result )) { echo $row[“KundenNummer"]; echo $row[“Name“]; echo $row[“Rechnung“]; } ?>

38 PHP Bank mit Datenbank-Anbindung
echo ‘<h2>Login</h2>‘; $KundenNummer = $_POST[‘KundenNummer ']; $Login = $_POST[‘Login']; phpBank_login( $ KundenNummer, $ Login); ... ?> Einlogen Kunden Nummer Login function phpBank_login($v_ KundenNummer, $v_ Login){ $db_connection mysql_select_db("PHP_DB"); $db_result = mysql_query( "SELECT * FROM Kunden WHERE KundenNummer =“.$v_ KundenNummer.“ AND PIN = “.$v_ Login“, $db_connection); If( $row = mysql_fetch_array( $db_result ) ){ echo ‘Hallo ‘.$row[‘Name‘].‘ Ihr Rechnung: ‘.$row[‘Rechnung‘]; }else{ die(‘Login ist falsch‘); } } login.php Login Hallo user2 Ihr Rechnung:15€ Login ist falsch

39 SESSION Ausgangsproblem: Lösung durch Sessions:
Über HTTP werden keine ständigen Verbindungen zu den Servern hergestellt, sondern die Kommunikation läuft immer nach dem Schema „Anfrage“ => „Antwort“ (request/response). Deshalb können sich Webseiten per se nicht „erinnern“ (= stateless protocol). Lösung durch Sessions: Entweder server- oder clientseitig (=> cookies) werden pro User-Agent (= Browser etc.) individuelle Parameter gespeichert, auf die dann alle PHP Skripte Zugriff haben. Diese Parameter müssen dann nicht mehr mit POST oder GET übermittelt werden. Lediglich eine Session ID muss von Seite zu Seite übermittelt werden.

40 Gutes Design Darstellung z.B. <<HTML>> Controller
<<PHP>> Wiederverwendbare Komponenten <<PHP-Library>> Datenbank- Abstraktionsschicht Datenbank (leicht auswechselbar)

41 Datenbank Abstraktionsschicht
In einer Datenbankabstraktionsschicht werden alle Zugriffe auf die DB durch eine zentrale Datei mediatisiert. Sinn einer Datenbankabstraktionsschicht ist es, das Umstellen auf andere Datenbanken oder –quellen zu erleichtern. Auch können die Datenbankabfragen unabhängig vom restlichen Programmiercode entwickelt und getestet werden.

42 Quellen: http://www.torsten-horn.de/techdocs/postgresql.htm
MySQL - Einfьhrung, Anwendung, Referenz, 1. Auflage Autor: Michael Kofler Marsch J., Fritze J.: SQL: Eine praxisorientierte Einführung SQL Tutorial Links MySQL Dokumentation, Download, Tools MySQL Datenbankhandbuch Guido Stepken (

43 Datenbankadministration mit MySQL
Datensicherheit Wartung von Tabellen Replikationsdatenbanken Datenmigration, Import und Export Beispiel (PHP und MySQL) Konstantin Altenhof

44 Dateiebene Speicherung der Daten auf Dateiebene mysql MS-SQL-Server

45 Datensicherheit Prävention mit Metadaten Zeitangabe
Es ist eine gute Angewohnheit, in jeder Tabelle ein Feld mit dem Datentyp TIMESTAMP einzurichten. TIMESTAMP wird von MySQL automatisch erzeugt Die Feldbreite durch die Deklaration bestimmt TIMESTAMP[14]: YYYYMMDDHHMMSS TIMESTAMP[12]: YYYYMMDDHHMM TIMESTAMP[10]: YYYYMMDDHH TIMESTAMP[8]: YYYYMMDD TIMESTAMP[6]: YYMMDD Beispiel aus Praxis.

46 Datensicherheit Benutzerdaten Benutzer zu ermitteln unter MySQL
Für Stammdaten häufig überlegenswert. Benutzer zu ermitteln unter MySQL USER() Beispiel: INSERT INTO Mitglieder (Name, Vorname, Erfasst_von) VALUES (`Schmidt`, `Beate`, USER() ); oder UPDATE Mitglieder SET NAME=`Bayer`, Erfasst_von= USER(); Bemerkung: Im Web – IP-Adresse (PHP Funktion REMOTE_ADDR)

47 Datensicherheit Prüfziffern CREATE TABLE kd_konten (
Aufbau der Tabelle: CREATE TABLE kd_konten ( Kunde CHAR(8) – Fremdschlüssel Kto_nr CHAR(8) Blz CHAR(10) Metha_when TIMESTAMP Pruefziffer BIGINT ); Beispiel: =`wischmil`, @Kto_nr =` `, @Blz =` `, @Pruef INSERT INTO kd_konten VALUES ( @Kunde, NULL, Identität abgleichen, ohne die eigentlichen Daten zu kennen. Daten aus anderen Datenbeständen übernehmen.

48 Vollständige Datensicherung
Datensicherheit Vollständige Datensicherung Mysqldump Mysqlhotcopy Wer, wann, wie? Automatisieren Einmal die Woche ist eine gute Faustregel Speichern Sie gesicherte Daten immer auf einem anderem Datenträger (Tipp: Keine Disketten verwenden).

49 Datensicherheit Sichern mit mysqldump
Erzeugt eine Datei, die SQL-Befehle enthält um die Datenbank mit allen Tabellen und Indizes wieder zu erzeugen und mit Daten zu fühlen. mysqldump Datenbankname >Backupdatei.sql mysqldump Db_1 Db_2 Db_3 >Backupdatei.sql Schalter: - password=xxx (Sicherheitslücke: Benutzerpasswort) - - all-databases (aber …..) - - add-drop-table (DROP TABLE, CREATE TABLE) - - add-locks (LOCK TABLE, INSERT, UNLOCK) - - extended-insert (nicht empfehlenswert, Syntax MySQL-spezifisch) - - complete-insert (ANSI-konform, Gegenstück zu –extended-insert)

50 Datensicherheit Sicherung unter UNIX automatisieren Cron-jobs.
Aufgabe: Jeden Sonntag um 3 Uhr morgens ein Backup der Datenbank Kundenservice automatisch erstellen. Lösung: Textdatei mit folgendem Inhalt anlegen: 0 3 * * 0 mysqldump Kundenservice \\ >/home/db_admin/Backups/ kundenservice.sql Die Datei speichern unter meine_cron_jobs.txt. 2. In einem Terminalfenster eingeben: cronjob meine_cron_jobs.txt

51 Datensicherheit Sichern einzelner Tabellen
BACKUP TABLE tabellenname TO `/home/mein_zuhaus/bak`; Bei diesem Vorgang fordert MySQL einen Read Lock an, kopiert Dateien tabellenname.frm und tabellenname.myd (Indexfiles werden neue generiert). RESTORE TABLE tabellenname FROM `home/mein_zuhaus/bak`; WICHTIG: Vorher eventuell vorhandenen Dateien tabellenname.MYD tabellenname.MZI tabellenname.frm

52 Sichern mit mysqlhotcopy
Datensicherheit Sichern mit mysqlhotcopy Perlskript, Kopieren von Datenbanken im laufenden Betrieb. Der unterschied zu mysqldump ist, dass dieses Programm die Datenbankdateien kopiert und nicht etwa eine SQL-Datei generiert. Vorteil – Backups wesentlich weniger Zeit benötigen. Nachteil – kopierten Dateien sind plattformabhängig und versionsabhängig.

53 Inkrementelle Strategien
Datensicherheit Inkrementelle Strategien - Veränderungen an der Tabelle aufzeichnen. - Vollständige Backups restaurieren und anschließend mit den inkrementellen Backups vervollständigen.

54 Datensicherheit Logging-Dateien
Skript einlegen und als Cron-Job täglich ausführen: mv hostname-bin.001 hostname-bak.001 mysqladmin flusch-logs cp hostname-bak.001 /usr/local/backups/mysql/ Nachteil: alle Änderungen aller Datenbanken. Bemerkung: mysqlbinlog wandelt Binärformat in einen Textformat um.

55 Datensicherheit Restaurieren von Datenbanken
Zurücklesen von SQL-Dateien Die Dateien die mit mysqldump erstellt wurden, erhalten SQL-Statements, die ausgeführt werden müssen. Erste Möglichkeit: Starten Sie SQL-Monitor mit mysql –u root Mit der SQL-Anweisung SOURCE die Backupdatei einlesen: SOURCE /usr/local/backups/aktuellesbackup.sql Zweite Möglichkeit: SQL-Datei direkt auf dem Kommandozeile zu übergeben: mysql – u root </ usr/local/backups/aktuellesbackup.sql

56 Restaurieren von Datenbanken
Datensicherheit Restaurieren von Datenbanken Logfiles einlesen Dafür müssen diese aber zuerst in eine Textdatei mit SQL-Befehl konvertiert werden: mysqlbinlog –short-form \\ /usr/local/backups/log_ bin>recover.sql Anschließend die Datei recover.sql mit einer der beschriebenen Methoden in System einlesen.

57 SQL-Befehle zur Wartung von Tabellen
ANALIZE TABLE CHECK TABLE OPTIMIZE TABLE REPAIR TABLE

58 Wartung von Tabellen CREATE TABLE top_secret(
very_secret varchar(120)); INSERT INTO top_secret VALUES( ‚Dies ist eine geheime Botschaft, die unter keinen Umständen länger als unbedingt notwendig gespeichert werden soll`); DELETE FROM top_secret WHERE very_secret LIKE ‚Dies%‘;

59 Wartung von Tabellen ANALIZE TABLE
ANALIZE TABLE Tabellenname_1, Tabellenname_2,…; Der Befehl analysiert und reorganisiert die Indizes der jeweiligen Tabellen und gibt Information über aktuellen Zustand der Tabelle aus. CHECK TABLE CHECK TABLE Tabellenname_1, Tabellenname_n [QUICK | FAST | MEDIUM | EXTENDED]; Zustand der Tabelle überprüfen und eine Diagnose erstellen.

60 Wartung von Tabellen OPTIMIZE TABLE
OPTIMIZE TABLE Tabellenname_1, Tabellenname_2,…; Mit OPTIMIZE TABLE werden aus einer Tabelle gelöschte Daten auch physikalisch entfernt. REPAIR TABLE REPAIR TABLE Tabellenname_1, Tabellenname_n [QUICK | EXTENDED]; Hiermit lassen sich korrupte Tabellen reparieren. Wenn Wiederherstellen nicht gelingt, versuchen Sie es mit myisamchk -o.

61 Wartung von Tabellen myisamchk myisampack myisamchk und isamchk
Schalter: -r -recover – Stellt praktisch jede beschädigte Tabelle wieder her. Die einzige Fehler, die mit dieser Methode nicht beseitigt werden kann, sind mehrer gleiche Werte in einem eindeutigen Index, was allerdings ein sehr unwahrscheinlicher Fall ist. -o -safe-recover – Ist wesentlich langsamer als –recover. myisampack Damit könnten gepackte Tabellen erzeugt werden. Beim Packen der Tabellen wird jede Spalte für sich gepackt (es wird für jede Spalte getrennt einen Huffmann-Baum angelegt, mit dem anschließend die Daten codiert werden), was Dateigröße erheblich reduziert. Einsatz in folgenden Fällen: Wenn die Datensätze nie oder höchst selten geändert werden. Wenn eine harte Kopie einer Tabelle als Backup erstellt wird. Wenn die Daten für nur-lesende Aplikationen auf CD-ROM abgelegt und ausgeliefert werden (Wörterbuch, Lernsoftware)

62 Replicationsdatenbanken
Um ein möglichst ausfallsicheres System einzurichten, bietet sich die Möglichkeit, eine oder mehrere Replikationsdatenbanken anzulegen. MySQL synchronisiert dann eine oder mehrere Slave-Datenbanken mit einem Master-Datenbank Außerdem bietet ein Slave in einem Produktionssystem die Möglichkeit, Backups nicht vom Master, sondern von einem Slave zu machen. Der Slave kann zu diesem Zweck ganz heruntergefahren, das Datenverzeichnis komprimiert und auf Band oder CD-Rom kopiert werden. In der von MySQL verwendeten Technologie kann auf den Master lesend und schreibend zugegriffen werden, während von den Slaves nur gelesen werden kann. Ein typischer Einsatz einer Replikationsdatenbank ist die eines Internetstores. Da über das Internet hauptsächlich lesend zugegriffen wird, werden die Daten von einem Slave zur Verfügung gestellt. Der Master läuft dann auf einem Server, der gar nicht vom Internet aus erreichbar ist.

63 Replicationsdatenbanken
MASTER-SEVER User mit File-Rechte einlegen GRANT FILE ON *.* TO IDENTIFIED BY `XXX`; In my.ini bzw. my.cnf im Abschnitt [mysqld] einen Server-ID eintragen. server-id=1 Diesen Eintrag muss später auch bei den Slaves gesetzt werden, wobei jeder der Server eine andere Nummer bekommt. Slave-Server Folgende einträge in der Konfigurationsdatei my.ini bzw. my.cnf vornehmen. master-host. master-user master-passwd. master-port.

64 Replicationsdatenbanken
Einen Slave zum Master machen Slave-Server herunterfahren. Folgende Parameter in dem Bereich [mysqld] in der Datei my.ini bzw. my.cnf auskommentieren und Server-ID auf die den alten Master setzen. master-host. master-user master-passwd. master-port.

65 Datenmigration, Import und Export
Dateien als Textdatei aus Access exportieren und in MySQL importieren. Mit mysqlimport werden die Datensätze aus einer Textdatei importiert. Beispiel: mysqlimport Personalverwaltung c:\temp\fuhrpark.txt (Vorausgesetzt, dass die Tabelle Fuhrpark in der Datenbank Personalverwaltung bereits besteht). Optionen: - fields-terminated-by (Trennung zwischen Spalten) - lines-terminated-by (gibt Zeichen an, mit denen eine Zeile abgeschlossen wird) - fields-escaped-by (Markierung für Sonderzeichen) Bespiel: mysqlimport –local „-fields-terminated-by:“ „lines-terminated-by=\r\n“ exceptions c:\temp\Fuhrpark.txt

66 Datenmigration, Import und Export
Import der Daten mit LOAD DATA INFILE Auch das Importieren von Daten direkt mit einem SQL-Befehl ist möglich. Der SQL-Befehl würde dann folgendermaßen lauten: LOAD DATA INFILE “c:\temp\fuhrpark.txt“ INTO TABLE Personalverwaltung.Fuhrpark; oder für lokalen Datenbank LOAD DATA LOCAL INFILE “c:\temp\fuhrpark.txt“ REPLACE INTO TABLE Fuhrpark; Import der Daten unter MySQL-Front Im MySQL-Editor MySQL-Front habe Sie eine menügeführte Import- und Exportfunktion für Daten, die im Text- oder CSV-Format vorliegen.

67 Datenmigration, Import und Export
Daten als Textdatei aus MySQL exportieren Mysql –u root –password=xxx –batch „execute=SELECT * FROM fuhrpark:“ Personalverwaltung > export.txt Daten als html aus MySQL exportieren Mysql –u root –password=xxx –html „execute=SELECT * FROM fuhrpark:“ Personalverwaltung > export.html Daten als Textdatei aus MySQL exportieren (Vertikale Datendarstellung) Mysql –u root –password=xxx –vertical „execute=SELECT * FROM fuhrpark:“ Personalverwaltung > export_vertikal.txt

68 Beispiel

69 Beispiel

70 Datenmigration, Import und Export
if($interpret!="") { if($jahr=="")$jahr="NULL"; mysql_query("INSERT INTO cds (titel,interpret,jahr) VALUES('$titel','$interpret',$jahr);"); }

71 Beispiel

72 Beispiel

73 Datenmigration, Import und Export
if($action=="del") { mysql_query("DELETE FROM cds WHERE id=$id;"); }

74 Beispiel

75 Beispiel

76 Beispiel

77 Quellen: Das große Buch MySQL, DATA BECKER, Markus Barth und Günther Karl MySQL/PHP Datenbankanwendungen, MITP, Jay Greenspan, Brad Bulger PHP 4 (Umfassend zur MySQL –Programmierung, HANSER, Jörg Krause MySQL Dokumentation, Download, Tools


Herunterladen ppt "Relationale Datenbank MySQL"

Ähnliche Präsentationen


Google-Anzeigen