Nebula Java

Nebula Java是一款Java语言的客户端,可以连接、管理Nebula Graph图数据库。

前提条件

已安装Java,版本为8.0及以上。

版本对照表

Nebula Graph版本Nebula Java版本
2.6.02.6.0
2.0.12.0.0
2.0.02.0.0
2.0.0-rc12.0.0-rc1

下载Nebula Java

  • (推荐)如果需要使用指定版本的Nebula Java,请使用选项--branch指定分支。例如使用v2.6.0发布版本,请执行如下命令:

    1. $ git clone --branch v2.6.0 https://github.com/vesoft-inc/nebula-java.git
  • 如果需要安装日常开发版本,请执行如下命令下载master分支的源码:

    1. $ git clone https://github.com/vesoft-inc/nebula-java.git

使用方法

Note

建议一个线程使用一个会话,如果多个线程使用同一个会话,会降低效率。

使用IDEA等工具导入Maven项目,请在pom.xml中添加如下依赖:

Note

2.0.0-SNAPSHOT为日常研发版本,可能存在未知问题,建议使用release版本号替换2.0.0-SNAPSHOT

  1. <dependency>
  2. <groupId>com.vesoft</groupId>
  3. <artifactId>client</artifactId>
  4. <version>2.0.0-SNAPSHOT</version>
  5. </dependency>

如果无法下载日常研发版本的依赖,请在pom.xml中添加如下内容(release版本不需要添加):

  1. <repositories>
  2. <repository>
  3. <id>snapshots</id>
  4. <url>https://oss.sonatype.org/content/repositories/snapshots/</url>
  5. </repository>
  6. </repositories>

如果没有Maven管理项目,请手动下载JAR包进行安装。

核心代码

详细示例请参见GraphClientExample

  1. NebulaPool pool = new NebulaPool();
  2. Session session = null;
  3. try {
  4. NebulaPoolConfig nebulaPoolConfig = new NebulaPoolConfig();
  5. nebulaPoolConfig.setMaxConnSize(100);
  6. List<HostAddress> addresses = Arrays.asList(new HostAddress("192.168.xx.1", 9669),
  7. new HostAddress("192.168.xx.2", 9670));
  8. pool.init(addresses, nebulaPoolConfig);
  9. session = pool.getSession("root", "nebula", false);
  10. //create space
  11. String space = "test";
  12. String createSpace = "CREATE SPACE IF NOT EXISTS " + space + " (partition_num=15, replica_factor=1, vid_type=fixed_string(30)); ";
  13. ResultSet resp = session.execute(createSpace);
  14. //create schema
  15. String createSchema = "USE " + space + "; CREATE TAG IF NOT EXISTS person(name string, age int);"
  16. + "CREATE EDGE IF NOT EXISTS like(likeness double)";
  17. ResultSet resp = session.execute(createSchema);
  18. //insert vertex
  19. String insertVertexes = "INSERT VERTEX person(name, age) VALUES " + "'Bob':('Bob', 10), "
  20. + "'Lily':('Lily', 9), " + "'Tom':('Tom', 10), " + "'Jerry':('Jerry', 13), "
  21. + "'John':('John', 11);";
  22. ResultSet resp = session.execute(insertVertexes);
  23. // inert edge
  24. String insertEdges = "INSERT EDGE like(likeness) VALUES " + "'Bob'->'Lily':(80.0), "
  25. + "'Bob'->'Tom':(70.0), " + "'Lily'->'Jerry':(84.0), " + "'Tom'->'Jerry':(68.3), "
  26. + "'Bob'->'John':(97.2);";
  27. ResultSet resp = session.execute(insertEdges);
  28. // query
  29. String query = "GO FROM \"Bob\" OVER like " + "YIELD properties($$).name, properties($$).age, properties(edge).likeness";
  30. ResultSet resp = session.execute(query);
  31. printResult(resp);
  32. }finally {
  33. if (session != null) {
  34. session.release();
  35. }
  36. pool.close();
  37. }

最后更新: October 22, 2021