分布式下带索引入库的性能问题

那就是说,如果自己生成指定patition的sst,只能放在某个持有这个partition数据的storage节点的download目录下才能ingest,如果放在不持有这个partition的storage节点的download,ingest会失败,可以这么理解吗?

ingest本身应该不会失败,只不过数据读不到

我跟你想法一样,所以后来你实现成功了吗?我的想法是spark生成完sst以后,自己放到对应的目录下面,然后自己用rockdbapi起实例去 ingest,但是不确定会不会带来数据不一致的问题。

参考nebula源码和exchange的实现,我们把数据编码到生成sst这一步都自己实现并且测试ok了,但是后续没有测试nebula实际去ingest,因为发现了有更简单的方案来达到我们的目的。
你的方案没问题,也有其他用户是这么做的,而且可以直接向storaged发送ingest的http请求即可,无需自己去调用rocksdb的api(当然直接写程序调api也可以)。

要不就是直接把索引当kv自己存进去?之前我也想过了。
自己起实例主要想法是为了不阻塞storaged使用的rockdb实例,我的理解是用nebula去ingest会妨碍正常使用的。

ingest据说是会短暂的阻塞写入,单独起rocksdb实例去ingest不确定会不会和nebula自身的写入产生冲突,这个得问下nebula开发了。

据我了解 ingest 会暂时block 住写操作