Skip to content

Commit

Permalink
add some dangling edge explain (#646)
Browse files Browse the repository at this point in the history
  • Loading branch information
whitewum authored Jun 25, 2021
1 parent 1122a29 commit c9420f7
Show file tree
Hide file tree
Showing 4 changed files with 19 additions and 10 deletions.
6 changes: 6 additions & 0 deletions docs-2.0/1.introduction/2.data-model.md
Original file line number Diff line number Diff line change
Expand Up @@ -59,3 +59,9 @@ Nebula Graph使用有向属性图模型,指点和边构成的图,这些边
!!! Note

Nebula Graph 中没有无向边,只支持有向边。

!!! compatibility

由于 Nebula Graph {{ nebula.release }} 的数据模型中,允许存在"悬挂边",因此在增删时,用户需自行保证“一条边所对应的起点和终点”的存在性。详见[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](docs-2.0/3.ngql-guide/13.edge-statements/1.insert-edge.md), [DELETE EDGE](../3.ngql-guide/13.edge-statements/4.delete-edge.md)

不支持 openCypher 中的 MERGE 语句。
6 changes: 6 additions & 0 deletions docs-2.0/20.appendix/0.FAQ.md
Original file line number Diff line number Diff line change
Expand Up @@ -199,6 +199,12 @@ nebula > MATCH (s)<-[e]-() WHERE id(s) == "given" RETURN count(e); #入度

仅Graph服务支持`system_memory_high_watermark_ratio`,Storage和Meta服务不支持该参数。

### 关于悬挂边

悬挂边 (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](docs-2.0/3.ngql-guide/13.edge-statements/1.insert-edge.md), [DELETE EDGE](../3.ngql-guide/13.edge-statements/4.delete-edge.md)

## 关于运维

### 日志文件过大时如何回收日志?
Expand Down
9 changes: 3 additions & 6 deletions docs-2.0/3.ngql-guide/1.nGQL-overview/1.overview.md
Original file line number Diff line number Diff line change
Expand Up @@ -30,11 +30,9 @@ nGQL是一个进行中的项目,会持续发布新特性和优化,因此可

Nebula Graph查询语言nGQL参照以下标准设计:

- ISO/IEC 10646
- (Draft) ISO/IEC JTC1 N14279 SC 32 - Database_Languages - GQL

- ISO/IEC 39075

- ISO/IEC JTC 1/SC 32 N 3228 (Draft)
- (Draft) ISO/IEC JTC1 SC32 N3228 - SQL_Property_Graph_Queries - SQLPGQ

- OpenCypher 9

Expand Down Expand Up @@ -98,11 +96,10 @@ nebula> CREATE TAG player(name string, age int);

请注意[openCypher 9](http://www.opencypher.org/)和[Cypher](https://neo4j.com/developer/cypher/)在语法和许可上有一些不同:

1. Cypher要求所有Cypher语句必须“显式地在一个事务中”执行,而openCypher没有这样的要求。另外,nGQL 不支持事务
1. Cypher要求所有Cypher语句必须“显式地在一个事务中”执行,而openCypher没有这样的要求。另外,nGQL **没有**事务及隔离性

2. Cypher 企业版功能有多种的约束(constraints),包括 Unique node property constraints、Node property existence constraints、Relationship property existence constraints、Node key constraints。 OpenCypher 标准中没有约束。 而 nGQL 是强 schema 系统,前述的约束大多通过 schema 定义可实现(包括 NOT NULL),唯一不能支持的功能是“属性值唯一性”(UNIQUE constraint)。


### 哪里可以找到更多nGQL的示例?

用户可以在Nebula Graph GitHub的[features](https://github.com/vesoft-inc/nebula-graph/tree/master/tests/tck/features)目录内查看超过2500条nGQL示例。
Expand Down
8 changes: 4 additions & 4 deletions docs-2.0/3.ngql-guide/12.vertex-statements/4.delete-vertex.md
Original file line number Diff line number Diff line change
Expand Up @@ -18,14 +18,14 @@ nebula> DELETE VERTEX "team1";

```ngql
# 结合管道符,删除符合条件的点。
nebula> GO FROM "player100" OVER serve YIELD serve._dst AS id | DELETE VERTEX $-.id;
nebula> GO FROM "player100" OVER serve WHERE serve.start_year == "2021" YIELD serve._dst AS id | DELETE VERTEX $-.id;
```

## 删除过程
## 删除过程与删除邻边

Nebula Graph先检索并删除目标点的所有出边和入边,然后删除目标点。
Nebula Graph 先找到并删除目标点的所有邻边(出边和入边),然后删除目标点。

!!! caution

* 不支持原子性删除,如果发生错误请重试,避免出现部分删除的情况。
* 不支持原子性删除,如果发生错误请重试,避免出现部分删除的情况。否则会导致悬挂边。
* 删除超级节点耗时较多,为避免删除完成前连接超时,可以调整`nebula-graphd.conf`中的参数`--storage_client_timeout_ms`延长超时时间。

0 comments on commit c9420f7

Please sign in to comment.