1

我想在添加一个没有唯一属性键的新顶点时对泰坦图进行限制。

例如:在我的泰坦图中,“aid”是唯一的属性键,如果我尝试通过 gremlin 或 rexster 添加任何顶点而不使用“aid”,它应该停止。

我遵循的步骤:

mgmt = g.getManagementSystem()   
aid = mgmt.makePropertyKey('aid').dataType(String.class).make()
mgmt.buildIndex('byAid',Vertex.class).addKey(aid).unique().buildCompositeIndex()

mgmt.commit()

gremlin>g.addVertex([aid:'aid91']);  
==>v[229640]  

*gremlin>g.addVertex([name:'srinivas']);  
==>v[246024]*

如果没有提供“帮助”,我想限制第二步。

你们能帮我知道这个问题的解决方案吗?提前谢谢你。。

4

1 回答 1

1

您必须在应用程序级别进行这种数据验证。Titan 和 TinkerPop 堆栈都没有提供一种方法来确保在添加新顶点时字段存在。

您使用的语法似乎表明您使用的是 Titan 0.5.x(或更早版本)。如果是这样,一种解决方案可能是创建一个“包装图”来集中验证。包装模式可以在 TinkerPop 中看到,例如:ReadOnlyGraphIdGraph等。基本上,您创建一个ValidationGraph类并TitanGraph在构造函数中传递您的实例,然后覆盖addVertex以拦截调用。然后,您可以实施您想要的任何验证。

在 Titan 0.9.x/TinkerPop3 中,模式有点不同。当前模型需要构建一个TraversalStrategy来实现验证。不幸的是,这种模式仍然有点未经证实。我相信在TP3 GA发布后它会进一步发展。

于 2015-06-01T10:18:23.830 回答