问题标签 [azure-cosmosdb-gremlinapi]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
azure - Azure Cosmos graph db 支持 Gremlin 和 Tinkerpop 版本
我在使用 npm gremlin 和 Tinkerpop 时找不到 Azure Cosmos DB 支持的内容。
https://www.npmjs.com/package/gremlin
gremlin 包没有引用 client.submit 脚本,但是,Azure Node.js 示例代码使用了提交。
https://github.com/Azure-Samples/azure-cosmos-db-graph-nodejs-getting-started/blob/master/app.js
此外,当我在 client.submit 中使用 tinkerpop 功能(如过滤器、elementMap 等)时,它会抛出一个找不到它的错误。
g.V().elementMap('age')
这向我表明,只有某些 Tinkerpop 功能在 client.submit 中有效。我正在使用最新的http://tinkerpop.apache.org/docs/3.4.4/reference/
我没有收到 Azure 对此主题的任何回复。谁能阐明如何将最新的 gremlin 和 tinkerpop 与 Azure Cosmos DB 一起使用?如果不是最新版本,每个版本都支持哪些特定版本?
谢谢,唐尼
gremlin - Gremlin 查询不起作用 - 如果不存在,则为 2 x 顶点并添加边
我正在使用 gremlin 并有以下声明。我想要:
- 如果不存在则创建一个顶点
- 如果一个顶点不存在,则创建另一个顶点
- 在顶点之间创建一条边
边缘不会被创建。我真的很感谢这里的逻辑/方法的帮助。
azure-cosmosdb - 处理长整数类型时 SQL SDK 和存储过程之间的不一致
我们的团队正在使用 Cosmos DB 作为我们的后端图形存储。基本上,由于 Gremlin API 的大小和步长限制,我们使用 JAVA Gremlin SDK 对顶点/边进行查询,并使用 SQL SDK 创建/更新顶点。
我在尝试更新包含 Long 类型属性的顶点时遇到了这个问题。在我们的代码中,我们使用CosmosDbElement
另一个标志作为输入参数,调用sqlClient.executeStoredProcedure(“sp_name”, pk, new Object[] { document, flag });
我使用的存储过程只是进行一些验证,然后调用collection.replaceDocument()
以替换文档。
当我在这个属性上设置不同的值时,我得到了不同的行为:
[-2^53 + 1, 2 ^53 - 1] 内的属性值(JavaScript 中的 MIN_SAFE_INTEGER 到 MAX_SAFE_INTEGER)
- 替换为 SQL SDK 然后通过 ID 获取:效果很好
- 替换为 SP 然后通过 ID 获取:效果很好
超出上述范围且在 Int64 范围内的属性值
- 替换为 SQL SDK 然后通过 ID 获取:效果很好
- 替换为 SP 然后按 ID 获取:最后 3 位四舍五入。例如
922337203685477 5107 -> 922337203685477 5000;
922337203685477 5807 -> 922337203685477 6000。
我们可以使用 SQL SDK 获得相同的舍入值。
对于大多数情况g.V([id])
,得到相同的舍入值。但是如果四舍五入的值超出 的范围Int64
,比如 922337203685477 5807 -> 922337203685477 6000,就会g.V([id])
抛出异常:Cannot create ValueField on non-primitive type BigInteger
。
- Int64 范围之外的属性
- 替换为 SQL SDK 然后通过 ID 获取:效果很好
- 替换为 SP 然后通过 ID 获取:效果很好
我是否以正确的方式使用 SP?
设计是限制还是问题?
如何避免这种精度损失并能够查询顶点?
如果您需要更多信息,请告诉我,谢谢。
azure - Azure Cosmos DB Gremlin 是否支持存储过程或自定义函数
Azure Cosmos DB Gremlin 是否支持存储过程或自定义函数?不幸的是,我找不到任何关于它的文档。Apache Tinkerpop 支持用户定义的步骤。其他图形数据库(例如 Orient DB)也支持自定义函数
gremlin - 查询的 Cosmos gremlin 性能问题
我正在尝试在下面运行此查询,但遇到超时问题。这里的低效率在哪里?
azure-cosmosdb - 如何在 gremlin (CosmosDb) 中设置列表属性的值并将其投影到查询结果中?
我有一个具有列表属性的顶点,我想替换所述属性中的值并以特定格式投影结果。对于上下文,让我们假设以下数据:
我希望能够设置Tags
属性。到目前为止我已经尝试过:
我期望的是以下
但我反而得到了错误Project By: Next: The provided traverser of key "Tags" maps to nothing.
所以它看起来好像该Tags
属性被完全删除了。如果我之后进行查询
我得到了预期的结果:
所以数据肯定是变了。如果我尝试不进行投影,则结果将包含新值。
导致:
但这让我无法预测结果。
我如何才能更新数据并对其进行投影?
我尝试过的其他事情:
barrier()
在步骤之后添加drop()
步骤,没有用barrier()
在步骤之后添加sideEffect()
步骤,没有用barrier()
在步骤之前添加一个步骤project()
,没有用- 与上述三个相同,但
.fold().unfold()
相反,没有用 project()
将步骤替换为optional(g.V("1").project("Tags").by(values("Tags")))
- 这一步通过重新获取顶点来工作,但成本很高。
gremlin - 使用 gremlin 遍历没有任何边的顶点
我的顶点有两个标签“用户”和“组”之一,边被标记为“包含”。“组”顶点可能指向“用户”顶点或其他“组”顶点。我使用以下查询来查找从组顶点开始的“用户”顶点。如果“组”顶点指向另一个“组”顶点,它会遍历该子“组”顶点以查找“用户”顶点。
现在我需要遍历不指向任何其他顶点的“组”顶点。在阅读了其他一些帖子后,我尝试了以下内容,但我得到了“Gremlin 查询编译错误:'P.not' 和 '__.not' 之间的歧义” 表达类似内容的正确方法是什么?
azure-cosmosdb - Azure 为存储在 CosmosDB 中的图形数据提供了可视化工具
是否有任何 Azure 提供的工具用于可视化存储在 Azure CosmosDB 中的图形数据?如果我对此进行搜索,我会得到需要购买的连接到 Azure CosmosDB 的第三方工具。Azure 本身或至少基于 Microsoft 的工具是否没有提供任何此类工具?
gremlin - 按边缘属性中的重合数对结果进行排序
我正在开发一个推荐其他用户的推荐系统。第一个结果应该是与“搜索者”用户最“相似”的用户。用户对问题的回答和以相同方式回答的问题的数量就是相似度。
问题是我不知道如何编写查询
因此,用技术术语来说,我需要按具有特定属性值的边数对用户进行排序,我尝试使用此查询,我认为它应该可以工作,但它不起作用:
抛出这个 gremlin 内部错误:
org.apache.tinkerpop.gremlin.process.traversal.step.util.BulkSet 不能转换为 org.apache.tinkerpop.gremlin.structure.Vertex
我也为每个问题尝试了多个.by()
,但结果不是按巧合程度排序的。
我该如何编写这个查询?
azure-cosmosdb - Azure Cosmos 是否有用于可视化和编辑的良好 GUI?
我正在寻找用于图形可视化和编辑我的 cosmos gremlin 图形的任何类型的 GUI。
提前致谢。