使用Gremlin进行更新操作的Cosmos graph DB RU



我有一个图形数据库,要求是在几个顶点中更新属性。现在让我们假设我必须将属性值从 0 更新为 1。

方法#1 - 为循环中的每个顶点运行更新

foreach(int id in ids) {
g.V().has('vertex','key','test').has('id', id).Property('status','1')
}

每个查询使用的 RU -

公制 |价值

请求费用 | 17.29

方法#2 - 使用单个 Gremlin 查询更新所有折点

g
.V()
.has('vertex','key','test')
.has('id', within('1','2','3'))
.Property('status','1')

公制 |价值

请求费用 | 41.4

考虑到运行代码所需的 RU 和时间,哪种方法更好?

应使用消耗最少 RU 量的查询,如 @Mark Brown 建议的那样。但是,请记住,客户端和 cosmos 都会强制实施 gremlin 查询长度限制。cosmosDB gremlin API 要求查询长度小于2^16 = 65536。您可能需要根据ids的大小对请求进行批处理

与具有较高 RU (41.4( 的方法 #2(带有 in 子句的单个查询(相比,方法 #1(循环中的单个更新(在 RU (17.29( 和所用时间方面更有效。

最新更新