全部产品
云市场

使用java-sdk访问图

更新时间:2018-12-30 12:15:56

在您的应用中引入如下依赖

  1. <dependency>
  2. <groupId>com.aliyun.hbase</groupId>
  3. <artifactId>graphdb-java-sdk</artifactId>
  4. <version>2.0.1</version>
  5. </dependency>

初始化

要初始化GraphDB,如想使用默认配置,传入GraphDB服务器端地址及端口即可。GraphDB服务地址,购买服务后控制台可见。

  1. Graph g = new Graph($host, $port);

自定义客户端连接配置

  1. Builder builder = new Builder(host).port(port) //set host,port
  2. .minConnectionPoolSize(minConnectionPoolSize) //连接池最小连接数
  3. .maxConnectionPoolSize(maxConnectionPoolSize) //连接池最大连接数
  4. .minSimultaneousUsagePerConnection(8) //单连接最小并发使用个数
  5. .maxSimultaneousUsagePerConnection(32) //单连接最大并发使用个数
  6. .minInProcessPerConnection(16) //单连接最小并发请求数
  7. .maxInProcessPerConnection(64) //单连接最大并发请求数
  8. .nioPoolSize(1)
  9. .maxWaitForConnection(3000) //从连接池等待连接时间,超时抛出异常,单位毫秒
  10. .resultIterationBatchSize(1000); // determines how many results are returned per batch
  11. Graph g = new Graph(builder);

关闭

执行完gremlin图操作,不再使用graph句柄时候需调用关闭语句

  1. g.close();

发送gremlin语句至server端执行

  1. public ResultSet execute(String gremlin) //执行gremlin语句,使用默认超时策略,慢SQL会超时终止
  2. public ResultSet execute(String gremlin, long timeout_ms) //客户端指定执行超时时间,NO_TIMEOUT永不超时

schema相关操作

  1. String gremlin = graph.createLabel(ElementType.VERTEX, "titan", ValueType.STRING, "name", ValueType.STRING, "age", ValueType.INT);
  2. ResultSet rs= g.execute(gremlin, Graph.NO_TIMEOUT);
  3. rs.all().join();

增删改操作

  1. String gremlin="saturn=g.addV('titan').property(T.id, 'saturn').property('name','saturn').property('age',10000);";
  2. ResultSet rs= g.execute(sql);
  3. System.out.println(rs.one().getVertex());

查询&遍历操作

大的查询推荐使用iterator操作方式,避免all()操作,避免数据集全加载至内存

  1. String gremlin = "saturn=g.V(\"saturn\").next();g.V(saturn).in(\"father\").values(\"name\");"
  2. Iterator<Result> it = g.pagingQuery(gremlin);
  3. System.out.println(it.next().getObject());

其他顶点&边遍历

  1. public Iterator<Vertex> vertices(Object... vertexIds) //迭代指定vertexids集合,如vertexIds不传入,获取图所有顶点
  2. public Iterator<Edge> edges(Object... edgeIds) //迭代指定edgeIds集合,如edgeIds不传入,获取图所有边

实例demo源码

GraphSDKDemo

java-sdk源码

https://repo1.maven.org/maven2/com/aliyun/hbase/graphdb-java-sdk/2.0.1/graphdb-java-sdk-2.0.1-sources.jar