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查询类似。

存储过程操作

  1. 调用存储过程:
String result = client.callProcedure("CPP", "khop", kHopParamGen(), 1000, false, "default");
  1. 加载存储过程:
boolean result = client.loadProcedure("./test/procedure/khop.so", "CPP", "khop", "SO", "test loadprocedure", true, "v1", "default");
  1. 列出存储过程:
String result = client.listProcedures("CPP", "any", "default");
  1. 删除存储过程:
String result = client.deleteProcedure("CPP", "sortstr", "default");

数据导入

  1. 从字节流导入Schema:
boolean ret = client.importSchemaFromContent(schema, "default", 1000);
  1. 从字节流导入边数据:
boolean ret = client.importDataFromContent(personDesc, person, ",", true, 16, "default", 1000);
  1. 从文件导入Schema:
boolean ret = client.importSchemaFromFile("./test/data/yago.conf", "default", 1000);
  1. 从文件导入点边数据:
boolean ret = client.importDataFromFile("./test/data/yago.conf", ",", true, 16, 0, "default", 1000000000);

最佳实践

  1. 连接管理:在HA模式下,合理利用自动连接池特性,避免频繁创建销毁连接。

  2. 超时设置:根据操作复杂度设置合理的超时时间,简单查询可设置较短超时,复杂操作需适当延长。

  3. 错误处理:对所有API调用进行异常捕获,特别是网络相关操作。

  4. 资源释放:使用完毕后及时关闭客户端连接。

  5. 性能优化:批量操作数据时,考虑使用导入API而非单条插入。

总结

TuGraph Java客户端提供了全面而强大的功能接口,支持从基础的Cypher查询到复杂的存储过程管理,以及高效的数据导入导出。开发者可以根据实际需求选择合适的API,并结合本文提供的实践建议构建稳定高效的图数据库应用。

Logo

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

更多推荐