NGCP 错题解析 vol.02:这 10 道题竟无一人全部答对

如果你读过「NebulaGraph 错题解析第一期」,大概知道在错题解析未出来之前,NebulaGraph 专业技能认证 NGCP(全称 NebulaGraph Certified Professional)的通过率仅有 16.7%。但是,经过上一轮 NebulaGraph 认证考试出题人错题解析的努力下,这次 NGCP 的通过率上升 0.1%,现在变成了 16.8%。出题人痛定思痛,决定再开一期错题解析,如果你两期都看了,运气足够好,现在去考 NGCP 闭眼就是 19 分起步了,你导再也不担心你从零考起了。

下面,来看一眼这期错题解析有哪些难题呢?

题 1:「判断题」目前 NebulaGraph Studio、Explorer、Dashboard 社区版、Dashboard 企业版登录时的身份验证是基于 NebulaGraph 本身的身份认证逻辑。

正确答案:错误

解析:

NebulaGraph Studio、Explorer 和 Dashboard 社区版登录时需要输入 NebulaGraph 本身的账密,但是 Dashboard 企业版因为需要管理所有 NebulaGraph 集群,所以有自己的单独一套权限管理系统,登录时可以使用多种账户类型。参考文档:https://docs.nebula-graph.com.cn/3.3.0/nebula-dashboard-ent/5.account-management/

题 2:「单选题」NebulaGraph 的第一个开源版本是

A. v0.1.0

B. v0.0.1

C. v1.0.0

D. v0.0.1

正确答案:A

解析:

2019.5 发布了 v0.1.0 alpha 版本并开源。参考文档:https://docs.nebula-graph.com.cn/3.3.0/20.appendix/history/

题 3:「单选题」下列关于大小写的说法,错误的是

A. 标识符区分大小写

B. 保留关键字不区分大小写

C. 函数不区分大小写

D. 非保留关键字区分大小写

正确答案:D

解析:

标识符会区分大小写,例如 my_space 和 MY_SPACE 是两个不同的图空间。关键字,包括保留关键字和非保留关键字,都是不区分大小写的,例如我们平常写 nGQL 命令 show spaces 或者 SHOW SPACES,都是可以正常执行的。函数也是不区分大小写的,例如count() 和 COUNT()。参考文档:https://docs.nebula-graph.com.cn/3.3.0/3.ngql-guide/1.nGQL-overview/identifier-case-sensitivity/

题 4:「单选题」以下关于 Storage 服务中数据分片说法错误的是

A. NebulaGraph 的分片策略采用动态 Hash 的方式

B. 创建图空间时需指定分片数量,分片数量设置后无法修改

C. 同一个点的所有标签、出边和入边信息都会存储到同一个分片

D. Meta 服务负责存储和管理分片的位置信息

正确答案:A

解析:

NebulaGraph 的分片策略是静态 Hash。创建图空间时需要设置分片和副本数量,然后均衡分配到所有 Storage 节点上以保证数据安全,修改分片数量涉及到数据迁移,因此暂时不支持直接修改分片数量。NebulaGraph 采用切边方式将图切割,例如一个点存储在分片 x 中,kv 中会包含 VID 和 Tag 信息,然后挨着这条 kv,继续按顺序存储它的出边和入边,所以都在同一个分片。也因此,边会重复存储,因为点 a 的出边可能是点 b 的入边。Meta 服务负责存储和管理分片的位置信息,并且保证分片的负载均衡。参考文档:https://docs.nebula-graph.com.cn/3.3.0/1.introduction/3.nebula-graph-architecture/4.storage-service/#_5

题 5:「多选题」下列语句正确的是

A. RETURN timestamp(“2021-07-05T06:18:43.984000”);

B. MATCH (v:date1) RETURN v.date1.month;

C. WITH date({year: 1984, month: 10, day: 11}) AS x RETURN day + 1;

D. WITH time({hour: 12, minute: 31, second: 14}) AS d RETURN d;

正确答案:BD

解析:

选项 A 错误是因为不支持微秒,可以改成 RETURN timestamp("2021-07-05T06:18:43");RETURN timestamp("2021-07-05T06:18:43.000000");。选项 C 错误是因为语法错误,RETURN 的应该是 x+1,而不是 day+1。参考文档:https://docs.nebula-graph.com.cn/3.3.0/3.ngql-guide/3.data-types/4.date-and-time/#timestamp

题 6:「多选题」以下关于用户角色与权限的说法错误的是

A. 如需创建自定义角色,要同时在配置文件中修改 custom_role 和 role_privilege 参数

B. 一个用户在一个图空间内只能拥有一个角色权限

C. SHOW SPACES 只会返回当前用户有权限的空间

D. 只有 God 角色可以执行 SHOW USERS 和 SHOW SNAPSHOTS 语句

正确答案:A

解析:

NebulaGraph 暂时还不支持创建自定义角色,这两个参数也是完全的欺骗内容。一个用户在一个图空间内只能拥有一个角色权限,可以用 SHOW ROLES IN <space_name>; 查看具体权限。为了数据安全,SHOW SPACES 只会返回当前用户有权限的空间,也就是至少要对图空间有 GUEST 权限,才能看到该图空间。同样也是为了数据安全,只有最高权限的 God 角色账号才能执行 SHOW USERS 查看所有用户,以及 SHOW SNAPSHOTS 查看快照情况。参考文档:https://docs.nebula-graph.com.cn/3.3.0/7.data-security/1.authentication/3.role-list/

题 7:「单选题」以下哪项关于 BR 限制说法错误的是

A. Nebula Graph 版本需要为 v3.3.0

B. Nebula Listener 暂时不支持备份,且全文索引也不支持备份

C. 数据备份过程中,指定图空间中的 DDL、DML、DCL 和 TCL 语句都会阻塞

D. 数据恢复仅支持在相同拓扑的集群上进行

正确答案:C

解析:

数据备份过程中,指定图空间中的 DDL 和 DML 语句将会阻塞,其他语句不会阻塞。另外 D 选项所说的相同拓扑集群,是指集群的 Storage 主机数量及 IP 需一致。参考文档:https://docs.nebula-graph.com.cn/3.3.0/backup-and-restore/nebula-br/1.what-is-br/

题 8:「单选题」以下关于 NebulaGraph Exchange 说法错误的是

A. Writer 会将待导入的数据一次性写入到 NebulaGraph 中

B. Reader 读取不同来源的数据返回 DataFrame

C. Exchange 由 Reader、Processor 和 Writer 三部分组成

D. Processor 遍历 DataFrame 获取对应的值

正确答案:A

解析:

Writer 在遍历指定批处理的行数(batch 参数)后,会将获取的数据一次性写入到 NebulaGraph 中,而不是将待导入的数据一次性写入,那样做数据量太大会导致 OOM。参考文档:https://docs.nebula-graph.com.cn/3.3.0/nebula-exchange/about-exchange/ex-ug-what-is-exchange/

题 9:「单选题」以下关于运行日志错误的是

A. Meta 服务、Graph 服务和 Storage 服务的日志级别可以在各自的配置文件中查看,默认路径为 /usr/local/nebula/etc/

B. 日志详细级别值越大,日志记录越详细

C. 不能在 NebulaGraph 运行过程中删除日志目录,如果删除目录则日志不再打印且影响业务

D. 可以手动修改日志的级别

正确答案:C

解析:

在 NebulaGraph 运行过程中删除运行日志目录,日志不会继续打印,但是不会影响业务。重启服务可以恢复正常。参考文档:https://docs.nebula-graph.com.cn/3.3.0/5.configurations-and-logs/2.log-management/logs/#_2

题 10:「单选题」运行日志文件占用空间过大如何处理?以下选项中最合理的是

A. 运行用于删除日志的 nGQL 命令

B. 使用 crontab 设置定期任务回收日志文件

C. 使用 logrotate 回收日志

D. 肉眼识别删除日志

正确答案:C

解析:

nGQL 命令暂无删除日志的命令,因此 A 选项错误。选项 D 可以直接排除。对于 B 和 C 选项,crontab 虽然可以,但是 logrotate 可以更好地转储压缩日志文件,还可以结合 crontab 做更完善的自动任务,所以综合来看还是 logrotate 更合理。参考文档:https://docs.nebula-graph.com.cn/3.3.0/20.appendix/0.FAQ/#_11

谢谢你读完本文 (///▽///)

看完错题解析的小伙伴,可以来 NebulaGraph Academy 考一把 NGCP 或者 NGCI 认证考试哟~

在春节假期期间通过 NGCI 或者 NGCP 认证考试的小伙伴,除了有常规的证书和周边奖励之外,前 10 名通过 NGCI 或者通过 NGCP(不限排序)的小伙伴将获得 NebulaGraph 限量的兔年幸运公仔一只

点击这里,开启你的鸿图之旅吧:NebulaGraph 认证考试,考试说明:NebulaGraph 技能认证

变态难啊