如何在添加没有唯一属性键的顶点时限制titan

时间:2015-05-29 21:58:49

标签: graph-databases titan gremlin rexster

我想在添加具有唯一属性键的新顶点时对titan图形进行限制。

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

我遵循的步骤:

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]*

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

你能帮助我知道解决方案吗? 提前感谢你..

1 个答案:

答案 0 :(得分:1)

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

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

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