Skip to content

Commit

Permalink
Merge branch 'master' into add-cloud
Browse files Browse the repository at this point in the history
  • Loading branch information
foesa-yang authored Jan 7, 2022
2 parents e7d9109 + bb07fc0 commit 526fa56
Show file tree
Hide file tree
Showing 94 changed files with 1,430 additions and 830 deletions.
2 changes: 1 addition & 1 deletion docs-2.0/1.introduction/1.what-is-nebula-graph.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# 什么是 Nebula Graph

Nebula Graph 是一款开源的、分布式的、易扩展的原生图数据库,能够承载数千亿个点和数万亿条边的超大规模数据集,并且提供毫秒级查询。
Nebula Graph 是一款开源的、分布式的、易扩展的原生图数据库,能够承载包含数千亿个点和数万亿条边的超大规模数据集,并且提供毫秒级查询。

![Nebula Graph 鸟瞰图](nebula-birdview.png)

Expand Down
6 changes: 5 additions & 1 deletion docs-2.0/1.introduction/2.data-model.md
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,11 @@ Nebula Graph 数据模型使用 6 种基本的数据模型:
点用来保存实体对象,特点如下:

- 点是用点标识符(`VID`)标识的。`VID`在同一图空间中唯一。VID 是一个 int64,或者 fixed_string(N)。
- 点必须有至少一个 Tag,也可以有多个 Tag。但不能没有 Tag。
- 点可以有 0 到多个 Tag。

!!! Compatibility

Nebula Graph 2.x 的点不能没有 Tag。Nebula Graph {{nebula.release}} 的点可以没有 Tag。

- 边(Edge)

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -152,7 +152,7 @@ EdgeA_Out 和 EdgeA_In 以方向相反的两条边的形式存在于存储层,

创建图空间时需指定分片数量,分片数量设置后无法修改,建议设置时提前满足业务将来的扩容需求。

点和边分布在不同的分片,分片分布在不同的机器。分片数量在 CREATE SPACE 语句中指定,此后不可更改。
多机集群部署时,分片分布在集群内的不同机器上。分片数量在 CREATE SPACE 语句中指定,此后不可更改。

如果需要将某些点放置在相同的分片(例如在一台机器上),可以参考[公式或代码](https://github.com/vesoft-inc/nebula-common/blob/master/src/common/clients/meta/MetaClient.cpp)

Expand Down
18 changes: 9 additions & 9 deletions docs-2.0/15.contribution/how-to-contribute.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,17 +2,17 @@

## 开始之前

### github 或社区提交问题
### GitHub 或社区提交问题

欢迎为项目贡献任何代码或文档,但是建议先在 [github](https://github.com/vesoft-inc/nebula)[社区](https://discuss.nebula-graph.io/)上提交一个问题,和大家共同讨论。
欢迎为项目贡献任何代码或文档,但是建议先在 [GitHub](https://github.com/vesoft-inc/nebula)[社区](https://discuss.nebula-graph.io/)上提交一个问题,和大家共同讨论。

### 签署贡献者许可协议(CLA)

什么是 [CLA](https://www.apache.org/licenses/contributor-agreements.html)

签署协议链接:[vesoft inc. Contributor License Agreement](https://cla-assistant.io/vesoft-inc/)

单击按钮** Sign in with GitHub to agree **签署协议。
单击按钮 **Sign in with GitHub to agree** 签署协议。

如果有任何问题,请发送邮件至`info@vesoft.com`

Expand Down Expand Up @@ -124,7 +124,7 @@ Nebula Graph 项目有很多[仓库](https://github.com/vesoft-inc),以 [nebul

- 代码风格

**Nebula Graph **采用`cpplint`来确保代码符合 Google 的代码风格指南。检查器将在提交代码之前执行。
**Nebula Graph** 采用`cpplint`来确保代码符合 Google 的代码风格指南。检查器将在提交代码之前执行。

- 单元测试要求

Expand Down Expand Up @@ -193,20 +193,20 @@ pull request 创建后,至少需要两人审查。审查人员将进行彻底

### Step 1:确认项目捐赠

通过邮件、微信、Slack 等方式联络 Nebula Graph 官方人员,确认捐赠项目一事。项目将被捐赠至 Nebula Contrib 组织下。
通过邮件、微信、Slack 等方式联络 Nebula Graph 官方人员,确认捐赠项目一事。项目将被捐赠至 [Nebula Contrib](https://github.com/nebula-contrib) 组织下。

邮件地址:info@vesoft.com
* 邮件地址:info@vesoft.com

微信:NebulaGraphbot
* 微信:NebulaGraphbot

Slack:[Join Slack](https://join.slack.com/t/nebulagraph/shared_invite/zt-7ybejuqa-NCZBroh~PCh66d9kOQj45g)
* Slack:[Join Slack](https://join.slack.com/t/nebulagraph/shared_invite/zt-7ybejuqa-NCZBroh~PCh66d9kOQj45g)

### Step 2:获取项目接收人信息

由 Nebula Graph 官方人员给出 Nebula Contrib 的项目接收者 ID。

### Step 3:捐赠项目

由您将项目转移至本次捐赠的项目接受人,并由项目接收者将该项目转移至 Nebula Contrib 组织下。捐赠后,您将以 Maintain 角色继续主导社区项目的发展。
由您将项目转移至本次捐赠的项目接受人,并由项目接收者将该项目转移至 [Nebula Contrib](https://github.com/nebula-contrib) 组织下。捐赠后,您将以 Maintain 角色继续主导社区项目的发展。

GitHub 上转移仓库的操作,请参见 [Transferring a repository owned by your user account](https://docs.github.com/en/enterprise-server@3.0/github/administering-a-repository/managing-repository-settings/transferring-a-repository#transferring-a-repository-owned-by-your-user-account)
97 changes: 49 additions & 48 deletions docs-2.0/2.quick-start/4.nebula-graph-crud.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@

| 组成部分 | 说明|
| :--- | :--- |
| 点(Vertex) | 表示现实世界中的实体。一个点可以有一个或多个标签|
| 点(Vertex) | 表示现实世界中的实体。一个点可以有 0 到多个标签|
| 标签(Tag) | 点的类型,定义了一组描述点类型的属性。 |
| 边(Edge) | 表示两个点之间**有方向**的关系。|
| 边类型(Edge type) | 边的类型,定义了一组描述边的类型的属性。 |
Expand Down Expand Up @@ -49,7 +49,7 @@ nebula> SHOW HOSTS;

!!! caution

Nebula Graph 中执行如下创建和修改操作,是异步实现的。要在**下一个**心跳周期之后才能生效否则访问会报错。
Nebula Graph 中执行如下创建和修改操作,是异步实现的。要在**下一个**心跳周期之后才能生效否则访问会报错。为确保数据同步,后续操作能顺利进行,请等待 2 个心跳周期(20 秒)

- `CREATE SPACE`
- `CREATE TAG`
Expand All @@ -63,12 +63,6 @@ nebula> SHOW HOSTS;

默认心跳周期是 10 秒。修改心跳周期参数`heartbeat_interval_secs`,请参见[配置简介](../5.configurations-and-logs/1.configurations/1.configurations.md)。

为确保数据同步,后续操作能顺利进行,可采取以下方法之一:

- 执行`SHOW``DESCRIBE`命令检查相应对象的状态,确保创建或修改已完成。如果没有完成,请等待几秒重试。

- 等待 2 个心跳周期(20 秒)。

## 创建和选择图空间

### nGQL 语法
Expand Down Expand Up @@ -186,10 +180,9 @@ nebula> CREATE EDGE serve(start_year int, end_year int);
- 插入点

```ngql
INSERT VERTEX [IF NOT EXISTS] <tag_name> (<property_name>[, <property_name>...])
INSERT VERTEX [IF NOT EXISTS] [<tag_name> (<property_name>] [, <property_name>...])
[, <tag_name> (<property_name>[, <property_name>...]), ...]
{VALUES | VALUE} <vid>: (<property_value>[, <property_value>...])
[, <vid>: (<property_value>[, <property_value>...];
VALUES <vid>: ([<property_value>[, <property_value>...]]);
```
`VID`是 Vertex ID 的缩写,`VID`在一个图空间中是唯一的。参数详情请参见 [INSERT VERTEX](../3.ngql-guide/12.vertex-statements/1.insert-vertex.md)。
Expand All @@ -198,7 +191,7 @@ nebula> CREATE EDGE serve(start_year int, end_year int);
```ngql
INSERT EDGE [IF NOT EXISTS] <edge_type> (<property_name>[, <property_name>...])
{VALUES | VALUE} <src_vid> -> <dst_vid>[@<rank>] : (<property_value>[, <property_value>...])
VALUES <src_vid> -> <dst_vid>[@<rank>] : (<property_value>[, <property_value>...])
[, <src_vid> -> <dst_vid>[@<rank>] : (<property_name>[, <property_name>...]), ...];
```
Expand Down Expand Up @@ -248,7 +241,7 @@ nebula> CREATE EDGE serve(start_year int, end_year int);
GO [[<M> TO] <N> STEPS ] FROM <vertex_list>
OVER <edge_type_list> [{REVERSELY | BIDIRECT}]
[ WHERE <conditions> ]
[YIELD [DISTINCT] <return_list>]
YIELD [DISTINCT] <return_list>
[{SAMPLE <sample_list> | LIMIT <limit_list>}]
[| GROUP BY {col_name | expr | position} YIELD <col_name>]
[| ORDER BY <expression> [{ASC | DESC}]]
Expand All @@ -262,22 +255,22 @@ nebula> CREATE EDGE serve(start_year int, end_year int);
```ngql
FETCH PROP ON {<tag_name>[, tag_name ...] | *}
<vid> [, vid ...]
[YIELD <return_list> [AS <alias>]];
YIELD <return_list> [AS <alias>];
```
- 查询边属性
```ngql
FETCH PROP ON <edge_type> <src_vid> -> <dst_vid>[@<rank>] [, <src_vid> -> <dst_vid> ...]
[YIELD <output>];
YIELD <output>;
```
- `LOOKUP`
```ngql
LOOKUP ON {<vertex_tag> | <edge_type>}
[WHERE <expression> [AND <expression> ...]]
[YIELD <return_list> [AS <alias>]];
YIELD <return_list> [AS <alias>];
```
- `MATCH`
Expand All @@ -291,12 +284,13 @@ nebula> CREATE EDGE serve(start_year int, end_year int);
- 从 VID 为`player101`的球员开始,沿着边`follow`找到连接的球员。
```ngql
nebula> GO FROM "player101" OVER follow;
nebula> GO FROM "player101" OVER follow YIELD id($$);
+-------------+
| follow._dst |
| id($$) |
+-------------+
| "player100" |
| "player102" |
| "player125" |
+-------------+
```
Expand All @@ -305,11 +299,12 @@ nebula> CREATE EDGE serve(start_year int, end_year int);
```ngql
nebula> GO FROM "player101" OVER follow WHERE properties($$).age >= 35 \
YIELD properties($$).name AS Teammate, properties($$).age AS Age;
+--------------+-----+
| Teammate | Age |
+--------------+-----+
| "Tim Duncan" | 42 |
+--------------+-----+
+-----------------+-----+
| Teammate | Age |
+-----------------+-----+
| "Tim Duncan" | 42 |
| "Manu Ginobili" | 41 |
+-----------------+-----+
```
|子句/符号|说明|
Expand All @@ -329,7 +324,10 @@ nebula> CREATE EDGE serve(start_year int, end_year int);
+-----------------+---------------------+
| Team | Player |
+-----------------+---------------------+
| "Spurs" | "Tim Duncan" |
| "Trail Blazers" | "LaMarcus Aldridge" |
| "Spurs" | "LaMarcus Aldridge" |
| "Spurs" | "Manu Ginobili" |
+-----------------+---------------------+
```
Expand All @@ -352,7 +350,10 @@ nebula> CREATE EDGE serve(start_year int, end_year int);
+-----------------+---------------------+
| Team | Player |
+-----------------+---------------------+
| "Spurs" | "Tim Duncan" |
| "Trail Blazers" | "LaMarcus Aldridge" |
| "Spurs" | "LaMarcus Aldridge" |
| "Spurs" | "Manu Ginobili" |
+-----------------+---------------------+
```
Expand All @@ -361,12 +362,12 @@ nebula> CREATE EDGE serve(start_year int, end_year int);
查询 VID 为`player100`的球员的属性。
```ngql
nebula> FETCH PROP ON player "player100";
+----------------------------------------------------+
| vertices_ |
+----------------------------------------------------+
| ("player100" :player{age: 42, name: "Tim Duncan"}) |
+----------------------------------------------------+
nebula> FETCH PROP ON player "player100" YIELD properties(vertex);
+-------------------------------+
| properties(VERTEX) |
+-------------------------------+
| {age: 42, name: "Tim Duncan"} |
+-------------------------------+
```

!!! Note
Expand Down Expand Up @@ -413,31 +414,31 @@ nebula> FETCH PROP ON player "player100";
```ngql
nebula> UPDATE VERTEX "player100" SET player.name = "Tim";
nebula> FETCH PROP ON player "player100";
+---------------------------------------------+
| vertices_ |
+---------------------------------------------+
| ("player100" :player{age: 42, name: "Tim"}) |
+---------------------------------------------+
nebula> FETCH PROP ON player "player100" YIELD properties(vertex);
+------------------------+
| properties(VERTEX) |
+------------------------+
| {age: 42, name: "Tim"} |
+------------------------+
```
- 用`UPDATE`修改某条边的`degree`属性,然后用`FETCH`检查结果。
```ngql
nebula> UPDATE EDGE "player101" -> "player100" OF follow SET degree = 96;
nebula> FETCH PROP ON follow "player101" -> "player100";
+----------------------------------------------------+
| edges_ |
+----------------------------------------------------+
| [:follow "player101"->"player100" @0 {degree: 96}] |
+----------------------------------------------------+
nebula> FETCH PROP ON follow "player101" -> "player100" YIELD properties(edge);
+------------------+
| properties(EDGE) |
+------------------+
| {degree: 96} |
+------------------+
```
- 用`INSERT`插入一个 VID 为`player111`的点,然后用`UPSERT`更新它。
```ngql
nebula> INSERT VERTEX player(name,age) values "player111":("David West", 38);
nebula> INSERT VERTEX player(name,age) VALUES "player111":("David West", 38);
nebula> UPSERT VERTEX "player111" SET player.name = "David", player.age = $^.player.age + 11 \
WHEN $^.player.name == "David West" AND $^.player.age > 20 \
Expand Down Expand Up @@ -517,7 +518,7 @@ nebula> FETCH PROP ON player "player100";
```nGQL
// 为 name 属性创建索引 player_index_1。
nebula> CREATE TAG INDEX player_index_1 ON player(name(20));
nebula> CREATE TAG INDEX IF NOT EXISTS player_index_1 ON player(name(20));
// 重建索引确保能对已存在数据生效。
nebula> REBUILD TAG INDEX player_index_1
Expand All @@ -530,11 +531,11 @@ nebula> REBUILD TAG INDEX player_index_1
// 使用 LOOKUP 语句检索点的属性。
nebula> LOOKUP ON player WHERE player.name == "Tony Parker" \
YIELD properties(vertex).name AS name, properties(vertex).age AS age;
+-------------+---------------+-----+
| VertexID | name | age |
+-------------+---------------+-----+
| "player101" | "Tony Parker" | 36 |
+-------------+---------------+-----+
+---------------+-----+
| name | age |
+---------------+-----+
| "Tony Parker" | 36 |
+---------------+-----+
// 使用 MATCH 语句检索点的属性。
nebula> MATCH (v:player{name:"Tony Parker"}) RETURN v;
Expand Down
Loading

0 comments on commit 526fa56

Please sign in to comment.