Was ist Azure Cosmos DB for Apache Gremlin?

GILT FÜR: Gremlin

Azure Cosmos DB ist eine vollständig verwaltete und relationale NoSQL-Datenbank für die moderne App-Entwicklung.

Azure Cosmos DB for Apache Gremlin ist ein Graphdatenbankdienst, der zum Speichern umfangreicher Graphen mit Milliarden von Vertizes und Edges verwendet werden kann. Sie können die Graphen mit einer Latenz im Millisekundenbereich abfragen und die Graphstruktur mühelos entwickeln. Die API für Gremlin basiert auf Apache TinkerPop, einem Framework für Graphcomputing, das die Gremlin-Abfragesprache verwendet.

Wichtig

Die Azure Cosmos DB Graph-Engine folgt genau der Spezifikation von Apache TinkerPop. Es gibt jedoch einige Unterschiede bei den Implementierungsdetails, die für Azure Cosmos DB spezifisch sind. Einige von Apache TinkerPop unterstützten Features sind in Azure Cosmos DB nicht verfügbar. Weitere Informationen zu den nicht unterstützten Features finden Sie im Artikel zur Kompatibilität mit Apache TinkerPop.

Die API für Gremlin kombiniert die Leistung von Algorithmen für Graphdatenbanken mit einer überaus skalierbaren, verwalteten Infrastruktur. Dieser Ansatz bietet eine einzigartige und flexible Lösung für gängige Datenprobleme im Zusammenhang mit unflexiblen oder relationalen Einschränkungen.

Tipp

Möchten Sie die API für Gremlin ohne Verpflichtung ausprobieren? Erstellen Sie ein Azure Cosmos DB-Konto wie unter Azure Cosmos DB kostenlos testen beschrieben.

Vorteile der API für Gremlin

Da die API für Gremlin auf Azure Cosmos DB basiert, bietet sie zusätzlich folgende Vorteile:

  • Flexibel skalierbarer Durchsatz und Speicher: Diagramme müssen in der Praxis über die Kapazität eines einzelnen Servers hinweg skaliert werden. Azure Cosmos DB unterstützt horizontal skalierbare Graphdatenbanken, die eine unbegrenzte Größe in Bezug auf den Speicher und bereitgestellten Durchsatz haben können. Bei zunehmender Skalierung der Graphdatenbank werden die Daten automatisch mithilfe der Graphpartitionierung verteilt.

  • Replikation in mehreren Regionen: Azure Cosmos DB kann die Graphdaten automatisch weltweit in jeder beliebigen Azure-Region replizieren. Die globale Replikation vereinfacht die Entwicklung von Anwendungen, die globalen Zugriff auf Daten erfordern. Neben der Minimierung der Lese- und Schreiblatenz an jedem Ort der Welt bietet Azure Cosmos DB einen dienstverwalteten regionalen Failovermechanismus. Dieser kann die Kontinuität Ihrer Anwendung im seltenen Fall einer Dienstunterbrechung in einer Region sicherstellen.

  • Schnelle Abfragen und Traversierungen mit dem am weitesten verbreiteten Standard für Graphabfragen: Speichern Sie heterogene Vertices und Edges, und führen Sie dafür Abfragen über eine vertraute Gremlin-Syntax durch. Gremlin ist eine imperative, funktionale Abfragesprache, die eine umfangreiche Schnittstelle zur Implementierung gängiger Graphalgorithmen bietet. Die API für Gremlin ermöglicht umfassende Echtzeitabfragen und -traversierungen ohne Angabe von Schemahinweisen, sekundären Indizes oder Sichten. Weitere Informationen finden Sie unter Tutorial: Abfragen von Azure Cosmos DB for Gremlin mithilfe von Gremlin.

  • Vollständig verwaltete Graphdatenbank: Sie müssen sich nicht mehr mit der Verwaltung von Datenbanken und Rechenressourcen befassen. Die meisten vorhandenen Graphdatenbankplattformen sind an die Grenzen ihrer Infrastruktur gebunden und erfordern häufig einen hohen Wartungsaufwand für den Betrieb. Als vollständig verwalteter Dienst entfällt bei Cosmos DB die Notwendigkeit, virtuelle Computer zu verwalten, Runtimesoftware zu aktualisieren, Sharding oder die Replikation zu verwalten oder komplexe Upgrades auf Datenebene durchzuführen. Alle Diagramme werden automatisch gesichert und vor regionalen Ausfällen geschützt. Dadurch können sich Entwickler auf die Bereitstellung von Anwendungen konzentrieren anstatt auf den Betrieb und die Verwaltung von Graphdatenbanken.

  • Automatische Indizierung: Die API für Gremlin indiziert standardmäßig alle Eigenschaften in Knoten (auch als Vertices bezeichnet) und Edges im Graphen, ohne dass ein Schema oder die Erstellung sekundärer Indizes erwartet wird oder erforderlich ist. Weitere Informationen finden Sie unter Indizierung in Azure Cosmos DB: Übersicht.

  • Kompatibilität mit Apache TinkerPop: Die API für Gremlin unterstützt den Open-Source-Standard Apache TinkerPop. Der Apache TinkerPop-Standard verfügt über ein umfangreiches Ökosystem von Anwendungen und Bibliotheken, die sich problemlos in die API integrieren lassen.

  • Optimierbare Konsistenzebenen: Azure Cosmos DB bietet fünf klar definierte Konsistenzebenen, um für Ihre Anwendung ein ausgewogenes Verhältnis zwischen Konsistenz und Leistung zu erreichen. Für Abfragen und Lesevorgänge bietet Azure Cosmos DB fünf verschiedene Konsistenzebenen – „stark“, „begrenzte Veraltung“, „Sitzung“, „Präfixkonsistenz“ und „letztlich“. Mit diesen granularen, wohldefinierten Konsistenzebenen können fundierte Kompromisse zwischen Konsistenz, Verfügbarkeit und Latenz geschlossen werden. Weitere Informationen finden Sie unter Konsistenzebenen in Azure Cosmos DB.

Allgemeine Szenarien für die API für Gremlin

Im Folgenden werden einige Szenarien vorgestellt, in denen die Diagrammunterstützung von Azure Cosmos DB hilfreich sein kann:

  • Soziale Netzwerke/Customer 365: Durch die Kombination von Daten über Ihre Kunden und deren Interaktionen mit anderen Personen können Sie individuelle Erlebnisse schaffen, das Kundenverhalten vorhersagen oder Personen mit ähnlichen Interessen vernetzen. Azure Cosmos DB kann zum Verwalten sozialer Netzwerke sowie zum Nachverfolgen von Kundenpräferenzen und -daten verwendet werden.

  • Empfehlungs-Engines: Dieses Szenario ist üblicherweise im Einzelhandel anzutreffen. Durch die Kombination von Informationen zu Produkten, Benutzern und Benutzerinteraktionen (z.B. Einkäufe, Surfverhalten oder Bewertungen eines Artikels) können Sie benutzerdefinierte Empfehlungen erstellen. Die geringe Latenz, flexible Skalierung und native Diagrammunterstützung von Azure Cosmos DB sind für diese Szenarien ideal.

  • Geodaten: Zahlreiche Anwendungen in den Bereichen Telekommunikation, Logistik und Reiseplanung müssen einen bestimmten Ort in einer bestimmten Region oder die kürzeste bzw. optimale Route zwischen zwei Orten finden. Azure Cosmos DB ist die ideale Lösung für derartige Probleme.

  • Internet der Dinge: Durch die Modellierung von Netzwerken und Verbindungen zwischen IoT-Geräten als Graphen können Sie sich einen besseren Überblick über den Zustand Ihrer Geräte und Ressourcen verschaffen. Sie können auch herausfinden, inwiefern sich Änderungen an einem Teil des Netzwerks möglicherweise auf andere Teile auswirken können.

Einführung in Graphdatenbanken

Daten sind in der Praxis naturgemäß vernetzt. Die konventionelle Datenmodellierung konzentriert sich darauf, Entitäten separat zu definieren und ihre Beziehungen zur Laufzeit zu berechnen. Obwohl dieses Modell seine Vorteile hat, kann sich die Verwaltung stark vernetzter Daten angesichts der Einschränkungen des Modells schwierig gestalten.

Der Ansatz einer Graphdatenbank basiert dagegen auf persistenten Beziehungen in der Speicherebene, was zu hocheffizienten Abrufvorgängen der Graphen führt. Die API für Gremlin unterstützt das Eigenschaftsgraphmodell.

Eigenschaftsgraphobjekte

Ein Eigenschaftsgraph ist eine Struktur aus Vertices und Edges. Beide Objekte können eine beliebige Anzahl von Schlüssel-Wert-Paaren als Eigenschaften aufweisen.

  • Vertices/Knoten: Vertices bezeichnen diskrete Entitäten, etwa eine Person, einen Ort oder ein Ereignis.

  • Edges/Beziehungen: Edges bezeichnen Beziehungen zwischen Vertices. Eine Person kann beispielsweise eine andere Person kennen, an einem Ereignis beteiligt sein oder sich vor Kurzem an einem Ort befunden haben.

  • Eigenschaften: Eigenschaften stellen Informationen (oder Metadaten) zu den Vertices und Edges bereit. Vertices und Edges können eine beliebige Anzahl an Eigenschaften umfassen. Mithilfe der Eigenschaften können die Objekte in einer Abfrage beschrieben und gefiltert werden. Zu Eigenschaften zählen beispielsweise Name und Alter eines Vertex sowie ein Edge, der einen Zeitstempel und/oder eine Gewichtung aufweisen kann.

  • Bezeichnung: Eine Bezeichnung ist ein Name oder der Bezeichner eines Vertex oder eines Edge. Bezeichnungen können mehrere Vertices oder Edges gruppieren, sodass alle Vertices/Edges in einer Gruppe über eine bestimmte Bezeichnung verfügen. Ein Graph kann beispielsweise mehrere Vertices mit der Bezeichnung „Person“ aufweisen.

Graphdatenbanken werden oft NoSQL- oder nicht relationalen Datenbanken zugeordnet, da es keine Abhängigkeit von einem Schema oder einem eingeschränkten Datenmodell gibt. Aufgrund der fehlenden Schemas können vernetzte Strukturen natürlich und effizient modelliert und gespeichert werden.

Beispiel einer Graphdatenbank

Anhand eines Beispieldiagramms wird erläutert, wie Abfragen in Gremlin ausgedrückt werden können. Die folgende Abbildung zeigt eine Geschäftsanwendung, die Daten zu Benutzern, Interessen und Geräten in Form eines Diagramms verwaltet.

Exemplarischer Eigenschaftsgraph mit Personen, Geräten und Interessen

Dieser Graph enthält folgende Arten von Vertizes. Diese werden in Gremlin auch als Bezeichnungen bezeichnet:

  • Personen: Der Graph enthält drei Personen (Robin, Thomas und Ben).

  • Interessen: In diesem Beispiel interessieren sie sich für Football.

  • Geräte: Die von den Personen verwendeten Geräte.

  • Betriebssysteme: Die Betriebssysteme auf den Geräten.

  • Ort: Die Orte, an denen auf Geräte zugegriffen wird.

Die Beziehungen zwischen diesen Entitäten werden anhand von folgenden Edgetypen dargestellt:

  • Knows (Kennt): Steht für Vertrautheit. Beispiel: „Thomas kennt Robin.“

  • Interested (Interessiert): Stellt die Interessen der Personen im Graphen dar. Beispiel: „Ben interessiert sich für Football.“

  • RunsOS (Ausgeführtes Betriebssystem): Gibt an, welches Betriebssystem auf einem Gerät ausgeführt wird. Beispiel: „Auf dem Laptop wird das Windows-Betriebssystem ausgeführt.“

  • Uses (Verwendet): Gibt an, welches Gerät eine Person verwendet. Beispiel: „Robin verwendet ein Motorola-Telefon mit der Seriennummer 77.“

  • Location (Standort): Stellt den Standort dar, von dem aus auf die Geräte zugegriffen wird.

Die Gremlin-Konsole ist ein interaktives Terminal, das von Apache TinkerPop angeboten wird, und dieses Terminal wird verwendet, um mit den Graphdaten zu interagieren. Weitere Informationen finden Sie im Schnellstart zur Gremlin-Konsole. Sie können diese Vorgänge auch mithilfe von Gremlin-Treibern auf der Plattform Ihrer Wahl (Java, Node.js, Python oder .NET) ausführen. In den folgenden Beispielen wird gezeigt, wie Abfragen für diese Graphdaten mithilfe der Gremlin-Konsole ausgeführt werden.

Sehen wir uns zunächst das Erstellen, Lesen, Aktualisieren und Löschen (Create, Read, Update, Delete, CRUD) an. Die folgende Gremlin-Anweisung fügt den VertexThomas mit einigen Eigenschaften in den Graphen ein:

g.addV('person').
  property('id', 'thomas.1').
  property('firstName', 'Thomas').
  property('lastName', 'Andersen').
  property('age', 44)

Tipp

Wenn Sie diesen Beispielen folgen, können Sie bei der Erstellung Ihres Graphen jede dieser Eigenschaften (age, firstName, lastName) als Partitionsschlüssel verwenden. Die Eigenschaft id wird in einem Graphen nicht als Partitionsschlüssel unterstützt.

Die folgende Gremlin-Anweisung fügt einen Edge vom Typ knows (kennt) zwischen Thomas und Robin ein:

g.V('thomas.1').
  addE('knows').
  to(g.V('robin.1'))

Die folgende Abfrage gibt die Vertices vom Typ Person in absteigender Reihenfolge der Vornamen zurück:

g.V().
  hasLabel('person').
  order().
  by('firstName', decr)

Diagramme eignen sich am besten, wenn Sie Fragen wie „Welche Betriebssysteme verwenden Freunde von Thomas?“ beantworten müssen. Um diese Information anhand des Diagramms zu ermitteln, können Sie diese Gremlin-Traversierung ausführen:

g.V('thomas.1').
  out('knows').
  out('uses').
  out('runsos').
  group().
  by('name').
  by(count())

Nächste Schritte