Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.
Senden von Abfragen an den Server als Bytecode und nicht als Zeichenfolgen
Die Verwendung von Bytecode statt Zeichenfolgen beim Übermitteln von Abfragen hat Vorteile:
Frühzeitiges Abfangen einer ungültigen Abfragesyntax Bei Verwendung der Bytecode Variante können Sie eine ungültige Abfragesyntax auf der Kompilierungsstufe entdecken. Bei Verwendung der Zeichenfolgen-Variante entdecken Sie die ungültige Syntax erst, wenn die Abfrage an den Server übermittelt wurde und ein Fehler zurückgegeben wird.
-
Vermeiden Sie Leistungseinbußen aufgrund von Zeichenketten: Jede auf Zeichenfolgen basierende Abfrage, unabhängig davon, ob Sie WebSockets oder verwendenHTTP, führt zu einem getrennten Scheitelpunkt, was bedeutet, dass das Vertex-Objekt aus der ID, dem Label und allen mit dem Scheitelpunkt verknüpften Eigenschaften besteht (siehe Eigenschaften von Elementen).
Dies kann in Fällen, in denen die Eigenschaften nicht erforderlich sind, zu unnötigen Berechnungen auf dem Server führen. Wenn der Kunde beispielsweise den Eckpunkt mit der ID „hakuna#1“ über die Abfrage
g.V("hakuna#1")
abrufen möchte: Wenn die Abfrage als zeichenfolgebasierte Übermittlung gesendet wird, würde der Server Zeit für den Abruf von ID, Beschriftung und aller Eigenschaften für diesen Eckpunkt aufwenden. Wenn die Abfrage als Bytecode-Übermittlung gesendet wird, wendet der Server lediglich Zeit für den Abruf von ID und Beschriftung des Eckpunkts auf.
Sie sollten also anstelle der Übermittlung einer Abfrage wie der folgenden:
final Cluster cluster = Cluster.build("localhost") .port(8182) .maxInProcessPerConnection(32) .maxSimultaneousUsagePerConnection(32) .serializer(Serializers.GRAPHBINARY_V1D0) .create(); try { final Client client = cluster.connect(); List<Result> results = client.submit("g.V().has('name','pumba').out('friendOf').id()").all().get(); System.out.println(verticesWithNamePumba); } finally { cluster.close(); }
Die Abfrage als Bytecode-Übermittlung wie folgt senden:
final Cluster cluster = Cluster.build("localhost") .port(8182) .maxInProcessPerConnection(32) .maxSimultaneousUsagePerConnection(32) .serializer(Serializers.GRAPHBINARY_V1D0) .create(); try { final GraphTraversalSource g = traversal().withRemote(DriverRemoteConnection.using(cluster)); List<Object> verticesWithNamePumba = g.V().has("name", "pumba").out("friendOf").id().toList(); System.out.println(verticesWithNamePumba); } finally { cluster.close(); }