推特 阿里云技术文档正文

Gremlin Console_SDK参考_图数据库GDB

admin 阿里云技术文档 2020-02-11 215 0
阿里云服务器优惠

Gremlin Console

本文介绍如何基于Gremlin控制台连接和操作图数据库GDB。

进行以下操作时,请确保图数据库GDB的实例与您的ECS虚拟机处于同一个Virtual Private Cloud(VPC)网络环境。

环境准备 (以CentOS示意)

1、 Gremlin控制台需要Java 8,使用前请安装Java 8

  1. sudo yum install java-1.8.0-devel

2、 如果您的ECS机器上有多个Java版本,请将Java8设置为默认运行

  1. sudo /usr/sbin/alternatives --config java
  2. 共有 4 个提供“java”的程序。
  3. 选项 命令
  4. -----------------------------------------------
  5. *+ 1 java-1.8.0-openjdk.x86_64 (/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.191.b12-1.el7_6.x86_64/jre/bin/java)
  6. 2 java-1.8.0-openjdk.x86_64 (/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.191.b12-0.el7_5.x86_64-debug/jre/bin/java)
  7. 3 java-1.7.0-openjdk.x86_64 (/usr/lib/jvm/java-1.7.0-openjdk-1.7.0.191-2.6.15.4.el7_5.x86_64/jre/bin/java)
  8. 4 /usr/lib/jvm/jre-1.6.0-openjdk.x86_64/bin/java

3、 从Apache Tinkerpop官方网站下载最新版本Gremlin控制台

  1. wget https://archive.apache.org/dist/tinkerpop/3.4.2/apache-tinkerpop-gremlin-console-3.4.2-bin.zip

4、 解压并进入apache-tinkerpop-gremlin-console-3.4.2目录

  1. unzip apache-tinkerpop-gremlin-console-3.4.2-bin.zip
  2. cd apache-tinkerpop-gremlin-console-3.4.2

5、 创建conf/gdb-remote.yaml文件,该文件为Gremlin控制台与GDB图数据库建立连接的配置文件

  • ${your-gdb-endpoint}改为您的图数据库GDB实例的域名
  • ${username}改为您的图数据库GDB实例的用户名
  • ${password}改为您的图数据库GDB实例的密码
  1. hosts: [ ${your_gdb_endpoint} ]
  2. port: 8182
  3. username: ${username}
  4. password: ${password}
  5. serializer: {
  6. className: org.apache.tinkerpop.gremlin.driver.ser.GraphSONMessageSerializerV3d0,
  7. config: { serializeResultToString: true }
  8. }

建立连接

1、 在Gremlin控制台主目录中输入以下命令启动控制台

  1. [root@iz2ze30qqhwn3ba5mu2qgiz apache-tinkerpop-gremlin-console-3.4.0]# ./bin/gremlin.sh
  2. \,,,/
  3. (o o)
  4. -----oOOo-(3)-oOOo-----
  5. plugin activated: tinkerpop.server
  6. plugin activated: tinkerpop.utilities
  7. plugin activated: tinkerpop.tinkergraph
  8. gremlin>

2、 连接到GDB图数据库实例

  1. gremlin> :remote connect tinkerpop.server conf/gdb-remote.yaml
  2. ==>Configured iz2ze30qqhwn3ba5mu2qgiz/172.17.6.2:8182

正常情况下,这里会显示当前Gremlin控制台所连接的GDB图数据库实例的Host和Port。

3、 切换到远程模式,此后您在Grmlin控制台输入的所有DSL均将发向远端的GDB图数据库实例

  1. gremlin> :remote console
  2. ==>All scripts will now be sent to Gremlin Server - [iz2ze30qqhwn3ba5mu2qgiz/172.17.6.2:8182]
  3. - type ':remote console' to return to local mode

dsl范例


  1. 删除指定label的点、边

    1. g.E().hasLabel('gdb_sample_knows').drop()
    2. g.E().hasLabel('gdb_sample_created').drop()
    3. g.V().hasLabel('gdb_sample_person').drop()
    4. g.V().hasLabel('gdb_sample_software').drop()
  2. 添加顶点,为其设置id、property

    1. g.addV('gdb_sample_person').property(id, 'gdb_sample_marko').property('age', 28).property('name', 'marko')
    2. g.addV('gdb_sample_person').property(id, 'gdb_sample_vadas').property('age', 27).property('name', 'vadas')
    3. g.addV('gdb_sample_person').property(id, 'gdb_sample_josh').property('age', 32).property('name', 'josh')
    4. g.addV('gdb_sample_person').property(id, 'gdb_sample_peter').property('age', 35).property('name', 'peter')
    5. g.addV('gdb_sample_software').property(id, 'gdb_sample_lop').property('lang', 'java').property('name', 'lop')
    6. g.addV('gdb_sample_software').property(id, 'gdb_sample_ripple').property('lang', 'java').property('name', 'ripple')
  3. 修改(或新增) age 属性

    1. g.V('gdb_sample_marko').property('age', 29)
  4. 建立关系,设置属性 weight

    1. g.addE('gdb_sample_knows').from(V('gdb_sample_marko')).to(V('gdb_sample_vadas')).property('weight', 0.5f)
    2. g.addE('gdb_sample_knows').from(V('gdb_sample_marko')).to(V('gdb_sample_josh')).property('weight', 1.0f)
    3. g.addE('gdb_sample_created').from(V('gdb_sample_marko')).to(V('gdb_sample_lop')).property('weight', 0.4f)
    4. g.addE('gdb_sample_created').from(V('gdb_sample_josh')).to(V('gdb_sample_lop')).property('weight', 0.4f)
    5. g.addE('gdb_sample_created').from(V('gdb_sample_josh')).to(V('gdb_sample_ripple')).property('weight', 1.0f)
    6. g.addE('gdb_sample_created').from(V('gdb_sample_peter')).to(V('gdb_sample_lop')).property('weight', 0.2f)
  5. 查询所有点/指定label的点数量

    1. g.V().count()
    2. g.V().hasLabel('gdb_sample_person').count()
  6. 查询指定条件的顶点 (>29岁的人, 按name降序排列所有人)

    1. g.V().hasLabel('gdb_sample_person').has('age', gt(29))
    2. g.V().hasLabel('gdb_sample_person').order().by('name', decr)
  7. 关联查询(获取 marko 认识的人, marko认识的人created的software)

    1. g.V('gdb_sample_marko').outE('gdb_sample_knows').inV().hasLabel('gdb_sample_person')
    2. g.V('gdb_sample_marko').outE('gdb_sample_knows').inV().hasLabel('gdb_sample_person').outE('gdb_sample_created').inV().hasLabel('gdb_sample_software')
  8. 删除关系、顶点

    1. g.V('gdb_sample_marko').outE('gdb_sample_knows').where(inV().has(id, 'gdb_sample_josh')).drop()
    2. g.V('gdb_sample_marko').drop()

  • 这里您可以进行其他更多测试,详细的Gremlin查询语句可以参考TinkerPop的Gremlin文档
  • 注意: 使用分号;或换行符\n分隔每个语句。

退出Gremlin控制台

  1. gremlin> :exit
版权声明

本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。

评论

-----