图数据库-当添加一个没有唯一属性键的顶点时如何限制Titan



我想在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]*

如果没有提供"aid",我想限制第二步。

你们能告诉我这个问题的解决方法吗?提前感谢你…

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

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

在泰坦0.9。x/TinkerPop3,模式有点不同。当前模型需要构建一个TraversalStrategy来实现验证。不幸的是,这种模式还没有得到证实。我相信它会在TP3 GA发布后进一步发展。

最新更新