Datenbanken Beispiele – 8 Typen aus der Informatik

Datenbakentypen Übersicht - Coding Lab Steffen Lippke

Welche Datenbanken Beispiele soll man kennen? Was sind die Unterschiede?

Für welche soll ich mich entscheiden?

Diese Fragen soll dieser Artikel klären.

Beginnen wir!

So viele Datenbanken – Warum?

Auf dem Markt gibt es Hunderte von Datenbanken. Ihre Aufgabe ist es, Daten zu speichern, zu ändern und zu lesen. Je nach Anwendungsfall, Geldbeutel und Hardware brauchst Du eine andere Datenbank. Die alte Welt kannte nur Datenbanken in der Form einer Tabelle. Neue Probleme brauchen neue Speicherkonzepte. Deshalb untergliedern sich Datenbanken sich in 2 Grundtypen:

Relational – SQL

01 SQL
Das gute alte SQL (MySQL – nicht tot zu bekommen

Das Wort Relation aus der Mathematik ist eine Menge von geordneten Paaren – pragmatisch: Tabellen. Tabellen bestehen aus Zeilen, dem Datenbankeintrag und den Spalten mit den Spaltennamen / Attributen.

Reine relationale Datenbanken können nur Datensätze in diesem Raster abfragen, hinzufügen, manipulieren und löschen.

Nicht NUR Relational – NoSQL

02 NoSQL
Ich will noch anderes speichern – mit NoSQL

NoSQL ist ein Sammelbegriff für Datenbankentypen, die nicht nur auf tabellarische Strukturen aufbauen. Sie bietet je nach Typ eine Schemafreiheit, gute Skalierbarkeit und neue Programmierparadigmen wie MapReduce. NoSQL verdrängen die SQL-Datenbanken nie komplett, weil relationale Datenbanken für bestimmte Aufgaben wie Banking oder Verträge am besten geeignet sind.

Welche Datenbank soll ich wählen?

Die Wahl der Datenbank kann ausschlaggebend sein, ob Du mit Deinem IT-Projekt Erfolg hast oder nicht. Nehme Dir Zeit und analysiere, welche Datenbank für Dein Projekt passt. Die Datenbank ist das Fundament, welches in der laufenden Entwicklung nur sehr schwer zu ersetzen ist.

  • Wie lang soll das System existieren?
  • Was sind die Anforderungen an das Projekt?
  • Kannst Du abschätzen wie viele Daten in 3 Monaten, 1 Jahr oder 10 Jahren die Datenbank halten muss?

Beachte die folgenden Aspekte:

  1. Skalieren: Die NoSQL-Datenbanken skalieren besser als SQL-Datenbanken, weil diese sich auf viele kleine Server verteilen lassen können. SQL-Datenbanken sind eine gute Wahl, wenn Du weißt, dass der Datenbestand bis zum Ende der Laufzeit sich nicht ver-1000-facht (z. B. eine Personaldatenbank an einer Hochschule)
  2. Geschwindigkeit: Brauchst Du für Dein Projekt eine hohe Lesegeschwindigkeit oder eine hohe Schreibrate? Eine materialisierte Sicht oder einen Lese- und Schreibkanal (CQRS) erhöht die SQL-Datenbank Performance.
  3. Genauigkeit oder Geschwindigkeit: Die strengen Verhaltensregeln wie ACID in relationalen Datenbanken oder der weichere Regelsatz BASE beschreiben Datenbankeigenschaften (Verhalten), welches bestimmt, ob dieser Datenbanktyp für Deine Software.
  4. Datentyp: Die zu speichernden Datentypen können den Datenbanktyp bestimmten. Musst Du verschiedene Dokumente (JSON) verwalten eignet sich Couchbase oder MongoDB. Ein Big Data Cluster mit Hadoop verarbeitet verschiedenen Datentypen im gleichen System.
  5. Nutzerzahl: Wie viele Nutzer verwenden die Datenbank? Eine SQLite kann die optimale Lösung für lokale Datenbank auf einem Smartphone sein, während eine MongoDB das Durcheinander vor 1 Million Nutzer tagtäglich managt.
  6. Vendor-Zwang: Hersteller verkaufen gerne ihre ganze Platte an Produkte und lassen nicht die Produkte andere Hersteller zu.

Du kannst eine Pro-Contra-Tabelle für deine Umsetzung anlegen und diese mit den 4 Punkten jeweils bewerten.

​8 Beispiele von Datenbanken

Relationale Datenbanken – Der beständige Klassiker

Relationale Datenbanken nutzen Tabellen, um Daten zu speichern. Zwischen den Tabellen kannst Du Beziehungen über Fremd- und Primärschlüssel erstellen. Das oberste Ziel ist, das zu jederzeit die Konsistenz, Integrität, Dauerhaftigkeit der Speicherung sichergestellt ist. Wenn ein Fehler beim Speicherprozess stattfindet, rollt die Datenbank die Änderungen zurück (ACID).

Anwendung: Finanzen/Transaktionen, Geschäftsdaten und Buchungsvorgänge

Produkte: MySQL, PostgresSQL, SQLite

Pro

+ Hohe Zuverlässigkeit und Genauigkeit
+ festes Schema

Contra

– Skaliert für sehr großen Datenmengen schlecht
– Das Zusammenführen von Tabellen beansprucht viel Hauptspeicher

​Graphen – Komplexes einfach darstellen

03 Graph
Beziehungen kannst Du mit einem Graph sehr gut darstellen

Ein Graph besteht aus Knoten (Entitäten) und Kanten (Beziehungen). Attribute beschreiben die Knoten näher (JSON-Dokumente). Die Beziehungen können gerichtet (Y ist Sohn von X) oder nicht gerichtet (Z und A sind befreundet) sein.

Anwendung: Graphen beschreiben gut komplexe Beziehungen z. B. Berechtigungen, Ahnenforschung, Social Media, Schauspieler- und Filmedatenbank

Produkte: Neo4j

Pro

+ Komplexe Beziehungen abfragen und erkennen
+ Realitätsnahe Modellierung

Contra

– gewisse Abfragen sind sehr umständlich
– Migrationen sind aufwendig

Objektorientiert – Der Programm nahe

00 Objektoriente DB
Einige Programmiersprachen verwenden eine objektorientierte DB

Objektorientierte Programme (z. B. Java) können objektorientierte Datenbanken nutzen, um die generierten Objekte im RAM zu persistieren (abzuspeichern). Dieser Datenbanktyp sollte den Entwickler etwas Arbeit abnehmen, aber dieser Typ hat sich bis heute nicht durchgesetzt.

Anwendung: Jedes objektorientierte Programm (Java)

Produkte: ObjectDB

Pro

+ weniger Entwicklungsaufwand
+ keine Astaktionsebene dazwischen

Contra

– inflexibel / portabel?
– begrenzte Anwendungen

​Hierarchische – Struktur und Ordnung

Eine hierarchische Datenbank beschreibt einen Baum mit einer Wurzel, Ästen und Blättern, die Daten enthalten. Diese Strukturform untergliedert die Daten. Diese Idee hat sich nicht durchgesetzt und relationale Datenbanken haben sich stattdessen etabliert.

Anwendung: Das Dateisystem eines Betriebssystems entspricht einer hierarchischen Datenbank. Eine Ordnerstruktur auf einem Rechner ermöglicht die gleiche Form der Speicherung. Einige Dateisysteme arbeiten ähnlich wie eine Datenbank und verhindern das gleichzeitige Beschreiben.

Produkte: LDAP, Windows Dateisystem

Pro:

​ + natürliche Aufteilung und Speicherung
​ + unkompliziert / keine Installation notwendig

Contra:

​ – Updaten umständlich
​ – Lesen umständlich

Spalten – Die Leistungsfähige

04 Spalten
Super lange Spalten für besondere Operationen

​Die relationalen Datenbanken nutzen Reihen, um Daten abzufragen. Ruft ein Programm das letzte Attribut in der Reihe auf, iteriert die Datenbank über alle Attribute. Spalten-Datenbanken adressieren die Spalten mit einer ID. Dieser Typ unterstützt das Bündeln von Spalten zu Spaltenfamilien, die Deine Anwendung in wiederkehrenden Intervallen in dieser Konstellation abruft. Ein Beispiel hierfür ist die Summe bilden oder den Durchschnitt berechnen. Wenn ein Konzern in Realzeit die Verkäufe in allen Fialen gleichzeitig beobachten will, brauchst Du diese Form der Speicherung.

Anwendung: NoSQL mit Schema bringt eine bessere Planbarkeit mit sich.

Produkte: Cassandra, SAP HANA, MariaDB, MonetDB

Pro

​ + Schnelles Lesen
​ + Partitionierung der Tabellen

Contra

​ – Adressierung umständlich (Spalte, Spaltenfamilie, Zeitstempel)

Key-Value – Einfachheit und Schnelligkeit

05 Redis
Frage – Antwort – Redis

Diese Datenbank speichert zu einem Schlüssel einen Wert. Dieser Wert kann eine Zahl, ein String, ein Dokument, ein Bild oder eine andere Form von Daten sein. Du kannst einfach jeden Wert speichern, den du schnell und einfach über den Schlüssel aufrufen kannst. Bilder und anderen binär Dateien könnten z. B. in der Base64-Codierung gespeichert sein, um die als einen sehr langen String darzustellen

Anwendung: Highscore für Spiele, Zwischenspeichern von Inhalten, PHP-Variablen Speicher

Produkte: Redis, DynamoDB

​Pro

​ + Einfachheit
​ + Geschwindigkeit

​Contra

​ – Kein Wissen über den Wert (Typ, Größe usw.)
​ – Schlüsseldesign entscheidet über den Erfolg

​Hadoop – Big Data König

Die Hadoop Datenbank kommt mit Petabytes an Daten zurecht. Heterogene Datentypen wie JSON, CSV usw. verarbeitet das Dateisystem der Datenbank (HDFS). Der Programmierer kann MapReduce nutzen, um Berechnungen mit den enormen Datenmengen auszuführen. Der Entwickler sendet Programmieranweisungen zu jeden einzelnen Computer, der die Ergebnisse berechnet (Map) und dann zusammenfasst (Reduce). Die Ergebnisse erhält der Client (wenn diese nicht zu groß sind).

Anwendung: Hadoop ist überall dort notwendig, wo eine heterogene Datenstruktur mit riesigen Datenmengen vorliegt.

Produkte: Hadoop, Google Big Table (nicht verfügbar)

Pro

+ große Datenmengen sind möglich
+ MapReduce biete neue Möglichkeiten der Datenverarbeitung

Contra

– Wiederverwendung von MapReduce ist schwer
– Nicht trivial Bedingung und den Abfragen

Dokumente orientierte – Mehr als gedacht

06 Couchbase
Die unterschätze Couchbase ist super bequem

​Anstatt Zeilen in einer Reihe zu speichern, speichert eine Dokumenten-orientierte Datenbank, die Dokument kaum unverändert als BSON mit einer Dokumenten-ID ab. Dieses Schema ermöglicht effizientere Abfragen und vermeidet den Impedeance Mismatch (JOINS über mehrere Tabellen). Das NoSQL-Design entscheidet darüber, ob die Abfragen performant sind und wie die Anwendung mit den Daten arbeiten muss.

​Anwendung: E-Commerce, Kundendatenbanken, (Film-)Bewertungen,

​Produkte: MongoDB, Couchbase

Pro

​ + effiziente Abfrage
​ + kein JOINs

​Contra

​ – Updaten wegen der Schemafreiheit
​ – Redundanzen

Kommentare 2

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert


Jeden Monat teile ich mit Mitgliedern
4 neue praxisnahe Tutorials (je 1000+ Wörter).


Trage Deine Mail, damit Du
Deine Coding + Hacking Skills erweitern kannst!

Die Webseite nutzt nur technisch notwendige Cookies.