
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!
- 1 So viele Datenbanken – Warum?
- 2 8 Beispiele von Datenbanken
- 2.1 Relationale Datenbanken – Der beständige Klassiker
- 2.2 Graphen – Komplexes einfach darstellen
- 2.3 Objektorientiert – Der Programm nahe
- 2.4 Hierarchische – Struktur und Ordnung
- 2.5 Spalten – Die Leistungsfähige
- 2.6 Key-Value – Einfachheit und Schnelligkeit
- 2.7 Hadoop – Big Data König
- 2.8 Dokumente orientierte – Mehr als gedacht
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.
Datenbanken untergliedern sich in 2 Grundtypen:
Relational – SQL

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

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 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:
- 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-100-facht (z. B. eine Personaldatenbank an einer Hochschule)
- 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.
- 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.
- 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.
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 können Beziehungen über Fremd- und Primärschlüssel bestehen. Das oberste Ziel ist, das die Konsistenz, Integrität, Dauerhaftigkeit der Speicherung sichergestellt ist. Wenn ein Fehler beim Speicherprozess stattfindet, rollt die Datenbank die Änderungen zurück.
Anwendung: Finanzen/Transaktionen, Geschäftsdaten und Buchungsvorgänge
Produkte: MySQL, PostgresSQL
Pro
+ Hohe Zuverlässigkeit und Genauigkeit
+ festes Schema
Contra
– Skaliert für großen Datenmengen schlecht
– Das Zusammenführen von Tabellen beansprucht viel Hauptspeicher
Graphen – Komplexes einfach 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 komplexe Beziehungen z. B. Berechtigungen, Ahnenforschung, Social Media, Netzwerke allgemein
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

Objektorientierte Programme (z. B. Java) nutzen objektorientierte Datenbanken, um die generierten Objekte im RAM zu persistieren (abzuspeichern). Dieser Datenbanktyp sollte den Entwickler etwas Arbeit abnehmen. 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 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

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.
Anwendung: NoSQL mit Schema bringt eine bessere Planbarkeit mit sich.
Produkte: Cassandra
Pro
+ Schnelles Lesen
+ Partitionierung der Tabellen
Contra
– Adressierung umständlich (Spalte, Spaltenfamilie, Zeitstempel)
Key-Value – Einfachheit und Schnelligkeit

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.
Anwendung: Highscore für Spiele, Zwischenspeichern von Inhalten, PHP-Variablen Speicher
Produkte: Redis
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

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
Kann man herrausfinden ob man abgehört wird?
Ich meine mit Sicherheit und könnte man falls es so wäre der anderen Seite schwer machen, sie zur Verzweiflung bringen….?
Grüsse aus Leipzig
Hallo,
für diese Thematik habe ich eine Erklärung https://lippke.li/fremdzugriff-auf-handy-erkennen/ verfasst. Die Realität für viele von uns ist nicht all zu toll. Aber es gibt viele Alternativen http://lippke.li/tools