关于删除节点的所有tag后,节点和边任然能访问的问题

我在文档中看到删除节点的所有tag后,节点及边应该是都不能访问的


但是我自己试了下后发现点边任然能查到



想问下这是什么原因导致的

是个bug 因为我们删顶点的时候 没吧相关的边也删了 所以查出来的

1 个赞

您好,麻烦请问一下,这个算bug嘛?
删除tag,不管删一个还是全删了,这个操作本身不都是删tag吗?然后tag和点按理来讲不应该是分开的吗?
所以您之后是会把文档修改成 ”不管怎么删tag 都不影响顶点“ 还是会 ”当删除所有tag的时候会顺便把顶点也删了“

你可以看下这篇讲nebula存储设计的文章: Nebula 架构剖析系列(一)图数据库的存储设计
每个顶点的tag的属性数据是分别存储的,


这个是存储的tag的数据的key. 你drop tag后会把tag的kv删除掉。

这个是存储的edge的数据的key, 现在的bug就是drop tag数据后,没有把相关联的edge数据也删掉,而edge的key里是有边的源点和目标点的, 所以你查询时,仍然会查到。

嗯嗯~ 之前看过这个文章~~
对 就是因为边和tag是分别存储的 所以我才会觉得删tag不会删边

另外,如果按您所说,drop tag数据后,就应该把边删了,就代表 边和 tag应该共存才能使用?

那假如咱们只建立了edge并且只灌入了edge,此时应该是可以使用的吗?

你可以试一试,只有边的schema和数据,是可以使用的

另外,如果按您所说,drop tag数据后,就应该把边删了,就代表 边和 tag应该共存才能使用?

对呀,点没了的话,边也失去意义了。

额~ 不是点没了呀~ 是tag没了。。 tag没了和点没关系呀~ tag没了 ,边还是有意义~

tag 就是描述点的一种类型——并由此相应的定义了一组属性;

一个点可以有多种类型,每个类型都对应于一组属性。一个点如果有两个类型,删掉一个类型之后这个点仍然可以存在。

至于点和边之间的关系,那是另外一个话题——能不能允许悬挂边?

1 个赞

大佬好~

至于点和边之间的关系,那是另外一个话题——能不能允许悬挂边?

所以,能不能呢~ 哈哈

即便删除所有的tag,只能说明我不想要这些顶点上绑定的类型了(或者说我只是想先把所有属性集删了,等琢磨好了之后再换一套新的属性集),但是不代表我不想要这些顶点了,所以仅仅因为我删除了所有的tag就把边也删了,是不是没啥必要?~

删tag是删tag(drop tag),删点是删点(delete vertex),删点的时候会删了点和边~

这种边界情况,在语法设计的时候就不够严谨。实际情况是依赖于具体怎么实现的了。