【ArangoDb踩坑】arango视图更新操作注意
一、问题
ping协议的覆盖率字段一直更新有误。
二、原因
ArangoDB views中的属性commitIntervalMsec默认为1000毫秒,该属性限制了提交视图数据存储更新后必须要等待指定毫秒数才能查询文档,否则数据就是不可见的。
snmp、ping、rping、telemetry四种协议是轮流更新的,其中snmp、ping、telemetry协议更新的都是v_NetworkDevice视图。
更新snmp协议数据操作未完成,同时查询ping协议需要更新字段,此时snmp那部分数据的不可见,导致ping协议查询结果有误,导致更新有误。
三、解决方案
采用的方法:更新snmp、ping、telemetry协议覆盖率字段时,直接对继承网络设备模板的所有模型进行查询和更新,避免了视图的commitIntervalMsec特性。
未采用的其他方法:将commitIntervalMsec的值设置大些。不过具体多少不好确定,这取决于现场设备的数量多少。并且该值设置过大会导致每一次插入或更新视图的提交影响性能、浪费磁盘空间。