TuGraph数据库Java客户端开发指南
TuGraph数据库Java客户端开发指南概述本文详细介绍如何使用TuGraph数据库的Java客户端进行开发。TuGraph是一款高性能的图数据库,其Java客户端提供了丰富的API接口,支持单机模式和HA集群模式下的各种操作。环境准备在开始使用Java客户端前,需要先编译客户端代码:cd deps/tugraph-db-client-javash local_build.sh编...
TuGraph数据库Java客户端开发指南
概述
本文详细介绍如何使用TuGraph数据库的Java客户端进行开发。TuGraph是一款高性能的图数据库,其Java客户端提供了丰富的API接口,支持单机模式和HA集群模式下的各种操作。
环境准备
在开始使用Java客户端前,需要先编译客户端代码:
cd deps/tugraph-db-client-java
sh local_build.sh
编译完成后,即可在项目中引入相关依赖。
客户端初始化
单机模式初始化
当服务器以单节点模式启动时,客户端初始化方式如下:
import com.antgroup.tugraph.TuGraphDbRpcClient;
TuGraphDbRpcClient client = new TuGraphDbRpcClient("127.0.0.1:19099", "admin", "73@TuGraph");
参数说明:
- url: TuGraph服务地址,格式为ip:port
- user: 登录用户名
- password: 登录密码
HA集群直接连接初始化
当HA集群部署在服务器上且可以直接使用ha_conf中配置的URL连接时:
TuGraphDbRpcClient client = new TuGraphDbRpcClient("127.0.0.1:19099", "admin", "73@TuGraph");
客户端会自动根据服务器返回的查询信息维护连接池,HA集群水平扩展时无需手动重启客户端。
HA集群间接连接初始化
当必须使用间接URL(如阿里云公网URL)连接HA集群时:
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");
这种情况下需要手动传入集群所有节点的URL,集群节点变更时需要手动重启客户端。
核心操作API
Cypher查询
String res = client.callCypher("CALL db.edgeLabels()", "default", 10);
参数说明:
- cypher: 查询语句
- graph: 要查询的图名称
- timeout: 最大执行时间(秒),超时会被中断
- url(可选): 在HA模式下可指定请求发送到特定节点
向Leader发送Cypher请求(仅HA模式)
String res = client.callCypherToLeader("CALL db.edgeLabels()", "default", 10);
GQL查询
String res = client.callGql("CALL db.edgeLabels()", "default", 10);
参数与Cypher查询类似。
存储过程操作
- 调用存储过程:
String result = client.callProcedure("CPP", "khop", kHopParamGen(), 1000, false, "default");
- 加载存储过程:
boolean result = client.loadProcedure("./test/procedure/khop.so", "CPP", "khop", "SO", "test loadprocedure", true, "v1", "default");
- 列出存储过程:
String result = client.listProcedures("CPP", "any", "default");
- 删除存储过程:
String result = client.deleteProcedure("CPP", "sortstr", "default");
数据导入
- 从字节流导入Schema:
boolean ret = client.importSchemaFromContent(schema, "default", 1000);
- 从字节流导入边数据:
boolean ret = client.importDataFromContent(personDesc, person, ",", true, 16, "default", 1000);
- 从文件导入Schema:
boolean ret = client.importSchemaFromFile("./test/data/yago.conf", "default", 1000);
- 从文件导入点边数据:
boolean ret = client.importDataFromFile("./test/data/yago.conf", ",", true, 16, 0, "default", 1000000000);
最佳实践
-
连接管理:在HA模式下,合理利用自动连接池特性,避免频繁创建销毁连接。
-
超时设置:根据操作复杂度设置合理的超时时间,简单查询可设置较短超时,复杂操作需适当延长。
-
错误处理:对所有API调用进行异常捕获,特别是网络相关操作。
-
资源释放:使用完毕后及时关闭客户端连接。
-
性能优化:批量操作数据时,考虑使用导入API而非单条插入。
总结
TuGraph Java客户端提供了全面而强大的功能接口,支持从基础的Cypher查询到复杂的存储过程管理,以及高效的数据导入导出。开发者可以根据实际需求选择合适的API,并结合本文提供的实践建议构建稳定高效的图数据库应用。

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。
更多推荐
所有评论(0)