当前位置: 首页 > 知识库问答 >
问题:

查询Cosmos gremlin图时,通过边连接的顶点的分区键不可用

范哲
2023-03-14

Azure Cosmos DB中的Gremlin API允许我们在不同分区(p1、p2)中创建具有相同id(v1)的顶点。当我为一个分区(p1)中的顶点(v1)创建自边(e1)时,两个分区(p1的v1和p2的v2)中的顶点都创建了两条边。但实际上,p1的顶点(v1)只需要创建一条边。我使用gremlin版本3.4.10创建边。在Azure Portal中为顶点添加源和目标时,观察到了创建重复边的相同行为。查找下面创建的顶点的JSON。

[
  {
    "id": "v1",
    "label": "v1",
    "type": "vertex",
    "properties": {
      "_partitionKey": [
        {
          "id": "v1|_partitionKey",
          "value": "v1"
        }
      ]
    }
  },
  {
    "id": "v1",
    "label": "v1",
    "type": "vertex",
    "properties": {
      "_partitionKey": [
        {
          "id": "v1|_partitionKey",
          "value": "p2"
        }
      ]
    }
  }
]

查找下面创建的边的JSON

[
  {
    "id": "1bea8dea-6f10-49f5-bf7a-400894a92aae",
    "label": "edge1",
    "type": "edge",
    "inVLabel": "v1",
    "outVLabel": "v1",
    "inV": "v1",
    "outV": "v1"
  },
  {
    "id": "92c72e30-0bea-4ef9-b3c4-9c3879fb5a42",
    "label": "edge1",
    "type": "edge",
    "inVLabel": "v1",
    "outVLabel": "v1",
    "inV": "v1",
    "outV": "v1"
  }
]

我这里有两个问题

  1. 只需要创建一条边。而当不同分区中有相同id的顶点时,会创建两条边。
  2. 当我在两个顶点(p1的v1和p1的v2)之间创建边缘(e1)时,边缘的JSON没有输入和输出顶点的分区键。它只有输入和输出顶点的id和标签。在这种情况下,我无法猜测此边缘(e1)是否属于哪个顶点(p1的v1或p2的v1)。这是因为我在不同的分区(p1和p2)中拥有相同id(v1)和相同标签(v1)的顶点。如果我可以为边缘JSON获取inVertextion和outVertextion以及inV和outV,这将很有帮助。

共有1个答案

祁柏
2023-03-14

Out Edge将与顶点一起存储。如果我创建了

v1(p1) --e1--> v2(p2), 

然后e1将存储在v1的同一个分区中,即p1。有关Gremlin API中分区如何工作的更多信息,请参阅,https://docs.microsoft.com/en-us/azure/cosmos-db/graph-partitioning

 类似资料:
  • 如何在Gremlin查询中检索从根顶点开始的所有顶点属性? 我们有以下结构: 根顶点:Employee 边缘:EdCompany,EdDepartment,EdRole顶点:公司,部门,角色 我们试图接收与根顶点连接的其他顶点的数据。有人这样想: 我们尝试了该查询,但返回了一个复杂的JSON: 编辑: 我们还尝试了Kelvin建议的查询: 堆栈跟踪:提交查询失败:g.V().hasLabel(“E

  • 我如何从这样的图中删除所有的循环?所有的边长度都是一个,所有的边要么是垂直的,要么是水平的。图是连通的。 我想计算为了使图不包含圈而必须去除的边的最小数目。 如果包含示例代码(最好是C++、C或Java),将会非常有帮助。 更新:显然我必须找到顶点和边的数量。我的问题给出了一组类似(向下、向左、向上、向下、向左、向左、向上、向下)的指令。你从坐标平面中的(0,0)开始,在指定的方向上移动一个单位。

  • 使用Spark连接器通过分区键查询cassandra的理想方法是什么。我使用传入键,但这导致cassandra在引擎盖下添加,从而导致超时。 当前设置: 这里是分区(不是主)键,我有一个复合主键,只使用分区键进行查询 更新:是的,我得到了一个异常:

  • 本文向大家介绍图的边和顶点,包括了图的边和顶点的使用技巧和注意事项,需要的朋友参考一下 图是一组称为节点或顶点的点,它们由一组称为edge的线互连。图形或图形理论的研究是数学,工程学和计算机科学领域中许多学科的重要组成部分。 图论 定义-图形(表示为G =(V,E))由一组非空的顶点或节点V和一组边缘E组成。顶点a 表示边缘的端点。一条边连接两个顶点a,b ,并由其连接的一组顶点表示。 示例-让我

  • 图的变换有什么算法或名称吗?可以把边变换成顶点,顶点变换成边?这样我们就可以得到一个新的图形或者类似的问题?我不确定这是否真的有意义,但我会很高兴,如果你能给我任何关于这样一个问题的提示。

  • 问题内容: 假设我在Access中具有以下信息的表格: 我的问题是,如何将第二列中的值连接到基于第一列的行值。我想要的查询结果如下: 我想通过查询来实现。有人可以帮我实现吗? 问题答案: 使用数据的示例: