Zephyrnet-Logo

Warum wir unterschiedliche Datenbanken haben sollten

Datum:

Artem Gogin Hacker Noon Profilbild

@artemgArtem Gogin

Dateningenieur, Lehrer und technischer Redakteur.

Heute gibt es Hunderte von SQL- und NoSQL-Datenbanken. Einige von ihnen sind beliebt, andere werden ignoriert. Einige sind benutzerfreundlich und gut dokumentiert, andere sind schwer zu bedienen. Einige sind Open-Source-Produkte und andere sind proprietär. Und vielleicht das Wichtigste: Einige sind skalierbar, optimiert, hochverfügbar und andere sind schwer zu skalieren oder zu warten.

Es stellt sich natürlich die Frage: Wie wählt man eine Datenbank aus? Um dies zu beantworten, sollten wir entscheiden, was wir mit einer Datenbank erreichen wollen. Um eine Ansicht zu erstellen, sollten wir folgende Fragen beantworten:

  1. Benötigen wir analytischen Zugriff auf die Datenbank?
  2. Müssen wir in Echtzeit schreiben oder lesen?
  3. Wie viele Tabellen / Datensätze möchten wir speichern?
  4. Welche Verfügbarkeit brauchen wir?
  5. Benötigen wir Spalten?
  6. Greifen wir auf Tabellen mit Filter nach Spalte oder mit Filter nach Zeile zu?

Wenn die Entscheidung getroffen ist, müssen wir uns vor Augen halten, was die eine oder andere Datenbank bieten kann. Die Besonderheiten jeder Datenbank können variieren, im Allgemeinen gibt es jedoch nur wenige Arten von Datenbanken. Innerhalb dieser Typen können wir meist die gleichen Ziele erreichen. Schauen wir sie uns genauer an.

1. Relationale SQL-Datenbanken.

Wenn Sie jemals mit Datenbanken gearbeitet haben, haben Sie höchstwahrscheinlich mit dieser Art von Datenbank begonnen. Dieser Typ ist der beliebteste und am weitesten verbreitete. Diese Datenbanken ermöglichen das Speichern von Daten in relationalen Tabellen mit definierten Spalten eines bestimmten Typs. Relationale Tabellen sind eine gute Normalisierung und Verknüpfungen.

Vorteile

  • SQL-Unterstützung
  • ACID-Transaktionen (Atomizität, Konsistenz, Isolation und Haltbarkeit)
  • Unterstützung für Indizierung und Partitionierung

Nachteile

  • Schlechte Unterstützung von unstrukturierten Daten / komplexen Typen
  • Schlechte Optimierung für die Ereignisverarbeitung
  • Schwierige / teure Skalierung

Beispiele: Oracle-DB, MySQL, PostgreSQL.

2. Dokumentorientierte Datenbanken.

Wenn wir nicht mehrere Tabellen verknüpfen möchten, um die gewünschten Daten abzurufen, können wir uns die dokumentenorientierten Datenbanken ansehen. Diese Datenbanken ermöglichen das Speichern von Datensätzen im JSON-ähnlichen Format. Mit diesem Format können wir komplexe Werte für jeden Schlüssel erstellen und die gesamte Datenstruktur gleichzeitig in einem Datensatz zusammenfassen.

Vorteile

  • Schema frei
  • Es ist nicht erforderlich, immer alle Felder in jeden Datensatz zu schreiben
  • Gute Unterstützung für komplexe Typen
  • OLTP geeignet

Nachteile

  • Schlechte Transaktionsunterstützung
  • Schlechte Analyseunterstützung
  • Schwierige / teure Skalierung

Beispiele: MongoDB

3. In-Memory-Datenbanken.

Datenbanken dieses Typs können eine Echtzeitantwort zum Auswählen und Einfügen bestimmter Datensätze bereitstellen. Die meisten von ihnen speichern hauptsächlich Daten im RAM, bieten aber in einigen Fällen auch dauerhaften Speicher auf Festplatte oder SSD. Die meisten dieser Datenbanken arbeiten mit Schlüssel- / Wertdatensätzen, sodass die Werte möglicherweise an ein dokumentenorientiertes Format erinnern. Einige Datenbanken arbeiten jedoch auch mit Spalten und ermöglichen die sekundäre Indizierung in derselben Tabelle. Die Verwendung von RAM ermöglicht die schnelle Verarbeitung von Daten, macht sie jedoch instabiler und teurer.

Vorteile

  • Schnelles Schreiben
  • Schnelles Lesen

Nachteile

  • Schwierige Zuverlässigkeit
  • Teure Skalierung

Beispiele: Redis, Tarantool, Apache Ignite

4. Datenbanken mit breiten Spalten.

Diese Datenbanken speichern Daten als Schlüssel- / Wertdatensätze auf Festplatte oder SSD. Diese Lösungen sind so konzipiert, dass sie gut genug skaliert werden können, um Petabyte an Daten auf Tausenden von Commodity-Servern in einem verteilten System zu verwalten. Sie repräsentieren die SSTable-Architektur. Diese Architektur wurde für zwei Anwendungsfälle entwickelt: schneller Zugriff per Schlüssel und schnelles, hochverfügbares Schreiben.

Vorteile

  • Schnelles Schreiben Zeile für Zeile
  • Schnelles Lesen per Schlüssel
  • Gute Skalierbarkeit
  • Hohe Verfügbarkeit

Nachteile

  • Schlüssel- / Wertformat
  • Keine Analyseunterstützung

Beispiele: Kassandra, HBase

5. Säulendatenbanken.

Manchmal müssen wir schnell auf Daten zugreifen, nicht mit bestimmten Schlüsseln, sondern mit bestimmten Spalten. In diesem Fall sollten wir das zeilenweise Einfügen vermeiden und zum Batch-Schreiben übergehen. Mit Batch-Einfügungen können Spaltendatenbanken die Daten für das schnelle Lesen durch Spalten vorbereiten.

Vorteile

  • Schnelles Lesen nach Spalten
  • Gute Analyseunterstützung
  • Gute Skalierbarkeit

Nachteile

  • Nur für Chargeneinsätze geeignet

Beispiele: Vertica, Clickhouse

6. Suchmaschine

Wenn wir mit einem Filter nach einem beliebigen Wert und sogar mit einem beliebigen Wort in der Spalte auf die Daten zugreifen möchten, sollten wir uns an Suchmaschinen erinnern. Diese Datenbanken führen eine Indizierung jedes Wortes in Spalten durch und ermöglichen die Volltextsuche. Sie eignen sich perfekt zum Speichern und Analysieren von Protokollen oder großen Textwerten.

Vorteile

  • Schneller Zugriff durch jedes Wort
  • Gute Skalierbarkeit

Nachteile

  • Nur für Chargeneinsätze geeignet
  • Schlechte Analyseunterstützung

Beispiele: ElasticSearch, Apache Solr

7. Diagrammdatenbanken

Für einige Anwendungsfälle existieren Graphdatenstrukturen. Wir können ihre Realisierung in Graphendatenbanken finden. Wenn Ihre Aufgaben das Arbeiten mit Diagrammen erfordern, gibt es spezielle Datenbanken, die auf Ihre Bedürfnisse zugeschnitten sind.

Vorteile

  • Diagrammdatenstruktur
  • Verwaltbare Beziehungen zwischen Entitäten
  • Flexible Strukturen

Nachteile

  • Spezielle Abfragesprache
  • Schwer zu skalieren

Beispiele: Neo4j

Zusammenfassung

Fast jede Aufgabe kann mit fast jeder Art von Datenbank erledigt werden. Die Frage ist, wie teuer und optimiert es wäre. Die Auswahl des Tools, an das Sie gewöhnt sind, kann Ihre Markteinführungszeit verkürzen, aber auch eine enorme Menge Geld für die Wartung und Erweiterung Ihrer Hardware kosten, die möglicherweise ineffizient verwendet wird. Versuchen Sie immer, eine Datenbank so zu verwenden, wie sie verwendet werden sollte. Möglicherweise gibt es bereits eine Lösung, die Ihren Anforderungen entspricht.

Schlüsselwörter

Mach mit bei Hacker Noon

Erstellen Sie Ihr kostenloses Konto, um Ihr benutzerdefiniertes Leseerlebnis freizuschalten.

Münzsmart. Beste Bitcoin-Börse in Europa
Quelle: https://hackernoon.com/why-we-should-have-different-databases-6o1i345i?source=rss

spot_img

VC-Café

VC-Café

Neueste Intelligenz

spot_img