As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.
Enviar consultas ao servidor como bytecode em vez de strings
Há vantagens de usar bytecode em vez de string ao enviar consultas:
Obter a sintaxe de consulta inválida com antecedência: o uso da variante de bytecode permite detectar sintaxe de consulta inválida na fase de compilação. Se você usar a variação com base em string, só detectará a sintaxe inválida quando a consulta for enviada ao servidor e um erro for gerado.
-
Evite penalidades de desempenho com base em strings: qualquer envio de consulta com base em string, seja usando WebSockets HTTP, resulta em um vértice separado, o que implica que o objeto Vertex consiste no ID, no rótulo e em todas as propriedades associadas ao vértice (consulte Propriedades dos elementos).
Isso pode ocasionar computação desnecessária no servidor em casos em que as propriedades não são necessárias. Por exemplo, se o cliente estiver interessado em obter o vértice com o ID "hakuna#1" usando a consulta,
g.V("hakuna#1")
. Se a consulta for enviada como um envio baseado em string, o servidor poderá gastar tempo recuperando o ID, o rótulo e todas as propriedades para esse vértice. Se a consulta for enviada como um envio de bytecode, o servidor apenas gastará tempo recuperando o ID e o rótulo do vértice.
Em outras palavras, em vez de enviar uma consulta da seguinte maneira:
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(); }
Em vez disso, envie a consulta usando bytecode, como:
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(); }