Skip to content

Commit

Permalink
minors (#70)
Browse files Browse the repository at this point in the history
* minors

* update2

* update

* update

* unify terms

* update index

* yml update (#71)

* update3

* rocksdb-stats (#72)

* rocksdb-stats

* update

* update

* update3

* fix dan

* minors

* update2

* update

* update

* unify terms

* update index
  • Loading branch information
AmberMoe committed Aug 24, 2020
1 parent df8f1cb commit 05bea79
Show file tree
Hide file tree
Showing 26 changed files with 95 additions and 97 deletions.
2 changes: 1 addition & 1 deletion docs/README.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# Nebula Graph 是什么

**Nebula Graph** 是一款开源的图数据库,擅长处理千亿个顶点和万亿条边的超大规模数据集
**Nebula Graph** 是一款开源的图数据库,擅长处理千亿个点和万亿条边的超大规模数据集

下图为 **Nebula Graph** 产品架构图:

Expand Down
2 changes: 1 addition & 1 deletion docs/manual-CN/1.overview/1.concepts/1.data-model.md
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ G = < V, E, P<sub>V</sub>, P<sub>E</sub> >,

## 边类型(Edge Type)

每条边都有唯一的边类型。两个节点之间允许有多个相同或者不同类型的边。例如,以球员-球队的服役关系 _**serve**_ 为例,(球员)点 `101`(表示一名球员)为起始点,(球队)点 `215`(表示一支球队)为目标点。点 `101` 有一条出边,而点 `215` 有一条入边。
每条边都有唯一的边类型。两个点之间允许有多个相同或者不同类型的边。例如,以球员-球队的服役关系 _**serve**_ 为例,(球员)点 `101`(表示一名球员)为起始点,(球队)点 `215`(表示一支球队)为目标点。点 `101` 有一条出边,而点 `215` 有一条入边。

## 边 rank

Expand Down
2 changes: 1 addition & 1 deletion docs/manual-CN/1.overview/1.concepts/2.nGQL-overview.md
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@
- ****:点之间的联系称为边
- 每条边由唯一数组 **<src_vid, dst_vid, edge_type, rank>** 标识
- ***边类型*** 是人类可读的字符串,并且每条边内部都会分配一个 32 位的整数。边类型决定边上的属性(模式)
- ***边 rank*** 是用户分配的不可变的 64 位带符号整数,决定两个顶点之间相同类型的边顺序。等级值较高的边排名靠前。如未指定,则默认等级值为零。目前的排序依据为“二进制编码顺序“:即 0, 1, 2, ... 9223372036854775807, -9223372036854775808, -9223372036854775807, ..., -1。
- ***边 rank*** 是用户分配的不可变的 64 位带符号整数,决定两个点之间相同类型的边顺序。等级值较高的边排名靠前。如未指定,则默认等级值为零。目前的排序依据为“二进制编码顺序“:即 0, 1, 2, ... 9223372036854775807, -9223372036854775808, -9223372036854775807, ..., -1。
- 每条边只能有一种类型
- **路径**: 多个点与边的**非分支**连接
- 路径长度为该路径上的边数,比点数少 1
Expand Down
6 changes: 3 additions & 3 deletions docs/manual-CN/1.overview/2.quick-start/1.get-started.md
Original file line number Diff line number Diff line change
Expand Up @@ -218,7 +218,7 @@
nebula> CREATE TAG INDEX player_index_0 on player(name);
```

上述语句在所有标签为 _player_ 的顶点上为属性 _name_ 创建了一个索引。
上述语句在所有标签为 _player_ 的点上为属性 _name_ 创建了一个索引。

**索引会影响写性能**,第一次批量导入的时候,建议先导入数据,再批量重建索引;不推荐带索引批量导入,这样写性能会非常差。

Expand Down Expand Up @@ -384,7 +384,7 @@ nebula> FETCH PROP ON follow 100 -> 101;

#### UPSERT

`UPSERT` 用于插入新的顶点或边或更新现有的顶点或边。如果顶点或边不存在,则会新建该顶点或边`UPSERT``INSERT``UPDATE` 的组合。
`UPSERT` 用于插入新的点或边或更新现有的点或边。如果点或边不存在,则会新建该点或边`UPSERT``INSERT``UPDATE` 的组合。

例如:

Expand Down Expand Up @@ -544,7 +544,7 @@ nebula> GO FROM 100 OVER follow WHERE $$.player.age >= 35 \

请参考[索引文档](../../2.query-language/4.statement-syntax/1.data-definition-statements/index.md)创建索引。

如下示例返回名称为 `Tony Parker`,标签为 _player_ 的顶点
如下示例返回名称为 `Tony Parker`,标签为 _player_ 的点

```ngql
nebula> LOOKUP ON player WHERE player.name == "Tony Parker" \
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ Parser 构建产出的抽象语法树(Abstract Syntax Tree,简称 AST)会

## Execution Planner

执行计划器(Execution Planner)负责将抽象树 AST 解析成一系列执行动作 action(可执行计划)。action 为最小可执行单元。例如,典型的 action 可以是获取某个节点的所有邻节点,或者获得某条边的属性,或基于特定过滤条件筛选节点或边
执行计划器(Execution Planner)负责将抽象树 AST 解析成一系列执行动作 action(可执行计划)。action 为最小可执行单元。例如,典型的 action 可以是获取某个点的所有邻点,或者获得某条边的属性,或基于特定过滤条件筛选点或边

当抽象树 AST 被转换成执行计划时,所有 ID 信息会被抽取出来以便执行计划的复用。这些 ID 信息会放置在当前请求 context 中,context 也会保存变量和中间结果。

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@

```ngql
nebula> GO FROM 100 OVER follow YIELD $$.player.name as Name | GROUP BY $-.Name YIELD $-.Name, COUNT(*);
-- 从节点 100 出发,查找其关注的球员并返回球员的姓名作为 Name,按照姓名对球员分组并统计每个分组的人数。
-- 从点 100 出发,查找其关注的球员并返回球员的姓名作为 Name,按照姓名对球员分组并统计每个分组的人数。
-- 返回以下结果:
================================
| $-.Name | COUNT(*) |
Expand All @@ -33,7 +33,7 @@ nebula> GO FROM 100 OVER follow YIELD $$.player.name as Name | GROUP BY $-.Name
--------------------------------
nebula> GO FROM 101 OVER follow YIELD follow._src AS player, follow.degree AS degree | GROUP BY $-.player YIELD SUM($-.degree);
-- 从节点 101 出发找到其关注的球员,返回这些球员作为 player,边(follow)的属性值作为 degree,对这些球员分组并返回分组球员属性 degree 相加的值。
-- 从点 101 出发找到其关注的球员,返回这些球员作为 player,边(follow)的属性值作为 degree,对这些球员分组并返回分组球员属性 degree 相加的值。
-- 返回以下结果:
==================
| SUM($-.degree) |
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ ORDER BY <expression> [ASC | DESC] [, <expression> [ASC | DESC] ...]
```ngql
nebula> FETCH PROP ON player 100,101,102,103 YIELD player.age AS age, player.name AS name | ORDER BY age, name DESC;
-- 取 4 个顶点并将他们以 age 从小到大的顺序排列,如 age 相同,则 name 按降序排列。
-- 取 4 个点并将他们以 age 从小到大的顺序排列,如 age 相同,则 name 按降序排列。
-- 返回如下结果:
======================================
| VertexID | age | name |
Expand All @@ -33,7 +33,7 @@ nebula> FETCH PROP ON player 100,101,102,103 YIELD player.age AS age, player.nam
```ngql
nebula> GO FROM 100 OVER follow YIELD $$.player.age AS age, $$.player.name AS name | ORDER BY age DESC, name ASC;
-- 从顶点 100 出发查找其关注的球员,返回球员的 age 和 name,age 按降序排列,如 age 相同,则 name 按升序排列。
-- 从点 100 出发查找其关注的球员,返回球员的 age 和 name,age 按降序排列,如 age 相同,则 name 按升序排列。
-- 返回如下结果:
===========================
| age | name |
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

`UUID` 用于生成全局唯一的标识符。

当顶点数量到达十亿级别时,用 `hash` 函数生成 vid 有一定的冲突概率。因此 **Nebula Graph** 提供 `UUID` 函数来避免大量顶点时的 vid 冲突。 `UUID` 函数由 `Murmurhash` 与当前时间戳(单位为秒)组合而成。
当点数量到达十亿级别时,用 `hash` 函数生成 vid 有一定的冲突概率。因此 **Nebula Graph** 提供 `UUID` 函数来避免大量点时的 vid 冲突。 `UUID` 函数由 `Murmurhash` 与当前时间戳(单位为秒)组合而成。

`UUID` 产生的值会以 key-value 方式存储在 **Nebula Graph** 的 Storage 服务中,调用时会检查这个 key 是否存在或冲突。因此相比 hash,性能可能会更慢。

Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# 属性引用

`WHERE``YIELD` 可引用节点或边的属性
`WHERE``YIELD` 可引用点或边的属性

## 引用点的属性

Expand Down Expand Up @@ -70,4 +70,4 @@ nebula> GO FROM 100 OVER follow YIELD follow._src, follow._dst, follow._type, fo
-----------------------------------------------------------
```

该语句通过引用 `follow._src` 作为起点 ID 和 `follow._dst` 作为终点 ID,返回起点 100 `follow` 的所有邻居节点。其中 `follow._src` 返回起点 ID,`follow._dst` 返回终点 ID。
该语句通过引用 `follow._src` 作为起点 ID 和 `follow._dst` 作为终点 ID,返回起点 100 `follow` 的所有邻居点。其中 `follow._src` 返回起点 ID,`follow._dst` 返回终点 ID。
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,7 @@ CREATE TAG [IF NOT EXISTS] <tag_name>
* **默认值约束**

您可以在创建标签/边时使用 `DEFAULT` 约束设置属性的默认值。如果没有指定其他值,那么会将默认值插入新的顶点。默认值可以为 **Nebula Graph** 支持的任一数据类型,且支持表达式。如果您不想使用默认值,也可以写一个用户指定的值。
您可以在创建标签/边时使用 `DEFAULT` 约束设置属性的默认值。如果没有指定其他值,那么会将默认值插入新的点。默认值可以为 **Nebula Graph** 支持的任一数据类型,且支持表达式。如果您不想使用默认值,也可以写一个用户指定的值。

> 暂时不支持使用 `Alter` 更改默认值。
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,10 +13,8 @@ DROP TAG [IF EXISTS] <tag_name>

删除标签可使用 `IF EXISTS` 关键字,这个关键字会自动检测对应的标签是否存在,如果存在则删除,如果不存在则直接返回。

一个节点可以有一个或多个标签(类型)。
一个点可以有一个或多个标签(类型)。

删除所有标签后,节点将不可访问,同时与节点连接的边也不可使用。

删除单个标签后,节点仍可访问,但是已删除标签的属性不可访问。
如果一个点有多个标签,删除所有标签后,点将不可访问,但是与点连接的边仍可使用。删除单个标签后,点仍可访问,但是已删除标签的属性不可访问。

此操作仅删除 Schema 信息,硬盘中所有文件及目录均**未被直接删除**,数据会在下次 compaction 时删除。
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ schema 索引可用于快速处理图查询。**Nebula Graph** 支持两种类
nebula> CREATE TAG INDEX player_index_0 on player(name);
```

上述语句在所有标签为 _player_ 的顶点上为属性 _name_ 创建了一个索引。
上述语句在所有标签为 _player_ 的点上为属性 _name_ 创建了一个索引。

```ngql
nebula> CREATE EDGE INDEX follow_index_0 on follow(degree);
Expand All @@ -32,15 +32,15 @@ nebula> CREATE EDGE INDEX follow_index_0 on follow(degree);

### 创建组合索引

schema 索引还支持为相同 tag 或 edge 中的多个属性同时创建索引这种包含多种属性的索引在 **Nebula Graph** 中称为组合索引。
schema 索引还支持为相同 tag 或 edge 中的多个属性同时创建索引这种包含多种属性的索引在 **Nebula Graph** 中称为组合索引。

**注意:** 目前尚不支持跨多个 tag 创建复合索引
**注意:** **Nebula Graph** 中,跨多个 tag 多种属性的索引被称为复合索引。目前 **Nebula Graph** 尚支持不创建复合索引

```ngql
nebula> CREATE TAG INDEX player_index_1 on player(name,age);
```

上述语句在所有标签为 _player_ 的顶点上为属性 _name__age_ 创建了一个复合索引
上述语句在所有标签为 _player_ 的点上为属性 _name__age_ 创建了一个组合索引

## 列出索引

Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# Delete Vertex 语法

**Nebula Graph** 支持给定点 ID(或 hash ID、UUID),删除这些顶点和与其相关联的入边和出边,语法如下:
**Nebula Graph** 支持给定点 ID(或 hash ID、UUID),删除这些点和与其相关联的入边和出边,语法如下:

```ngql
DELETE VERTEX <vid_list>
Expand All @@ -14,4 +14,4 @@ nebula> DELETE VERTEX 121;

以上示例删除 ID 为 `121` 的点。

系统内部会找出与这些顶点相关联的出边和入边,并将其全部删除,然后再删除点相关的信息。整个过程当前还无法保证原子性,因此若操作失败请重试。
系统内部会找出与这些点相关联的出边和入边,并将其全部删除,然后再删除点相关的信息。整个过程当前还无法保证原子性,因此若操作失败请重试。
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@

## 获取点属性

`FETCH PROP ON` 可返回节点的一系列属性,目前已支持一条语句返回多个节点属性`FETCH` 获取点属性支持与[管道](../../3.language-structure/pipe-syntax.md)[用户自定义变量](../../3.language-structure/user-defined-variables.md)一起使用。
`FETCH PROP ON` 可返回点的一系列属性,目前已支持一条语句返回多个点属性`FETCH` 获取点属性支持与[管道](../../3.language-structure/pipe-syntax.md)[用户自定义变量](../../3.language-structure/user-defined-variables.md)一起使用。

```ngql
FETCH PROP ON {<tag_name_list> | *} <vertex_id_list> [YIELD [DISTINCT] <return_list>]
Expand All @@ -14,41 +14,41 @@ FETCH PROP ON {<tag_name_list> | *} <vertex_id_list> [YIELD [DISTINCT] <return_l

`<tag_name_list>::=[tag_name [, tag_name]]` 为标签名称,与 return_list 中的标签相同。

`<vertex_id_list>::=[vertex_id [, vertex_id]]` 是一组用 "," 分隔开的顶点 `VID` 列表。
`<vertex_id_list>::=[vertex_id [, vertex_id]]` 是一组用 "," 分隔开的点 `VID` 列表。

`[YIELD [DISTINCT] <return_list>]` 为返回的属性列表,`YIELD` 语法参看 [YIELD Syntax](yield-syntax.md)

### 示例

```ngql
-- 返回节点 100 的所有属性。
-- 返回点 100 的所有属性。
nebula> FETCH PROP ON * 100;
-- 返回点100,201 的 player、team tag 上的所有属性。
-- 返回点100,102 的 player、team tag 上的所有属性。
nebula> FETCH PROP ON * 100, 102;
-- 返回节点 100、201 的所有属性。
-- 返回点 100、201 的所有属性。
nebula> FETCH PROP ON player, team 100, 201;
-- 如未指定 YIELD 字段,则返回节点 100, tag 为 player 的所有属性。
-- 如未指定 YIELD 字段,则返回点 100, tag 为 player 的所有属性。
nebula> FETCH PROP ON player 100;
-- 返回节点 100 的姓名与年龄属性。
-- 返回点 100 的姓名与年龄属性。
nebula> FETCH PROP ON player 100 YIELD player.name, player.age;
-- 通过 hash 生成 int64 节点 ID,返回其姓名和年龄属性。
-- 通过 hash 生成 int64 ID,返回其姓名和年龄属性。
nebula> FETCH PROP ON player hash("nebula") YIELD player.name, player.age;
-- 支持与管道一起使用
nebula> YIELD 100 AS id | FETCH PROP ON player $-.id;
-- 沿边 follow 寻找节点 100 的所有近邻,返回其姓名和年龄属性。
-- 沿边 follow 寻找点 100 的所有近邻,返回其姓名和年龄属性。
nebula> GO FROM 100 OVER follow YIELD follow._dst AS id | FETCH PROP ON player $-.id YIELD player.name, player.age;
-- 与上述语法相同。
nebula> $var = GO FROM 100 OVER follow YIELD follow._dst AS id; FETCH PROP ON player $var.id YIELD player.name, player.age;
-- 获取 100、101、102 三个节点,返回姓名和年龄都不相同的记录。
-- 获取 100、101、102 三个点,返回姓名和年龄都不相同的记录。
nebula> FETCH PROP ON player 100,101,102 YIELD DISTINCT player.name, player.age;
```
Expand All @@ -63,7 +63,7 @@ FETCH PROP ON <edge_type> <vid> -> <vid>[@<rank>] [, <vid> -> <vid> ...] [YIELD

`<edge_type>` 指定边的类型,需与 `<return_list>` 相同。

`<vid> -> <vid>` 从起始节点到终止节点,多条边需使用逗号隔开。
`<vid> -> <vid>` 从起始点到终止点,多条边需使用逗号隔开。

`<rank>` 指定相同类型边 rank,可选。如未指定,则默认返回 rank 为 0 的边。

Expand All @@ -72,13 +72,13 @@ FETCH PROP ON <edge_type> <vid> -> <vid>[@<rank>] [, <vid> -> <vid> ...] [YIELD
### 获取边属性示例

```ngql
-- 本语句未指定 YIELD,因此获取从节点 100 到节点 200 边 serve 的所有属性。
-- 本语句未指定 YIELD,因此获取从点 100 到点 200 边 serve 的所有属性。
nebula> FETCH PROP ON serve 100 -> 200;
-- 仅返回属性 start_year。
nebula> FETCH PROP ON serve 100 -> 200 YIELD serve.start_year;
-- 获取节点 100 出边 follow 的 degree 属性。
-- 获取点 100 出边 follow 的 degree 属性。
nebula> GO FROM 100 OVER follow YIELD follow.degree;
-- 同上述语句。
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

`GO`**Nebula Graph** 中最常用的关键字,可以指定过滤条件(如 `WHERE`)遍历图数据并获取点和边的属性,还能以指定顺序(`ORDER BY ASC | DESC`)返回指定数目(`LIMIT`)的结果。

>`GO` 的用法与 SQL 中的 `SELECT` 类似,重要区别是 `GO` 必须从遍历一系列的节点开始
>`GO` 的用法与 SQL 中的 `SELECT` 类似,重要区别是 `GO` 必须从遍历一系列的点开始
```ngql
GO [[<M> TO] <N> STEPS ] FROM <node_list>
Expand All @@ -23,7 +23,7 @@

* `<N> STEPS` 指定查询 N 跳。当 `N` 为零时,**Nebula Graph** 不会获取任何边,因此返回结果为空。
* `M TO N STEPS` 指定查询 M 到 N 跳。当 `M` 为零时,返回结果与 `M` 为 1 时一样,即 `GO 0 TO 2``GO 1 TO 2` 返回相同结果。
* `<node_list>` 为逗号隔开的节点 ID,或特殊占位符 `$-.id` (参看 `PIPE` 用法)。
* `<node_list>` 为逗号隔开的点 ID,或特殊占位符 `$-.id` (参看 `PIPE` 用法)。
* `<edge_type_list>` 为图遍历返回的边类型列表。
* `WHERE <expression>` 指定被筛选的逻辑条件,WHERE 可用于起点,边及终点,同样支持逻辑关键词 AND、OR、NOT,详情参见 WHERE 的用法。
* `YIELD [DISTINCT] <return_list>` 以列的形式返回结果,并可对列进行重命名。详情参看 `YIELD` 用法。`DISTINCT` 的用法与 SQL 相同。
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,9 +11,9 @@ prop_value_list:
[prop_value [, prop_value] ...]
```

INSERT VERTEX 可向 **Nebula Graph** 插入节点
INSERT VERTEX 可向 **Nebula Graph** 插入点

- `tag_name` 表示标签(节点类型),在进行 `INSERT VERTEX` 操作前需创建好。
- `tag_name` 表示标签(点类型),在进行 `INSERT VERTEX` 操作前需创建好。
- `prop_name_list` 指定标签的属性列表。
- `VID` 表示点 ID。每个图空间中的 `VID` 必须唯一。目前的排序依据为“二进制编码顺序“:即 0, 1, 2, ... 9223372036854775807, -9223372036854775808, -9223372036854775807, ..., -1。`VID` 支持手动指定 ID 或使用 `hash()` 函数生成。
- `prop_value_list` 须根据 `prop_name_list` 列出属性值,如无匹配类型,则返回错误。
Expand All @@ -38,7 +38,7 @@ nebula> CREATE TAG t2(s2 string);
nebula> INSERT VERTEX t1 (i1), t2(s2) VALUES 21: (321, "hello"); -- 插入有两个标签的点 21
```

同一节点可被多次插入或写入,读取时以最后一次插入为准。
同一点可被多次插入或写入,读取时以最后一次插入为准。

```ngql
-- 为点 11 多次插入新值
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ LOOKUP ON {<vertex_tag> | <edge_type>} WHERE <expression> [ AND | OR expression

## 点查询

如下示例返回名称为 `Tony Parker`,标签为 _player_ 的顶点
如下示例返回名称为 `Tony Parker`,标签为 _player_ 的点

```ngql
nebula> CREATE TAG INDEX index_player ON player(name, age);
Expand Down
Loading

0 comments on commit 05bea79

Please sign in to comment.