我在Titan文档中找到的每个示例都使用Rexster控制台创建索引。您登录到单个Titan节点,创建索引并提交。过了一会儿,整个集群都知道索引,可以使用它。
我想知道是否有其他方法可以做到这一点。从代码创建索引时有一些好处,例如在Rexster扩展中:我使用ENUM作为属性键和边缘标签,提供可用于索引创建的toString
方法。这样就不用担心改变了值。
另一个需要提及的方面是我对Titan进行基准测试,从而经常重新初始化群集。让代码完成所有工作比登录节点并手动完成更为舒适。
但是,从代码创建索引似乎很麻烦,并且在使用最终一致的存储后端时会导致多个异常。我认为由于我的同步节点启动,多个节点试图创建索引。 有关详细信息,请参阅Titan node does not come up。
有没有正确的方法处理这些问题?还有其他方法我不知道吗?
答案 0 :(得分:1)
在实践中,我不认为很多人通过在控制台中手动输入内容来创建他们的架构。我通常创建一个Schema
类,它有一些方法可以完成这项工作。通过这种方式,我可以按照您描述的方式使用枚举,静态字符串变量等。那个Schema
类非常有用,因为它代表了我的Titan模式在任何给定时间看起来的版本化实例,我可以在很多地方重用它(手动初始化生产实例,构建之间的模式)单元测试,将其用于groovy脚本以用于构建服务器上的自动化等。)
对于Titan来说,Schema
类对于开发和维护自定义Gremlin DSL的概念至关重要。如果你还没有读过这个主题,你可能会发现这个blog post很有趣。