使用 Java 连接到 Neptune 数据库实例 - Amazon Neptune
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

使用 Java 连接到 Neptune 数据库实例

以下部分将指导您完成运行完整的 Java 示例,该示例连接到 Neptune 数据库实例连接到并执行 Grestlin 遍历。

必须按照与您的 Neptune 数据库实例位于同一 Virtual Private Cloud (VPC) 中的 Amazon EC2 实例中的说明操作。

使用 Java 连接到 Neptune

  1. 在您的 EC2 实例上安装 Apache Maven。首先,输入以下命令以添加具有 Maven 程序包的存储库:

    sudo wget https://repos.fedorapeople.org/repos/dchen/apache-maven/epel-apache-maven.repo -O /etc/yum.repos.d/epel-apache-maven.repo

    输入以下命令以设置该程序包的版本号:

    sudo sed -i s/\$releasever/6/g /etc/yum.repos.d/epel-apache-maven.repo

    然后,使用 yum 安装 Maven:

    sudo yum install -y apache-maven
  2. Gremlin 库需要 Java 8。输入以下命令以在 EC2 实例上安装 Java 8:

    sudo yum install java-1.8.0-devel
  3. 输入以下命令以在 EC2 实例上将 Java 8 设置为默认运行时:

    sudo /usr/sbin/alternatives --config java

    在系统提示时,输入 Java 8 的数量 (2)。

  4. 输入以下命令以在 EC2 实例上将 Java 8 设置为默认编译器:

    sudo /usr/sbin/alternatives --config javac

    在系统提示时,输入 Java 8 的数量 (2)。

  5. 创建名为 gremlinjava 的新目录:

    mkdir gremlinjava cd gremlinjava
  6. gremlinjava 目录中,创建 pom.xml 文件,然后在文本编辑器中打开它:

    nano pom.xml
  7. 将以下内容复制到 pom.xml 文件中并保存它:

    <project xmlns="https://maven.apache.org/POM/4.0.0" xmlns:xsi="https://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="https://maven.apache.org/POM/4.0.0 https://maven.apache.org/maven-v4_0_0.xsd"> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> </properties> <modelVersion>4.0.0</modelVersion> <groupId>com.amazonaws</groupId> <artifactId>GremlinExample</artifactId> <packaging>jar</packaging> <version>1.0-SNAPSHOT</version> <name>GremlinExample</name> <url>https://maven.apache.org</url> <dependencies> <dependency> <groupId>org.apache.tinkerpop</groupId> <artifactId>gremlin-driver</artifactId> <version>3.4.8</version> </dependency> <!-- https://mvnrepository.com/artifact/org.apache.tinkerpop/gremlin-groovy --> <dependency> <groupId>org.apache.tinkerpop</groupId> <artifactId>gremlin-groovy</artifactId> <version>3.4.8</version> </dependency> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-jdk14</artifactId> <version>1.7.25</version> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>2.0.2</version> <configuration> <source>1.8</source> <target>1.8</target> </configuration> </plugin> <plugin> <groupId>org.codehaus.mojo</groupId> <artifactId>exec-maven-plugin</artifactId> <version>1.3</version> <configuration> <executable>java</executable> <arguments> <argument>-classpath</argument> <classpath/> <argument>com.amazonaws.App</argument> </arguments> <mainClass>com.amazonaws.App</mainClass> <complianceLevel>1.8 </complianceLevel> <killAfter>-1</killAfter> </configuration> </plugin> </plugins> </build> </project>
    注意

    如果您要修改现有的 Maven 项目,则所需依赖项将在上述代码中突出显示。

  8. 下载 CA 证书。Gremlin Java 开发工具包需要一个证书来验证远程证书。

    wget https://www.amazontrust.com/repository/SFSRootCAG2.pem
  9. 通过在命令行中键入以下命令来为示例源代码创建子目录 (src/main/java/com/amazonaws/):

    mkdir -p src/main/java/com/amazonaws/
  10. src/main/java/com/amazonaws/ 目录中,创建名为 App.java 的文件,然后在文本编辑器中打开它。

    nano src/main/java/com/amazonaws/App.java
  11. 将以下内容复制到 App.java 文件中。Replace您的海王星端点替换为 Neptune 数据库实例的地址。请不要addContactPoint 方法中包括 https:// 前缀。

    注意

    有关查找您的 Neptune 数据库实例的主机名的信息,请参阅连接到 Amazon Neptune 终端节点.

    package com.amazonaws; import org.apache.tinkerpop.gremlin.driver.Cluster; import org.apache.tinkerpop.gremlin.driver.Client; import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.GraphTraversalSource; import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.GraphTraversal; import static org.apache.tinkerpop.gremlin.process.traversal.AnonymousTraversalSource.traversal; import org.apache.tinkerpop.gremlin.driver.remote.DriverRemoteConnection; import org.apache.tinkerpop.gremlin.structure.T; public class App { public static void main( String[] args ) { Cluster.Builder builder = Cluster.build(); builder.addContactPoint("your-neptune-endpoint"); builder.port(8182); builder.enableSsl(true); builder.keyCertChainFile("SFSRootCAG2.pem"); Cluster cluster = builder.create(); GraphTraversalSource g = traversal().withRemote(DriverRemoteConnection.using(cluster)); // Add a vertex. // Note that a Gremlin terminal step, e.g. iterate(), is required to make a request to the remote server. // The full list of Gremlin terminal steps is at https://tinkerpop.apache.org/docs/current/reference/#terminal-steps g.addV("Person").property("Name", "Justin").iterate(); // Add a vertex with a user-supplied ID. g.addV("Custom Label").property(T.id, "CustomId1").property("name", "Custom id vertex 1").iterate(); g.addV("Custom Label").property(T.id, "CustomId2").property("name", "Custom id vertex 2").iterate(); g.addE("Edge Label").from(g.V("CustomId1")).to(g.V("CustomId2")).iterate(); // This gets the vertices, only. GraphTraversal t = g.V().limit(3).elementMap(); t.forEachRemaining( e -> System.out.println(t.toList()) ); cluster.close(); } }
  12. 使用以下 Maven 命令编译并运行示例:

    mvn compile exec:exec

上述示例通过使用 g.V().limit(3).elementMap() 遍历返回图形中前两个顶点的每个属性的键和值的映射。要查询其他内容,请将其替换为具有其中一种适当的结尾方法的其他 Gremlin 遍历。

注意

要将遍历提交到服务器进行评估,需要 Gremlin 查询的最后一部分 .toList()。如果您未包含该方法或其他等效方法,该查询将不会提交到 Neptune 数据库实例。

在添加顶点或边缘时,您还必须附加适当的结尾,例如,在使用addV( )Step。

以下方法将查询提交到 Neptune 数据库实例:

  • toList()

  • toSet()

  • next()

  • nextTraverser()

  • iterate()