diff --git a/docs-2.0/1.introduction/3.nebula-graph-architecture/4.storage-service.md b/docs-2.0/1.introduction/3.nebula-graph-architecture/4.storage-service.md index 9c632163621..2f49f9fbe47 100644 --- a/docs-2.0/1.introduction/3.nebula-graph-architecture/4.storage-service.md +++ b/docs-2.0/1.introduction/3.nebula-graph-architecture/4.storage-service.md @@ -80,7 +80,7 @@ NebulaGraph 使用自行开发的 KVStore,而不是其他开源 KVStore,原 - 点数据存储格式 - 相比 NebulaGraph 2.x 版本,3.x 版本的每个点多了一个不含 TagID 字段并且无 value 的 key,用于支持无 Tag 的点。 + 相比 NebulaGraph 2.x 版本,3.x 版本在开启**无 Tag** 的点配置后,每个点多了一个不含 TagID 字段并且无 value 的 key。 ![The vertex format of storage service](https://docs-cdn.nebula-graph.com.cn/figures/3.0-vertex-key.png) diff --git a/docs-2.0/1.introduction/3.vid.md b/docs-2.0/1.introduction/3.vid.md index ab4a0e02a30..38691028f2a 100644 --- a/docs-2.0/1.introduction/3.vid.md +++ b/docs-2.0/1.introduction/3.vid.md @@ -24,9 +24,9 @@ - NebulaGraph 1.x 只支持 VID 类型为`INT64`,从 2.x 开始支持`INT64`和`FIXED_STRING()`。在`CREATE SPACE`中通过参数`vid_type`可以指定 VID 类型。 -- 可以使用`id()`函数,指定或引用该点的 VID; +- 可以使用`id()`函数,指定或引用该点的 VID。 -- 可以使用`LOOKUP`或者`MATCH`语句,来通过属性索引查找对应的 VID; +- 可以使用`LOOKUP`或者`MATCH`语句,来通过属性索引查找对应的 VID。 - 性能上,直接通过 VID 找到点的语句性能最高,例如`DELETE xxx WHERE id(xxx) == "player100"`,或者`GO FROM "player100"`等语句。通过属性先查找 VID,再进行图操作的性能会变差,例如`LOOKUP | GO FROM $-.ids`等语句,相比前者多了一次内存或硬盘的随机读(`LOOKUP`)以及一次序列化(`|`)。 @@ -38,7 +38,7 @@ VID 的生成工作完全交给应用端,有一些通用的建议: - 通过有唯一性的属性组合来生成 VID,属性访问依赖于属性索引。 -- 通过 snowflake 等算法生成 VID,属性访问依赖于属性索引; +- 通过 snowflake 等算法生成 VID,属性访问依赖于属性索引。 - 如果个别记录的主键特别长,但绝大多数记录的主键都很短的情况,不要将`FIXED_STRING()`的`N`设置成超大,这会浪费大量内存和硬盘,也会降低性能。此时可通过 BASE64,MD5,hash 编码加拼接的方式来生成。 diff --git a/docs-2.0/2.quick-start/2.quick-start-on-cloud/2.connect-to-nebulagraph-on-cloud.md b/docs-2.0/2.quick-start/2.quick-start-on-cloud/2.connect-to-nebulagraph-on-cloud.md index 88bf35c094e..5f1803f323c 100644 --- a/docs-2.0/2.quick-start/2.quick-start-on-cloud/2.connect-to-nebulagraph-on-cloud.md +++ b/docs-2.0/2.quick-start/2.quick-start-on-cloud/2.connect-to-nebulagraph-on-cloud.md @@ -19,12 +19,12 @@ 3. 在实例列表中,单击目标实例的**服务实例ID**,或其右侧**操作**列的**详情**。 -4. 在**概览**页签的**基本信息**区域,查看**graph_private_ip**及**explorer_portal**信息。 +4. 在**概览**页签的**基本信息**区域,查看**nebula_private_ip**及**explorer_portal**信息。 5. 单击**explorer_portal**对应链接,进入 NebulaGraph Explorer 登录页面。 6. 填写登录信息,单击**登录**。 - - **Host**:`graph_private_ip地址:9669`,例如`192.168.98.160:9669`。 + - **Host**:`nebula_private_ip地址:9669`,例如`192.168.98.160:9669`。 - **用户名**:`root`。 - **密码**:任意密码。 diff --git a/docs-2.0/2.quick-start/6.cheatsheet-for-ngql-command.md b/docs-2.0/2.quick-start/6.cheatsheet-for-ngql-command.md index 34c9acf9028..a1ea5fc753d 100644 --- a/docs-2.0/2.quick-start/6.cheatsheet-for-ngql-command.md +++ b/docs-2.0/2.quick-start/6.cheatsheet-for-ngql-command.md @@ -31,7 +31,7 @@ | bit_and() | 逐位做 AND 操作。 | | bit_or() | 逐位做 OR 操作。 | | bit_xor() | 逐位做 XOR 操作。 | - | int size() | 返回列表或映射中元素的数量。 | + | int size() | 返回列表或映射中元素的数量,或字符串的长度。 | | int range(int start, int end, int step) | 返回`[start,end]`中指定步长的值组成的列表。步长`step`默认为 1。 | | int sign(double x) | 返回 x 的正负号。 如果 x 为`0`,则返回`0`。 如果 x 为负数,则返回`-1`。 如果 x 为正数,则返回`1`。 | | double e() | 返回自然对数的底 e(2.718281828459045)。 | @@ -61,7 +61,7 @@ | string toLower(string a) | 和`lower()`相同。 | | string upper(string a) | 返回大写形式的字符串。 | | string toUpper(string a) | 和`upper()`相同。 | - | int length(string a) | 以字节为单位,返回给定字符串的长度。 | + | int length(a) | 返回给定字符串的长度或路径的长度,单位分别是字节和跳数。 | | string trim(string a) | 删除字符串头部和尾部的空格。 | | string ltrim(string a) | 删除字符串头部的空格。 | | string rtrim(string a) | 删除字符串尾部的空格。 | @@ -84,13 +84,13 @@ | 函数 | 说明 | | :-------------------- | :------------------------------------------ | - | int now() | 根据当前系统返回当前时区的时间戳。 | - | timestamp timestamp() | 根据当前系统返回当前时区的时间戳。 | + | int now() | 根据当前系统返回当前时间戳。 | + | timestamp timestamp() | 根据当前系统返回当前时间戳。 | | date date() | 根据当前系统返回当前日期(UTC 时间)。 | | time time() | 根据当前系统返回当前时间(UTC 时间)。 | | datetime datetime() | 根据当前系统返回当前日期和时间(UTC 时间)。 | -* [Schema 函数](../3.ngql-guide/6.functions-and-expressions/4.schema.md) +* [Schema 相关函数](../3.ngql-guide/6.functions-and-expressions/4.schema.md) * 原生 nGQL 语句适用 @@ -186,14 +186,14 @@ | 匹配点 | `(v)` | 用户可以在一对括号中使用自定义变量来表示模式中的点。例如`(v)`。 | | 匹配 Tag | `MATCH (v:player) RETURN v` | 用户可以在点的右侧用`:`表示模式中的 Tag。 | | 匹配多 Tag | `MATCH (v:player:team) RETURN v LIMIT 10` | 用户可以用英文冒号(:)匹配多 Tag 的点。 | - | 匹配点的属性 | `MATCH (v:player{name:"Tim Duncan"}) RETURN v` | 用户可以在 Tag 的右侧用`{: }`表示模式中点的属性。 | + | 匹配点的属性 | `MATCH (v:player{name:"Tim Duncan"}) RETURN v`

`MATCH (v) WITH v, properties(v) as props, keys(properties(v)) as kk LIMIT 10000 WHERE [i in kk where props[i] == "Tim Duncan"] RETURN v` | 用户可以在 Tag 的右侧用`{: }`表示模式中点的属性;或者不指定 Tag 直接匹配点的属性。 | | 匹配单点 ID | `MATCH (v) WHERE id(v) == 'player101' RETURN v` | 用户可以使用点 ID 去匹配点。`id()`函数可以检索点的 ID。 | | 匹配多点 ID | `MATCH (v:player { name: 'Tim Duncan' })--(v2) WHERE id(v2) IN ["player101", "player102"] RETURN v2` | 要匹配多个点的 ID,可以用`WHERE id(v) IN [vid_list]`。 | | 匹配连接的点 | `MATCH (v:player{name:"Tim Duncan"})--(v2) RETURN v2.player.name AS Name` | 用户可以使用`--`符号表示两个方向的边,并匹配这些边连接的点。用户可以在`--`符号上增加`<`或`>`符号指定边的方向。 | | 匹配路径 | `MATCH p=(v:player{name:"Tim Duncan"})-->(v2) RETURN p` | 连接起来的点和边构成了路径。用户可以使用自定义变量命名路径。 | | 匹配边 | `MATCH (v:player{name:"Tim Duncan"})-[e]-(v2) RETURN e`
`MATCH ()<-[e]-() RETURN e LIMIT 3` | 除了用`--`、`-->`、`<--`表示未命名的边之外,用户还可以在方括号中使用自定义变量命名边。例如`-[e]-`。 | | 匹配 Edge type | `MATCH ()-[e:follow]->() RETURN e LIMIT 5` | 和点一样,用户可以用`:`表示模式中的 Edge type,例如`-[e:follow]-`。 | - | 匹配边的属性 | ` MATCH (v:player{name:"Tim Duncan"})-[e:follow{degree:95}]->(v2) RETURN e` | 用户可以用`{: }`表示模式中 Edge type 的属性,例如`[e:follow{likeness:95}]`。 | + | 匹配边的属性 | ` MATCH (v:player{name:"Tim Duncan"})-[e:follow{degree:95}]->(v2) RETURN e`

`MATCH ()-[e]->() WITH e, properties(e) as props, keys(properties(e)) as kk LIMIT 10000 WHERE [i in kk where props[i] == 90] RETURN e`| 用户可以用`{: }`表示模式中 Edge type 的属性,例如`[e:follow{likeness:95}]`;或者不指定 Edge type 直接匹配边的属性。 | | 匹配多个 Edge type | `MATCH (v:player{name:"Tim Duncan"})-[e:follow | :serve]->(v2) RETURN e` | 使用`|`可以匹配多个 Edge type,例如`[e:follow | :serve]`。第一个 Edge type 前的英文冒号(:)不可省略,后续 Edge type 前的英文冒号可以省略,例如`[e:follow | serve]`。 | | 匹配多条边 | `MATCH (v:player{name:"Tim Duncan"})-[]->(v2)<-[e:serve]-(v3) RETURN v2, v3` | 用户可以扩展模式,匹配路径中的多条边。 | | 匹配定长路径 | `MATCH p=(v:player{name:"Tim Duncan"})-[e:follow*2]->(v2) RETURN DISTINCT v2 AS Friends` | 用户可以在模式中使用`:*`匹配定长路径。`hop`必须是一个非负整数。`e`的数据类型是列表。 | diff --git a/docs-2.0/20.appendix/0.FAQ.md b/docs-2.0/20.appendix/0.FAQ.md index 2fe57534cc5..79349032d73 100644 --- a/docs-2.0/20.appendix/0.FAQ.md +++ b/docs-2.0/20.appendix/0.FAQ.md @@ -389,9 +389,9 @@ NebulaGraph {{ nebula.release }} 未提供运维命令以实现自动扩缩容 |服务类型|端口| |-|-| -|Meta|9559, 9560, 19559, 19560| -|Graph|9669, 19669, 19670| -|Storage|9777 ~ 9780, 19779, 19780| +|Meta|9559, 9560, 19559| +|Graph|9669, 19669| +|Storage|9777 ~ 9780, 19779| 如果修改过配置文件中预设的端口,请找出实际使用的端口并在防火墙中开放它们。 diff --git a/docs-2.0/20.appendix/6.eco-tool-version.md b/docs-2.0/20.appendix/6.eco-tool-version.md index 796f8371e4b..68668d7dd11 100644 --- a/docs-2.0/20.appendix/6.eco-tool-version.md +++ b/docs-2.0/20.appendix/6.eco-tool-version.md @@ -154,6 +154,17 @@ Docker Compose 可以快速部署 NebulaGraph 集群。如何使用请参见 [Do |:---|:---| | {{ nebula.tag }} | {{br.tag}}| +{{ent.ent_begin}} +## Backup & Restore (企业版) + +[Backup&Restore](../backup-and-restore/nebula-br-ent/1.br-ent-overview.md) 企业版是一款命令行界面(CLI)工具。通过 NebulaGraph BR(企业版),用户可以备份 NebulaGraph 企业版数据,并基于备份目录进行数据恢复。 + +|NebulaGraph 版本|BR 版本| +|:---|:---| +| {{ nebula.tag }} | {{br_ent.tag}}| + +{{ent.ent_end}} + ## NebulaGraph Bench [NebulaGraph Bench](https://github.com/vesoft-inc/nebula-bench/releases/tag/{{bench.tag}}) 用于测试 NebulaGraph 的基线性能数据,使用 LDBC v0.3.3 的标准数据集。 diff --git a/docs-2.0/20.appendix/error-code.md b/docs-2.0/20.appendix/error-code.md index 42173860f9e..df738bcef1e 100644 --- a/docs-2.0/20.appendix/error-code.md +++ b/docs-2.0/20.appendix/error-code.md @@ -7,180 +7,183 @@ NebulaGraph 运行出现问题时,会返回错误码。本文介绍错误码 - 如果出现错误但没有返回错误码,或错误码描述不清,请在[论坛](https://discuss.nebula-graph.com.cn/)或 [GitHub](https://github.com/vesoft-inc/nebula/issues) 反馈。 - 返回`0`表示执行成功。 -|错误码|说明| -|:---|:---| -|`-1`| 连接断开 | -|`-2`| 无法建立连接 | -|`-3`| RPC 失败 | -|`-4`| Raft leader 变更| -|`-5`| 图空间不存在 | -|`-6`| Tag 不存在 | -|`-7`| Edge type不存在 | -|`-8`| 索引不存在| -|`-9`| 边属性不存在| -|`-10`| Tag 属性不存在| -|`-11`| 当前角色不存在| -|`-12`| 当前配置不存在| -|`-13`| 当前主机不存在| -|`-15`| listener 不存在| -|`-16`| 当前分区不存在| -|`-17`| key 不存在| -|`-18`| 用户不存在| -|`-19`| 统计信息不存在| -|`-20`| 没有找到当前服务| -|`-21`| drainer 不存在| -|`-22`| drainer 客户端不存在| -|`-24`| 备份失败| -|`-25`| 备份的表为空| -|`-26`| 备份表失败| -|`-27`| multiget 无法获得所有数据| -|`-28`| 重建索引失败| -|`-29`| 密码无效| -|`-30`| 无法获得绝对路径| -|`-1001`| 身份验证失败| -|`-1002`| 无效会话| -|`-1003`| 会话超时| -|`-1004`| 语法错误| -|`-1005`| 执行错误| -|`-1006`| 语句为空| -|`-1008`| 权限不足| -|`-1009`| 语义错误| -|`-1010`| 超出最大连接数| -|`-1011`| 访问存储失败(仅有部分请求成功)| -|`-2001`| 主机不存在| -|`-2002`| 主机已经存在| -|`-2003`| 无效主机| -|`-2004`| 当前命令、语句、功能不支持| -|`-2007`| 配置项不能改变| -|`-2008`| 参数与 meta 数据冲突| -|`-2009`| 无效的参数| -|`-2010`| 错误的集群| -|`-2011`| listener 冲突| -|`-2012`| 主机不存在| -|`-2013`| Schema 名字已存在| -|`-2014`| 与 Tag 或 Edge Type 相关的索引存在,不能被删除 | -|`-2015`| 仍有图空间在主机上,不能被删除| -|`-2021`| 存储数据失败| -|`-2022`| 存储段非法| -|`-2023`| 无效的数据均衡计划| -|`-2024`| 集群已经处于数据均衡状态| -|`-2025`| 没有正在运行的数据均衡计划| -|`-2026`| 缺少有效的主机| -|`-2027`| 已经损坏的数据均衡计划| -|`-2029`| 缺少有效的 drainer| -|`-2030`| 回收用户角色失败| -|`-2031`| 无效的分区数量| -|`-2032`| 无效的副本因子| -|`-2033`| 无效的字符集| -|`-2034`| 无效的字符排序规则| -|`-2035`| 字符集和字符排序规则不匹配| -|`-2040`| 生成快照失败| -|`-2041`| 写入块数据失败| -|`-2044`| 增加新的任务失败| -|`-2045`| 停止任务失败| -|`-2046`| 保存任务信息失败| -|`-2047`| 数据均衡失败| -|`-2048`| 当前任务还没有完成| -|`-2049`| 任务报表失效| -|`-2050`| 当前任务不在图空间内| -|`-2051`| 当前任务需要恢复| -|`-2052`| 任务已经失败或完成 | -|`-2053`| 任务默认状态 | -|`-2054`| 给定任务不支持停止 | -|`-2055`| leader 分布未上报,因此无法将任务发送到存储 | -|`-2065`| 无效的任务| -|`-2066`| 备份终止(正在创建索引)| -|`-2067`| 备份时图空间不存在| -|`-2068`| 备份恢复失败| -|`-2069`| 会话不存在| -|`-2070`| 获取集群信息失败| -|`-2071`| 获取集群信息时无法获取绝对路径| -|`-2072`| 获取集群信息时无法获得 agent| -|`-2073`| query 未找到| -|`-2074`| agent 没有汇报心跳| -|`-2080`| 无效变量| -|`-2081`| 变量值和类型不匹配| -|`-3001`| 选举时无法达成共识| -|`-3002`| key 已经存在| -|`-3003`| 数据类型不匹配| -|`-3004`| 无效的字段值| -|`-3005`| 无效的操作| -|`-3006`| 当前值不允许为空| -|`-3007`| 字段非空或者没有默认值时,字段值必须设置| -|`-3008`| 取值超出了当前类型的范围| -|`-3010`| 数据冲突| -|`-3011`| 写入被延迟| -|`-3021`| 不正确的数据类型| -|`-3022`| VID 长度无效| -|`-3031`| 无效的过滤器| -|`-3032`| 无效的字段更新| -|`-3033`| 无效的 KV 存储| -|`-3034`| peer 无效| -|`-3035`| 重试次数耗光| -|`-3036`| leader 转换失败| -|`-3037`| 无效的统计类型| -|`-3038`| VID 无效| -|`-3040`| 加载元信息失败| -|`-3041`| 生成 checkpoint 失败| -|`-3042`| 生成 checkpoint 被阻塞| -|`-3043`| 数据被过滤| -|`-3044`| 无效的数据| -|`-3045`| 并发写入同一条边发生冲突| -|`-3046`| 并发写入同一个点发生冲突| -|`-3047`| 锁已经失效| -|`-3051`| 无效的任务参数| -|`-3052`| 用户取消了任务| -|`-3053`| 任务执行失败| -|`-3060`| 执行计划被清除| -|`-3061`| 客户端和服务端版本不兼容| -|`-3062`| 获取 ID 序号失败| -|`-3070`| 收到请求时心跳流程未完成| -|`-3071`| 收到旧 leader 的过时心跳(已选举出新的 leader)| -|`-3073`| 并发写入时与后到的请求发生冲突| -|`-3500`| 未知的分区| -|`-3501`| raft 日志落后| -|`-3502`| raft 日志过期| -|`-3503`| 心跳信息已经过期| -|`-3504`| 未知的追加日志| -|`-3511`| 等待快照完成| -|`-3512`| 发送快照过程出错| -|`-3513`| 无效的接收端| -|`-3514`| Raft 没有启动| -|`-3515`| Raft 已经停止| -|`-3516`| 错误的角色| -|`-3521`| 写入 WAL 失败| -|`-3522`| 主机已经停止| -|`-3523`| 请求数量过多| -|`-3524`| 持久化快照失败| -|`-3525`| RPC 异常| -|`-3526`| 没有发现 WAL 日志| -|`-3527`| 主机暂停| -|`-3528`| 写入被堵塞| -|`-3529`| 缓存溢出| -|`-3530`| 原子操作失败| -|`-3531`| leader 租约过期| -|`-3532`| Raft 已经同步数据| -|`-4001`| drainer 日志落后| -|`-4002`| drainer 日志过期| -|`-4003`| drainer 数据存储无效| -|`-4004`| 图空间不匹配| -|`-4005`| 分区不匹配| -|`-4006`| 数据冲突| -|`-4007`| 请求冲突| -|`-4008`| 数据非法| -|`-5001`| 缓存配置错误| -|`-5002`| 空间不足| -|`-5003`| 没有命中缓存| -|`-5005`| 写缓存失败| -|`-7001`| 机器节点数超出限制| -|`-7002`| 解析证书失败| -|`-8000`| 未知错误| +|错误名称|错误码|说明| +|:---|:---|:---| +|`E_DISCONNECTED`|`-1`| 连接断开 | +|`E_FAIL_TO_CONNECT`|`-2`| 无法建立连接 | +|`E_RPC_FAILURE`|`-3`| RPC 失败 | +|`E_LEADER_CHANGED`|`-4`| Raft leader 变更| +|`E_SPACE_NOT_FOUND`|`-5`| 图空间不存在 | +|`E_TAG_NOT_FOUND`|`-6`| Tag 不存在 | +|`E_EDGE_NOT_FOUND`|`-7`| Edge type不存在 | +|`E_INDEX_NOT_FOUND`|`-8`| 索引不存在| +|`E_EDGE_PROP_NOT_FOUND`|`-9`| 边属性不存在| +|`E_TAG_PROP_NOT_FOUND`|`-10`| Tag 属性不存在| +|`E_ROLE_NOT_FOUND`|`-11`| 当前角色不存在| +|`E_CONFIG_NOT_FOUND`|`-12`| 当前配置不存在| +|`E_MACHINE_NOT_FOUND`|`-13`| 当前主机不存在| +|`E_LISTENER_NOT_FOUND`|`-15`| listener 不存在| +|`E_PART_NOT_FOUND`|`-16`| 当前分区不存在| +|`E_KEY_NOT_FOUND`|`-17`| key 不存在| +|`E_USER_NOT_FOUND`|`-18`| 用户不存在| +|`E_STATS_NOT_FOUND`|`-19`| 统计信息不存在| +|`E_SERVICE_NOT_FOUND`|`-20`| 没有找到当前服务| +|`E_BACKUP_FAILED`|`-24`| 备份失败| +|`E_BACKUP_EMPTY_TABLE`|`-25`| 备份的表为空| +|`E_BACKUP_TABLE_FAILED`|`-26`| 备份表失败| +|`E_PARTIAL_RESULT`|`-27`| multiget 无法获得所有数据| +|`E_REBUILD_INDEX_FAILED`|`-28`| 重建索引失败| +|`E_INVALID_PASSWORD`|`-29`| 密码无效| +|`E_FAILED_GET_ABS_PATH`|`-30`| 无法获得绝对路径| +|`E_BAD_USERNAME_PASSWORD`|`-1001`| 身份验证失败| +|`E_SESSION_INVALID`|`-1002`| 无效会话| +|`E_SESSION_TIMEOUT`|`-1003`| 会话超时| +|`E_SYNTAX_ERROR`|`-1004`| 语法错误| +|`E_EXECUTION_ERROR`|`-1005`| 执行错误| +|`E_STATEMENT_EMPTY`|`-1006`| 语句为空| +|`E_BAD_PERMISSION`|`-1008`| 权限不足| +|`E_SEMANTIC_ERROR`|`-1009`| 语义错误| +|`E_TOO_MANY_CONNECTIONS`|`-1010`| 超出最大连接数| +|`E_PARTIAL_SUCCEEDED`|`-1011`| 访问存储失败(仅有部分请求成功)| +|`E_NO_HOSTS`|`-2001`| 主机不存在| +|`E_EXISTED`|`-2002`| 主机已经存在| +|`E_INVALID_HOST`|`-2003`| 无效主机| +|`E_UNSUPPORTED`|`-2004`| 当前命令、语句、功能不支持| +|`E_NOT_DROP`|`-2005`|不允许删除| +|`E_CONFIG_IMMUTABLE`|`-2007`| 配置项不能改变| +|`E_CONFLICT`|`-2008`| 参数与 meta 数据冲突| +|`E_INVALID_PARM`|`-2009`| 无效的参数| +|`E_WRONGCLUSTER`|`-2010`| 错误的集群| +|`E_ZONE_NOT_ENOUGH`|`-2011`| listener 冲突| +|`E_ZONE_IS_EMPTY`|`-2012`| 主机不存在| +|`E_SCHEMA_NAME_EXISTS`|`-2013`| Schema 名字已存在| +|`E_RELATED_INDEX_EXISTS`|`-2014`| 与 Tag 或 Edge Type 相关的索引存在,不能被删除 | +|`E_RELATED_SPACE_EXISTS`|`-2015`| 仍有图空间在主机上,不能被删除| +|`E_STORE_FAILURE`|`-2021`| 存储数据失败| +|`E_STORE_SEGMENT_ILLEGAL`|`-2022`| 存储段非法| +|`E_BAD_BALANCE_PLAN`|`-2023`| 无效的数据均衡计划| +|`E_BALANCED`|`-2024`| 集群已经处于数据均衡状态| +|`E_NO_RUNNING_BALANCE_PLAN`|`-2025`| 没有正在运行的数据均衡计划| +|`E_NO_VALID_HOST`|`-2026`| 缺少有效的主机| +|`E_CORRUPTED_BALANCE_PLAN`|`-2027`| 已经损坏的数据均衡计划| +|`E_IMPROPER_ROLE`|`-2030`| 回收用户角色失败| +|`E_INVALID_PARTITION_NUM`|`-2031`| 无效的分区数量| +|`E_INVALID_REPLICA_FACTOR`|`-2032`| 无效的副本因子| +|`E_INVALID_CHARSET`|`-2033`| 无效的字符集| +|`E_INVALID_COLLATE`|`-2034`| 无效的字符排序规则| +|`E_CHARSET_COLLATE_NOT_MATCH`|`-2035`| 字符集和字符排序规则不匹配| +|`E_SNAPSHOT_FAILURE`|`-2040`| 生成快照失败| +|`E_BLOCK_WRITE_FAILURE`|`-2041`| 写入块数据失败| +|`E_ADD_JOB_FAILURE`|`-2044`| 增加新的任务失败| +|`E_STOP_JOB_FAILURE`|`-2045`| 停止任务失败| +|`E_SAVE_JOB_FAILURE`|`-2046`| 保存任务信息失败| +|`E_BALANCER_FAILURE`|`-2047`| 数据均衡失败| +|`E_JOB_NOT_FINISHED`|`-2048`| 当前任务还没有完成| +|`E_TASK_REPORT_OUT_DATE`|`-2049`| 任务报表失效| +|`E_JOB_NOT_IN_SPACE`|`-2050`| 当前任务不在图空间内| +|`E_JOB_NEED_RECOVER`|`-2051`| 当前任务需要恢复| +|`E_JOB_ALREADY_FINISH`|`-2052`| 任务已经失败或完成 | +|`E_JOB_SUBMITTED`|`-2053`| 任务默认状态 | +|`E_JOB_NOT_STOPPABLE`|`-2054`| 给定任务不支持停止 | +|`E_JOB_HAS_NO_TARGET_STORAGE`|`-2055`| leader 分布未上报,因此无法将任务发送到存储 | +|`E_INVALID_JOB`|`-2065`| 无效的任务| +|`E_BACKUP_BUILDING_INDEX`|`-2066`| 备份终止(正在创建索引)| +|`E_BACKUP_SPACE_NOT_FOUND`|`-2067`| 备份时图空间不存在| +|`E_RESTORE_FAILURE`|`-2068`| 备份恢复失败| +|`E_SESSION_NOT_FOUND`|`-2069`| 会话不存在| +|`E_LIST_CLUSTER_FAILURE`|`-2070`| 获取集群信息失败| +|`E_LIST_CLUSTER_GET_ABS_PATH_FAILURE`|`-2071`| 获取集群信息时无法获取绝对路径| +|`E_LIST_CLUSTER_NO_AGENT_FAILURE`|`-2072`| 获取集群信息时无法获得 agent| +|`E_QUERY_NOT_FOUND`|`-2073`| query 未找到| +|`E_AGENT_HB_FAILUE`|`-2074`| agent 没有汇报心跳| +|`E_CONSENSUS_ERROR`|`-3001`| 选举时无法达成共识| +|`E_KEY_HAS_EXISTS`|`-3002`| key 已经存在| +|`E_DATA_TYPE_MISMATCH`|`-3003`| 数据类型不匹配| +|`E_INVALID_FIELD_VALUE`|`-3004`| 无效的字段值| +|`E_INVALID_OPERATION`|`-3005`| 无效的操作| +|`E_NOT_NULLABLE`|`-3006`| 当前值不允许为空| +|`E_FIELD_UNSET`|`-3007`| 字段非空或者没有默认值时,字段值必须设置| +|`E_OUT_OF_RANGE`|`-3008`| 取值超出了当前类型的范围| +|`E_DATA_CONFLICT_ERROR`|`-3010`| 数据冲突| +|`E_WRITE_STALLED`|`-3011`| 写入被延迟| +|`E_IMPROPER_DATA_TYPE`|`-3021`| 不正确的数据类型| +|`E_INVALID_SPACEVIDLEN`|`-3022`| VID 长度无效| +|`E_INVALID_FILTER`|`-3031`| 无效的过滤器| +|`E_INVALID_UPDATER`|`-3032`| 无效的字段更新| +|`E_INVALID_STORE`|`-3033`| 无效的 KV 存储| +|`E_INVALID_PEER`|`-3034`| peer 无效| +|`E_RETRY_EXHAUSTED`|`-3035`| 重试次数耗光| +|`E_TRANSFER_LEADER_FAILED`|`-3036`| leader 转换失败| +|`E_INVALID_STAT_TYPE`|`-3037`| 无效的统计类型| +|`E_INVALID_VID`|`-3038`| VID 无效| +|`E_LOAD_META_FAILED`|`-3040`| 加载元信息失败| +|`E_FAILED_TO_CHECKPOINT`|`-3041`| 生成 checkpoint 失败| +|`E_CHECKPOINT_BLOCKED`|`-3042`| 生成 checkpoint 被阻塞| +|`E_FILTER_OUT`|`-3043`| 数据被过滤| +|`E_INVALID_DATA`|`-3044`| 无效的数据| +|`E_MUTATE_EDGE_CONFLICT`|`-3045`| 并发写入同一条边发生冲突| +|`E_MUTATE_TAG_CONFLICT`|`-3046`| 并发写入同一个点发生冲突| +|`E_OUTDATED_LOCK`|`-3047`| 锁已经失效| +|`E_INVALID_TASK_PARA`|`-3051`| 无效的任务参数| +|`E_USER_CANCEL`|`-3052`| 用户取消了任务| +|`E_TASK_EXECUTION_FAILED`|`-3053`| 任务执行失败| +|`E_PLAN_IS_KILLED`|`-3060`| 执行计划被清除| +|`E_NO_TERM`|`-3070`| 收到请求时心跳流程未完成| +|`E_OUTDATED_TERM`|`-3071`| 收到旧 leader 的过时心跳(已选举出新的 leader)| +|`E_WRITE_WRITE_CONFLICT`|`-3073`| 并发写入时与后到的请求发生冲突| +|`E_RAFT_UNKNOWN_PART`|`-3500`| 未知的分区| +|`E_RAFT_LOG_GAP`|`-3501`| raft 日志落后| +|`E_RAFT_LOG_STALE`|`-3502`| raft 日志过期| +|`E_RAFT_TERM_OUT_OF_DATE`|`-3503`| 心跳信息已经过期| +|`E_RAFT_UNKNOWN_APPEND_LOG`|`-3504`| 未知的追加日志| +|`E_RAFT_WAITING_SNAPSHOT`|`-3511`| 等待快照完成| +|`E_RAFT_SENDING_SNAPSHOT`|`-3512`| 发送快照过程出错| +|`E_RAFT_INVALID_PEER`|`-3513`| 无效的接收端| +|`E_RAFT_NOT_READY`|`-3514`| Raft 没有启动| +|`E_RAFT_STOPPED`|`-3515`| Raft 已经停止| +|`E_RAFT_BAD_ROLE`|`-3516`| 错误的角色| +|`E_RAFT_WAL_FAIL`|`-3521`| 写入 WAL 失败| +|`E_RAFT_HOST_STOPPED`|`-3522`| 主机已经停止| +|`E_RAFT_TOO_MANY_REQUESTS`|`-3523`| 请求数量过多| +|`E_RAFT_PERSIST_SNAPSHOT_FAILED`|`-3524`| 持久化快照失败| +|`E_RAFT_RPC_EXCEPTION`|`-3525`| RPC 异常| +|`E_RAFT_NO_WAL_FOUND`|`-3526`| 没有发现 WAL 日志| +|`E_RAFT_HOST_PAUSED`|`-3527`| 主机暂停| +|`E_RAFT_WRITE_BLOCKED`|`-3528`| 写入被堵塞| +|`E_RAFT_BUFFER_OVERFLOW`|`-3529`| 缓存溢出| +|`E_RAFT_ATOMIC_OP_FAILED`|`-3530`| 原子操作失败| +|`E_LEADER_LEASE_FAILED`|`-3531`| leader 租约过期| +|`E_RAFT_CAUGHT_UP`|`-3532`| Raft 已经同步数据| diff --git a/docs-2.0/20.appendix/learning-path.md b/docs-2.0/20.appendix/learning-path.md index 32a674f299b..8a25cae290c 100644 --- a/docs-2.0/20.appendix/learning-path.md +++ b/docs-2.0/20.appendix/learning-path.md @@ -139,7 +139,7 @@ | 文档 | | ------------------------------------------------------------ | - |[创建快照](https://docs.nebula-graph.com.cn/{{nebula.release}}/7.data-security/3.manage-snapshot/#_5)| + |[创建快照](https://docs.nebula-graph.com.cn/{{nebula.release}}/backup-and-restore/3.manage-snapshot/#_5)| (v2) return length(p); ++-----------+ +| length(p) | ++-----------+ +| 1 | +| 1 | +| 1 | ++-----------+ +``` + ## trim() trim() 删除指定字符串头部和尾部的空格。 diff --git a/docs-2.0/3.ngql-guide/6.functions-and-expressions/3.date-and-time.md b/docs-2.0/3.ngql-guide/6.functions-and-expressions/3.date-and-time.md index 7dba1cfe7a7..0fafe547e94 100644 --- a/docs-2.0/3.ngql-guide/6.functions-and-expressions/3.date-and-time.md +++ b/docs-2.0/3.ngql-guide/6.functions-and-expressions/3.date-and-time.md @@ -4,8 +4,8 @@ NebulaGraph 支持以下内置日期时间函数。 |函数| 说明 | |:---- | :----| -|int now() | 根据当前系统返回当前时区的时间戳。 | -|timestamp timestamp() | 根据当前系统返回当前时区的时间戳。 | +|int now() | 根据当前系统返回当前时间戳。 | +|timestamp timestamp() | 根据当前系统返回当前时间戳。 | |date date() | 根据当前系统返回当前日期(UTC 时间)。 | |time time() | 根据当前系统返回当前时间(UTC 时间)。 | |datetime datetime() | 根据当前系统返回当前日期和时间(UTC 时间)。 | diff --git a/docs-2.0/3.ngql-guide/6.functions-and-expressions/4.schema.md b/docs-2.0/3.ngql-guide/6.functions-and-expressions/4.schema.md index f82b6a748e9..e1b61165a57 100644 --- a/docs-2.0/3.ngql-guide/6.functions-and-expressions/4.schema.md +++ b/docs-2.0/3.ngql-guide/6.functions-and-expressions/4.schema.md @@ -1,8 +1,13 @@ -# Schema 函数 +# Schema 相关函数 -本文介绍 NebulaGraph 支持的 Schema 函数。Schema 函数分为两类,一类适用于原生 nGQL 语句,另一类适用于 openCypher 兼容语句。 +本文介绍 NebulaGraph 支持的 [Schema](../../1.introduction/2.data-model.md) 相关的函数。 -## 原生 nGQL 语句适用 +Schema 相关的函数分为两类: + +- [适用于原生 nGQL 语句](#ngql) +- [适用于 openCypher 兼容语句](#opencypher) + +## 原生 nGQL 语句适用 原生 nGQL 语句的`YIELD`和`WHERE`子句中可以使用如下介绍的函数。 @@ -114,6 +119,10 @@ nebula> GO FROM "player100" OVER follow \ +-------------+-------------+ ``` +!!! note + + src(edge) 和 [properties(`$^`)](../5.operators/5.property-reference.md) 查找起始点的语义不同。src(edge) 始终表示图数据库中边的起始点 ID,而 properties(`$^`) 表示探索开始时的点数据,例如示例中`GO FROM "player100"`中`player100`这个点的数据。 + ### dst(edge) dst(edge) 返回边的目的点 ID。 @@ -135,6 +144,10 @@ nebula> GO FROM "player100" OVER follow \ +-------------+-------------+ ``` +!!! note + + dst(edge) 始终表示图数据库中边的目的点 ID。 + ### rank(edge) rank(edge) 返回边的 rank。 @@ -204,7 +217,7 @@ edges 返回子图中的边的信息。详情参见 [GET SUBGRAPH](../16.subgrap path 返回路径信息。详情参见 [FIND PATH](../16.subgraph-and-path/2.find-path.md)。 -## openCypher 兼容语句适用 +## openCypher 兼容语句适用 openCypher 兼容语句的`RETURN`和`WHERE`子句中可以使用如下介绍的函数。 @@ -339,7 +352,7 @@ nebula> MATCH (v:player{name:"Tim Duncan"})-[e]->() \ ### startNode() -startNode() 获取一条边或一条路径并返回它的起始点信息,包括点 ID、Tag、属性和值。 +startNode() 获取一条路径并返回它的起始点信息,包括点 ID、Tag、属性和值。 语法:`startNode()` @@ -357,7 +370,7 @@ nebula> MATCH p = (a :player {name : "Tim Duncan"})-[r:serve]-(t) \ ### endNode() -endNode() 获取一条边或一条路径并返回它的目的点信息,包括点 ID、Tag、属性和值。 +endNode() 获取一条路径并返回它的目的点信息,包括点 ID、Tag、属性和值。 语法:`endNode()` diff --git a/docs-2.0/3.ngql-guide/7.general-query-statements/2.match.md b/docs-2.0/3.ngql-guide/7.general-query-statements/2.match.md index 1a6f849be4a..8e8d90101cb 100644 --- a/docs-2.0/3.ngql-guide/7.general-query-statements/2.match.md +++ b/docs-2.0/3.ngql-guide/7.general-query-statements/2.match.md @@ -24,24 +24,29 @@ MATCH [] RETURN []; - `clause_2`:支持`ORDER BY`、`LIMIT`子句。 -## 注意事项 +## 使用限制 -除以下三种情况之外,请确保 `MATCH` 语句有**至少**一个[索引](../14.native-index-statements/1.create-native-index.md)可用。 +未创建[索引](../14.native-index-statements/1.create-native-index.md)时,仅以下情况支持使用`MATCH`查询。当使用`MATCH`语句出现报错时,用户可以创建并重建索引后执行查询语句。 - `MATCH`语句中`WHERE`子句使用 id() 函数指定了点的 VID,不需要创建索引即可执行。 -- 当遍历所有点边时,例如`MATCH (v) RETURN v LIMIT N`,不需要创建索引,但必须使用`LIMIT`限制输出结果数量。 +- 当遍历所有点或边时,例如`MATCH (v) RETURN v LIMIT N`、`MATCH ()-[e]->() RETURN e LIMIT N`。 -- 当遍历指定 Tag 的点或指定 Edge Type 的边时,例如`MATCH (v:player) RETURN v LIMIT N`,不需要创建索引,但必须使用`LIMIT`限制输出结果数量。 +- 当遍历指定 Tag 的点,例如`MATCH (v:player) RETURN v LIMIT N`。 + +- 当遍历指定 Edge Type 并指定边的方向,例如`MATCH ()-[e:follow]->() RETURN e LIMIT N`。 !!! note - 目前 MATCH 语句无法查询到悬挂边。 + - 目前 MATCH 语句无法查询到悬挂边。 + - 不支持没有索引时同时遍历指定的 Tag 和 Edge Type,例如执行`MATCH (v:player)-[e:follow]->() RETURN e LIMIT N`会报错。 !!! compatibility "历史版本兼容性" 从 3.0.0 版本开始,为了区别不同 Tag 的属性,返回属性时必须额外指定 Tag 名称。即从`RETURN <变量名>.<属性名>`改为`RETURN <变量名>..<属性名>`。 + + ## 示例 ### 创建索引 @@ -156,8 +161,6 @@ nebula> MATCH (v:player:actor) \ +----------------------------------------------------------------------------------------+ ``` - - ### 匹配点的属性 用户可以在 Tag 的右侧用`{: }`表示模式中点的属性。 @@ -190,6 +193,19 @@ nebula> MATCH (v:player) \ 在 openCypher 9 中,`=`是相等运算符,在 nGQL 中,`==`是相等运算符,`=`是赋值运算符。 +用户也可以不指定 Tag,直接匹配点的属性。 + +```ngql +nebula> MATCH (v) \ + WITH v, properties(v) as props, keys(properties(v)) as kk \ + LIMIT 10000 WHERE [i in kk where props[i] == "Tim Duncan"] \ + RETURN v; ++----------------------------------------------------+ +| v | ++----------------------------------------------------+ +| ("player100" :player{age: 42, name: "Tim Duncan"}) | ++----------------------------------------------------+ +``` ### 匹配点 ID 用户可以使用点 ID 去匹配点。`id()`函数可以检索点的 ID。 @@ -365,10 +381,6 @@ nebula> MATCH ()-[e:follow]->() \ ### 匹配边的属性 -!!! Note - - 匹配边的属性的前提是 Edge type 本身有对应属性的索引,否则,用户无法执行 `MATCH` 语句匹配该属性。 - 用户可以用`{: }`表示模式中 Edge type 的属性,例如`[e:follow{likeness:95}]`。 ```ngql @@ -382,6 +394,24 @@ nebula> MATCH (v:player{name:"Tim Duncan"})-[e:follow{degree:95}]->(v2) \ +--------------------------------------------------------+ ``` +用户也可以不指定 Edge type,直接匹配边的属性。 + +```ngql +nebula> MATCH ()-[e]->() \ + WITH e, properties(e) as props, keys(properties(e)) as kk \ + LIMIT 10000 WHERE [i in kk where props[i] == 90] \ + RETURN e; ++----------------------------------------------------+ +| e | ++----------------------------------------------------+ +| [:follow "player125"->"player100" @0 {degree: 90}] | +| [:follow "player140"->"player114" @0 {degree: 90}] | +| [:follow "player133"->"player144" @0 {degree: 90}] | +| [:follow "player133"->"player114" @0 {degree: 90}] | +... ++----------------------------------------------------+ +``` + ### 匹配多个 Edge type 使用`|`可以匹配多个 Edge type,例如`[e:follow|:serve]`。第一个 Edge type 前的英文冒号(:)不可省略,后续 Edge type 前的英文冒号可以省略,例如`[e:follow|serve]`。 @@ -448,6 +478,28 @@ nebula> MATCH (v:player{name:"Tim Duncan"}) -[*0]-> (v2) \ +----------------------------------------------------+ ``` +!!! Note + + 如果想要通过描述多跳的边的过滤条件,比如`-[e:follow*2]->`,这时候 `e` 不再是单条边时候的数据类型了,而是一列边组成的列表,例如: + 以下语句可以运行但是没有返回数据,因为`e`是一个列表,没有`.degree`的属性。 + ```ngql + nebula> MATCH p=(v:player{name:"Tim Duncan"})-[e:follow*2]->(v2) \ + WHERE e.degree > 1 \ + RETURN DISTINCT v2 AS Friends; + ``` + 这是正确的表达: + ```ngql + nebula> MATCH p=(v:player{name:"Tim Duncan"})-[e:follow*2]->(v2) \ + WHERE ALL(e_ in e WHERE e_.degree > 0) \ + RETURN DISTINCT v2 AS Friends; + ``` + 进一步,这是表达对多跳边的第一跳的边属性过滤的表达: + ```ngql + nebula> MATCH p=(v:player{name:"Tim Duncan"})-[e:follow*2]->(v2) \ + WHERE e[0].degree > 98 \ + RETURN DISTINCT v2 AS Friends; + ``` + ### 匹配变长路径 用户可以在模式中使用`:*[minHop..maxHop]`匹配变长路径。 diff --git a/docs-2.0/3.ngql-guide/7.general-query-statements/3.go.md b/docs-2.0/3.ngql-guide/7.general-query-statements/3.go.md index 85edb11a54a..77657ccca98 100644 --- a/docs-2.0/3.ngql-guide/7.general-query-statements/3.go.md +++ b/docs-2.0/3.ngql-guide/7.general-query-statements/3.go.md @@ -43,9 +43,10 @@ YIELD [DISTINCT] !!! Note - 遍历多个 Edge type 时,`WHERE`子句有一些限制。例如不支持`WHERE edge1.prop1 > edge2.prop2`。 + - 遍历多个 Edge type 时,`WHERE`子句有一些限制。例如不支持`WHERE edge1.prop1 > edge2.prop2`。 + - GO 语句执行时先遍历所有的点,然后再根据过滤器条件进行过滤。 -- `YIELD [DISTINCT] `:定义需要返回的输出。` `建议使用 [Schema 函数](../6.functions-and-expressions/4.schema.md),当前支持`src(edge)`、`dst(edge)`、`type(edge)`等,暂不支持嵌套函数。详情参见 [YIELD](../8.clauses-and-options/yield.md)。 +- `YIELD [DISTINCT] `:定义需要返回的输出。` `建议使用 [Schema 相关函数](../6.functions-and-expressions/4.schema.md),当前支持`src(edge)`、`dst(edge)`、`type(edge)`等,暂不支持嵌套函数。详情参见 [YIELD](../8.clauses-and-options/yield.md)。 - `SAMPLE `:用于在结果集中取样。详情参见 [SAMPLE](../8.clauses-and-options/sample.md)。 diff --git a/docs-2.0/3.ngql-guide/7.general-query-statements/5.lookup.md b/docs-2.0/3.ngql-guide/7.general-query-statements/5.lookup.md index e8bf1a6cbea..4635a10512a 100644 --- a/docs-2.0/3.ngql-guide/7.general-query-statements/5.lookup.md +++ b/docs-2.0/3.ngql-guide/7.general-query-statements/5.lookup.md @@ -59,7 +59,8 @@ YIELD [AS ] - 不支持运算表达式和函数表达式中嵌套 AliasProp 表达式。 - 不支持 XOR 运算符。 - 不支持除`STARTS WITH`之外的字符串操作。 -- 不支持图模式 +- 不支持过滤 `rank()`。 +- 不支持图模式. ## 检索点 diff --git a/docs-2.0/3.ngql-guide/7.general-query-statements/optional-match.md b/docs-2.0/3.ngql-guide/7.general-query-statements/optional-match.md index c8cdd8a1ede..e25925621e4 100644 --- a/docs-2.0/3.ngql-guide/7.general-query-statements/optional-match.md +++ b/docs-2.0/3.ngql-guide/7.general-query-statements/optional-match.md @@ -1,5 +1,9 @@ # OPTIONAL MATCH +!!! caution + + 目前 `OPTIONAL MATCH` 为 Beta 功能,后续可能会有一定优化调整。 + `OPTIONAL MATCH`通常与`MATCH`语句一起使用,作为`MATCH`语句的可选项去匹配命中的模式,如果没有命中对应的模式,对应的列返回`NULL`。 ## openCypher 兼容性 diff --git a/docs-2.0/3.ngql-guide/8.clauses-and-options/group-by.md b/docs-2.0/3.ngql-guide/8.clauses-and-options/group-by.md index 0591c2c2ddb..66f0d7f5f38 100644 --- a/docs-2.0/3.ngql-guide/8.clauses-and-options/group-by.md +++ b/docs-2.0/3.ngql-guide/8.clauses-and-options/group-by.md @@ -57,8 +57,6 @@ nebula> GO FROM "player100" OVER follow BIDIRECT \ +---------------------+------------+ ``` -## 用函数进行分组和计算 - ```ngql # 查找所有连接到 player100 的点,并根据起始点进行分组,返回 degree 的总和。 nebula> GO FROM "player100" OVER follow \ @@ -73,3 +71,26 @@ nebula> GO FROM "player100" OVER follow \ ``` `sum()`函数详情请参见[内置数学函数](../6.functions-and-expressions/1.math.md)。 + + +## 隐式分组 + +在上述 nGQL 语句中明确写出`GROUP BY`并起到分组字段作用的用法称为`GROUP BY`显示用法;而在 openCypher 语句中`GROUP BY`的用法是隐式的,即在语句中不用写出`GROUP BY`也可起到分组字段的作用。nGQL 语句中显示地`GROUP BY`用法与 openCypher 语句中的隐式地`GROUP BY`用法相同,并且 nGQL 语句兼容 openCypher 的用法,即也支持隐式地使用`GROUP BY`。有关`GROUP BY`的隐式用法,请参见[how-to-make-group-by-in-a-cypher-query](https://stackoverflow.com/questions/52722671/how-to-make-group-by-in-a-cypher-query)。 + +例如:查询 34 岁以上的球员中完全重叠服役的区间。 + +```ngql +nebula> LOOKUP ON player WHERE player.age > 34 YIELD id(vertex) AS v | \ + GO FROM $-.v OVER serve YIELD serve.start_year AS start_year, serve.end_year AS end_year | \ + YIELD $-.start_year, $-.end_year, count(*) AS count | \ + ORDER BY $-.count DESC | LIMIT 5; ++---------------+-------------+-------+ +| $-.start_year | $-.end_year | count | ++---------------+-------------+-------+ +| 2018 | 2019 | 3 | +| 1998 | 2004 | 2 | +| 2012 | 2013 | 2 | +| 2007 | 2012 | 2 | +| 2010 | 2011 | 2 | ++---------------+-------------+-------+ +``` \ No newline at end of file diff --git a/docs-2.0/4.deployment-and-installation/1.resource-preparations.md b/docs-2.0/4.deployment-and-installation/1.resource-preparations.md index 92468ceea26..8fc82e8f198 100644 --- a/docs-2.0/4.deployment-and-installation/1.resource-preparations.md +++ b/docs-2.0/4.deployment-and-installation/1.resource-preparations.md @@ -25,7 +25,7 @@ NebulaGraph 是针对 NVMe SSD 进行设计和实现的,所有默认参数都 !!! note - 社区用户可以在 ARM MacOS 的 Docker Desktop 上或者 ARM Linux Server 上运行容器化的 NebulaGraph。 + 从 3.0.2 开始,NebulaGraph 在 Docker Hub 上的 Docker 支持 ARM64 架构。社区用户可以在 ARM macOS 的 Docker Desktop 上或者 ARM Linux Server 上运行容器化的 NebulaGraph。 ## 编译源码要求 @@ -189,8 +189,8 @@ NebulaGraph 是针对 NVMe SSD 进行设计和实现的,所有默认参数都 | -------- | ----------- | | CPU 架构 | x86_64 | | CPU 核数 | 48 | -| 内存 | 96 GB | -| 硬盘 | 2 * 900 GB,NVMe SSD | +| 内存 | 256 GB | +| 硬盘 | 2 * 1.6 TB,NVMe SSD | ### 操作系统要求 @@ -202,7 +202,7 @@ NebulaGraph 是针对 NVMe SSD 进行设计和实现的,所有默认参数都 !!! danger - **不要**跨机房部署集群。 + **不要**跨机房部署单个集群(企业版支持跨机房集群间同步)。 | 进程 | 数量| | ------------------------| ------| diff --git a/docs-2.0/4.deployment-and-installation/2.compile-and-install-nebula-graph/3.deploy-nebula-graph-with-docker-compose.md b/docs-2.0/4.deployment-and-installation/2.compile-and-install-nebula-graph/3.deploy-nebula-graph-with-docker-compose.md index 88ee8432eed..2dd9c6de925 100644 --- a/docs-2.0/4.deployment-and-installation/2.compile-and-install-nebula-graph/3.deploy-nebula-graph-with-docker-compose.md +++ b/docs-2.0/4.deployment-and-installation/2.compile-and-install-nebula-graph/3.deploy-nebula-graph-with-docker-compose.md @@ -18,7 +18,7 @@ - 如果已经通过 Docker Compose 在主机上部署了另一个版本的 NebulaGraph,为避免兼容性问题,需要删除目录`nebula-docker-compose/data`。 -## 部署和连接 NebulaGraph +## 部署 NebulaGraph 1. 通过 Git 克隆`nebula-docker-compose`仓库的`{{dockercompose.release}}`分支到主机。 @@ -42,82 +42,89 @@ 3. 执行如下命令启动 NebulaGraph 服务。 - 从 3.0.2 开始,NebulaGraph 在 Docker Hub 上的 Docker 支持 ARM64 架构。用户可以在 ARM macOS 的 Docker Desktop 上或者 ARM Linux Server 上运行容器化的 NebulaGraph。 - !!! Note 如果长期未内核更新镜像,请先更新 [NebulaGraph 镜像](#nebula_graph_docker)和 [NebulaGraph Console 镜像](#nebula_console)。 ```bash [nebula-docker-compose]$ docker-compose up -d - Creating nebula-docker-compose_metad0_1 ... done - Creating nebula-docker-compose_metad2_1 ... done - Creating nebula-docker-compose_metad1_1 ... done - Creating nebula-docker-compose_graphd2_1 ... done - Creating nebula-docker-compose_graphd_1 ... done - Creating nebula-docker-compose_graphd1_1 ... done - Creating nebula-docker-compose_storaged0_1 ... done - Creating nebula-docker-compose_storaged2_1 ... done - Creating nebula-docker-compose_storaged1_1 ... done + Creating nebuladockercompose_metad0_1 ... done + Creating nebuladockercompose_metad2_1 ... done + Creating nebuladockercompose_metad1_1 ... done + Creating nebuladockercompose_graphd2_1 ... done + Creating nebuladockercompose_graphd_1 ... done + Creating nebuladockercompose_graphd1_1 ... done + Creating nebuladockercompose_storaged0_1 ... done + Creating nebuladockercompose_storaged2_1 ... done + Creating nebuladockercompose_storaged1_1 ... done ``` + !!! compatibility + + 从 3.1 版本开始,Docker-compose 会自动启动 NebulaGraph Console 镜像的容器,并将 Storage 主机增加至集群中(即`ADD HOSTS`命令)。 + !!! Note 上述服务的更多信息,请参见[架构总览](../../1.introduction/3.nebula-graph-architecture/1.architecture-overview.md)。 -4. 连接 NebulaGraph。 +## 连接 NebulaGraph - !!! compatibility +连接 NebulaGraph 有两种方式: - 从 3.1 版本开始,Docker-compose 会自动启动 NebulaGraph Console 镜像的容器,并将 Storage 主机增加至集群中(即`ADD HOSTS`命令)。 +- 在容器外通过 Nebula Console 连接。因为容器的配置文件中将 Graph 服务的外部映射端口也固定为 9669,因此可以直接通过默认端口连接。详情参见[连接 NebulaGraph](../../2.quick-start/3.quick-start-on-premise/3.connect-to-nebula-graph.md)。 - 1. 使用`docker-compose ps`命令查看 NebulaGraph Console 容器名称。 +- 登录安装了 NebulaGraph Console 的容器,然后再连接 Graph 服务。本小节介绍这种方式。 - ```bash - $ docker-compose ps - Name Command State Ports - ---------------------------------------------------------------------------------------------- - nebuladockercompose_console_1 sh -c sleep 3 && Up - nebula-co ... - ...... - ``` +1. 使用`docker-compose ps`命令查看 NebulaGraph Console 容器名称。 - 2. 进入 NebulaGraph Console 容器中。 + ```bash + $ docker-compose ps + Name Command State Ports + ---------------------------------------------------------------------------------------------- + nebuladockercompose_console_1 sh -c sleep 3 && Up + nebula-co ... + ...... + ``` - ```bash - $ docker exec -it nebuladockercompose_console_1 /bin/sh - / # - ``` +2. 进入 NebulaGraph Console 容器中。 - 3. 通过 NebulaGraph Console 连接 NebulaGraph。 + ```bash + $ docker exec -it nebuladockercompose_console_1 /bin/sh + / # + ``` - ```bash - / # ./usr/local/bin/nebula-console -u -p --address=graphd --port=9669 - ``` +3. 通过 NebulaGraph Console 连接 NebulaGraph。 - !!! Note + ```bash + / # ./usr/local/bin/nebula-console -u -p --address=graphd --port=9669 + ``` + + !!! Note 默认情况下,身份认证功能是关闭的,只能使用已存在的用户名(默认为`root`)和任意密码登录。如果想使用身份认证,请参见[身份认证](../../7.data-security/1.authentication/1.authentication.md)。 - 4. 查看集群状态。 +4. 查看集群状态。 - ```bash - nebula> SHOW HOSTS; - +-------------+------+-----------+----------+--------------+----------------------+------------------------+---------+ - | Host | Port | HTTP port | Status | Leader count | Leader distribution | Partition distribution | Version | - +-------------+------+-----------+----------+--------------+----------------------+------------------------+---------+ - | "storaged0" | 9779 | 19779 | "ONLINE" | 0 | "No valid partition" | "No valid partition" | "3.1.0" | - | "storaged1" | 9779 | 19779 | "ONLINE" | 0 | "No valid partition" | "No valid partition" | "3.1.0" | - | "storaged2" | 9779 | 19779 | "ONLINE" | 0 | "No valid partition" | "No valid partition" | "3.1.0" | - +-------------+------+-----------+----------+--------------+----------------------+------------------------+---------+ - ``` + ```bash + nebula> SHOW HOSTS; + +-------------+------+-----------+----------+--------------+----------------------+------------------------+---------+ + | Host | Port | HTTP port | Status | Leader count | Leader distribution | Partition distribution | Version | + +-------------+------+-----------+----------+--------------+----------------------+------------------------+---------+ + | "storaged0" | 9779 | 19779 | "ONLINE" | 0 | "No valid partition" | "No valid partition" | "x.x.x" | + | "storaged1" | 9779 | 19779 | "ONLINE" | 0 | "No valid partition" | "No valid partition" | "x.x.x" | + | "storaged2" | 9779 | 19779 | "ONLINE" | 0 | "No valid partition" | "No valid partition" | "x.x.x" | + +-------------+------+-----------+----------+--------------+----------------------+------------------------+---------+ + ``` -5. 执行两次`exit`可以退出容器。 +执行两次`exit`可以退出容器。 ## 查看 NebulaGraph 服务的状态和端口 执行命令`docker-compose ps`可以列出 NebulaGraph 服务的状态和端口。 +!!! note + NebulaGraph 默认使用`9669`端口为客户端提供服务,如果需要修改端口,请修改目录`nebula-docker-compose`内的文件`docker-compose.yaml`,然后重启 NebulaGraph 服务。 + ```bash $ docker-compose ps nebuladockercompose_console_1 sh -c sleep 3 && Up @@ -133,7 +140,30 @@ nebuladockercompose_storaged1_1 /usr/local/nebula/bin/nebu ... Up 0.0.0 nebuladockercompose_storaged2_1 /usr/local/nebula/bin/nebu ... Up 0.0.0.0:49167->19779/tcp,:::49167->19779/tcp, 0.0.0.0:49164->19780/tcp,:::49164->19780/tcp, 9777/tcp, 9778/tcp, 0.0.0.0:49170->9779/tcp,:::49170->9779/tcp, 9780/tcp ``` -NebulaGraph 默认使用`9669`端口为客户端提供服务,如果需要修改端口,请修改目录`nebula-docker-compose`内的文件`docker-compose.yaml`,然后重启 NebulaGraph 服务。 +如果服务有异常,用户可以先确认异常的容器名称(例如`nebuladockercompose_graphd2_1`), + +然后执行`docker ps`查看对应的`CONTAINER ID`(示例为`2a6c56c405f5`)。 + +```bash +[nebula-docker-compose]$ docker ps +CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES +2a6c56c405f5 vesoft/nebula-graphd:nightly "/usr/local/nebula/b…" 36 minutes ago Up 36 minutes (healthy) 0.0.0.0:49230->9669/tcp, 0.0.0.0:49229->19669/tcp, 0.0.0.0:49228->19670/tcp nebuladockercompose_graphd2_1 +7042e0a8e83d vesoft/nebula-storaged:nightly "./bin/nebula-storag…" 36 minutes ago Up 36 minutes (healthy) 9777-9778/tcp, 9780/tcp, 0.0.0.0:49227->9779/tcp, 0.0.0.0:49226->19779/tcp, 0.0.0.0:49225->19780/tcp nebuladockercompose_storaged2_1 +18e3ea63ad65 vesoft/nebula-storaged:nightly "./bin/nebula-storag…" 36 minutes ago Up 36 minutes (healthy) 9777-9778/tcp, 9780/tcp, 0.0.0.0:49219->9779/tcp, 0.0.0.0:49218->19779/tcp, 0.0.0.0:49217->19780/tcp nebuladockercompose_storaged0_1 +4dcabfe8677a vesoft/nebula-graphd:nightly "/usr/local/nebula/b…" 36 minutes ago Up 36 minutes (healthy) 0.0.0.0:49224->9669/tcp, 0.0.0.0:49223->19669/tcp, 0.0.0.0:49222->19670/tcp nebuladockercompose_graphd1_1 +a74054c6ae25 vesoft/nebula-graphd:nightly "/usr/local/nebula/b…" 36 minutes ago Up 36 minutes (healthy) 0.0.0.0:9669->9669/tcp, 0.0.0.0:49221->19669/tcp, 0.0.0.0:49220->19670/tcp nebuladockercompose_graphd_1 +880025a3858c vesoft/nebula-storaged:nightly "./bin/nebula-storag…" 36 minutes ago Up 36 minutes (healthy) 9777-9778/tcp, 9780/tcp, 0.0.0.0:49216->9779/tcp, 0.0.0.0:49215->19779/tcp, 0.0.0.0:49214->19780/tcp nebuladockercompose_storaged1_1 +45736a32a23a vesoft/nebula-metad:nightly "./bin/nebula-metad …" 36 minutes ago Up 36 minutes (healthy) 9560/tcp, 0.0.0.0:49213->9559/tcp, 0.0.0.0:49212->19559/tcp, 0.0.0.0:49211->19560/tcp nebuladockercompose_metad0_1 +3b2c90eb073e vesoft/nebula-metad:nightly "./bin/nebula-metad …" 36 minutes ago Up 36 minutes (healthy) 9560/tcp, 0.0.0.0:49207->9559/tcp, 0.0.0.0:49206->19559/tcp, 0.0.0.0:49205->19560/tcp nebuladockercompose_metad2_1 +7bb31b7a5b3f vesoft/nebula-metad:nightly "./bin/nebula-metad …" 36 minutes ago Up 36 minutes (healthy) 9560/tcp, 0.0.0.0:49210->9559/tcp, 0.0.0.0:49209->19559/tcp, 0.0.0.0:49208->19560/tcp nebuladockercompose_metad1_1 +``` + +最后登录容器排查问题 + +```bash +[nebula-docker-compose]$ docker exec -it 2a6c56c405f5 bash +[root@2a6c56c405f5 nebula]# +``` ## 查看 NebulaGraph 服务的数据和日志 diff --git a/docs-2.0/4.deployment-and-installation/2.compile-and-install-nebula-graph/4.install-nebula-graph-from-tar.md b/docs-2.0/4.deployment-and-installation/2.compile-and-install-nebula-graph/4.install-nebula-graph-from-tar.md index c38838cb6ef..98bd15e6fe6 100644 --- a/docs-2.0/4.deployment-and-installation/2.compile-and-install-nebula-graph/4.install-nebula-graph-from-tar.md +++ b/docs-2.0/4.deployment-and-installation/2.compile-and-install-nebula-graph/4.install-nebula-graph-from-tar.md @@ -4,7 +4,12 @@ !!! note - NebulaGraph 从 2.6.0 版本起提供 tar.gz 文件。 + - NebulaGraph 从 2.6.0 版本起提供 tar.gz 文件。 + + - 当前仅支持在 Linux 系统下安装 NebulaGraph,且仅支持 CentOS 7.x、CentOS 8.x、Ubuntu 16.04、Ubuntu 18.04、Ubuntu 20.04 操作系统。 + + - 如果用户使用的是国产化的 Linux 操作系统,请[安装企业版 NebulaGraph](https://www.nebula-graph.com.cn/contact)。 + ## 操作步骤 diff --git a/docs-2.0/4.deployment-and-installation/3.upgrade-nebula-graph/upgrade-nebula-from-300-to-latest.md b/docs-2.0/4.deployment-and-installation/3.upgrade-nebula-graph/upgrade-nebula-from-300-to-latest.md index e35e943a0f4..88734559bfb 100644 --- a/docs-2.0/4.deployment-and-installation/3.upgrade-nebula-graph/upgrade-nebula-from-300-to-latest.md +++ b/docs-2.0/4.deployment-and-installation/3.upgrade-nebula-graph/upgrade-nebula-from-300-to-latest.md @@ -8,9 +8,9 @@ NebulaGraph v3.x 升级至 v{{nebula.release}},只需要使用 v{{nebula.relea 2. 停止所有 NebulaGraph 服务。详情请参见[管理 NebulaGraph 服务](../../2.quick-start/3.quick-start-on-premise/5.start-stop-service.md)。建议更新前备份配置文件。 -!!! caution + !!! caution - 如果用户需要保留无 Tag 的点,在集群内所有 Graph 服务的配置文件(`nebula-graphd.conf`)中新增`--graph_use_vertex_key=true`;在所有 Storage 服务的配置文件(`nebula-storaged.conf`)中新增`--use_vertex_key=true`。 + 如果用户需要保留无 Tag 的点,在集群内所有 Graph 服务的配置文件(`nebula-graphd.conf`)中新增`--graph_use_vertex_key=true`;在所有 Storage 服务的配置文件(`nebula-storaged.conf`)中新增`--use_vertex_key=true`。 3. 执行如下命令升级: @@ -48,4 +48,4 @@ NebulaGraph v3.x 升级至 v{{nebula.release}},只需要使用 v{{nebula.relea !!! caution - Docker Compose 部署的 NebulaGraph 建议重新部署新版本后导入数据。 \ No newline at end of file + Docker Compose 部署的 NebulaGraph 建议重新部署新版本后导入数据。 diff --git a/docs-2.0/4.deployment-and-installation/3.upgrade-nebula-graph/upgrade-nebula-graph-to-latest.md b/docs-2.0/4.deployment-and-installation/3.upgrade-nebula-graph/upgrade-nebula-graph-to-latest.md index 24dfc1e2b93..9114fecd8b2 100644 --- a/docs-2.0/4.deployment-and-installation/3.upgrade-nebula-graph/upgrade-nebula-graph-to-latest.md +++ b/docs-2.0/4.deployment-and-installation/3.upgrade-nebula-graph/upgrade-nebula-graph-to-latest.md @@ -149,17 +149,21 @@ ## FAQ -Q:升级过程中是否可以通过客户端写入数据? +### 升级过程中是否可以通过客户端写入数据? -A:不可以。升级过程中需要停止所有服务。 +不可以。升级过程中需要停止所有服务。 -Q:如果某台机器只有 Graph 服务,没有 Storage 服务,如何升级? +### 升级过程中出现`Space 0 not found`。 -A:只需要升级 Graph 服务对应的二进制文件和配置文件。 +当升级过程中出现`Space 0 not found`告警信息时,用户可以忽略这个信息。升级过程会从磁盘读取所有 Space ID,而`0`(路径为`/data/storage/nebula/0`)并不会存在磁盘上。Space `0` 用来存储 Storage 服务的元信息,并不包含用户数据,因此不会影响升级。 -Q:操作报错 `Permission denied`。 +### 如果某台机器只有 Graph 服务,没有 Storage 服务,如何升级? -A:部分命令需要有 sudo 权限。 +只需要升级 Graph 服务对应的二进制文件和配置文件。 + +### 操作报错 `Permission denied`。 + +部分命令需要有 sudo 权限。 -Q:是否有工具或者办法验证新旧版本数据是否一致? +### 是否有工具或者办法验证新旧版本数据是否一致? -A:没有。如果只是检查数据量,可以在升级完成后再次运行`SUBMIT JOB STATS`和`SHOW STATS`统计数据量,并与升级之前做对比。 +没有。如果只是检查数据量,可以在升级完成后再次运行`SUBMIT JOB STATS`和`SHOW STATS`统计数据量,并与升级之前做对比。 -Q: Storage `OFFLINE`并且`Leader count`是`0`怎么处理? +### Storage `OFFLINE`并且`Leader count`是`0`怎么处理? -A:运行以下命令手动添加 Storage 主机: +运行以下命令手动添加 Storage 主机: ```ngql ADD HOSTS :[, : ...]; @@ -189,10 +193,10 @@ ADD HOSTS 192.168.10.100:9779, 192.168.10.101:9779, 192.168.10.102:9779; 如果添加 Storage 主机后问题仍然存在,在[论坛](https://discuss.nebula-graph.com.cn/)或 [GitHub](https://github.com/vesoft-inc/nebula/issues) 提问。 -Q:为什么升级后用`SHOW JOBS`查询到的 Job 的 ID 与升级前一样,但 Job 名称等信息不同了? +### 为什么升级后用`SHOW JOBS`查询到的 Job 的 ID 与升级前一样,但 Job 名称等信息不同了? -A: NebulaGraph 2.5.0 版本调整了 Job 的定义,详情参见 [Pull request](https://github.com/vesoft-inc/nebula-common/pull/562/files)。如果是从 2.5.0 之前的版本升级,会出现该问题。 +NebulaGraph 2.5.0 版本调整了 Job 的定义,详情参见 [Pull request](https://github.com/vesoft-inc/nebula-common/pull/562/files)。如果是从 2.5.0 之前的版本升级,会出现该问题。 -Q: 有哪些语法不兼容 ? +### 有哪些语法不兼容 ? A: 参见[Release Note](../../20.appendix/release-notes/nebula-comm-release-note.md) Incompatibility 部分。 diff --git a/docs-2.0/README.md b/docs-2.0/README.md index fc1f0a8ccb4..0ac8e740090 100644 --- a/docs-2.0/README.md +++ b/docs-2.0/README.md @@ -7,7 +7,7 @@ --> !!! Note - 本文档更新时间{{ now().year }}-{{ now().month }}-{{ now().day }},GitHub commit [{{ git.short_commit }}](https://github.com/vesoft-inc/nebula-docs/commits/v{{nebula.release}})。该版本主色系为"深粉色",色号为 #F7A7A0。 + 本文档更新时间{{ now().year }}-{{ now().month }}-{{ now().day }},GitHub commit [{{ git.short_commit }}](https://github.com/vesoft-inc/nebula-docs/commits/v{{nebula.release}})。该版本主色系为"海后红",色号为 #C65467。 !!! Compatibility @@ -15,6 +15,7 @@ NebulaGraph 是一款开源的、分布式的、易扩展的原生图数据库,能够承载数千亿个点和数万亿条边的超大规模数据集,并且提供毫秒级查询。 + ## 快速开始 * [学习路径](20.appendix/learning-path.md)与[获取认证](https://academic.nebula-graph.io/?lang=ZH_CN) * [什么是 NebulaGraph](1.introduction/1.what-is-nebula-graph.md) @@ -24,12 +25,22 @@ NebulaGraph 是一款开源的、分布式的、易扩展的原生图数据库 * [FAQ](20.appendix/0.FAQ.md) * [生态工具](20.appendix/6.eco-tool-version.md) + +## 最新发布 + +- [NebulaGraph 社区版 {{ nebula.release }}](20.appendix/release-notes/nebula-comm-release-note.md) + +- [NebulaGraph Studio](20.appendix/release-notes/studio-release-note.md) +- [NebulaGraph Dashboard](20.appendix/release-notes/dashboard-comm-release-note.md) +- [NebulaGraph Dashboard 企业版](20.appendix/release-notes/dashboard-ent-release-note.md) +- [NebulaGraph Explorer](20.appendix/release-notes/explorer-release-note.md) + + ## 其他资料 - [Nebula Graph 完全指南](https://docs.nebula-graph.com.cn/site/pdf/NebulaGraph-book.pdf)与[摘要版本](https://arxiv.org/abs/2206.07278) -- [发布说明](20.appendix/release-notes/nebula-comm-release-note.md) - [论坛](https://discuss.nebula-graph.com.cn/) - [项目主页](https://nebula-graph.com.cn/) - [系列视频](https://space.bilibili.com/472621355) diff --git a/docs-2.0/backup-and-restore/nebula-br/1.what-is-br.md b/docs-2.0/backup-and-restore/nebula-br/1.what-is-br.md index cc16d072048..aa23886dae2 100644 --- a/docs-2.0/backup-and-restore/nebula-br/1.what-is-br.md +++ b/docs-2.0/backup-and-restore/nebula-br/1.what-is-br.md @@ -17,11 +17,9 @@ Backup&Restore(简称 BR)是一款命令行界面(CLI)工具,可以帮 - 数据备份仅支持全量备份,不支持增量备份。 - NebulaGraph Listener 暂时不支持备份,且全文索引也不支持备份。 - 如果备份数据到本地磁盘,备份的文件将会放置在每个服务器的本地路径中。也可以在本地挂载 NFS 文件系统,以便将备份数据还原到不同的主机上。 -- 备份图空间只能恢复到原集群,不能跨集群恢复。 +- 备份图空间只能恢复到原集群,不能跨集群恢复,并且集群的 Storage 主机数量及 IP 需一致。还原指定图空间时将清除集群中其余所有图空间。 - 数据备份过程中,指定图空间中的 DDL 和 DML 语句将会阻塞,我们建议在业务低峰期进行操作,例如凌晨 2 点至 5 点。 -- 数据恢复需要原集群和目标集群的 Storage 主机数量及 IP 一致。 - 数据恢复期间有一段时间服务会被停止。 -- (实验性功能)如果备份 A 集群中的某个指定图空间,并恢复这个图空间数据至集群 B 时,集群 B 中其他图空间数据将被清除。 - 不支持在容器部署的 NebulaGraph 集群中使用 BR。 diff --git a/docs-2.0/backup-and-restore/nebula-br/2.compile-br.md b/docs-2.0/backup-and-restore/nebula-br/2.compile-br.md index 8aac72d040e..66c1ba3f4a5 100644 --- a/docs-2.0/backup-and-restore/nebula-br/2.compile-br.md +++ b/docs-2.0/backup-and-restore/nebula-br/2.compile-br.md @@ -2,7 +2,20 @@ 本文介绍如何安装 BR。 -## 使用二进制文件安装 +## 安装说明 + +使用 BR 工具备份和恢复 NebulaGraph 时,需要安装 NebulaGraph Agent 服务。Agent 是集群中每台机器的一个守护进程,用于启停 NebulaGraph 服务和上传、下载备份文件。BR 工具和 Agent 插件的安装方式如下文。 + +## 版本兼容性 + +|NebulaGraph 社区版|BR 社区版 |Agent | +|:---|:---|:---| +|3.3.0|3.3.0|0.2.0| +|3.0.x ~ 3.2.x|0.6.1|0.1.0 ~ 0.2.0| + +## 安装 BR + +### 使用二进制文件安装 1. 下载 BR。 @@ -29,13 +42,14 @@ Nebula Backup And Restore Utility Tool,V-{{br.release}} ``` -## 使用源码安装 +### 使用源码安装 使用源码安装 BR 前,准备工作如下: - 安装 [Go](https://github.com/golang/go "Click to go to GitHub") 1.14.x 或更新版本。 - 安装 make。 + 1. 克隆`nebula-br`库至机器。 ```bash @@ -60,3 +74,70 @@ [nebula-br]$ bin/br version NebulaGraph Backup And Restore Utility Tool,V-{{br.release}} ``` + +## 安装 Agent + +NebulaGraph Agent 以二进制形式存在各个机器的安装目录中,通过 RPC 协议对 BR 工具提供服务。 + +在**每台机器**中,进行以下操作: + +1. 下载 Agent。 + + ``` + wget https://github.com/vesoft-inc/nebula-agent/releases/download/v{{agent.release}}/agent-{{agent.release}}-linux-amd64 + ``` + +2. 修改 Agent 的名称为`agent`。 + + ``` + sudo mv agent-{{agent.release}}-linux-amd64 agent + ``` + +3. 授予 Agent 可执行权限。 + + ``` + sudo chmod +x agent + ``` + +4. 执行以下命令启动 Agent。 + + !!! note + + 启动 Agent 前,确保已经启动集群中的 Meta 服务,并且 Agent 有对应 NebulaGraph 服务目录和备份目录的读写权限。 + + ``` + sudo nohup ./nebula_agent --agent=":8888" --meta=":9559" > nebula_agent.log 2>&1 & + ``` + + - `--agent`:Agent 所在机器的 IP 地址和访问端口。 + - `--meta`:集群中任一 Meta 服务所在机器的 IP 地址和访问端口。 + - `--ratelimit`:可选项,限制文件上传和下载的速度,防止带宽被占满导致其他服务不可用。单位:Bytes。 + + 例如: + + ``` + sudo nohup ./nebula_agent --agent="192.168.8.129:8888" --meta="192.168.8.129:9559" --ratelimit=1048576 > nebula_agent.log 2>&1 & + ``` + + !!! caution + + `--agent`配置的 IP 地址需要和[配置文件](../../5.configurations-and-logs/1.configurations/1.configurations.md)中 Meta 和 Storage 服务的地址格式保持一致,即都使用真实 IP 地址或者都使用`127.0.0.1`,否则 Agent 无法启动。 + + +1. 连接服务并查看 Agent 的运行状态。 + + ``` + nebula> SHOW HOSTS AGENT; + +-----------------+------+----------+---------+--------------+---------+ + | Host | Port | Status | Role | Git Info Sha | Version | + +-----------------+------+----------+---------+--------------+---------+ + | "192.168.8.129" | 8888 | "ONLINE" | "AGENT" | "96646b8" | | + +-----------------+------+----------+---------+--------------+---------+ + ``` + + +## 常见问题 + +### 报错`E_LIST_CLUSTER_NO_AGENT_FAILURE` + +如果操作过程中遇见`E_LIST_CLUSTER_NO_AGENT_FAILURE`错误,可能是由于 Agent 服务没有启动或者 Agent 服务没有被注册至 Meta 服务。首先执行`SHOW HOSTS AGENT`查看集群上所有节点的 Agent 服务的状态,当时状态显示为`OFFLINE`时表示注册 Agent 失败, 然后检查启动 Agent 服务的命令中的`--meta`参数是否正确。 diff --git a/docs-2.0/backup-and-restore/nebula-br/3.br-backup-data.md b/docs-2.0/backup-and-restore/nebula-br/3.br-backup-data.md index 2dadd163a91..bb87f3c20f0 100644 --- a/docs-2.0/backup-and-restore/nebula-br/3.br-backup-data.md +++ b/docs-2.0/backup-and-restore/nebula-br/3.br-backup-data.md @@ -1,36 +1,34 @@ # 使用 BR 备份数据 -BR 编译成功后,可以备份整个图空间的数据,本文介绍如何使用 BR 备份数据。 +成功安装 BR 工具后,可以备份整个图空间的数据,本文介绍如何使用 BR 备份数据。 ## 准备工作 -- BR 编译完成。如何编译 BR,请参见[编译 BR](2.compile-br.md)。 - -- 确认 NebulaGraph 服务正在运行中。 +- [安装 BR 和 Agent](2.compile-br.md) 并在集群中的每个主机上运行 Agent。 -- 已下载 [nebula-agent](https://github.com/vesoft-inc/nebula-agent) 并在集群中的每个主机上运行代理服务。 +- 确认 NebulaGraph 服务正在运行中。 - 如果在本地保存备份文件,需要在 Meta 服务器、Storage 服务器和 BR 机器上创建绝对路径相同的目录,并记录绝对路径,同时需要保证账号对该目录有写权限。 - + !!! Note 在生产环境中,我们建议用户将 NFS (Network File System)存储设备挂载到 Meta 服务器、Storage 服务器和 BR 机器上进行本地备份,或者使用 Alibaba Cloud OSS、Amazon S3 进行远程备份。否则当需要通过本地文件恢复数据时,必须手动将这些备份文件移动到指定目录,会导致数据冗余和某些问题。更多信息,请参见[使用 BR 恢复数据](4.br-restore-data.md)。 ## 操作步骤 -运行以下命令对整个集群进行全量备份操作。 +在 BR 工具的安装路径下(编译安装的默认路径为`./bin/br`)运行以下命令对整个集群进行全量备份操作。 !!! Note 确保备份文件的路径存在。 ```bash -$ ./bin/br backup full --meta --storage +$ ./br backup full --meta --storage ``` 例如: -- 运行以下命令对 meta 服务的地址为`127.0.0.1:9559`的整个集群进行全量备份操作,并将备份文件保存到本地的 `/home/nebula/backup/`路径下。 +- 运行以下命令对 meta 服务的地址为`192.168.8.129:9559`的整个集群进行全量备份操作,并将备份文件保存到本地的 `/home/nebula/backup/`路径下。 !!! caution @@ -41,13 +39,13 @@ $ ./bin/br backup full --meta --storage 备份至本地时,默认只备份 leader metad 的数据,因此当有多个 metad 节点时,需要手动将备份后的 leader metad 的目录(路径为`/meta`)拷贝并覆盖其他 follower meatd 节点的对应目录。 ```bash - $ ./bin/br backup full --meta "127.0.0.1:9559" --storage "local:///home/nebula/backup/" + $ ./br backup full --meta "192.168.8.129:9559" --storage "local:///home/nebula/backup/" ``` -- 运行以下命令对 meta 服务的地址为`127.0.0.1:9559`的整个集群进行全量备份操作,并将备份文件保存到兼容 s3 协议的对象存储服务 `br-test` 桶下的`backup`中。 +- 运行以下命令对 meta 服务的地址为`192.168.8.129:9559`的整个集群进行全量备份操作,并将备份文件保存到兼容 s3 协议的对象存储服务 `br-test` 桶下的`backup`中。 ```bash - $ ./bin/br backup full --meta "127.0.0.1:9559" --s3.endpoint "http://127.0.0.1:9000" --storage="s3://br-test/backup/" --s3.access_key=minioadmin --s3.secret_key=minioadmin --s3.region=default + $ ./br backup full --meta "192.168.8.129:9559" --s3.endpoint "http://192.168.8.129:9000" --storage="s3://br-test/backup/" --s3.access_key=minioadmin --s3.secret_key=minioadmin --s3.region=default ``` 以下列出命令的相关参数。 @@ -58,7 +56,7 @@ $ ./bin/br backup full --meta --storage | `--debug` | - | 否 | 无 | 查看更多日志信息。 | | `--log` | string | 否 | `"br.log"` | 日志路径。 | | `--meta` | string | 是| 无 | meta 服务的地址和端口号。 | -| `--spaces` | stringArray | 否 | 无 | (实验性功能)指定要备份的图空间名字,未指定将备份所有图空间。 | +| `--spaces` | stringArray | 否 | 无 |(实验性功能)指定要备份的图空间名字,未指定将备份所有图空间。可指定多个图空间,用法为`--spaces nba_01 --spaces nba_02`。 | | `--storage` | string | 是 | 无 | BR 备份数据存储位置,格式为:`://`
Schema:可选值为 `local` 和 `s3`。选择 s3 时,需要填写`s3.access_key`、`s3.endpoint`、`s3.region`和 `s3.secret_key`。
PATH:存储位置的路径。| | `--s3.access_key` | string | 否 | 无 | 用于标识用户。 | | `--s3.endpoint` | string | 否 | 无 | S3 对外服务的访问域名的 URL,指定 http 或 https。 | diff --git a/docs-2.0/backup-and-restore/nebula-br/4.br-restore-data.md b/docs-2.0/backup-and-restore/nebula-br/4.br-restore-data.md index 859765f847c..f6b5fc92fa3 100644 --- a/docs-2.0/backup-and-restore/nebula-br/4.br-restore-data.md +++ b/docs-2.0/backup-and-restore/nebula-br/4.br-restore-data.md @@ -12,9 +12,7 @@ ## 准备工作 -- BR 编译完成。如何编译 BR,请参见[编译 BR](2.compile-br.md)。 - -- 已下载 [nebula-agent](https://github.com/vesoft-inc/nebula-agent) 并在集群中的**每个**主机上运行代理服务。 +- [安装 BR 和 Agent](2.compile-br.md) 并在集群中的每个主机上运行 Agent。 - 确认没有应用程序连接到待恢复数据的 NebulaGraph 集群。 @@ -22,15 +20,17 @@ ## 操作步骤 +在 BR 工具的安装路径下(编译安装的默认路径为`./bin/br`),完成以下操作。 + 1. 用户可以使用以下命令列出现有备份信息: ```bash - $ ./bin/br show --storage + $ ./br show --storage ``` 例如,可以使用以下命令列出在本地 `/home/nebula/backup` 路径中的备份的信息。 ```bash - $ ./bin/br show --storage "local:///home/nebula/backup" + $ ./br show --storage "local:///home/nebula/backup" +----------------------------+---------------------+------------------------+-------------+------------+ | NAME | CREATE TIME | SPACES | FULL BACKUP | ALL SPACES | +----------------------------+---------------------+------------------------+-------------+------------+ @@ -41,7 +41,7 @@ 或使用以下命令列出在兼容 s3 协议的对象存储服务 `br-test` 桶下的`backup`中的备份的信息。 ```bash - $ ./bin/br show --s3.endpoint "http://127.0.0.1:9000" --storage="s3://br-test/backup/" --s3.access_key=minioadmin --s3.secret_key=minioadmin --s3.region=default + $ ./br show --s3.endpoint "http://192.168.8.129:9000" --storage="s3://br-test/backup/" --s3.access_key=minioadmin --s3.secret_key=minioadmin --s3.region=default ``` 以下列出命令的相关参数。 @@ -59,18 +59,18 @@ 2. 用户可以使用以下命令恢复数据: ``` - $ ./bin/br restore full --meta --storage --name + $ ./br restore full --meta --storage --name ``` - 例如,可以使用以下命令,将本地 `/home/nebula/backup/` 路径中的数据恢复到为 meta 地址为`127.0.0.1:9559`集群中: + 例如,可以使用以下命令,将本地 `/home/nebula/backup/` 路径中的数据恢复到为 meta 地址为`192.168.8.129:9559`集群中: ``` - $ ./bin/br restore full --meta "127.0.0.1:9559" --storage "local:///home/nebula/backup/" --name BACKUP_2021_12_08_18_38_08 + $ ./br restore full --meta "192.168.8.129:9559" --storage "local:///home/nebula/backup/" --name BACKUP_2021_12_08_18_38_08 ``` - 或者使用以下命令,将兼容 s3 协议的对象存储服务 `br-test` 桶下的`backup`的备份,恢复到 meta 服务的地址为`127.0.0.1:9559`的集群中。 + 或者使用以下命令,将兼容 s3 协议的对象存储服务 `br-test` 桶下的`backup`的备份,恢复到 meta 服务的地址为`192.168.8.129:9559`的集群中。 ```bash - $ ./bin/br restore full --meta "127.0.0.1:9559" --s3.endpoint "http://127.0.0.1:9000" --storage="s3://br-test/backup/" --s3.access_key=minioadmin --s3.secret_key=minioadmin --s3.region="default" --name BACKUP_2021_12_08_18_38_08 + $ ./br restore full --meta "192.168.8.129:9559" --s3.endpoint "http://192.168.8.129:9000" --storage="s3://br-test/backup/" --s3.access_key=minioadmin --s3.secret_key=minioadmin --s3.region="default" --name BACKUP_2021_12_08_18_38_08 ``` 如果返回如下信息,表示数据已经恢复成功。 @@ -100,7 +100,7 @@ 3. 如果在备份期间发现任何错误,用户可以使用以下命令清理临时文件。该命令将清理集群和外部存储中的文件,同时用户也可以使用该命令清理外部存储中的旧的备份文件。 ``` - $ ./bin/br cleanup --meta --storage --name + $ ./br cleanup --meta --storage --name ``` 以下列出命令的相关参数。 diff --git a/docs-2.0/graph-computing/algorithm-description.md b/docs-2.0/graph-computing/algorithm-description.md index f24c2f8d30a..8a0e767bb42 100644 --- a/docs-2.0/graph-computing/algorithm-description.md +++ b/docs-2.0/graph-computing/algorithm-description.md @@ -194,7 +194,7 @@ DegreeWithTime 算法是基于边的时间范围统计邻居,查找出图中 ### BetweennessCentrality -BetweennessCentrality(中介中心性)算法是一种检测点对图中信息流的影响量的方法,用于查找从图的一部分到另一部分时作为桥梁的点。每个点都会根据通过该点的最短路径的数量获得一个分数,即中介中心性分数。 +BetweennessCentrality(介数中心性)算法是一种检测点对图中信息流的影响量的方法,用于查找从图的一部分到另一部分时作为桥梁的点。每个点都会根据通过该点的最短路径的数量获得一个分数,即介数中心性分数。 参数说明如下。 @@ -222,7 +222,7 @@ BetweennessCentrality(中介中心性)算法是一种检测点对图中信 |参数|类型|说明| |:--|:--|:--| |`VID`|创建图空间时`vid_type`决定| 点 ID。| - |`VALUE`|double| 点的中介中心性分数。| + |`VALUE`|double| 点的介数中心性分数。| ### ClosenessCentrality @@ -741,4 +741,4 @@ Jaccard(杰卡德相似度)算法用于计算两个点(或集合)的相 |:--|:--|:--| |`VID1`|创建图空间时`vid_type`决定| 第一个点的 ID。| |`VID2`|创建图空间时`vid_type`决定| 第二个点的 ID。| - |`VALUE`|double| `VID1`和`VID2`的相似度。| \ No newline at end of file + |`VALUE`|double| `VID1`和`VID2`的相似度。| diff --git a/docs-2.0/graph-computing/nebula-algorithm.md b/docs-2.0/graph-computing/nebula-algorithm.md index 05de32abf68..01892f00a34 100644 --- a/docs-2.0/graph-computing/nebula-algorithm.md +++ b/docs-2.0/graph-computing/nebula-algorithm.md @@ -133,9 +133,6 @@ NebulaGraph Algorithm 实现图计算的流程如下: 如果用户的节点 ID 是 String 类型,可以参考 PageRank 的[示例](https://github.com/vesoft-inc/nebula-algorithm/blob/master/example/src/main/scala/com/vesoft/nebula/algorithm/PageRankExample.scala)。示例中进行了 ID 转换,将 String 类型编码为 Long 类型, 并在算法结果中将 Long 类型 ID 解码为原始的 String 类型。 ### 直接提交算法包 - -!!! note - 使用封装好的算法包有一定的局限性,例如落库到 NebulaGraph 时,落库的图空间中创建的 Tag 的属性名称必须和代码内预设的名称保持一致。如果用户有开发能力,推荐使用第一种方法。 1. 设置[配置文件](https://github.com/vesoft-inc/nebula-algorithm/blob/{{algorithm.branch}}/nebula-algorithm/src/main/resources/application.conf)。 @@ -254,6 +251,10 @@ NebulaGraph Algorithm 实现图计算的流程如下: } ``` + !!! note + + 当配置为 `sink: nebula` 的时候,意味着算法运算结果将被写回 NebulaGraph 集群,这对写回到的 TAG 中的属性名有隐含的约定。详情参考本文**支持算法**部分。 + 2. 提交图计算任务。 ```bash diff --git a/docs-2.0/graph-computing/nebula-analytics.md b/docs-2.0/graph-computing/nebula-analytics.md index d73234296d6..cd0fca3e16a 100644 --- a/docs-2.0/graph-computing/nebula-analytics.md +++ b/docs-2.0/graph-computing/nebula-analytics.md @@ -5,8 +5,14 @@ NebulaGraph Analytics 是一款高性能图计算框架工具,支持对 Nebula ## 前提条件 - [联系我们](https://www.nebula-graph.com.cn/contact)获取 Nebula Analytics 安装包。 + - [准备 Nebula Analytics License](analytics-ent-license.md)。 +- 已部署 2.2.x 或以上版本的 [HDFS](https://hadoop.apache.org/docs/stable/hadoop-project-dist/hadoop-common/ClusterSetup.html)。 + +- 已安装 1.8 版本的 JDK。 + + ## 适用场景 支持将数据源为 NebulaGraph 集群、HDFS 上的 CSV 文件或本地 CSV 文件中的数据导入 NebulaGraph Analytics,并将图计算结果输出至 NebulaGraph 集群、HDFS 上的 CSV 文件或本地 CSV 文件。 @@ -56,13 +62,28 @@ NebulaGraph Analytics 支持的图计算算法如下。 ## 安装 NebulaGraph Analytics -1. 在多个机器安装由多个 NebulaGraph Analytics 服务构成的集群时,需要安装路径相同,并设置节点间 SSH 免密登录。 +1. 安装 NebulaGraph Analytics。 - ```bash - sudo rpm -i nebula-analytics-{{plato.release}}-centos.x86_64.rpm --prefix /home/xxx/nebula-analytics + ``` + $ sudo rpm -ivh --prefix + $ sudo chown : -R + ``` + + 例如: + + ``` + $ sudo rpm -ivh nebula-analytics-{{plato.release}}-centos.x86_64.rpm --prefix=/home/vesoft/nebula-analytics + $ sudo chown vesoft:vesoft -R /home/vesoft/nebula-analytics + ``` + +2. 配置`set_env.sh`文件,路径为`nebula-analytics/scripts/set_env.sh`。配置正确的 Hadoop 路径和 JDK 路径。如果有多台机器,请确保路径一致。 + + ``` + export HADOOP_HOME= + export JAVA_HOME= ``` -2. 拷贝 License 至所有机器的 NebulaGraph Analytics 安装路径的`scripts`目录内。 +3. 拷贝 License 至所有机器的 NebulaGraph Analytics 安装路径的`scripts`目录内。 - 关于语句的详细信息,参考[用户管理](../../7.data-security/1.authentication/2.management-user.md "点击前往用户管理")。 +--> + ## 浏览器支持 建议使用最新版本的 Chrome 访问 Studio。 diff --git a/docs-2.0/nebula-studio/about-studio/st-ug-what-is-graph-studio.md b/docs-2.0/nebula-studio/about-studio/st-ug-what-is-graph-studio.md index d02dcf42692..2b203e06354 100644 --- a/docs-2.0/nebula-studio/about-studio/st-ug-what-is-graph-studio.md +++ b/docs-2.0/nebula-studio/about-studio/st-ug-what-is-graph-studio.md @@ -8,10 +8,7 @@ NebulaGraph Studio(简称 Studio)是一款可以通过 Web 访问的开源 ## 发行版本 -可以使用以下方式安装部署 Studio: - -- 用户可以使用 Docker 服务、RPM 服务、tar 包和 DEB 包安装部署 Studio,并连接到 NebulaGraph 数据库。详细信息参考 [部署 Studio](../deploy-connect/st-ug-deploy.md)。 -- 使用 Helm 安装部署:在 Kubernetes 集群里使用 Helm 安装并部署 Studio,并连接到 NebulaGraph 数据库。详细信息参考[使用 Helm 部署 NebulaGraph Studio](../deploy-connect/st-ug-deploy-by-helm.md)。 +用户可以使用 RPM 包、DEB 包、tar 包和 Docker 服务安装部署 Studio,在 Kubernetes 集群里还支持使用 Helm 安装部署 Studio。详细信息参考 [部署 Studio](../deploy-connect/st-ug-deploy.md)。 + !!! caution - 首次连接到 NebulaGraph 后,必须先[注册 Storage 服务](https://docs.nebula-graph.com.cn/{{nebula.release}}/2.quick-start/3.quick-start-on-premise/3.1add-storage-hosts.md),才能正常查询数据。 + 首次连接到 NebulaGraph 后,必须先[注册 Storage 服务](https://docs.nebula-graph.com.cn/{{nebula.release}}/2.quick-start/3.quick-start-on-premise/3.1add-storage-hosts/),才能正常查询数据。 NebulaGraph 支持多种类型的客户端,包括命令行客户端、可视化界面客户端和流行编程语言客户端。详情参见[客户端列表](https://docs.nebula-graph.com.cn/{{nebula.release}}/14.client/1.nebula-client/)。 ## 前提条件 -- NebulaGraph 服务已[启动](https://docs.nebula-graph.com.cn/{{nebula.release}}/4.deployment-and-installation/manage-service/)。 +- NebulaGraph 服务已[启动](https://docs.nebula-graph.com.cn/{{nebula.release}}/4.deployment-and-installation/manage-service/)。 - 运行 Nebula Console 的机器和运行 NebulaGraph 的服务器网络互通。 diff --git a/docs-2.0/reuse/source_create_instance_aliyun.md b/docs-2.0/reuse/source_create_instance_aliyun.md index 8407fcfc509..bc1454452bc 100644 --- a/docs-2.0/reuse/source_create_instance_aliyun.md +++ b/docs-2.0/reuse/source_create_instance_aliyun.md @@ -1,14 +1,12 @@ - 在使用 NebulaGraph Cloud 阿里云版服务前,要先在阿里云控制台创建服务实例。 !!! caution - 通过 NebulaGraph Cloud 阿里云版创建的 NebulaGraph、NebulaGraph Dashboard 和 NebulaGraph Explorer 服务都是企业版,试用期 3 天。如需长期使用,[联系我们](https://www.nebula-graph.com.cn/contact)申请正式许可证,之后[续期许可证](https://docs.nebula-graph.com.cn/{{nebula.release}}/4.deployment-and-installation/deploy-license/#nebulagraph_license_3)。 + 通过 NebulaGraph Cloud 阿里云版创建的 NebulaGraph、Nebula Dashboard 和 Nebula Explorer 等服务都是企业版,试用期 14 天。如需长期使用,发送邮件[申请正式许可证](mailto:inquiry@vesoft.com),之后[续期许可证](../../4.deployment-and-installation/deploy-license.md#nebula_graph_license_3)。 -## 前提条件 +## 账号与权限 - 准备[阿里云账号](https://help.aliyun.com/document_detail/324606.html)。 - - 如果使用 RAM 用户创建实例,需为其添加以下权限: - AliyunECSFullAccess @@ -17,67 +15,102 @@ - AliyunCloudMonitorFullAccess - AliyunComputeNestUserFullAccess -## 操作步骤 +## 资源与费用 -1. 登录[创建服务实例](https://computenest.console.aliyun.com/user/cn-hangzhou/serviceInstanceCreate?ServiceId=service-39f4f251e9484369a778)页面。 +NebulaGraph Cloud 阿里云版支持免费试用和付费使用。两种使用方式有不同的资源归属和费用消耗。 -2. 选中**同意授权并创建关联角色**。 +付费版服务实例创建在用户的阿里云账号下,资源费用由用户承担。实例内 NebulaGraph 相关服务的许可证到期后,其中的数据仍然保留在用户的阿里云资源中,直到资源被用户删除。 - ![选中同意授权并创建关联角色](https://docs-cdn.nebula-graph.com.cn/figures/authorize-compute-nest_cn_2022.05.30.png) +免费试用版服务实例使用的资源属于阿里云,资源费用由阿里云承担。实例内 NebulaGraph 相关服务的许可证到期后,其中的数据仍然保留在试用的阿里云资源中,直到资源过期或被用户删除。资源的试用时间为 30 天,到期后资源内保存的数据不保留。 -3. 选择要创建实例的**地域**。 +!!! note -4. 进行**基本信息配置**。 - - 1. 选择 **NebulaGraph版本**。默认为 **3.1.0**。 - 当前仅能选择 **3.1.0**。 - - 2. 设置 **NebulaGraph集群名**。默认为`nebula`。 - - 3. 设置实例密码。 - - - 密码长度为 8-30 个字符。 - - 密码中必须包含大写字母、小写字母、数字、特殊符号中的三种。 - - 特殊符号包括:()`~!@#$%^&*_-+=|{}[]:;'<>,.?/ + 基础版套餐将所有 NebulaGraph 服务节点部署在同一台 ECS 服务器上。 + +## 创建付费版服务实例 + +1. 登录阿里云计算巢[推荐服务](https://computenest.console.aliyun.com/user/cn-hangzhou/recommendService)页面,搜索 **NebulaGraph**。 -5. 进行**付费模式设置**,指定 ECS 服务器的付费方式。默认为**按量付费**。 +2. 在 **NebulaGraph 集群版**卡片上,单击**云市场购买**。 + +3. 在云市场的 **NebulaGraph Enterprise** 产品页,选择**套餐版本**和**购买时长**(即 NebulaGraph 服务的许可证有效期),并单击**立即购买**。 + + !!! caution + + 当前云市场显示的部分价格并非实际售价,购买时需通过右侧的钉钉客服确认实际价格。 + +4. 在**确认订单**页面,选择要创建实例的**地域**。 + +5. 在**付费模式设置**区域,指定 ECS 服务器的付费方式。默认为**按量付费**。 - **按量付费**:按照计费周期计费,在每个结算周期生成账单并从账户中扣除相应费用。详情参见[按量付费](https://help.aliyun.com/document_detail/40653.html)。 - - **预付费,包年包月**:先付费后使用。详情参见[包年包月](https://help.aliyun.com/document_detail/56220.html)。 - - 选择包年包月模式需要指定**购买时长周期**和**购买时长**。**购买时长周期**当前仅支持 **Month**,即按月购买,**购买时间**选择范围为 1-60 月。 - -6. 进行**基础设施配置**。 + - **包年包月**:先付费后使用。详情参见[包年包月](https://help.aliyun.com/document_detail/56220.html)。选择包年包月模式需要指定**购买时长周期**和**购买时长**。**购买时长周期**当前仅支持 **Month**,即按月购买。 + +6. 在**套餐选择**区域,根据需要选择套餐版本。 - 1. 选择**专有网络VPC实例ID**。 + + +7. 在 **NebulaGraph 配置**区域,完成数据盘和 ECS 服务器密码设置。 +8. 在**基础设施配置**区域,完成以下设置。 + + 1. 选择**专有网络 VPC 实例 ID**。 + 如果下拉列表为空,先单击其右侧的**新建专有网络**,完成专有网络创建。 2. 选择**交换机可用区**。 - 3. 选择**业务网络交换机的实例ID**。 - + 3. 选择**业务网络交换机的实例 ID**。 + 如果下拉列表为空,先单击其右侧的**新建交换机**,完成交换机创建。 -7. 进行**集群节点配置**,根据业务需求配置 NebulaGraph 内核服务的节点。 +9. 在**温馨提示**区域,选中**我同意告知服务商我的联系方式**,以便购买后发放许可证。 - NebulaGraph 内核包含 Graph、Meta、Storage 服务,因此需要为这些服务分别选择**节点数量**、**节点实例类型**、**数据盘类型**和**数据盘空间**。 +10. 在页面底部,单击**我已接受协议,前往支付**。 - !!! caution - 建议按照页面推荐信息配置集群节点以提升服务的可用性,例如配置 3 个 Meta 节点和至少 3 个 Storage 节点。 +11. 在**支付**页面,选择支付方式,之后单击页面底部的**支付**。 + +12. 在**支付完成**页面,单击**管理控制台**。 + +13. 在**已购买的服务**页面,单击要创建的实例右侧的**立即进入计算巢部署或查看部署详情**。 + +14. 在计算巢的**服务实例详情**页面,单击**基本信息**区域**状态**右侧的**部署**,并在弹出的对话框中单击**确定部署**。 + +15. 监控实例状态,直到部署完成。平均部署耗时为 10 分钟。 + +## 创建免费版试用版服务实例 + +!!! danger + 免费试用实例不可在生产环境中使用。 + +1. 登录阿里云计算巢[推荐服务](https://computenest.console.aliyun.com/user/cn-hangzhou/recommendService)页面,搜索 **NebulaGraph**。 + +2. 在 **NebulaGraph 集群版**卡片上,单击**免费试用**。 + +3. 系统会为首次创建 NebulaGraph 服务实例的用户弹出申请对话框。在**申请权限**对话框中填写申请人信息。带有红色星号(*)的为必填项。 + + 申请通过后才能继续执行以下步骤。 + +4. 设置**服务实例名称**。 + +5. 选择要创建实例的**地域**。 + +6. 在**套餐选择**区域,根据需要选择套餐版本。 + + -8. 进行**可视化产品配置**,选择要部署的可视化产品。 +7. 在 **NebulaGraph 配置**区域,完成数据盘相关设置。 - 可选用的产品包括 [Dashboard](https://docs.nebula-graph.com.cn/{{nebula.release}}/nebula-dashboard-ent/1.what-is-dashboard-ent/) 和 [Explorer](https://docs.nebula-graph.com.cn/{{nebula.release}}/nebula-explorer/about-explorer/ex-ug-what-is-explorer/),默认都处于**开启**状态,此时需要为其选择**实例类型**。选中**关闭**表示不部署相应产品。 +8. 在**基础设施配置**区域,选择**交换机可用区**。 -9. 根据需要配置**标签和资源组**。详情参见[什么是资源管理](https://help.aliyun.com/document_detail/94475.html)。 +9. 根据需要配置**标签和资源组**。详情参见[什么是资源管理](https://help.aliyun.com/document_detail/94475.html)。 10. 完成**权限确认**,并选中**我同意授权服务商(杭州悦数科技有限公司)获取上述权限以提供代运维服务**。 -11. 在页面底部,选中**我已阅读并同意《计算巢服务协议》**,并单击**创建**。 +11. 在页面底部,选中**我已阅读并同意《计算巢服务协议》**,并单击**开始免费试用**。 -12. 在**创建**对话框,完成**信息确认**并**支付费用**。 +12. 在**创建**对话框,完成信息确认并单击**确定**。 13. 在**提交成功**页面,单击去列表查看。 @@ -91,4 +124,4 @@ Q:服务实例的状态显示为**部署失败**怎么处理? 1. 如果使用 RAM 账号创建的实例,确认为该账号授予了本文前提条件中指定的权限。 2. 如果权限符合要求,[删除](https://help.aliyun.com/document_detail/290837.html)创建失败的实例,尝试重新创建。 -3. 如果仍然创建失败,到 [NebulaGraph 论坛](https://discuss.nebula-graph.com.cn/)寻求帮助。 +3. 如果仍然创建失败,到 [NebulaGraph 论坛](https://discuss.nebula-graph.com.cn/)寻求帮助。 \ No newline at end of file diff --git a/docs-2.0/reuse/source_install-nebula-graph-by-rpm-or-deb.md b/docs-2.0/reuse/source_install-nebula-graph-by-rpm-or-deb.md index 34120c7e7e4..795a6e5c35c 100644 --- a/docs-2.0/reuse/source_install-nebula-graph-by-rpm-or-deb.md +++ b/docs-2.0/reuse/source_install-nebula-graph-by-rpm-or-deb.md @@ -2,7 +2,8 @@ RPM 和 DEB 是 Linux 系统下常见的两种安装包格式,本文介绍如 !!! note - 部署 NebulaGraph 集群的方式参见[使用 RPM/DEB 包部署集群](https://docs.nebula-graph.com.cn/{{nebula.release}}/4.deployment-and-installation/2.compile-and-install-nebula-graph/deploy-nebula-graph-cluster/)。 + 部署 NebulaGraph 集群的方式参见[使用 RPM/DEB 包部署集群](https://docs.nebula-graph.com.cn/{{nebula.release}}/2.quick-start/3.quick-start-on-premise/3.1add-storage-hosts/)。 + {{ ent.ent_begin }} !!! enterpriseonly @@ -17,6 +18,12 @@ RPM 和 DEB 是 Linux 系统下常见的两种安装包格式,本文介绍如 ## 下载安装包 +!!! note + + - 当前仅支持在 Linux 系统下安装 NebulaGraph,且仅支持 CentOS 7.x、CentOS 8.x、Ubuntu 16.04、Ubuntu 18.04、Ubuntu 20.04 操作系统。 + + - 如果用户使用的是国产化的 Linux 操作系统,请[安装企业版 NebulaGraph](https://www.nebula-graph.com.cn/contact)。 + ### 阿里云 OSS 下载 - 下载 release 版本 @@ -152,5 +159,5 @@ RPM 和 DEB 是 Linux 系统下常见的两种安装包格式,本文介绍如 {{ ent.ent_end }} -- [启动 NebulaGraph](https://docs.nebula-graph.com.cn/{{nebula.release}}/2.quick-start/5.start-stop-service/) -- [连接 NebulaGraph](https://docs.nebula-graph.com.cn/{{nebula.release}}/2.quick-start/3.connect-to-nebula-graph/) +- [启动 NebulaGraph](https://docs.nebula-graph.com.cn/{{nebula.release}}/2.quick-start/3.quick-start-on-premise/5.start-stop-service/) +- [连接 NebulaGraph](https://docs.nebula-graph.com.cn/{{nebula.release}}/2.quick-start/3.quick-start-on-premise/3.connect-to-nebula-graph/) diff --git a/docs-2.0/reuse/source_manage-service.md b/docs-2.0/reuse/source_manage-service.md index d9cdd6f79f3..86cac43c224 100644 --- a/docs-2.0/reuse/source_manage-service.md +++ b/docs-2.0/reuse/source_manage-service.md @@ -76,9 +76,7 @@ $ systemctl 19669/tcp, 0.0.0.0:49222->19670/tcp, 0.0.0.0:49224->9669/tcp -nebula-docker-compose_graphd2_1 /usr/local/nebula/bin/nebu ... Up (healthy) 0.0.0.0:49229->19669/tcp, 0.0.0.0:49228->19670/tcp, 0.0.0.0:49230->9669/tcp -nebula-docker-compose_graphd_1 /usr/local/nebula/bin/nebu ... Up (healthy) 0.0.0.0:49221->19669/tcp, 0.0.0.0:49220->19670/tcp, 0.0.0.0:9669->9669/tcp -nebula-docker-compose_metad0_1 ./bin/nebula-metad --flagf ... Up (healthy) 0.0.0.0:49212->19559/tcp, 0.0.0.0:49211->19560/tcp, 0.0.0.0:49213->9559/tcp, - 9560/tcp -nebula-docker-compose_metad1_1 ./bin/nebula-metad --flagf ... Up (healthy) 0.0.0.0:49209->19559/tcp, 0.0.0.0:49208->19560/tcp, 0.0.0.0:49210->9559/tcp, - 9560/tcp -nebula-docker-compose_metad2_1 ./bin/nebula-metad --flagf ... Up (healthy) 0.0.0.0:49206->19559/tcp, 0.0.0.0:49205->19560/tcp, 0.0.0.0:49207->9559/tcp, - 9560/tcp -nebula-docker-compose_storaged0_1 ./bin/nebula-storaged --fl ... Up (healthy) 0.0.0.0:49218->19779/tcp, 0.0.0.0:49217->19780/tcp, 9777/tcp, 9778/tcp, - 0.0.0.0:49219->9779/tcp, 9780/tcp -nebula-docker-compose_storaged1_1 ./bin/nebula-storaged --fl ... Up (healthy) 0.0.0.0:49215->19779/tcp, 0.0.0.0:49214->19780/tcp, 9777/tcp, 9778/tcp, - 0.0.0.0:49216->9779/tcp, 9780/tcp -nebula-docker-compose_storaged2_1 ./bin/nebula-storaged --fl ... Up (healthy) 0.0.0.0:49226->19779/tcp, 0.0.0.0:49225->19780/tcp, 9777/tcp, 9778/tcp, - 0.0.0.0:49227->9779/tcp, 9780/tcp -``` - -如果服务有异常,用户可以先确认异常的容器名称(例如`nebula-docker-compose_graphd2_1`), - -然后执行`docker ps`查看对应的`CONTAINER ID`(示例为`2a6c56c405f5`)。 - -```bash -[nebula-docker-compose]$ docker ps -CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES -2a6c56c405f5 vesoft/nebula-graphd:nightly "/usr/local/nebula/b…" 36 minutes ago Up 36 minutes (healthy) 0.0.0.0:49230->9669/tcp, 0.0.0.0:49229->19669/tcp, 0.0.0.0:49228->19670/tcp nebula-docker-compose_graphd2_1 -7042e0a8e83d vesoft/nebula-storaged:nightly "./bin/nebula-storag…" 36 minutes ago Up 36 minutes (healthy) 9777-9778/tcp, 9780/tcp, 0.0.0.0:49227->9779/tcp, 0.0.0.0:49226->19779/tcp, 0.0.0.0:49225->19780/tcp nebula-docker-compose_storaged2_1 -18e3ea63ad65 vesoft/nebula-storaged:nightly "./bin/nebula-storag…" 36 minutes ago Up 36 minutes (healthy) 9777-9778/tcp, 9780/tcp, 0.0.0.0:49219->9779/tcp, 0.0.0.0:49218->19779/tcp, 0.0.0.0:49217->19780/tcp nebula-docker-compose_storaged0_1 -4dcabfe8677a vesoft/nebula-graphd:nightly "/usr/local/nebula/b…" 36 minutes ago Up 36 minutes (healthy) 0.0.0.0:49224->9669/tcp, 0.0.0.0:49223->19669/tcp, 0.0.0.0:49222->19670/tcp nebula-docker-compose_graphd1_1 -a74054c6ae25 vesoft/nebula-graphd:nightly "/usr/local/nebula/b…" 36 minutes ago Up 36 minutes (healthy) 0.0.0.0:9669->9669/tcp, 0.0.0.0:49221->19669/tcp, 0.0.0.0:49220->19670/tcp nebula-docker-compose_graphd_1 -880025a3858c vesoft/nebula-storaged:nightly "./bin/nebula-storag…" 36 minutes ago Up 36 minutes (healthy) 9777-9778/tcp, 9780/tcp, 0.0.0.0:49216->9779/tcp, 0.0.0.0:49215->19779/tcp, 0.0.0.0:49214->19780/tcp nebula-docker-compose_storaged1_1 -45736a32a23a vesoft/nebula-metad:nightly "./bin/nebula-metad …" 36 minutes ago Up 36 minutes (healthy) 9560/tcp, 0.0.0.0:49213->9559/tcp, 0.0.0.0:49212->19559/tcp, 0.0.0.0:49211->19560/tcp nebula-docker-compose_metad0_1 -3b2c90eb073e vesoft/nebula-metad:nightly "./bin/nebula-metad …" 36 minutes ago Up 36 minutes (healthy) 9560/tcp, 0.0.0.0:49207->9559/tcp, 0.0.0.0:49206->19559/tcp, 0.0.0.0:49205->19560/tcp nebula-docker-compose_metad2_1 -7bb31b7a5b3f vesoft/nebula-metad:nightly "./bin/nebula-metad …" 36 minutes ago Up 36 minutes (healthy) 9560/tcp, 0.0.0.0:49210->9559/tcp, 0.0.0.0:49209->19559/tcp, 0.0.0.0:49208->19560/tcp nebula-docker-compose_metad1_1 -``` - -最后登录容器排查问题 - -```bash -[nebula-docker-compose]$ docker exec -it 2a6c56c405f5 bash -[root@2a6c56c405f5 nebula]# -``` - ## 下一步 -[连接 NebulaGraph](https://docs.nebula-graph.com.cn/{{nebula.release}}/2.quick-start/3.connect-to-nebula-graph/) +- [连接 NebulaGraph](https://docs.nebula-graph.com.cn/{{nebula.release}}/2.quick-start/3.quick-start-on-premise/3.connect-to-nebula-graph/) diff --git a/docs-2.0/reuse/source_ngql_for_quick_start.md b/docs-2.0/reuse/source_ngql_for_quick_start.md index 81a27d539f3..fad3dad5b8d 100644 --- a/docs-2.0/reuse/source_ngql_for_quick_start.md +++ b/docs-2.0/reuse/source_ngql_for_quick_start.md @@ -82,6 +82,10 @@ nebula> CREATE SPACE basketballplayer(partition_num=15, replica_factor=1, vid_type=fixed_string(30)); ``` + !!! note + + 如果报错提示`[ERROR (-1005)]: Host not enough!`,请检查是否已[添加 Storage 主机](https://docs.nebula-graph.com.cn/{{nebula.release}}/2.quick-start/3.quick-start-on-premise/3.1add-storage-hosts/)。 + 2. 执行命令`SHOW HOSTS`检查分片的分布情况,确保平衡分布。 ```ngql diff --git a/docs-2.0/synchronization-and-migration/2.balance-syntax.md b/docs-2.0/synchronization-and-migration/2.balance-syntax.md index 1bb9f5c3a58..f3e7b7b19cb 100644 --- a/docs-2.0/synchronization-and-migration/2.balance-syntax.md +++ b/docs-2.0/synchronization-and-migration/2.balance-syntax.md @@ -6,10 +6,10 @@ |语法|说明| |:---|:---| -|`BALANCE DATA`|启动任务均衡分布当前图空间中的所有分片。该命令会返回任务 ID(`job_id`)。| -|`BALANCE DATA REMOVE [,: ...]`|启动任务迁空当前图空间指定的 Storage 服务中的分片。| |`BALANCE LEADER`|启动任务均衡分布当前图空间中的所有 leader。该命令会返回任务 ID(`job_id`)。| ),只包含社区版时只保留注释头( #文档包含企业版时需补全该注释(),只包含社区版时只保留注释尾(-->) + ent_begin: # 文档包含企业版时需补全该注释(),只包含社区版时只保留注释头( #文档包含企业版时需补全该注释(),只包含社区版时只保留注释尾(-->) nav: