我想在添加具有唯一属性键的新顶点时对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]*
如果没有提供“援助”,我想限制第二步。
你能帮助我知道解决方案吗? 提前感谢你..
答案 0 :(得分:1)
您必须在应用程序级别进行此类数据验证。 Titan和TinkerPop堆栈都没有提供一种方法来确保在添加新顶点时存在字段。
您使用的语法似乎表明您正在使用Titan 0.5.x(或者可能更早)。如果是这样,一个解决方案可能是创建一个“包装图”来集中验证。包装模式可以在TinkerPop中看到,如:ReadOnlyGraph,IdGraph等功能。基本上,您创建一个ValidationGraph
类并在构造函数中传递TitanGraph
实例,然后覆盖addVertex
以拦截调用。然后,您可以实现您想要的任何验证。
在Titan 0.9.x / TinkerPop3中,模式略有不同。当前模型要求构建TraversalStrategy以实现验证。不幸的是,这种模式仍然有点未经证实。我相信在TP3 GA发布后它会进一步发展。