Java客户端
此文档主要是TuGraph Java SDK的使用说明,需要注意的是TuGraph Java SDK将来不再更新维护,建议使用 bolt客户端
1.编译java client代码
cd deps/tugraph-db-client-java
sh local_build.sh
2.使用示例
2.1.实例化client对象
添加maven依赖
<dependency>
<groupId>com.antgroup.tugraph</groupId>
<artifactId>tugraph-db-java-rpc-client</artifactId>
<version>1.4.1</version>
</dependency>
引入依赖
import com.antgroup.tugraph.TuGraphDbRpcClient;
2.1.1.实例化单节点client对象
当以单节点模式启动server时,client按照如下格式进行实例化
TuGraphDbRpcClient client = new TuGraphDbRpcClient("127.0.0.1:19099", "admin", "73@TuGraph");
public TuGraphDbRpcClient(String url, String user, String pass)
@param url: tugraph host looks like ip:port
@param user: login user name
@param password: login password
2.1.2.实例化HA集群直连连接client对象
当服务器上部署的HA集群可以使用ha_conf中配置的网址直接连接时,client按照如下格式进行实例化。
TuGraphDbRpcClient client = new TuGraphDbRpcClient("127.0.0.1:19099", "admin", "73@TuGraph");
public TuGraphDbRpcClient(String url, String user, String pass)
@param url: tugraph host looks like ip:port
@param user: login user name
@param password: login password
用户只需要传入HA集群中的任意一个节点的url即可,client会根据server端返回的查询信息自动维护连接池,在HA集群横向扩容时 也不需要手动重启client。
2.1.3.实例化HA集群间接连接client对象
当服务器上部署的HA集群不能使用ha_conf中配置的网址直接连接而必须使用间接网址(如阿里云公网网址)连接时, client按照如下格式进行实例化
List<String> urls = new ArrayList<>();
urls.add("189.33.97.23:9091");
urls.add("189.33.97.24:9091");
urls.add("189.33.97.25:9091");
TuGraphDbRpcClient client = new TuGraphDbRpcClient(urls, "admin", "73@TuGraph");
public TuGraphDbRpcClient(List<String> urls, String user, String password)
@param urls: tugraph host list
@param user: login user name
@param password: login password
因为用户连接的网址和server启动时配置的信息不同,不能通过向集群发请求的方式自动更新client连接池,所以需要在启动 client时手动传入所有集群中节点的网址,并在集群节点变更时手动重启client。
2.2.调用cypher
String res = client.callCypher("CALL db.edgeLabels()", "default", 10);
log.info("db.edgeLabels() : " + res);
@param cypher: inquire statement.
@param graph: the graph to query.
@param timeout: Maximum execution time, overruns will be interrupted
@param url: (Optional) Node address of calling cypher
@return: the result of cypher query execution
public String callCypher(String cypher, String graph, double timeout, String url)
本接口支持在单机模式和HA模式下使用。其中,在HA模式下的client中,通过指定url参数可以定向向某个server发送读请求。 注:JAVA不支持默认参数,因此,JAVA中的默认参数是使用重载函数实现的。
2.3.向leader发送cypher请求
String res = client.callCypherToLeader("CALL db.edgeLabels()", "default", 10);
log.info("db.edgeLabels() : " + res);
@param cypher: inquire statement.
@param graph: the graph to query.
@param timeout: Maximum execution time, overruns will be interrupted
@return: the result of cypher query execution
public String callCypherToLeader(String cypher, String graph, double timeout)
本接口只支持在HA模式下使用,在HA模式下的client中,为防止向未同步数据的follower发送请求, 用户可以直接向leader发送请求,leader由集群选出。
2.4.调用GQL
String res = client.callGql("CALL db.edgeLabels()", "default", 10);
log.info("db.edgeLabels() : " + res);
@param gql: inquire statement.
@param graph: the graph to query.
@param timeout: Maximum execution time, overruns will be interrupted
@param url: (Optional) Node address of calling GQL
@return: the result of GQL query execution
public String callGql(String gql, String graph, double timeout, String url)
本接口支持在单机模式和HA模式下使用。其中,在HA模式下的client中,通过指定url参数可以定向向某个server发送读请求。 注:JAVA不支持默认参数,因此,JAVA中的默认参数是使用重载函数实现的。
2.5.向leader发送GQL请求
String res = client.callGqlToLeader("CALL db.edgeLabels()", "default", 10);
log.info("db.edgeLabels() : " + res);
@param gql: inquire statement.
@param graph: the graph to query.
@param timeout: Maximum execution time, overruns will be interrupted
@return: the result of cypher query execution
public String callGqlToLeader(String cypher, String graph, double timeout)
本接口只支持在HA模式下使用,在HA模式下的client中,为防止向未同步数据的follower发送请求, 用户可以直接向leader发送请求,leader由集群选出。
2.6.调用存储过程
String result = client.callProcedure("CPP", "khop", kHopParamGen(), 1000, false, "default");
log.info("testCallProcedure : " + result);
@param procedureType: the procedure type, currently supported CPP and PY
@param procedureName: procedure name
@param param: the execution parameters
@param procedureTimeOut: Maximum execution time, overruns will be interrupted
@param inProcess: Running query or not
@param graph: the graph to query
@param jsonFormat: (Optional) Return format of calling stored procedure
@param url: (Optional) Node address of calling procedure
@return: the result of procedure execution
public String callProcedure(String procedureType, String procedureName, String param, double procedureTimeOut,
boolean inProcess, String graph, String url)
本接口支持在单机模式和HA模式下使用,默认以字符串格式直接返回存储过程的执行结果,指定jsonFormat为true可以返回json格式的执行结果。 其中,在HA模式下的client中,通过指定url参数可以定向向某个server发送读请求。
2.7.向leader调用存储过程
String result = client.callProcedureToLeader("CPP", "khop", kHopParamGen(), 1000, false, "default");
log.info("testCallProcedureToLeader : " + result);
@param procedureType: the procedure type, currently supported CPP and PY
@param procedureName: procedure name
@param param: the execution parameters
@param procedureTimeOut: Maximum execution time, overruns will be interrupted
@param inProcess: Running query or not
@param graph: the graph to query
@param jsonFormat: (Optional) Return format of calling stored procedure
@return: the result of procedure execution
public String callProcedureToLeader(String procedureType, String procedureName, String param, double procedureTimeOut,
boolean inProcess, String graph)
本接口支持在HA模式下使用,默认以字符串格式直接返回存储过程的执行结果,指定jsonFormat为true可以返回json格式的执行结果。
2.8.加载存储过程
boolean result = client.loadProcedure("./test/procedure/khop.so", "CPP", "khop", "SO", "test loadprocedure", true, "v1", "default");
log.info("loadProcedure : " + result);
@param sourceFile: the source_file contain procedure code
@param procedureType: the procedure type, currently supported CPP and PY
@param procedureName: procedure name
@param codeType: code type, currently supported PY, SO, CPP, ZIP
@param procedureDescription: procedure description
@param readOnly: procedure is read only or not
@param version: The version of procedure
@param graph: the graph to query.
@return: the result of procedure execution
public boolean loadProcedure(String sourceFile, String procedureType, String procedureName, String codeType,
String procedureDescription, boolean readOnly, String version, String graph) throws Exception
本接口支持在单机模式和HA模式下使用。其中,由于加载存储过程是写请求,HA模式下的client只能向leader发送加载存储过程请求。
2.9.列举存储过程
String result = client.listProcedures("CPP", "any", "default");
log.info("listProcedures : " + result);
@param procedureType: the procedure type, currently supported CPP and PY
@param version: The version of procedure
@param graph: the graph to query.
@param url: (Optional) Node address of listing procedure
@return: the list of procedure
public String listProcedures(String procedureType, String version, String graph, String url) throws Exception
本接口支持在单机模式和HA模式下使用。其中,在HA模式下的client中,通过指定url参数可以定向向某个server发送读请求。
2.10.删除存储过程
String result = client.deleteProcedure("CPP", "sortstr", "default");
log.info("loadProcedure : " + result);