【问题标题】:how to restrict titan when adding a vertex without unique property key添加没有唯一属性键的顶点时如何限制泰坦
【发布时间】:2015-08-12 22:03:46
【问题描述】:

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

例如:在我的泰坦图中,“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]*

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

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

【问题讨论】:

    标签: graph-databases titan gremlin rexster


    【解决方案1】:

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

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

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

    【讨论】:

    • 感谢斯蒂芬的回复。我将在应用程序级别添加。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-02-21
    • 1970-01-01
    • 2015-03-21
    • 2014-01-17
    • 1970-01-01
    • 2013-09-24
    • 2019-01-11
    相关资源
    最近更新 更多