请问一个服务调用的问题,查询引擎是怎么确定将请求发到哪个分片上,我理解的是如果查询条件带有具体点的信息的话可以通过hash规则找到对应的分片和ip,如果是范围查询不指定点只指定属性应该怎么查询?
另外,limit的下推是怎么支持的,每个分片收到的limit都是一样的吗,如果是这样那么在查询引擎部分是不是还得再实现一次limit?
是的,查询层还要limit一次
1 个赞
不指定点就扫所有分片
2 个赞
有一个使用场景的问题想请教一下,对于多度查询比较多的场景,一般是三度。按照nebula graph的压测显示,一般对轻量级的查询比较友好,如果我限制每度返回的数量,能在线上使用吗三度查询吗。一度限制在1w,二度限制在2w,三度限制在5w。
可以,2.6版本GO已经支持了每步limit的功能
您可以告诉我一下多度查询时怎么请求存储引擎的吗,第一度我查出一千个节点,然后第二度再发一千点查询顶点的请求,还是将顶点汇总做一次scan?
不太明白,我想问的是这里面nebula的实现方式是什么
实现方式就是用上次的终点做下次查询的起点
上次应该有多个终点,是做一次查询,还是多次并发查询呢
首先请求会根据分片分发到不同的storage,这是进程级别的并发,然后进程里面可以设置query_concurrently,这是partition级别的并发
2 个赞
每个storage都会收到一个包含多个顶点的请求是吗
是的,分片到了就会
1 个赞
谢谢大佬,我想问问索引相关的内容,根据索引的介绍,NebulaGraph使用的索引是local index
假设我有三度查询,每一度查询都命中相同的索引,是全部查出来,然后走索引过滤吗?
nebula目前在扩展的时候不会使用索引查询
明白了。谢谢
此话题已在最后回复的 7 天后被自动关闭。不再允许新回复。