Zur Erstellung eines neuen Projekts gehört auch die Wahl der richtigen Datenbank zur Speicherung Ihrer Daten. Viele Entwickler, die ich kenne, entscheiden sich von Anfang an standardmäßig für eine relationale Datenbank. Aber ist das die beste Entscheidung? Das hängt natürlich von vielen Faktoren ab. In diesem Artikel möchte ich Ihnen andere Datenbanktypen vorstellen, um Ihnen die Auswahl zu erleichtern und Sie bei Ihren zukünftigen Vorhaben zu unterstützen.
Der Typ Ihrer Datenbank ist nicht das einzige Thema, das zu berücksichtigen ist. Es gibt noch viele andere Aspekte zu bedenken, z. B. wie viele aktive Benutzer die Anwendung haben könnte? Brauchen Sie überall starke Konsistenz? Reicht die eventuelle Konsistenz in einigen Fällen aus? Es gibt so viele Fragen, auf die es keine einfachen Antworten gibt, denn "je mehr man sich damit befasst, desto komplizierter wird es". Beachten Sie also bitte, dass sich dieser Artikel nur auf Datenbanktypen konzentriert.
Nehmen Sie eine Tasse Kaffee und genießen Sie diese Lektüre.
Allgemeine Datenbankklassifizierung
Zu Beginn ist es gut zu wissen, dass es zwei Haupttypen von Datenbanken gibt: relationale (SQL) und nicht-relationale (NoSQL).
- SQL-Datenbanken sind relational strukturiert, d. h. Sie speichern Daten in Tabellen und stellen Beziehungen zwischen ihnen her.
- Die NoSQL-Datenbanken (Not only SQL) sind im Gegensatz zu den relationalen Datenbanken nicht gut strukturiert und ermöglichen daher mehr Anpassungsfähigkeit und Flexibilität.
Neben den beiden oben genannten gibt es noch einen weiteren Typ, nämlich eine In-Memory-Datenbank. Sie kann weder als relationale noch als nicht-relationale Datenbank klassifiziert werden, da es darauf ankommt, wo die Daten physisch gespeichert sind. Jede Datenbank kann auf einer Festplatte oder im Speicher gespeichert sein.
Arten von Datenbanken
1. Relationale
Meiner Meinung nach ist dies die beliebteste Art von Datenbank. Sie eignet sich gut für Strukturdaten, bei denen man Beziehungen zwischen den Datensätzen aufrechterhalten möchte. Die Struktur der Datenbank wird in einem Schema beschrieben.
Die wichtigsten Vorteile sind Transaktionen (sie helfen, die Datenintegrität zu gewährleisten und die ACID-Regeln einzuhalten) und die Fähigkeit, viele komplexe Abfragen zu bearbeiten.
Wann sollte man sie wählen?
Sie ist nützlich für die Aufbewahrung von Daten, die sich strukturell nicht sehr oft ändern und die Sie z. B. dauerhaft speichern müssen:
- CRM (Kundenbeziehungsmanagement),
- Verwaltung der Aufträge,
- ERP (Unternehmen Ressourcenplanung),
- Data Warehousing oder Bestandsverwaltung,
- Buchhaltung oder Finanzen.
Beispiele:
Amazon Aurora, Microsoft Azure SQL-Datenbank, PostgreSQL, MySQL.
Relationale Datenbanken sind für viele neue Anwendungen unzureichend, und man braucht mehr als eine Datenbank. Im nächsten Teil des Artikels werde ich mich auf die nicht-relationalen Datenbanken konzentrieren.
2. Schlüssel-Wert
Sie speichert jeden Datenwert mit einem eindeutigen Schlüssel. Das bedeutet, dass der Zugriff auf die Daten über einen einzigen Schlüssel erfolgt, genau wie bei einer Hash-Map. Im Gegensatz zu relationalen Datenbanken werden hier weder das Schema noch die Beziehungen zwischen den Datensätzen erzwungen. Die meisten dieser Datenbanken unterstützen in der Regel keine Aktualisierungsoperationen. Um Daten zu ändern, müssen Sie den gesamten vorhandenen Satz überschreiben.
Wann sollte man sie wählen?
Es ist nützlich für Daten, die Sie schnell lesen/schreiben wollen (aber nicht sehr oft aktualisieren):
- Echtzeitgebote, Adserving,
- Daten-Caching,
- Sitzungsmanagement,
- Einkaufswagen,
- Kundenpräferenzen oder Profilverwaltung.
Beispiele:
Memcached, Amazon DynamoDB, Azure Cosmos DB, Redis.
3. Dokument
Es speichert Sammlungen von Dokumenten. Jedes Dokument enthält Felder mit Daten, bei denen es sich um einfache Werte oder komplexe Elemente, wie Listen oder untergeordnete Sammlungen, handeln kann. Es ist wichtig zu wissen, dass jedes Dokument eine andere Struktur haben kann, auch wenn sie dasselbe darstellen (jedes Dokument ist einzigartig und entwickelt sich mit der Zeit). Das erste Kundendokument enthält zum Beispiel weniger Informationen als das zweite:
{
"Vorname": "John",
"Nachname": "Fake",
"Motorcycles:" [
{
"Model": "BMW",
"Jahr": 2020
}
]
}
{
"Vorname": "Alex",
"Nachname": "Nolastname",
"Alter": 15,
"Adresse": {
"Land": "Polen",
"Stadt": "Irgendwo"
},
"Motorcycles:" [
{
"Modell": "BMW",
"Jahr": 2020
}
]
}
Wann sollte man sie wählen?
Es ist nützlich für Daten, die ein flexibles Schema für eine schnelle Verarbeitung erfordern:
- Produkt Kataloge,
- CMS (Content Management System),
- Benutzerprofile und Personalisierung.
Beispiele:
Amazon DocumentDB, Azure Cosmos DB, MongoDB, Redis.
4. Grafik
Es verwendet eine Graphenstruktur und besteht aus zwei Elementen: Knoten und Kanten. Knoten sind analog zu Tabellenzeilen oder JSON-Dokumenten. Kanten sind Beziehungen zwischen den Knoten - sie sind genauso wichtig wie die Knoten. Beide können Eigenschaften haben. Außerdem können Kanten eine bestimmte Richtung einer Beziehung haben.
Wann sollte man sie wählen?
Sie ist nützlich, wenn Ihre Daten einem Diagramm ähneln, d. h. wenn die Beziehungen zwischen den Datenelementen dynamisch sind und sich im Laufe der Zeit ändern. Außerdem ist es eine gute Wahl, wenn ein geschäftlicher oder technischer Team die Beziehungen innerhalb ihrer Daten verstehen müssen. Einige bekannte Beispiele sind:
- Organigramme,
- Aufdeckung von Betrug,
- soziale Graphen/Netzwerke,
- Empfehlungen Motoren,
- Wissensgraphen.
Beispiele:
Amazon Neptune, Neo4j, ArangoDB, Titan.
5. Zeitreihen
Er speichert Daten nach Zeit geordnet. In der Regel werden enorme Mengen an Daten in Echtzeit gespeichert. Sie wird meist zum Speichern von Daten verwendet, wobei Aktualisierungen sehr selten sind. Im Allgemeinen wird ein Zeitstempel als Primärschlüssel und/oder zur Sortierung der Daten verwendet. Einige Datenbanken ermöglichen die Aufnahme von Tags als zusätzliche Informationen, wie z. B. Datenherkunft oder -typ.
Wann sollte man sie wählen?
Es ist nützlich, kleine Datenmengen in chronologischer Reihenfolge zu speichern, zum Beispiel in:
- DevOps,
- Überwachung der Anwendung,
- Überwachung und Ereignis-Telemetrie,
- IoT Anwendungen (wie Datensammlungen von Gerätesensoren).
Beispiele:
Azure Time Series Insights, Amazon Timestream, InfluxDB.
6. Hauptbuch
Sie bietet ein unveränderliches, transparentes und kryptografisch verifizierbares Transaktionsprotokoll, das sich im Besitz einer zentralen Behörde befindet. - Amazons QLDB Überblick
Lassen Sie uns kurz jedes Schlüsselwort in dem obigen Zitat erklären:
- unveränderlich - bedeutet, dass ein in dieser Datenbank erstellter Datensatz nicht gelöscht, geändert oder gar überschrieben werden kann,
- transparent - es verfolgt und protokolliert jede Änderung Ihrer Daten in einer Reihenfolge,
- kryptografisch überprüfbar - die in dieser Datenbank erstellten Daten werden durch kryptografische Hash-Verfahren überprüft, ähnlich wie bei Blockchains (unter Verwendung der SHA-256-Hash-Funktion).
Wann sollte man sie wählen?
Es ist nützlich, eine genaue Historie zu speichern, z. B. durch die Protokollierung der sequentiellen Eingabe jeder Datenänderung, wie in:
- Finanzen (Historie der Debit- oder Kreditgeschäfte),
- Herstellung (track where parts were sourced),
- Versicherung,
- HR und Lohnbuchhaltung,
- Einzelhandel,
- Lieferketten.
Beispiele:
Amazon QLDB
Schlussfolgerungen
Es gibt keine einfache Antwort auf die Frage, die im Titel dieses Artikels gestellt wird. Die einzige Möglichkeit, die richtige Datenbank zu wählen, besteht darin, mehr über Ihre Daten zu erfahren. Beantworten Sie die Frage: "Welche Art von Daten erzeugt Ihre Anwendung?", und Sie werden in der Lage sein, die richtige Wahl zu treffen.
Außerdem sollten Sie die geschäftlichen Anforderungen und den Anwendungsbereich sehr gut kennen. Sie müssen wissen, wie Sie die Daten verwenden werden, welche Abfragen Sie an die Datenbank senden werden, wie oft Sie Ihre Daten speichern, lesen, aktualisieren oder löschen werden. All diese Dinge sind wichtig, aber nicht alle Entwickler schenken diesen Bereichen genügend Aufmerksamkeit.
Bitte denken Sie an Ihre Daten in der Anwendung, die Sie entwickeln, um eine bessere Software zu erstellen bzw. zu verbessern. Insgesamt hoffe ich, dass Sie Ihre Daten gut genug kennen lernen, um sie an einem Ort zu speichern, an dem sie glücklich sind.
Lesen Sie mehr:
Ein paar Tricks zur Beschleunigung Ihrer JavaScript-Anwendung
Wege zur Steigerung Ihrer Rails-Leistung
Fakten und Mythen über die Zusammenarbeit mit einem externen Softwareentwicklungspartner