【问题标题】:DSE graph same vertex part of two vertex labels?DSE图两个顶点标签的相同顶点部分?
【发布时间】:2017-10-24 07:29:02
【问题描述】:

在我的例子中,有两个顶点标签:用户、卖家。

注册用户使用自定义顶点id创建新顶点:

  g.addV(label,'User', 'id', '123456789', 'name', 'User1').next();

当用户登录并注册新业务时,他将成为卖家。 现在我希望相同的顶点 ID 成为无法实现的卖方标签的一部分。

如果我创建带有卖家标签的新顶点,那么卖家顶点将无法访问针对用户顶点存储的整个图(hasmobile、hasaddress)。

有没有办法在 DSE 图中实现这一点?

【问题讨论】:

    标签: graph datastax-enterprise gremlin datastax-enterprise-graph


    【解决方案1】:

    TinkerPop 和 DSE Graph 的语义(以及大多数图形实现——我能想到的唯一例外是 Neo4j)不允许一个顶点有多个标签。您可能会认为原因是 SQL 数据库的多个表中不存在一行。

    有多种方法可以解决此问题。制作一个“Person”顶点(而不是“User”或“Seller”)然后:

    1. 从与他们相关的数据的某些方面推断他们是“用户”还是“卖家”。也许这是通过“isSeller”或“isUser”属性完成的。然后你会用

      查询卖家

      g.V().hasLabel('Person').has('isSeller',true)

    2. 创建一个子类型系统,您可以在其中将“Person”顶点连接到“User”顶点或“Seller”顶点。然后,您可以使用

      执行诸如“仅当用户是卖家时才查找用户”之类的操作

      g.V().hasLabel('User').has('someid','12345'). filter(__.in('isAPerson').out('isASeller'))

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-05-25
      • 2018-04-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-03-28
      • 2020-03-18
      相关资源
      最近更新 更多