【发布时间】:2018-03-22 14:08:21
【问题描述】:
我正在尝试在 Vertex 本身中存储对 Vertex 所做的更改列表。理想情况下,我想要这样的东西:
{
"id": "95fcfa87-1c03-436d-b3ca-340cea926ee9",
"label": "person",
"type": "vertex",
"log": [{
"user": "user@user.dk",
"action": "update",
"timestamp": "22-03-2017",
"field": "firstName",
"oldValue": "Marco"
}
]
}
使用这个方法链我可以实现以下结构
graph.addV('person')
.property('firstName', 'Thomas')
.property(list, 'log', '22-03-2017')
.properties('log')
.hasValue('22-03-2017', '21-03-2017')
.property('user','user@user.dk')
.property('action', 'update')
.property('field', 'firstName')
.property('oldValue', 'Marco')
{ "id": "95fcfa87-1c03-436d-b3ca-340cea926ee9", "label": "person", "type": "vertex", "properties": { "firstName": [{ "id": "f23482a9-48bc-44e0-b783-3b74a2439a11", "value": "Thomas" } ], "log": [{ "id": "5cfa35e1-e453-42e2-99b1-eb64cd853f22", "value": "22-03-2017", "properties": { "user": "user@user.dk", "action": "update", "field": "firstName", "oldValue": "Marco" } } ] } }
但这似乎过于复杂,因为我必须存储一个值并向其添加属性。
是否可以使用上述数据添加匿名对象(即没有id 和value)?
【问题讨论】:
-
将 Gremlin 顶点属性与列表和元属性一起使用是拥有更复杂实体的唯一方法,这些实体也可在顶点上查询。要记住的一件事是 Vertex 大小限制为 2MB(存储在 CosmosDB 中的 Vertex 的实际大小将与 Vertex 响应的大小不同),因此如果预计日志数据会在没有定期清理的情况下增长,您可能想要考虑不同的数据模型(也许日志数据块存储在单独的顶点中)
-
@OliverTowers 谢谢你,好点。在大小有限的结构中拥有实际上是一个无限列表听起来是个坏主意。如果你用这个创建一个答案,我可以接受。
标签: neo4j azure-cosmosdb graph-databases gremlin tinkerpop