同一个TAG上不能同时支持TTL和索引?

同一个TAG上不能同时支持TTL和索引?
能介绍下具体的原因吗?
在后面的版本中考虑同时支持TTL和索引吗?

TTL 在compact的时候会自动删除data,index属性中没有ttl的相关的属性,compact删除data的时候不能将index一起删除,为了保证index和data的一致性,index和ttl不能同时支持。目前还没有同时支持ttl和index的计划。

1 个赞

环境信息:

  • Nebula Graph 版本:2.0.0-rc1
  • 部署:物理集群部署(1metad, 1graphd, 3*storaged)

问题:在某个 property 上曾建立过索引,删除索引后,为该属性设置 ttl ,仍然失败,仍然报 “Has index, can’t set ttl” 的错误,如下图所示

image

@bright-starry-sky @pandasheeps 这里有问题呀 :raising_hand_man:

你看看该tag上还有别的索引吗?

该 tag 其他属性上的索引也会影响吗?换句话说,如果要在该 tag 使用 TTL,则不允许对任何属性建立索引?

是的,目前对tag、edge来讲,ttl和index互斥。
ttl和index共存的问题,因为使用比较少,优先级比较低。

如果你有这方面的需求,可以提出来。

1 个赞

如果对某个 tag 的一个属性使用了 TTL ,则无法对 tag 的任何属性建立索引,则无法使用 MATCH 进行查询(因为 MATCH 查询要求 tag 上存在 index)。

TTL 与 index 共存,或者允许对 tag 上非 TTL 属性建立索引,是不是可以考虑支持一下?

能介绍下,你的ttl场景是啥?

场景:图数据库的应用场景是数据血缘,血缘存在生命周期,所以利用 TTL 特性来实现过期血缘的自动清理。

需求:对有效的血缘,需要查询某节点的上下游。

问题:由于设置了 TTL 的 tag 没有索引,无法使用 MATCH 对该 tag 的上下游进行查询。

了解,我们评估下, @steam

1 个赞

请问下,您对过期血缘的时间精度要求是?需要精确到时分秒?or 天就可以,比如每天运行任务清理过期的数据,天的精度就行

目前是天级别,但下一阶段会做到实时,也就是秒级别;


看文档,TTL 的清理是根据 timestamp 字段进行清理,也就是秒级别;请问实际的清理过程是怎样触发和执行的?

ttl 数据过期后没有马上清理,query 的时候是通过比较 timestamp,过期的丢弃掉,数据在下次 compaction 的时候被删除。无法与索引一起使用是因为索引没有timestamp,无法知道判断是否过期。
问您对精度的要求是了解了解,如果精度要求非实时的,可以考虑支持配置定期任务去清理过期数据 & 对应索引

可以将ttl col字段的值放到value里面啊。只是当col变化的时候,需要rebuild inde下

https://github.com/vesoft-inc/nebula-storage/pull/382

在这个 pr 中支持了用一个 TAG 同时使用 TTL 和索引哈

请问在 v2.0.1 版本可用吗?

v2.0.1 主要是一个 bugfix 版本和一些性能优化的 pr,这个新功能会在 v2.0.2 发布