ArangoDB ist ein Graphdatenbanksystem , entwickelt von ArangoDB Inc. Es handelt sich um ein Multi-Modell-Datenbanksystem, da es drei Datenmodelle (Graphen, JSON- Dokumente, Schlüssel/Wert ) [ 1 ] mit einem Datenbankkern und der einheitlichen Abfragesprache AQL (ArangoDB Query Language) unterstützt. AQL ist hauptsächlich eine deklarative Sprache [ 2 ] und ermöglicht die Kombination verschiedener Datenzugriffsmuster in einer einzigen Abfrage. [ 3 ]

ArangoDB ist ein NoSQL- Datenbanksystem [ 4 ] , aber AQL ist in vielerlei Hinsicht SQL ähnlich [ 5 ] , es verwendet RocksDB als Speichermodul.

Geschichte

Die ArangoDB GmbH wurde 2014 von Claudius Weinberger und Frank Celler gegründet. [ 6 ] Ursprünglich nannten sie das Datenbanksystem „A Versatile Object Container“, kurz AVOC, was sie dazu veranlasste, die Datenbank AvocadoDB zu nennen. [ 7 ] [ 8 ] [ 9 ] Später änderten sie den Namen in ArangoDB. [ 10 ] Das Wort „Arango“ bezieht sich auf eine wenig bekannte Avocado-Sorte, die in Kuba angebaut wird. [ 11 ]

Im Januar 2017 schloss ArangoDB eine Seed-Finanzierungsrunde über 4,2 Millionen Euro unter der Führung von Target Partners ab. Im März 2019 erhielt ArangoDB in einer von Bow Capital angeführten Serie-A-Finanzierungsrunde 10 Millionen US-Dollar [ 12 ] . Im Oktober 2021 sammelte ArangoDB in einer von Iris Capital angeführten Serie-B-Finanzierungsrunde 27,8 Millionen US-Dollar ein . [ 13 ]

Veröffentlichungshistorie

Freigeben Erste Veröffentlichung Neueste Nebenversion Neueste Veröffentlichung Funktionshinweise Referenz
3.11 30.05.2023 3.11.5 09.11.2023
  • Schnellere Abfrageleistung bei Suche und Graph.
  • Operative Verbesserungen im Bereich Data Science und Analytics.
  • Verbesserte Benutzerfreundlichkeit bei der Datenbankadministration und -verwaltung.
Versionshinweise
3.10 04.10.2022 3.10.11 19.10.2023
  • Native ARM-Unterstützung, einschließlich nativer Unterstützung für Apple Silicon .
  • Unterstützung für berechnete Werte (persistente Dokumentattribute, die beim Erstellen oder Aktualisieren eines Dokuments generiert werden).
  • Parallelverarbeitung für fragmentierte Graphen.
  • Ein Graphdurchlaufalgorithmus zur Abfrage aller Pfade mit dem kürzesten Wert zwischen zwei Dokumenten.
Versionshinweise
3.9 15.02.2022 3.9.12 23.08.2023
  • Sammlungen, die auf allen Clusterknoten repliziert werden, können mit Graphen kombiniert werden, die nach Dokumentattributen fragmentiert sind, um eine lokalere Ausführung von Graphabfragen zu ermöglichen („Hybrid SmartGraphs“, „Hybrid Disjoint SmartGraphs“).
  • Sprachunabhängige Tokenisierung von Texten ("Segmentation Analyzer").
Versionshinweise
3.8 29.07.2021 3.8.9 27.03.2023
  • Graphdurchlaufalgorithmen, um alle Pfade zwischen zwei Knoten aufzuzählen ("k Pfade") und die Pfade in der Reihenfolge steigender Kantengewichte auszugeben ("Gewichtete Durchläufe").
  • Unterstützung für Sliding-Window-Abfragen zur Aggregation benachbarter Dokumente, Wertebereiche und Zeitintervalle.
  • Geodatenbezogene Abfragen können mit der Volltextsuche kombiniert werden.
  • Flexible Datenfeldvorverarbeitung mit benutzerdefinierten Abfragen („AQL Analyzer“) und die Möglichkeit, integrierte und benutzerdefinierte Analysatoren zu verketten („Pipeline Analyzer“).
  • Hardwarebeschleunigte Verschlüsselung auf der Festplatte.
Versionshinweise
3.7 16.09.2020 3.7.17 01.02.2022
  • Graphen werden auf allen Clusterknoten repliziert, um Graphdurchläufe lokal auszuführen ("SatelliteGraphs").
  • Dokumentenvalidierung mithilfe von JSON Schema.
  • Unterstützung für Wildcard- und Fuzzy-Suche bei der Volltextsuche.
  • Schlüsselrotation für Superuser-JWT-Token, TLS-Zertifikate und Verschlüsselungsschlüssel auf der Festplatte.
Versionshinweise
3.6 08.01.2020 3.6.16 06.09.2021
  • Option zur Speicherung aller Sammlungen einer Datenbank auf einem einzigen Clusterknoten, um die Leistung eines einzelnen Servers und die ACID-Semantik mit einem fehlertoleranten Cluster-Setup zu kombinieren ("OneShard").
  • Parallele Ausführung von Abfragen auf mehreren Clusterknoten.
  • Späte Dokumentenmaterialisierung, um nur die relevanten Dokumente aus SORT/LIMIT-Abfragen abzurufen, und frühes Aussortieren nicht übereinstimmender Dokumente bei vollständigen Sammlungsscans.
  • Inlining bestimmter Unterabfragen zur Verbesserung der Ausführungszeit.
Versionshinweise
3,5 21.08.2019 3.5.7 30.12.2020
  • Transaktionen mit mehreren Dokumenten und individuellen Start- und Abschluss-/Abbruchbefehlen („Stream-Transaktionen“).
  • Zeitbasierte Entfernung abgelaufener Dokumente („Time-to-live Index“).
  • Unterstützung von Abbruchbedingungen für Graphdurchläufe („Pruning in Traversals“).
  • Graphdurchlaufalgorithmus zur Ermittlung mehrerer kürzester Wege ("k kürzeste Wege").
  • Gemeinsame Joins in einem Cluster unter Verwendung identisch aufgeteilter Sammlungen („SmartJoins“).
  • Konsistente Snapshot-Sicherung im Clustermodus.
  • Benutzerdefinierte Textvorverarbeitungsmodule für die Volltextsuche („Konfigurierbare Analysatoren“).
  • Funktionen zur Datenmaskierung von Attributen, die sensible Daten / personenbezogene Daten enthalten, beim Erstellen von Backups.
Versionshinweise
3.4 06.12.2018 3.4.11 09.09.2020
  • Integrierte Volltextsuche und Informationsabfrage-Suchmaschine ("ArangoSearch").
  • Verbesserter Geodatenindex mit GeoJSON-Unterstützung.
  • Einfügevorgänge können automatisch in einen Ersetzungsvorgang umgewandelt werden, falls das Zieldokument bereits existiert ("Repsert").
  • Unterstützung für Round-Robin-Load-Balancer in Cloud-Umgebungen.
  • Abfrageprofilierung zur Anzeige detaillierter Laufzeitinformationen.
  • Clusterverteilte Aggregationsabfragen.
  • Native Implementierungen aller integrierten Abfragefunktionen in C++.
  • Multithread-Sicherungs- und Wiederherstellungsvorgänge.
Versionshinweise
3.3 22.12.2017 3.3.25 28.02.2020
  • Rechenzentrum-zu-Rechenzentrum-Replikation für die Notfallwiederherstellung ("DC2DC").
  • Verschlüsselte Backups.
  • Bereitstellungsmodus für einzelne Server mit automatischem Failover.
Versionshinweise
3.2 20.07.2017 3.2.18 02.02.2019
  • Verteilte iterative Graphverarbeitung mit Pregel auf einem einzelnen Server und in einem Cluster.
  • Sammlungen werden auf allen Clusterknoten repliziert, um Joins mit lokal verteilten Daten auszuführen („SatelliteCollections“).
  • Fehlertolerante Microservices.
  • Unterstützung für zusammensetzbare, distanzbasierte Geoabfragen.
  • Export-Dienstprogramm für mehrere Formate.
  • Verschlüsselung der auf der Festplatte gespeicherten Daten.
  • LDAP-Authentifizierung.
Versionshinweise
3.1 03.11.2016 3.1.29 23.06.2018
  • Wertbasiertes Sharding großer Graphdatensätze für eine bessere Datenlokalität beim Traversieren von Graphen ("SmartGraphs").
  • Unterstützung für knotenzentrierte Indizes für effizientere Graphdurchläufe mit Filterbedingungen.
  • Neuer Viewer für große Graphen mit Unterstützung für WebGL.
  • Binäres Drahtformat ("VelocyStream").
  • Anfragenbearbeitung mit geringer Latenz durch eine boost-ASIO-Serverinfrastruktur.
  • Verbesserter Abfrageeditor und verbesserte Abfrageerläuterungen.
  • Audit-Protokollierung.
Versionshinweise
3.0 23.07.2016 3.0.12 23.11.2016
  • Clusterunterstützung mit synchroner Replikation und automatischem Failover.
  • Binäres Speicherformat ("VelocyPack").
  • Persistente Indizes, die für schnellere Neustarts auf der Festplatte gespeichert werden.
Freigeben

Anmerkungen

Merkmale

  • JSON: ArangoDB verwendet JSON als Standardspeicherformat [ 14 ] , intern jedoch ArangoDB VelocyPack – ein schnelles und kompaktes Binärformat für Serialisierung und Speicherung [ 15 ] . ArangoDB kann verschachtelte JSON-Objekte nativ als Dateneintrag in einer Collection speichern. Daher ist es nicht notwendig, die resultierenden JSON-Objekte zu disassemblieren. Die gespeicherten Daten übernehmen somit einfach die Baumstruktur der JSON-Daten.
  • Vorhersehbare Leistung: ArangoDB ist hauptsächlich in C++ geschrieben [ 16 ]  und verwaltet seinen eigenen Speicher, um unvorhersehbare Leistungseinbußen durch die automatische Speicherbereinigung zu vermeiden .
  • Skalierung: ArangoDB bietet Skalierung durch Clustering. [ 17 ]
  • Zuverlässigkeit: ArangoDB bietet Replikation zwischen Rechenzentren. [ 18 ]
  • Kubernetes : ArangoDB läuft auf Kubernetes, einschließlich der Cloud-basierten Kubernetes-Dienste Amazon Elastic Kubernetes Service (EKS), Google Kubernetes Engine (GKE) und Microsoft Azure Kubernetes Service (AKS). [ 19 ]
  • Microservices: ArangoDB bietet die Integration nativer JavaScript- Microservices direkt auf dem DBMS mithilfe des Foxx-Frameworks. [ 20 ]
  • Mehrere Abfragesprachen: Die Datenbank verfügt über eine eigene Abfragesprache, AQL (ArangoDB Query Language), und bietet außerdem GraphQL , um flexible native Webdienste direkt auf dem DBMS zu schreiben. [ 21 ]
  • Suche: Die Suchmaschine von ArangoDB kombiniert Boolesche Suchfunktionen mit allgemeinen Ranking-Komponenten und ermöglicht so den Datenabruf auf Basis eines präzisen Vektorraummodells . [ 22 ]
  • Pregel-Algorithmus: Pregel ist ein System zur Verarbeitung großer Graphen. [ 23 ] Pregel ist in ArangoDB implementiert und kann mit vordefinierten Algorithmen wie PageRank , Single-Source Shortest Path und Connected Components verwendet werden. [ 24 ]
  • Transaktionen: ArangoDB unterstützt benutzerdefinierbare Transaktionen. Transaktionen in ArangoDB sind atomar, konsistent, isoliert und dauerhaft ( ACID ), jedoch nur, wenn die Daten nicht fragmentiert sind. [ 25 ]

AQL (ArangoDB Query Language) ist die SQL -ähnliche Abfragesprache [ 26 ], die in ArangoDB verwendet wird. Sie unterstützt CRUD- Operationen sowohl für Dokumente (Knoten) als auch für Kanten, ist aber keine Datendefinitionssprache (DDL). AQL unterstützt Geodatenabfragen .

AQL ist JSON -orientiert:

// Gibt alle Dokumente einer Sammlung zurück: FOR doc IN collection RETURN doc // Zählt die Anzahl der Dokumente in einer Sammlung: FOR doc IN collection COLLECT WITH COUNT INTO length RETURN length// Füge ein neues Dokument in unsere Sammlung ein: INSERT { _ key : "john" , name : "John" , age : 45 } INTO collection// Aktualisiere das Dokument mit dem Schlüssel „john“ und weise ihm das Alter 46 zu. UPDATE { _ key : "john" , age : 46 } IN collection// Füge allen Benutzern mit dem Status „aktiv“ das Attribut „numberOfLogins“ hinzu: FOR u IN users FILTER u . active == true UPDATE u WITH { numberOfLogins : 0 } IN users

Ausgaben

  • Community Edition: Die ArangoDB Community Edition ist eine Graphdatenbank mit nativen Multi-Modell-Datenbankfunktionen, die hauptsächlich in C++ geschrieben wurde und unter einer Open-Source-Lizenz ( Apache 2.0 ) verfügbar war. Im Oktober 2023 wurde die Quellcode-Lizenz von Apache 2.0 auf die Business Source License geändert , während die Lizenz für die vorkompilierten Binärdateien von Apache 2.0 auf eine „ArangoDB Community License“ geändert wurde, die „die kommerzielle Nutzung einschränkt und die Größe von Datensätzen innerhalb eines einzelnen Clusters auf 100 GB begrenzt“ [ 27 ].
  • Kommerziell selbstverwaltet: ArangoDB Enterprise ist ein kostenpflichtiges Abonnement, das Graph-Aware Sharding (genannt „SmartGraphs“) [ 28 ] und Collection-Replikation (genannt „Satellite Collections“) zur Reduzierung der Abfragezeiten [ 29 ] sowie erhöhte Sicherheit [ 30 ] beinhaltet.
  • Cloud: ArangoDB wird als Cloud-Service namens Oasis angeboten und stellt ArangoDB-Datenbanken als Service ( DBaaS ) bereit. ArangoDB Oasis bietet die Funktionalität eines ArangoDB-Clusters bei minimalem Verwaltungsaufwand. [ 31 ] ArangoDB Oasis ist mit verschiedenen Cloud-Anbietern kompatibel , darunter AWS, Azure und Google Cloud. [ 32 ]

Siehe auch

Referenzen

  1. ^ „Vorteile des nativen Multi-Modells in ArangoDB“ . ArangoDB . Abgerufen am 26.07.2022 .
  2. ^ „Einführung in die ArangoDB-Abfragesprache (AQL) | ArangoDB-Dokumentation“ . www.arangodb.com . Abgerufen am 26.07.2022 .
  3. ^ „AQL-Abfragemuster & Beispiele | ArangoDB-Dokumentation“ . www.arangodb.com . Abgerufen am 26.07.2022 .
  4. ^ Celler, Frank (07.03.2012). „Designziele von ArangoDB“ . ArangoDB . Abgerufen am 26.07.2022 .
  5. ^ „Einführung in die ArangoDB-Abfragesprache (AQL) | ArangoDB-Dokumentation“ . www.arangodb.com . Abgerufen am 26.07.2022 .
  6. ^ „Sortendatenbank“ . www.avocadosource.com . Abgerufen am 27.07.2022 .
  7. ^ Ortell, Bill (08.03.2021), AvocadoDB , abgerufen am 27.07.2022
  8. ^ AvocadoDB erklärt , abgerufen am 27.07.2022
  9. ^ AvocadoDB-Abfragesprache, Jan Steemann (Englisch) , abgerufen am 27.07.2022
  10. ^ ""AvocadoDB" wird zu "ArangoDB"" . ArangoDB . 2012-05-09 . Abgerufen am 2022-07-27 .
  11. ^ „Sortendatenbank“ . www.avocadosource.com . Abgerufen am 05.08.2022 .
  12. ^ Weinberger, Claudius (14.03.2019). „ArangoDB erhält Series-A-Finanzierung unter der Führung von Bow Capital“ . ArangoDB . Abgerufen am 27.07.2022 .
  13. ^ „ArangoDB gibt eine Investition von 27,8 Millionen US-Dollar in der Serie B bekannt, um die Entwicklung von Graph ML der nächsten Generation zu beschleunigen und fortschrittliche Analyse- und KI-Funktionen im Unternehmensmaßstab bereitzustellen . “ ArangoDB . Abgerufen am 27.07.2022 .
  14. ^ AvocadoDB erklärt , abgerufen am 05.08.2022.
  15. ^ AvocadoDB-Abfragesprache, Jan Steemann (Englisch) , abgerufen am 05.08.2022
  16. ^ ArangoDB , ArangoDB, 05.08.2022 , abgerufen am 05.08.2022
  17. ^ „Cluster | ArangoDB-Bereitstellungsmodi | Architektur | Handbuch | ArangoDB-Dokumentation“ . www.arangodb.com . Abgerufen am 05.08.2022 .
  18. ^ „DC2DC-Replikation | ArangoDB-Dokumentation“ . www.arangodb.com . Abgerufen am 05.08.2022 .
  19. ^ „Kubernetes | Tutorials | Manual | ArangoDB Documentation“ . www.arangodb.com . Abgerufen am 05.08.2022 .
  20. ^ „Foxx Microservices | ArangoDB-Dokumentation“ . www.arangodb.com . Abgerufen am 05.08.2022 .
  21. ^ ArangoDB , ArangoDB, 05.08.2022 , abgerufen am 05.08.2022
  22. ^ „ArangoSearch – Volltextsuchmaschine mit Ähnlichkeitsranking-Funktion“ . ArangoDB . Abgerufen am 05.08.2022 .
  23. ^ „Stanford University Pregel White paper“ (PDF) .
  24. ^ „Vorgabe | Data Science | Handbuch | ArangoDB-Dokumentation“ . www.arangodb.com . Abgerufen am 05.08.2022 .
  25. ^ „Transaktionen | Handbuch | ArangoDB-Dokumentation“ . www.arangodb.com . Abgerufen am 05.08.2022 .
  26. ^ „Cluster | ArangoDB-Bereitstellungsmodi | Architektur | Handbuch | ArangoDB-Dokumentation“ . www.arangodb.com . Abgerufen am 11.08.2022 .
  27. ^ ArangoDB , ArangoDB, 13.10.2023 , abgerufen am 13.10.2023
  28. ^ „ArangoDB SmartGraphs | ArangoDB-Dokumentation“ . www.arangodb.com . Abgerufen am 11.08.2022 .
  29. ^ „ArangoDB SatelliteCollections | ArangoDB Documentation“ . www.arangodb.com . Abgerufen am 11.08.2022 .
  30. ^ „ArangoDB Enterprise Features“ . ArangoDB . Abgerufen am 11.08.2022 .
  31. ^ „Erste Schritte mit ArangoDB Oasis | ArangoDB-Dokumentation“ . www.arangodb.com . Abgerufen am 11.08.2022 .
  32. ^ „ArangoDB-Oase“ . ArangoDB Oasis . Abgerufen am 11.08.2022 .