Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.
Envíe consultas al servidor como bytecode en lugar de como cadenas
Existen ventajas con el uso Bytecode en lugar de una cadena al enviar consultas:
Detección temprana de sintaxis de consultas no válida: el uso de la variante Bytecode permite detectar la sintaxis de consultas no válidas en la fase de compilación. Si utiliza la variación basada en cadena, no detectará la sintaxis no válida hasta que la consulta se envíe al servidor y se devuelva un error.
-
Evite las penalizaciones de rendimiento basadas en cadenas: cualquier consulta basada en cadenas, ya sea que utilice WebSockets o noHTTP, da como resultado un vértice separado, lo que implica que el objeto Vertex está formado por el identificador, la etiqueta y todas las propiedades asociadas al vértice (consulte Propiedades de los elementos).
Esto puede dar lugar a cálculos innecesarios en el servidor en casos en que las propiedades no son obligatorias. Por ejemplo, si el cliente está interesado en obtener el vértice con el ID "hakuna#1" utilizando la consulta
g.V("hakuna#1")
. Si la consulta se envía como envío basado en cadena, el servidor gastaría tiempo en recuperar el ID, la etiqueta y todas las propiedades de este vértice. Si la consulta se envía como un envío de Bytecode, el servidor solo dedica tiempo en recuperar el ID y la etiqueta del vértice.
En otras palabras, en lugar de enviar una consulta de esta manera:
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(); }
Envíe la consulta mediante Bytecode, tal y como se muestra a continuación:
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(); }