问题标签 [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 - CosmosDB中如何围绕SQL API和GraphDB进行分布式事务协调?
我有一个Customer
容器,其中包含代表单个客户的SQL API (DocumentDB)
项目CosmosDB
。我也有一个Gremlin API (GraphDB)
与客户的shoppingcart
数据。这两个数据都是临时的/暂时的。客户可以选择清除购物车,这将删除临时customer
和shoppingcart
数据。
目前,我进行单独的调用,其中一个SQL API (DocumentDB)
有效Gremlin API (GraphDB)
,但我想将两者都作为事务进行(ACID 原则)。要删除customer
,我调用Gremblin API
并删除shoppingcart
数据,然后调用SQL API
删除customer
。但是,如果使用(第二步)删除客户SQL API
失败,我想回滚在第一次调用中所做的更改,这将回滚shoppingcart
已删除的数据。在 T-SQL 世界中,这是通过 acommit
和rollback
.
如何围绕和数据的删除操作实现分布式事务协调?customer
shoppingcart
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”遍历时返回的顶点数量之间的差异吗?
gremlin - 在 gremlin 中对组计数结果进行排序
我有一个产品列表和订单号,我正在使用 gremlin 查找与一个特定产品相关的产品(比如说产品 2)。
我能够查询所有相关产品的出现次数。我想按关联产品出现的次数对结果进行降序排序。目前,我的查询返回一个无序列表:
返回:
有谁知道如何按降序对列表进行排序?
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?
sql - SQL查询一次在多个顶点之间创建边
我正在尝试使用 SQL 查询在 CosmosDB 中创建一个图形。
我已经以 JSON 格式将数据集上传到 CosmosDB。我有一堆顶点显示。在我的 JSON 文件中,我存储了两种类型的标签:订单和产品。订单顶点包含有关购买产品的信息(见下文)
我想编写一个 SQL 查询,将每个订单连接到所有购买的产品(即在每个订单与其产品之间创建边)。我怎样才能一次为所有订单执行此操作,而不仅仅是一个特定的订单?
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() 步骤寻找边缘):
azure-cosmosdb - 使用 Gremlin 查询从 Cosmos Db 中删除大量顶点
我有大约 40000 个带有标签 Test 的顶点
我正在尝试删除所有顶点,但我总是得到查询太大的异常。
我尝试使用以下查询通过 Azure Cosmos DB 数据资源管理器删除它
gV().hasLabel('Test').drop()
这删除了大约 200 个顶点,但这对我来说还不够
我也尝试通过代码删除它
该代码根本不起作用,我得到相同的异常而没有删除任何顶点
如何有效地删除大量顶点?
gremlin - 使用 Gremlin 针对 Azure Cosmos db 图将边限制为同一组 verices 的最佳方法
我需要获取由属性上的特定谓词过滤的顶点,以及它们之间存在的所有边(具有特定标签,也许还有一些关于边属性的谓词)。
这是针对 Cosmos Azure Db 图,解决方案应该是单个 Gremlin 查询。
到目前为止,我正在考虑以下内容:
有没有更好的方法来实现这一目标?
gremlin - 在 Gremlin 中添加或更新边
我在 Azure CosmoDB 中有一个图形数据库,它存储顶点的相似程度,边包含它们相似程度的数值。
复杂之处在于我想通过增加相似度值来添加边缘或更新。这是我要添加的当前代码:
如果边缘存在,我需要一些可以增加 X 的东西,如果不存在,我需要创建它。举例说明它的伪代码:
有没有简单的方法来实现这一点?