Using Cypher JDBC Driver to Access GES
Introduction
The Cypher JDBC Driver is designed for GES. It is developed based on Neo4j JDBC Driver and provides a method of using JDBC to access GES and perform cypher queries.
The driver greatly reduces the CPU and memory usage for returning a large amount of data requested by high-concurrent cypher queries to avoid JVM caching of a complete request body. The driver parses a response body into streaming data instead obtaining an entire body and then parsing it.
Configuring Dependencies
Import the project and configure the Maven project parameters. Add the following dependency to the POM file:
<dependency> <groupId>com.huawei.ges</groupId> <artifactId>cypher-jdbc-driver</artifactId> <version>1.1.0</version> </dependency>
Parameters
Type |
Description |
url |
URL of the GES Cypher API. This is the first parameter of DriverManager.getConnection. Prefix the value with jdbc:ges:http(s) so that the JDBC driver can identify the URL. |
prop |
Properties object, including configurations required for connecting to GES APIs. For details, see Table 2. |
Type |
Description |
X-Auth-Token |
Token obtained through IAM authentication. |
parse-json |
Whether to convert data to vertices and edges. false (default value): Vertices and edges in the return body are in map format. true: Vertices and edges are returned in GesElement format. |
Example
package org.example; import java.sql.DriverManager; import java.sql.SQLException; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.util.Properties; public class App { static String ip = "${ip}"; static int port = 80; static String projectId = "${projectId}"; static String graphName = "${graphName}"; static String token = "${x_auth_token}"; public static void main(String[] args) throws ClassNotFoundException, IllegalAccessException, InstantiationException { Class.forName("com.huawei.ges.jdbc.Driver").newInstance(); String url = "jdbc:ges:http://{{graph_ip}}:{{graph_port}}/ges/v1.0/{{project_id}}/graphs/{{graph_name}}/action?action_id=execute-cypher-query"; url = url.replace("{{graph_ip}}", ip).replace("{{graph_port}}",port + "").replace("{{project_id}}", projectId).replace("{{graph_name}}", graphName); Properties prop = new Properties(); prop.setProperty("X-Auth-Token", token); prop.setProperty("deserializer-type","lazy"); prop.setProperty("parse-json","true"); prop.setProperty("limit","10000"); try(Connection conn = DriverManager.getConnection(url,prop)){ String query = "match (m) return m limit 1000"; try(PreparedStatement stmt = conn.prepareStatement(query)){ try(ResultSet rs = stmt.executeQuery()){ Object o = null; while(rs.next()) { o = rs.getObject("m"); processVertex(o); } } } } catch (SQLException e) { // here process exception. // ... } } }
Feedback
Was this page helpful?
Provide feedbackThank you very much for your feedback. We will continue working to improve the documentation.