2017-05-12 8 views
1

Cosmos DB ermöglicht es uns, Graphdaten mit der Gremlin-Abfragesprache zu speichern.Graph Traversal Performance von Azure Cosmos DB

Gibt es intelligente Algorithmen, die die Aufteilung des Diagramms auf viele Server optimieren? Wenn nicht, kann ich mir vorstellen, dass einige Abfragen extrem langsam sind, um die Latenz zwischen den Shards zu vernetzen.

+0

Nicht sicher genau, was Sie bitten, aber ... Sie können nicht an Cosmos DB in Bezug auf "Server" denken - es funktioniert nicht so. Dies ist ein massives Multi-Tenant-System, das auf einer sehr großen Service-Fabric läuft. Am besten führen Sie ein Benchmarking für die Arten von Abfragen durch, die Sie normalerweise ausführen würden, und stimmen Sie die Anfrageeinheiten (RU) entsprechend Ihren Abfragekosten entsprechend ab. –

+0

Ich werde definitiv einige Tests durchführen. Es ist großartig, dass das Konzept der Server abstrahiert wird, aber wenn ich einen Graphen im Terabyte-Bereich habe, bezweifle ich, dass alle Daten auf einer physischen Festplatte existieren. Das heißt, wenn ich das Diagramm durchlaufe, wird es eine Netzwerklatenz sein. Graphen-Datenbanken intelligent zu schablonieren, um diese Art von Latenz zu minimieren, ist ein notorisch schweres Problem, ohne Silber-Lösung. Ich möchte nur wissen, ob Microsoft dies in ihrem Design des Systems berücksichtigt hat, wie andere Graph DBs (neo4j, arangoDB, etc) haben. – mikestaub

Antwort

2

Die Dokumentation ist noch ein bisschen fehlt, aber es gibt einige Leistungsaspekte für DocumentDb selbst. Wenn Sie nämlich einen ausreichend granularen PartitionKey einrichten, werden Ihre Daten auf mehrere Partitionen aufgeteilt, was zu einem höheren Durchsatz führt. Sie können mehr hier finden: https://docs.microsoft.com/en-us/azure/documentdb/documentdb-partition-data

+0

Danke, das heißt, es liegt am Entwickler, gute Partitionsschlüssel basierend auf ihrer Domäne auszuwählen und wie sie erwarten, dass der Graph abgefragt wird. Das ist ein vernünftiger Ansatz, denke ich. – mikestaub

+2

Wie übersetzt sich der Begriff "PartitionKey" in Graph? Nehmen wir an, es ist ein einfaches Eigenschaftsdiagramm, bei dem sowohl der Knoten als auch die Kante Eigenschaften haben und unterschiedliche Typen (Label) von Knoten möglich sind. –

Verwandte Themen