常见问题

本文介绍在使用图数据库GDB过程中的常见问题。

产品介绍

  • 问:什么是图数据库GDB?

    答:GDB是Graph Database的简写。GDB是一种支持Property Graph图模型、用于处理高度连接数据查询与存储的实时、可靠的在线数据库服务。它支持Apache TinkerPop Gremlin查询语言,可以帮助用户快速构建基于高度连接的数据集的应用程序。GDB非常适合社交网络,欺诈检测,推荐引擎,实时图谱,网络/IT 运营这类高度互连数据集的场景。更是多信息请参见什么是图数据库GDB?

  • 问:图数据库GDB支持ACID事务吗?

    答:支持。区别于用户自己控制事务开始和提交的方式,GDB系统会对每一个DSL开启一个事务并在结束的时候按照运行情况自动提交或者回滚。公测期间,GDB默认提供READ COMMITTED隔离级别的事务支持,后续商业化后会开放更多的隔离级别选项。此外,需要注意的是,单个DSL的事务存在64M总Buffer大小的限制,如果超出将会失败(清空测试数据可以使用数据删除工具,工具详情请参见GDB数据删除工具)。

实例规格

  • 问:图数据库GDB支持变更实例规格吗?

    答:高可用版本支持变更实例规格,基础版本除只读实例外不支持。

  • 问:图数据库GDB支持存储扩缩容吗?

    答:高可用与基础版本均支持。

  • 问:如果实例存储空间占用满了会出现怎样的情况?

    答:如果实例的存储空间已满,该实例会被自动锁定,变成只读状态。建议您定期检查存储空间的使用情况。

实例使用

  • 问:图数据库GDB需要用户自己创建和维护索引吗?

    答:不需要。GDB系统内部会自动创建和维护索引,用户不需要感知。

  • 问:图数据库GDB是否执行查询优化?

    答:是的,GDB会执行查询优化。相关优化方式已经过严格测试,保证结果的准确性。

  • 问:图数据库GDB需要用户主动升级和维护内核小版本吗?

    答:需要。GDB服务端的数据库小版本会在经过严格测试后发布,用户可以通过图数据库GDB控制台升级内核小版本,GDB实例升级的过程中会出现短时间的连接闪断,用户需要设置程序自动重连,具体升级方法请参见升级内核小版本

  • 问:图数据库GDB的高可用实例支持在故障切换需要感知和注意什么吗?

    答:对于GDB高可用版,当主节点出现故障时,GDB会快速切换到备节点。切换过程中会出现短时间的连接闪断(切换很快,主要为主节点故障诊断和确认时间),需要用户设置好程序的自动重连,避免因为切换导致服务不可用。

  • 问:图数据库GDB支持跨AZ高可用吗?

    答:不支持。

备份与恢复

  • 问:图数据库GDB需要用主动执行备份吗?

    答:GDB会为每个实例生成一个默认备份策略自动执行备份,用户可以修改备份策略,但不需要主动执行备份。

  • 问:图数据库GDB备份有保留时间限制吗?

    答:有,用户可以在备份设置里面设置备份保留天数,取值范围为7~730天。超期后备份将自动删除,超期时间以备份设置天数(非最长天数)为准。

实例连接

  • 问:图数据库GDB是否支持公网访问?

    答:支持,可以在GDB控制台的实例基本信息页面申请公网地址,申请成功后如果要关闭公网需要提工单。

  • 问:图数据库GDB无法连接排查?

    答:1. 检查GDB实例白名单配置,确保待访问的来源IP不会被白名单限制(外网访问可以用 myip.ipip.net 查看本机外网IP,配置到实例白名单中,但该IP会变化,也可以添加 0.0.0.0/0 允许所有来源IP访问,确保自己的开发机器可以访问内核,但外网仅用于功能性验证,不保证服务性能与稳定性); 2. 确保已经给GDB实例添加账号,并保证连接时的账号信息正确。添加账号的方法请参见添加账号; 3. 如果自己的实例是单节点非只读实例,以前可以连接但现在链接异常,由于单节点实例无SLA保障,仅用于测试不能用于线上业务,可以先在控制台发起重启查看是否能够解决

# 检查域名是否可以连接(替换成您的实例地址,注意区分内网和外网),正常会输出ttl和time。
ping gds-uf6j53c35ko13u78129990pub.graphdb.rds.aliyuncs.com
PING gds-uf6j53c35ko13u78129990pub.graphdb.rds.aliyuncs.com (101.xxx.xxx.xxx): 56 data bytes
64 bytes from xxx.xxx.xxx: icmp_seq=0 ttl=91 time=31.061 ms
64 bytes from xxx.xxx.xxx: icmp_seq=1 ttl=91 time=30.576 ms
...
# 检查实例端口是否可连接(替换成您的实例地址和端口,注意区分内网和外网),正常可以连接上端口
telnet gds-uf6j53c35xxx.graphdb.rds.aliyuncs.com 3734
Trying 101.xxx.xxx.xxx...
Connected to gds-uf6j53c35xxx.graphdb.rds.aliyuncs.com.
Escape character is '^]'.

API、SDK、访问实例等

  • 问:图数据库GDB支持什么图查询语言?

    答:GDB支持开源的Apache TinkerPop Gremlin图查询语言,具体的兼容性请参见GDB Gremlin实现的兼容性。GDB支持原生Cypher图查询语言,具体的兼容性请参见GDB Cypher实现的兼容性

  • 问:我可以使用Apache TinkerPop 的开源Driver访问图数据库GDB吗?

    答:可以。GDB兼容Apache TinkerPop 3.3.x及3.4.0的Driver,支持通过Java,Python, C#,以及REST的方式来访问GDB。以Java为例,相关访问示例请参见Java SDK访问示例

  • 问:SDK中使用过程中的,遇到 Max frame length of 65536 has been exceeded以及 Timed out while waiting for an available host等问题

    答:请您参考 该链接, 对客户端的 maxContentLength、maxSize、minSize参数进行设置

  • 问:SDK使用中出现rejected from java.util.concurrent.ThreadPoolExecutor[Running, pool size = xx, active threads = xx, queued tasks = xx, completed tasks = xx]

    答:请您参考 该链接, 在submit之后务必要主动获取结果,可以all.join() 获取全部、one()获取一个、some()获取一批

  • 问:访问实例中遇到 Resource busy: engine write status disable

    答:1. 首先在实例详情页面查询【实例到期时间】是否到期,到期后会锁定实例并关写,7天后会释放实例,此时续费便可以正常使用。2. 如果是单节点实例且没有发生锁定,由于单节点实例无SLA保障,仅用于测试不能用于线上业务,在控制台重启便可以解决

实例监控

  • 问:为什么打开实例监控界面,提示,暂时无法获取数据?

    答:如果您是新建的GDB实例,请稍等几分钟。如果您是RAM用户登录,需要联系阿里云账号授予AliyunGDBFullAccess与AliyunCloudMonitorFullAccess的权限,具体请参见为RAM用户授权

数据导入

RAM用户(子账号)

  • 问:使用RAM用户,无法更新GDB实例的名称、白名单、备份策略等。

答:需要主账号赋值权限 RAM用户(子账号)使用GDB的准备工作

可视化

  • 问:为什么我通过DMS执行的DSL比程序中的要快?

    答:官方DMS,对所有的语句后面加了limit(256),所以通过DMS的执行并不代表实际的DSL执行性能。

  • 问:目前DMS是否支持Cypher可视化?

    答:目前DMS暂不支持Cypher的可视化。

  • 问:GDB是否有自己的可视化工具?

    答:开源的 gdb-console,均支持Gremlin与Cypher的可视化,您有较强的可视化需求时,自己也可根据开源代码定制开发

性能分析

  • 问:我如何分析一个Gremlin语句执行的性能

    答:使用 gremlin-console, 在您要分析的语句后面加上 .profile()