开发者学堂课程【阿里云图数据库 GDB 入门与应用 :链接 GDB 实例】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/623/detail/9448
链接 GDB 实例
内容介绍
一、 Gremlin SDK
二、 几种连接 GDB 实例的方式
三、 Gremlin SDK Java 版连接示例
四、 HTTP REST 方式连接示例
一、 Gremlin SDK
1、 Gremlin 简介
(1) Gremlin 官方网站:
https://tinkerpop.apache.org/gremlin.html
(2) Gremlin 是一由 Apache TinkerPop 提供支持的图查询语言。License为开源的 Apache Licese Version 2.0
(3) Gremlin 和传统 SQL 有明显区别,是一种函数式、面向数据流的查询语言,使用户可以更为直接地控制和表达图查询和复杂逻辑。
(4) 包含一个宽松的 DSL 规范描述,以及基于 Java/Groovy 的开源实现。
二、几种连接 GDB 实例的方式
Gremlin-Java、Gremlin-Groovy、Gremlin-Python、Gremlin-Net、Gremlin-JavaScript,其中在阿里云平台使用较多的是 Gremlin-Java 和 Gremlin-Python这两种语言,比例约4:1。按照接入原理分类,可分为 WebSocket和 HTTP 请求这两种接入原理。 WebSocket 主要通过 Gremlin Console 控制台和 Gremlin SDK 进行接入。除此之外, Gremlin 还支持HTTP REST 的请求方式。注意:在购买阿里云图库中的GDB时,要确保 GDB 实例与 ECS 处于同一个 VPC 网络内。如果通过 ECS 进行访问,需要先在 GDB 的控制台上添加 ECS 所在的内网 IP 。若有外网的应用需要访问 GDB 实例,也可在控制台进行开通外网访问的操作。这样就会形成一个外网访问的端口。
三、Gremlin SDK Java 接入示例
★ Java 依赖(Maven)
<dependency>
<groupId>org.apache.tinkerpop</groupId>
<artifactId>gremlin-driver</artifactId>
<version>3.3.3</version>
</dependency>
★配置文件
hosts:[ $endpoint ]
port:8182
username: $username
password: $password
connectionPool:{
enableSsl: true
}
serializer: {
className:
org.apache.tinkerpop.gremlin.driver.ser.GraphSONMessageSerializerV1d0, config:{ serializeResultToString: true }
}
在配置文件中有3个参数,即 endpoint、username、paassword 在用户购买 GDB 实例后可以通过控制台上的实例信息的配置查看。恢复到基本信息页面,可看到内网地址,即是 配置文件中的 endpoint ,内网端口8182。 username 和 passworld 在账号管理中,账号即 username ,密码即 passworld ,可以通过控制台上的内网地址 、端口、username 和 passworld 来进行配置。如果是外网访问,在开通外网访问后控制台会显示外网地址和外网端口,同样也可以连接到 GDB 实例。
★Java 代码
Client client;
try{
// Attempt to create the connection objects
cluster=Cluster.build(new File("src/remote.yaml")).create(); client m cluster.
client= cluster.connect);
} catch(FileNotFoundException e){
//Handle file errors.
System.out.println("Couldn't find the configuration file.");
e.
printStackTrace();
return;
}
// After connection is successful, run all the queries against the server.
for (String query :gremlinQueries){
System.out.println("\nSubmitting this Gremlin query:"+ query);
// Submitting remote query to the server.
ResultSet results =results =client.submit(query);
CompletableFuture<List<Result>> completableFutureResults=results.all(); List<Result> resultList =completableFutureResults.get();
for (Result result : resuttList){
System.out.println("\nQuery result” result:");
System.out.println(result.toString());
}
}
四、HTTP REST 方式连接示例
★说明(基本的三个配置)
${your-gdb-endpoint} GDB
实例的内网访问地址
${username} GDB
实例账户名
${password} GDB
实例账户密码
★HTTP 接入点为:
${your_gdb_endpoint}:8182/gremlin
★支持: GET、POST 请求:
curl -u ${username}:${password} -x POST -d '{"gremlin":"g.V().limit(1)"}’ http://${your_gdb_endpoint}:8182/gremlin
//此处注意需要对 Label 值的双引号进行转义
curl-u${username}:${password}-xpost-d'{"gremlin":"gremlin:g.v().hasLabel(\"movie\").
limit(10)"}’http://${your_gdb_endpoint}:8182/gremlin
curl-u${username}:${password}"http://${your_gdb_endpoint}:8182/gremlin?gremlin=g.V().limit(1)"
//Xbinding 形式携带参数
curl-u${username}:${password}-XPOST-d'{"gremlin":"g.v().limit(n)","bindings":{"n”:1}}’ http://$(your_gdb_endpoint):8182/gremtin