希望能和大家一起由这个小问题展开讨论 由步建立索引到为什么建立索引,到建立那种类型的索引,再到不同类型的索引有哪些区别,分别适合哪些场景,有哪些限制呢,在从索引的角度分析通用查询语句,适用哪类索引?

希望能和大家一起由这个小问题展开讨论
由步建立索引到为什么建立索引,到建立那种类型的索引,再到不同类型的索引有哪些区别,分别适合哪些场景,有哪些限制呢,在从索引的角度分析通用查询语句,适用哪类索引?


现在有两小类索引,一类是标签和边本身的索引,一类是带有属性的索引了,这两种索引有什么区别或者使用限制呢?分别在哪里使用呢?

假如,我刚拿到一个nebula的链接,老大让我连上去看看,我发现一个tag索引,现在只知道有个tag叫 player 那么我该怎么入手去查询呢。以我现在的理解是无法查询的,请问这个问题怎么解决呢?

或者这样说,在没有索引,不知道数据的vid,不清楚数据内容的情况下,是不是只能干瞪眼,任何数据都查不到?

如果真是这样,那这也是一个不错的防御手段。

Match - Nebula Graph Database 内核手册 文档原话
标签的索引和属性的索引不同。如果标签的某个属性有索引,但是标签本身没有索引,您无法基于该标签执行MATCH语句。 这句话怎样演示呢?

如果标签本身有索引,但是标签的某个属性没有索引,您无法使用该属性执行match语句。这个我是发现了的,但是文档里没有写

Match - Nebula Graph Database 内核手册 文档中没有对索引的使用列出FAQ,期待能补充一下?
是否能和fetch 一样呢?LOOKUP - Nebula Graph Database 内核手册

正确使用索引可以加快查询速度,但是索引会导致写性能大幅降低(降低90%甚至更多)。请不要随意在生产环境中使用索引,除非您很清楚使用索引对业务的影响。
文章中多次出现这句话,期望有详细的文档或者具体的查询语句来解释说明一下,比如 LOOKUP - Nebula Graph Database 内核手册

就是带索引的写入性能很慢

哦哦,这么长的描述就是这个意思哇,

但是索引对于查询也有很大影响啊,因为没有索引或者索引不合适很可能导致IndexNotFound: No valid index found。
我觉得 在neo4j中应该不经常存在这种问题,如果没有索引可能慢,但不会不能查询。建议把已知的影响列举出来

Nebula 中的索引,其实和数据库中的索引,不太一样。

Nebula 中的索引,大多数场合的目的就是找到对应的VID。没有索引,MATCH 和 LOOKUP 根本不知道该从哪里开始遍历。

你可以把VID理解成对主键的索引,这个原生就有。但是属性是默认不会有任何索引的。

Nebula 的查询是避免全库扫描的。

另外,我没记错的话,整个文档应该没有一个地方提到过Neo4j,也无意和Neo4j的使用方式比较(用起来的体验相差实在也是挺大的,根本列不完)。

哦哦,明白了。那有没有一个一个功能把一个标签下的VID 列出来来呢,
按照使用习惯
1.show spaces,
2.use space
3 show tags
4.查询。如果不能直接查询就得从其他方面想办法进入下一步查询了。

文档里是没有对比,不巧,我前段时间刚刚在学习neo4j,自然而然就把二者做了对比。

同疑问,ArangoDB也是支持根据属性进行过滤数据的,没有根据属性查询数据的功能,或者说建索引才能实现的话,且一旦创建索引会使得插入性能下降90%,可能会是nebua一个致命的设计,这样查询必须配合es用的话,完全没有优势。。。你可以说很耗性能,不建议用,但你不能直接没有设计。。。这种设计太难以理解了。。。

1 个赞

我没看懂怎么断句。慢慢说,不要急。