ArangoDB - Eine erste Datenbank mit mehreren Modellen
ArangoDB wird von seinen Entwicklern als native Datenbank mit mehreren Modellen gefeiert. Dies ist anders als bei anderen NoSQL-Datenbanken. In dieser Datenbank können die Daten als Dokumente, Schlüssel / Wert-Paare oder Diagramme gespeichert werden. Mit einer einzigen deklarativen Abfragesprache kann auf einige oder alle Ihrer Daten zugegriffen werden. Darüber hinaus können verschiedene Modelle in einer einzigen Abfrage kombiniert werden. Aufgrund seines Multi-Modell-Stils können schlanke Anwendungen erstellt werden, die mit einem oder allen drei Datenmodellen horizontal skalierbar sind.
Layered vs. Native Multi-Model-Datenbanken
In diesem Abschnitt werden wir einen entscheidenden Unterschied zwischen nativen und geschichteten Multimodell-Datenbanken hervorheben.
Viele Datenbankanbieter bezeichnen ihr Produkt als "Multi-Modell". Das Hinzufügen einer Diagrammebene zu einem Schlüssel- / Wert- oder Dokumentenspeicher gilt jedoch nicht als natives Multi-Modell.
Mit ArangoDB, demselben Kern mit derselben Abfragesprache, können verschiedene Datenmodelle und Funktionen in einer einzigen Abfrage zusammengefasst werden, wie bereits im vorherigen Abschnitt angegeben. In ArangoDB gibt es kein „Umschalten“ zwischen Datenmodellen und keine Verschiebung von Daten von A nach B, um Abfragen auszuführen. Dies führt zu Leistungsvorteilen für ArangoDB im Vergleich zu den "geschichteten" Ansätzen.
Die Notwendigkeit einer multimodalen Datenbank
Die Interpretation der Grundidee von [Fowler] führt uns zu den Vorteilen der Verwendung einer Vielzahl geeigneter Datenmodelle für verschiedene Teile der Persistenzschicht, wobei die Schicht Teil der größeren Softwarearchitektur ist.
Demnach könnte man beispielsweise eine relationale Datenbank verwenden, um strukturierte tabellarische Daten beizubehalten; ein Dokumentenspeicher für unstrukturierte, objektähnliche Daten; ein Schlüssel- / Wertspeicher für eine Hash-Tabelle; und eine Graphendatenbank für stark verknüpfte Referenzdaten.
Die traditionelle Implementierung dieses Ansatzes führt jedoch dazu, dass mehrere Datenbanken im selben Projekt verwendet werden. Dies kann zu Betriebsstörungen (kompliziertere Bereitstellung, häufigere Upgrades) sowie zu Datenkonsistenz- und Duplizierungsproblemen führen.
Die nächste Herausforderung nach der Vereinheitlichung der Daten für die drei Datenmodelle besteht darin, eine gemeinsame Abfragesprache zu entwickeln und zu implementieren, mit der Datenadministratoren eine Vielzahl von Abfragen ausdrücken können, z. B. Dokumentabfragen, Schlüssel- / Wertsuchen, grafische Abfragen und beliebige Kombinationen von diesen.
Durch graphy queriesWir meinen Abfragen mit graphentheoretischen Überlegungen. Dies kann insbesondere die besonderen Konnektivitätsmerkmale betreffen, die von den Rändern kommen. Zum Beispiel,ShortestPath, GraphTraversal, und Neighbors.
Diagramme passen perfekt als Datenmodell für Beziehungen. In vielen realen Fällen wie sozialen Netzwerken, Empfehlungssystemen usw. ist ein sehr natürliches Datenmodell ein Diagramm. Es erfasst Beziehungen und kann Beschriftungsinformationen mit jeder Kante und mit jedem Scheitelpunkt enthalten. Darüber hinaus eignen sich JSON-Dokumente ideal zum Speichern dieser Art von Scheitelpunkt- und Kantendaten.
ArangoDB ─ Funktionen
Es gibt verschiedene bemerkenswerte Funktionen von ArangoDB. Wir werden die herausragenden Merkmale unten hervorheben -
- Multi-Modell-Paradigma
- ACID-Eigenschaften
- HTTP-API
ArangoDB unterstützt alle gängigen Datenbankmodelle. Im Folgenden sind einige von ArangoDB unterstützte Modelle aufgeführt:
- Dokumentmodell
- Schlüssel- / Wertmodell
- Diagrammmodell
Eine einzige Abfragesprache reicht aus, um Daten aus der Datenbank abzurufen
Die vier Eigenschaften Atomicity, Consistency, Isolation, und Durability(ACID) beschreiben die Garantien von Datenbanktransaktionen. ArangoDB unterstützt ACID-konforme Transaktionen.
Mit ArangoDB können Clients wie Browser mit der HTTP-API mit der Datenbank interagieren. Die API ist ressourcenorientiert und mit JavaScript erweiterbar.