从 GraphDB 查询详细信息

时间:2021-07-28 04:49:58

标签: azure-cosmosdb gremlin tinkerpop azure-cosmosdb-gremlinapi

我们正在尝试在 Graphdb 中实现面向客户的详细信息,通过单个查询,我们可以获取客户的详细信息,例如他的地址、电话、电子邮件等。我们已经使用 had address 构建了它,有电子邮件边缘..

g.addV('member').property('id','CU10611972').property('CustomerId', 'CU10611972').property('TIN', 'xxxx').property('EntityType', 'Person').property('pk', 'pk')

g.addV('email').property('id','CU10611972E').property('pk', 'pk')

g.addV('primary').property('id','CU10611972EP').property('EmailPreference','Primary').property('EmailType', 'Home').property('EmailAddress', 'SNEHA@GMAIL.COM').property('pk', 'pk')

g.V('CU10611972').addE('has Email').to(g.V('CU10611972E'))

g.V('CU10611972E').addE('has Primary Email').to(g.V('CU10611972EP')

这就是我们与客户建立电子邮件关系的方式。同样,我们与地址和电话有关系。所以现在我们正在使用这个命令来获取与该客户相关的 json 以发送电子邮件,

g.V('CU10611972').out('has Email').out('has Primary Email')

对于完整的客户详细信息,我们对每个 Vertex、电话、电子邮件和地址使用联合..

能否请您建议是否有一种有效的方法来查询此详细信息?

1 个答案:

答案 0 :(得分:0)

这实际上归结为两件事。

  1. 一般图形数据建模
  2. 您使用的图形数据库支持和不支持的内容。

使用 Gremlin 有几种方法可以为单个顶点建模此数据。

  1. 如果数据库支持,请使用 ['home','mobile'] 等名称列表,并使用元属性为每个名称附加电话号码。
  2. 我所知道的许多 Gremlin 实现都选择不支持元属性。在这些情况下,您有几个选择。 (a) 有一个用于“家庭”的属性和另一个用于“移动”的属性。如果任何一个都不知道,您要么无法创建该属性,要么为其指定一个值,例如“未知” (b) 使用带前缀的字符串,例如 ["Home:123456789","Mobile:123456789] 并将它们存储在集合或列表(多属性)中,并使用 startingWith 谓词在 Gremlin 中访问它们。例如 {{ 1}}