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. Deshalb untergliedern sich Datenbanken 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 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:
- 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)
- 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.
- 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.
- 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.
- 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.
- 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
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
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
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
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
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