Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Kirim kueri ke server sebagai bytecode bukan sebagai string
Ada keuntungan menggunakan bytecode alih-alih string saat mengirimkan kueri:
Menangkap sintaks kueri yang tidak valid di awal: Menggunakan varian bytecode memungkinkan Anda mendeteksi sintaks kueri yang tidak valid pada tahap kompilasi. Jika menggunakan variasi berbasis string, Anda tidak akan menemukan sintaks yang tidak valid sampai kueri dikirimkan ke server dan kesalahan dikembalikan.
-
Hindari penalti kinerja berbasis string: Setiap pengiriman kueri berbasis string, apakah Anda menggunakan WebSockets atauHTTP, menghasilkan simpul terpisah, yang menyiratkan bahwa objek Vertex terdiri dari ID, Label, dan semua properti yang terkait dengan Vertex (lihat Properti Elemen).
Hal ini dapat menyebabkan komputasi yang tidak perlu pada server dalam kasus saat properti tidak diperlukan. Misalnya, jika pelanggan tertarik untuk mendapatkan vertex dengan ID “hakuna#1” menggunakan kueri,
g.V("hakuna#1")
. Jika kueri dikirim sebagai pengiriman berbasis string, server akan menghabiskan waktu dalam mengambil ID, label, dan semua properti untuk vertex ini. Jika kueri dikirim sebagai pengiriman bytecode, server hanya menghabiskan waktu untuk mengambil ID dan label dari vertex.
Dengan kata lain, alih-alih mengirimkan kueri seperti ini:
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(); }
Sebaliknya, kirimkan kueri menggunakan bytecode, seperti ini:
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(); }