====== Datenbanken - Einführung ======
Dieses Kapitel soll eine Einführung in Datenbanken mit MySQL/MariaDB geben. Bevor wir uns jedoch genauer mit MySQL/MariaDB befassen, sollten wir kurz ein paar Worte über Datenbanken im Allgemeinen verlieren.
===== Große Datenbanken =====
Datenbanken werden überall da eingesetzt, wo **große** Datenmengen **effizient** verwaltet werden sollen.
Beispiele finden sich zuhauf. Eine aus dem Jahr 2010 stammende [[https://www.comparebusinessproducts.com/fyi/10-largest-databases-in-the-world|Liste]] gibt die damals 10 größten Datenbanken an, darunter natürlich:
{{ .:datenbanken_logos.png?600 |}}
==== Weitere Beispiele im Alltag ====
Zudem gibt es noch etliche andere Anwendungen für **Datenbankenssysteme**: Personalverwaltungen, Schulverwaltungen oder Bibliotheken.
Auch das **DNS-System**, das Domain Name System, im Internet ist nichts anderes als eine große Datenbank. [[http://de.wikipedia.org/wiki/Domain_Name_System|Über DNS bei Wikipedia]]
* Eine **Datenbank** ist eine Sammlung von Daten verschiedener Objekte auf Datenträgern
* Datenbanken werden überall da eingesetzt, wo **große Datenmengen** **effizient** verwaltet werden sollen
===== Begrifflichkeiten =====
==== Datenbanksystem ====
Etwas genauer: Ein **Datenbanksystem** ist ein System zur Beschreibung, Speicherung und Wiedergewinnung von Datenmengen. Es besteht aus einer **Datenbank**, die die Nutz- und Metadaten (z.B. Indizes) vorhält, und einem **Datenbankverwaltungssystem**, das Schnittstellen für Anwendungsprogramme bereitstellt, die über eine **Datenbanksprache** angesprochen werden. So bleiben die Details der physischen Datenspeicherung (Ort sowie Art und Weise) vor den Anwendungsprogrammierern verborgen und Programme, welche auf die Daten zugreifen, bleiben weitgehend unabhängig von der physischen (Re-)Organisation der Daten.
Der formelle Überbegriff ist also **Datenbankensystem (DBS)**
Ein Datenbankensystem (auch in Kurzform einfach Datenbank) besteht aus zwei Teilen:
- Einem **Datenbank-Management-System (DBMS)**, welches die Verwaltungsssoftware ist (z.B. MySQL, DB2, PostgreSQL).
- Der eigentlichen **Datenbank**, die aus den gespeicherten Informationen besteht.
{{ .:datenbanksystem_01_kl.png |}}
Zugriff auf die Daten erfolgt mit einer **Datenbank(abfrage)sprache**.
==== Datenbankmanagementsystem ====
=== Allgemein ===
Das **Datenbankmanagementsystem** erfüllt einige Aufgaben, die der zuverlässigen Verwaltung der Daten dienen und muss zu diesem Zweck verschiedene Bestandteile implementieren. Die folgende Grafik zeigt eine Übersicht.
{{ :faecher:informatik:oberstufe:datenbanken:einfuerung:dbms_1_.png |}}
=== Beispiel: Postgresql ===
Ein bekanntes und sehr zuverlässiges FOSS DMBS ist [[https://www.postgresql.org|Postgresql]]. Postgresql implementiert die Bestandteile, die nötig sind, um die Aufgaben des DMBS zu erfüllen. Die Datenspeicherung kann z.B. auch auf einem verteilten Dateisystem erfolgen, um beispielsweise Schutz vor defekten Speichermedien zu gewährleisten. Darüber hinaus verfügen viele moderne DBMS über Möglichkeiten der "Replikation" über viele Serversysteme hinweg, um eine DAtenhaltung an verschiedenen Orten zu ermöglichen und sicherzustellen, das die Systeme mit größerer Last skalieren. Die Darstellung würde den Umfang unserer Grafiken an dieser Stelle aber sprengen.
{{ :faecher:informatik:oberstufe:datenbanken:einfuerung:pgsql.png |}}
===== Prinzip: Abstraktion =====
Auf die beschriebene Weise erreicht man ein hohes Mass an **Abstraktion**, die letztlich dazu führt, dass Management und Manipulation der Daten in einem DBMS über die **Datenmanipulationssprache** erfolgen - ein Anwender muss lediglich diese Sprache beherrschen, um mit Daten in einem solchen Datenbanksystem zu interagieren.
Die meisten relationalen DBMS verwenden als Datenmanipulationssprache eine Dialekt von SQL. Deswegen werden wir im weiteren Verlauf des Kurses SQL lernen.
{{ :faecher:informatik:oberstufe:datenbanken:einfuerung:abstraktion.png |}}
===== Material =====
{{simplefilelist>.:praesis:*}}