Jua*_*ani 5 graph azure gremlin azure-cosmosdb
这是我的场景:我想拥有一个单一的集合,在这里我可以使用SqlApi插入和查询文档,并使用Graph Api创建顶点和边线,所有这些都在同一集合中。我认为,考虑到我在文档中所读的内容,这是可能的。
我的第一次尝试是使用Microsoft.Azure.Graphs.dll。 通过这种方法,我可以使用Sql Api进行CRUD操作,并针对集合执行gremlin脚本。重要的是要注意,使用Sql api Insert命令创建的文档用作顶点。然后,我使用图形api创建了连接Sql Api创建的文档的边。这按预期工作。我唯一的问题是,如果文档包含数组属性,则图形Api将返回并出错:从'System.String'到'Newtonsoft.Json.Linq.JObject'的无效转换。 经过调查,我被告知Microsoft.Azure.Graphs.dll已被弃用,我应该改用Gremlin.Net。我从未在任何地方阅读过该程序集已被弃用,甚至在官方文档和示例中,我都可以看到正在使用此程序集。真的过时了吗?我不应该使用它吗?
这是我的第二次尝试:我搬到了Gremlin.net。
使用针对Graph Api的新集合,我再次尝试使用Sql Api创建文档,然后使用Graph Api进行连接。我看到在这种情况下,两个端点都被创建:SqlApi + Gremlin。我在使这项工作可行时遇到了一些问题。例如,我必须将GraphSon编写器和读取器设置为版本2,否则,我会收到空引用异常。
第二个问题:我能够使用Sql Api创建文档,但是数组属性存在相同的问题(示例文档{“ id”:“ aaa”“ Prop”:[“ 1”,“ 2”]})我得到了使用gremlin查询时出现相同的错误:gV('aaa')=>从'System.String'到'Newtonsoft.Json.Linq.JObject'的无效转换。结论:我以前的库的第一个问题没有用新库解决。
第三个问题:当我使用SqlApi查询时返回的json与我使用Microsoft.Azure.Graphs.dll时接收到的边或顶点不同。看起来cosmos db引擎根据程序集处理gremlin脚本的方式有所不同。我应该期望哪种json格式?
笔记:
-为什么需要使用SqlApi创建顶点?因为我想使用自定义对象创建属性,而我无法使用graphApi来做到这一点:示例:{“ Id”:“ aaa”,“ Custom”:{“ Id”:456,“ Code”:{“ Id “:555,”名称“:” Hi“}}
-为什么要使用SqlApi查询图形?因为我要访问我的自定义属性。因为我想使用标记进行分页。(范围gremlin函数不起作用。它遍历从0到我想要的最后一页的所有顶点/边)
有人对此情况有所了解吗?帮助将不胜感激。
我知道这篇文章有点旧,但看起来可以使用 graph 和 sql api。关键是在使用 sql api 进行查询/操作时采用 gremlin 的底层存储格式。请查看这篇文章: https://vincentlauzon.com/2017/09/05/hacking-accessing-a-graph-in-cosmos-db-with-sql-documentdb-api/
| 归档时间: |
|
| 查看次数: |
460 次 |
| 最近记录: |