diff --git a/docs-2.0/1.introduction/2.data-model.md b/docs-2.0/1.introduction/2.data-model.md index 2ab75d26e6d..2318359cac7 100644 --- a/docs-2.0/1.introduction/2.data-model.md +++ b/docs-2.0/1.introduction/2.data-model.md @@ -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) diff --git a/docs-2.0/2.quick-start/4.nebula-graph-crud.md b/docs-2.0/2.quick-start/4.nebula-graph-crud.md index ee44a2fac52..9a00a30a17c 100644 --- a/docs-2.0/2.quick-start/4.nebula-graph-crud.md +++ b/docs-2.0/2.quick-start/4.nebula-graph-crud.md @@ -14,7 +14,7 @@ | 组成部分 | 说明| | :--- | :--- | -| 点(Vertex) | 表示现实世界中的实体。一个点可以有一个或多个标签。 | +| 点(Vertex) | 表示现实世界中的实体。一个点可以有 0 到多个标签。 | | 标签(Tag) | 点的类型,定义了一组描述点类型的属性。 | | 边(Edge) | 表示两个点之间**有方向**的关系。| | 边类型(Edge type) | 边的类型,定义了一组描述边的类型的属性。 | @@ -180,10 +180,9 @@ nebula> CREATE EDGE serve(start_year int, end_year int); - 插入点 ```ngql - INSERT VERTEX [IF NOT EXISTS] ([, ...]) + INSERT VERTEX [IF NOT EXISTS] [ (] [, ...]) [, ([, ...]), ...] - VALUES : ([, ...]) - [, : ([, ...]; + VALUES : ([[, ...]]); ``` `VID`是 Vertex ID 的缩写,`VID`在一个图空间中是唯一的。参数详情请参见 [INSERT VERTEX](../3.ngql-guide/12.vertex-statements/1.insert-vertex.md)。 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 8aa5151460f..d0a7217451b 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 @@ -384,7 +384,7 @@ | 语句 | 语法 | 示例 | 说明 | | ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | -| [INSERT VERTEX](../3.ngql-guide/12.vertex-statements/1.insert-vertex.md) | `INSERT VERTEX [IF NOT EXISTS] () [, (), ...] VALUES VID: ([, ])` | `INSERT VERTEX t2 (name, age) VALUES "13":("n3", 12), "14":("n4", 8)` | 在 Nebula Graph 实例的指定图空间中插入一个或多个点。 | +| [INSERT VERTEX](../3.ngql-guide/12.vertex-statements/1.insert-vertex.md) | `INSERT VERTEX [IF NOT EXISTS] [tag_props, [tag_props] ...] VALUES VID: ([prop_value_list])
tag_props: tag_name ([prop_name_list])
prop_name_list: [prop_name [, prop_name] ...]
prop_value_list: [prop_value [, prop_value] ...] ` | `INSERT VERTEX t2 (name, age) VALUES "13":("n3", 12), "14":("n4", 8)` | 在 Nebula Graph 实例的指定图空间中插入一个或多个点。 | | [DELETE VERTEX](../3.ngql-guide/12.vertex-statements/4.delete-vertex.md) | `DELETE VERTEX [, ...]` | `DELETE VERTEX "team1"` | 删除点,以及点关联的出边和入边。 | | [UPDATE VERTEX](../3.ngql-guide/12.vertex-statements/2.update-vertex.md) | `UPDATE VERTEX ON SET [WHEN ] [YIELD ]` | `UPDATE VERTEX ON player "player101" SET age = age + 2 ` | 修改点上 Tag 的属性值。 | | [UPSERT VERTEX](../3.ngql-guide/12.vertex-statements/3.upsert-vertex.md) | `UPSERT VERTEX ON SET [WHEN ] [YIELD ]` | `UPSERT VERTEX ON player "player667" SET age = 31` | 结合`UPDATE`和`INSERT`,如果点存在,会修改点的属性值;如果点不存在,会插入新的点。 | diff --git a/docs-2.0/20.appendix/0.FAQ.md b/docs-2.0/20.appendix/0.FAQ.md index 782a4a24e1c..e35672cf3ef 100644 --- a/docs-2.0/20.appendix/0.FAQ.md +++ b/docs-2.0/20.appendix/0.FAQ.md @@ -40,7 +40,7 @@ Nebula Graph 一直在持续开发,功能或操作的行为可能会有变化 悬挂边 (Dangling edge) 是指一条边的起点或者终点在数据库中不存在。 -Nebula Graph {{ nebula.release }} 的数据模型中,异常情况下可能会存在"悬挂边";也没有 openCypher 中的 MERGE 语句。对于悬挂边的保证完全依赖应用层面。详见 [INSERT VERTEX](../3.ngql-guide/12.vertex-statements/1.insert-vertex.md), [DELETE VERTEX](../3.ngql-guide/12.vertex-statements/4.delete-vertex.md), [INSERT EDGE](../3.ngql-guide/13.edge-statements/1.insert-edge.md), [DELETE EDGE](../3.ngql-guide/13.edge-statements/4.delete-edge.md)。 +Nebula Graph {{ nebula.release }} 的数据模型中,由于设计允许图中存在“悬挂边”;没有 openCypher 中的 MERGE 语句。对于悬挂边的保证完全依赖应用层面。详见 [INSERT VERTEX](../3.ngql-guide/12.vertex-statements/1.insert-vertex.md), [DELETE VERTEX](../3.ngql-guide/12.vertex-statements/4.delete-vertex.md), [INSERT EDGE](../3.ngql-guide/13.edge-statements/1.insert-edge.md), [DELETE EDGE](../3.ngql-guide/13.edge-statements/4.delete-edge.md)。 ### 如何处理错误信息 `[ERROR (-1005)]: Used memory hits the high watermark(0.800000) of total system memory.` @@ -236,11 +236,7 @@ Storage 服务在毫秒级时间内多次收到插入或者更新同一点或边 ### 能不能用中文字符做标识符,比如图空间、Tag、Edge type、属性、索引的名称? -不能。 - -图空间、Tag、Edge type、属性以及索引的名称都需由大小写英文字母、数字或下划线组成,暂不支持使用中文字符。 - -同时,上述标识符区分大小写,且不可使用[关键字和保留字](../3.ngql-guide/1.nGQL-overview/keywords-and-reserved-words.md)。 +能,详情参见[关键字和保留字](../3.ngql-guide/1.nGQL-overview/keywords-and-reserved-words.md)。 ### 获取指定点的出度(或者入度)? @@ -378,4 +374,4 @@ telnet: connect to address 192.168.1.10: Connection refused | 未到生效期 | 不可登录且无法使用 | 您的 License 还未到生效时间,请于有效期范围内使用。 | | 过期前 3 天内 | 可以登录并继续使用 | 您的 License 证书有效时间还剩 <3\|2\|1\|0> 天,过期7天后无法使用,请及时联系销售([inqury@vesoft.com](mailto:inqury@vesoft.com))购买并更换新的证书。 | | 过期后 7 天内 | 可以登录并继续使用 | 您的 License 证书已过期 <0\|1\|2\|3\|4\|5\|6\|7> 天,过期7天后无法使用,请及时联系销售([inqury@vesoft.com](mailto:inqury@vesoft.com))购买并更换新的证书。 | -| 过期后 7 天以上 | 不可登录且无法使用 | 您的 License 已过期 7 天以上,产品无法正常使用,请及时联系销售([inqury@vesoft.com](mailto:inqury@vesoft.com))购买并更换新的证书。 | \ No newline at end of file +| 过期后 7 天以上 | 不可登录且无法使用 | 您的 License 已过期 7 天以上,产品无法正常使用,请及时联系销售([inqury@vesoft.com](mailto:inqury@vesoft.com))购买并更换新的证书。 | diff --git a/docs-2.0/3.ngql-guide/10.tag-statements/6.delete-tag.md b/docs-2.0/3.ngql-guide/10.tag-statements/6.delete-tag.md index e4eaef7a963..c2ae2e9ae61 100644 --- a/docs-2.0/3.ngql-guide/10.tag-statements/6.delete-tag.md +++ b/docs-2.0/3.ngql-guide/10.tag-statements/6.delete-tag.md @@ -2,12 +2,6 @@ `DELETE TAG`语句可以删除指定点上的指定 Tag。 -点可以有一个或多个 Tag。 - -- 如果某个点只有一个 Tag,删除这个点上的 Tag 后,用户就**无法访问**这个点,下次 Compaction 操作时会删除该点,但点上的边仍然存在。 - -- 如果某个点有多个 Tag,删除其中一个 Tag,仍然可以访问这个点,但是**无法访问**这个点上已删除 Tag 所定义的所有属性。 - ## 前提条件 登录的用户必须拥有对应权限才能执行`DELETE TAG`语句。详情请参见[内置角色权限](../../7.data-security/1.authentication/3.role-list.md)。 diff --git a/docs-2.0/3.ngql-guide/10.tag-statements/improve-query-by-tag-index.md b/docs-2.0/3.ngql-guide/10.tag-statements/improve-query-by-tag-index.md index 2db58844608..2a94deb14f1 100644 --- a/docs-2.0/3.ngql-guide/10.tag-statements/improve-query-by-tag-index.md +++ b/docs-2.0/3.ngql-guide/10.tag-statements/improve-query-by-tag-index.md @@ -4,10 +4,6 @@ 在 Nebula Graph 中,可以通过 Tag 变相实现相同操作,创建 Tag 并将 Tag 插入到已有的点上,就可以根据 Tag 名称快速查找点,也可以通过`DELETE TAG`删除某些点上不再需要的 Tag。 -!!! caution - - 请确保点上已经有另一个 Tag,否则删除点上最后一个 Tag 时,会导致点也被删除。 - ## 示例 例如在 basketballplayer 数据集中,部分篮球运动员同时也是球队股东,可以为股东 Tag`shareholder`创建索引,方便快速查找。如果不再是股东,可以通过`DELETE TAG`语句删除相应运动员的股东 Tag。 diff --git a/docs-2.0/3.ngql-guide/12.vertex-statements/1.insert-vertex.md b/docs-2.0/3.ngql-guide/12.vertex-statements/1.insert-vertex.md index 5ea1d4ad168..4c5bf8930d2 100644 --- a/docs-2.0/3.ngql-guide/12.vertex-statements/1.insert-vertex.md +++ b/docs-2.0/3.ngql-guide/12.vertex-statements/1.insert-vertex.md @@ -9,14 +9,18 @@ ## 语法 ```ngql -INSERT VERTEX [IF NOT EXISTS] () [, (), ...] -VALUES VID: ([, ]) + +INSERT VERTEX [IF NOT EXISTS] [tag_props, [tag_props] ...] +VALUES VID: ([prop_value_list]) + +tag_props: + tag_name ([prop_name_list]) prop_name_list: - [prop_name [, prop_name] ...] + [prop_name [, prop_name] ...] prop_value_list: - [prop_value [, prop_value] ...] + [prop_value [, prop_value] ...] ``` - `IF NOT EXISTS`:用户可以使用`IF NOT EXISTS`关键字检测待插入的 VID 是否存在,只有不存在时,才会插入,如果已经存在,不会进行修改。 @@ -26,13 +30,17 @@ prop_value_list: - `IF NOT EXISTS` 仅检测 VID + Tag 的值是否相同,不会检测属性值。 - `IF NOT EXISTS` 会先读取一次数据是否存在,因此对性能会有明显影响。 -- `tag_name`:点关联的 Tag(点类型)。Tag 必须提前创建,详情请参见 [CREATE TAG](../10.tag-statements/1.create-tag.md)。 +- `tag_name`:点关联的 Tag(点类型)。Tag 的创建,详情请参见 [CREATE TAG](../10.tag-statements/1.create-tag.md)。 + + !!! caution -- `prop_name_list`:需要设置的属性名称列表。 + Nebula Graph {{ nebula.release }} 中支持插入无 Tag 的点。 -- `VID`:点 ID。在 Nebula Graph 2.0 中支持字符串和整数,需要在创建图空间时设置,详情请参见 [CREATE SPACE](../9.space-statements/1.create-space.md)。 +- `property_name`:需要设置的属性名称。 -- `prop_value_list`:根据`prop_name_list`填写属性值。如果没有填写属性值,而 Tag 中对应的属性设置为`NOT NULL`,会返回错误。详情请参见 [CREATE TAG](../10.tag-statements/1.create-tag.md)。 +- `vid`:点 ID。在 Nebula Graph {{ nebula.release }} 中支持字符串和整数,需要在创建图空间时设置,详情请参见 [CREATE SPACE](../9.space-statements/1.create-space.md)。 + +- `property_value`:根据`prop_name_list`填写属性值。如果没有填写属性值,而 Tag 中对应的属性设置为`NOT NULL`,会返回错误。详情请参见 [CREATE TAG](../10.tag-statements/1.create-tag.md)。 !!! caution @@ -47,6 +55,9 @@ prop_value_list: ## 示例 ```ngql +# 插入不包含 Tag 的点。 +nebula> INSERT VERTEX VALUES "1":(); + # 插入不包含属性的点。 nebula> CREATE TAG IF NOT EXISTS t1(); nebula> INSERT VERTEX t1() VALUES "10":(); @@ -118,6 +129,7 @@ nebula> FETCH PROP on t5 "004" YIELD properties(vertex); ```ngql # 插入点 1。 nebula> INSERT VERTEX t2 (name, age) VALUES "1":("n2", 13); + # 使用 IF NOT EXISTS 修改点 1,因为点 1 已存在,不会进行修改。 nebula> INSERT VERTEX IF NOT EXISTS t2 (name, age) VALUES "1":("n3", 14); nebula> FETCH PROP ON t2 "1" YIELD properties(vertex); diff --git a/docs-2.0/3.ngql-guide/12.vertex-statements/4.delete-vertex.md b/docs-2.0/3.ngql-guide/12.vertex-statements/4.delete-vertex.md index b831f804618..7edbcfcbb21 100644 --- a/docs-2.0/3.ngql-guide/12.vertex-statements/4.delete-vertex.md +++ b/docs-2.0/3.ngql-guide/12.vertex-statements/4.delete-vertex.md @@ -1,25 +1,37 @@ # DELETE VERTEX -`DELETE VERTEX`语句可以删除点,以及点关联的出边和入边。 +`DELETE VERTEX`语句可以删除点,但是默认不删除该点关联的出边和入边。 + +!!! Compatibility + + Nebula Graph 2.x 默认删除点及关联该点的出边和入,Nebula Graph {{nebula.release}} 默认只删除点,不删除该点关联的出边和入边,此时将默认存在悬挂边。 `DELETE VERTEX`语句一次可以删除一个或多个点。用户可以结合管道符一起使用,详情请参见[管道符](../5.operators/4.pipe.md)。 !!! note - - `DELETE VERTEX`是直接删除点和关联的边。 + - `DELETE VERTEX`是直接删除点,不删除关联的边。 - - `DELETE TAG`是删除指定点上的指定 Tag。当点上只有一个 Tag 时,执行`DELETE TAG`会删除点,但是不会删除关联的边。 + - `DELETE TAG`是删除指定点上的指定 Tag。 ## 语法 ```ngql -DELETE VERTEX [, ...]; +DELETE VERTEX [ , ... ] [WITH EDGE]; ``` +- `WITH EDGE`: 删除该点关联的出边和入边。 + + ## 示例 ```ngql +# 删除 VID 为 `team1` 的点,不删除该点关联的出边和入边。 nebula> DELETE VERTEX "team1"; + +# 删除 VID 为 `team1` 的点,并删除该点关联的出边和入边。 +nebula> DELETE VERTEX "team1" WITH EDGE; + ``` ```ngql @@ -27,9 +39,9 @@ nebula> DELETE VERTEX "team1"; nebula> GO FROM "player100" OVER serve WHERE properties(edge).start_year == "2021" YIELD dst(edge) AS id | DELETE VERTEX $-.id; ``` -## 删除过程与删除邻边 +## 删除过程 -Nebula Graph 先找到并删除目标点的所有邻边(出边和入边),然后删除目标点。 +Nebula Graph 找到目标点并删除,该目标点的所有邻边(出边和入边)将成为悬挂边。 !!! caution