问题标签 [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.

0 投票
1 回答
133 浏览

azure - CosmosDB中如何围绕SQL API和GraphDB进行分布式事务协调?

我有一个Customer容器,其中包含代表单个客户的SQL API (DocumentDB)项目CosmosDB。我也有一个Gremlin API (GraphDB)与客户的shoppingcart数据。这两个数据都是临时的/暂时的。客户可以选择清除购物车,这将删除临时customershoppingcart数据。

目前,我进行单独的调用,其中一个SQL API (DocumentDB)有效Gremlin API (GraphDB),但我想将两者都作为事务进行(ACID 原则)。要删除customer,我调用Gremblin API并删除shoppingcart数据,然后调用SQL API删除customer。但是,如果使用(第二步)删除客户SQL API失败,我想回滚在第一次调用中所做的更改,这将回滚shoppingcart已删除的数据。在 T-SQL 世界中,这是通过 acommitrollback.

如何围绕和数据的删除操作实现分布式事务协调customershoppingcart

0 投票
0 回答
31 浏览

azure-cosmosdb - Azure Cosmos Gremlin out() 奇怪的行为

我正在使用我们的用户访问数据试验 gremlin,并在遍历out()顶点时得到一些非常奇怪的结果。

所以要设置场景:

  • 大约有 130K 用户和大约 130K 帐户。
  • 每个帐户/用户都有一个serviceId,我使用这个 id 作为分区键。
  • 帐户和用户之间的边缘显示访问权限(读/写等),没有边缘意味着根本没有访问权限。

我正在试验一个可以访问大约 23K 帐户的用户。

跑步:

  • g.V('62266').out()返回 15 个唯一的顶点(应该是 ~23K)。这些帐户也来自各个分区。
  • g.V('62266').outE()返回 10000 个独特的边(我想这是 cosmos 的限制)。
  • g.V("62266").union(identity(), g.V().hasLabel("Account").has("ServiceId", "AU1461"))在 vscode cosmos 插件中运行会返回一个非常漂亮的图形,显示从用户到所有帐户的边(大约 70 个),表明它正确地知道这些顶点之间存在边(即使第一个查询没有返回它们)。

我一直在搜索 cosmos 文档,但还没有找到任何关于限制out()或类似的东西(甚至是问题的重现)

有人可以帮助解释“62266”顶点上的边数量与从“62266”遍历时返回的顶点数量之间的差异吗?

0 投票
1 回答
481 浏览

gremlin - 在 gremlin 中对组计数结果进行排序

我有一个产品列表和订单号,我正在使用 gremlin 查找与一个特定产品相关的产品(比如说产品 2)。

我能够查询所有相关产品的出现次数。我想按关联产品出现的次数对结果进行降序排序。目前,我的查询返回一个无序列表:

返回:

有谁知道如何按降序对列表进行排序?

0 投票
1 回答
348 浏览

gremlin - Select specific array elements of gremlin query result

I have a dataset with products and orders. For a given product (here PRODUCT 2) I want to find the 5 products that were ordered most in combination with PRODUCT 2.

I have managed to query and sort all associated products with their frequency.

returns

gremlin gives me an array with all the results, so I cannot use the limit step or range step. How could I select only the first five entries of the array?

0 投票
1 回答
83 浏览

sql - SQL查询一次在多个顶点之间创建边

我正在尝试使用 SQL 查询在 CosmosDB 中创建一个图形。

我已经以 JSON 格式将数据集上传到 CosmosDB。我有一堆顶点显示。在我的 JSON 文件中,我存储了两种类型的标签:订单和产品。订单顶点包含有关购买产品的信息(见下文)

我想编写一个 SQL 查询,将每个订单连接到所有购买的产品(即在每个订单与其产品之间创建边)。我怎样才能一次为所有订单执行此操作,而不仅仅是一个特定的订单?

0 投票
0 回答
69 浏览

azure - Azure Gremlin 边缘遍历可疑地高(Out() 步骤)RU 成本

我有一个奇怪的问题,在一些边缘上进行外操作会导致我的 RU 成本增加三倍。希望有人可以帮助我解释为什么+我可以做些什么来减轻它。

我在 CosmosDB 中有一个 Graph,其中有两种类型的顶点标签:“Profile”和“Score”。每个配置文件通过“ProfileHasAggregatedScore”边具有 0 或 1 个分数顶点。partitionKey 是 Profile 的 ID。

如果我进行以下查询,则当前的 RU 是:

作为参考,获取一个类型的所有顶点的成本是:

单个顶点或边的成本是:

有人可以帮我解释一下为什么沿途只有几个顶点的遍历(请参阅底部的遍历)比搜索所有内容更昂贵吗?我能做些什么来防止它吗?使用 partitionKey 添加一个 has-filter 似乎没有帮助。在找到 110 个顶点之后再遍历/查找 16 个元素(8 个边和 8 个顶点)会使操作成本增加三倍,这似乎很奇怪?

(注意。对于 1000 个配置文件,沿着边缘到得分节点进行 1 次遍历的成本是 2200 RU。考虑到他们的 Azure 团队强调它的可扩展性,这似乎很高?)

遍历是否有帮助(似乎大部分时间都花在使用 out() 步骤寻找边缘):

0 投票
1 回答
492 浏览

azure-cosmosdb - 使用 Gremlin 查询从 Cosmos Db 中删除大量顶点

我有大约 40000 个带有标签 Test 的顶点

我正在尝试删除所有顶点,但我总是得到查询太大的异常。

我尝试使用以下查询通过 Azure Cosmos DB 数据资源管理器删除它

gV().hasLabel('Test').drop()

这删除了大约 200 个顶点,但这对我来说还不够

我也尝试通过代码删除它

该代码根本不起作用,我得到相同的异常而没有删除任何顶点

如何有效地删除大量顶点?

0 投票
1 回答
77 浏览

gremlin - 使用 Gremlin 针对 Azure Cosmos db 图将边限制为同一组 verices 的最佳方法

我需要获取由属性上的特定谓词过滤的顶点,以及它们之间存在的所有边(具有特定标签,也许还有一些关于边属性的谓词)。

这是针对 Cosmos Azure Db 图,解决方案应该是单个 Gremlin 查询。

到目前为止,我正在考虑以下内容:

有没有更好的方法来实现这一目标?

0 投票
2 回答
38 浏览

gremlin - 给定gremlin中的引用数组,如何获取最相似顶点的列表

给定这样的图表:

在此处输入图像描述


其中 A,B,C... 比方说书籍,边表示两本书相似,相似程度用边中的数字表示。边缘的方向无关紧要。

给定 N 个引用,我想通过求和连接的相似性数来检索最相似的直接连接边,按最相似的第一个排序且不重复,不包括引用。

在上面的例子中,给定 A 和 B,我们将返回

你能提供一些关于查询的帮助吗?这是我认为它应该看起来的样子,但没有运气:

0 投票
1 回答
1033 浏览

gremlin - 在 Gremlin 中添加或更新边

我在 Azure CosmoDB 中有一个图形数据库,它存储顶点的相似程度,边包含它们相似程度的数值。

复杂之处在于我想通过增加相似度值来添加边缘或更新。这是我要添加的当前代码:

如果边缘存在,我需要一些可以增加 X 的东西,如果不存在,我需要创建它。举例说明它的伪代码:

有没有简单的方法来实现这一点?