JanusGraph·Index中文笔记

Index

  • Graph Index:提高图查询顶点和边的速度。
  • vertex-centric index:提高遍历图(从一个顶点到另一个顶点)的速度,尤其是遍历通过边连接的顶点。

Graph Indexes

  • 提高了查询顶点和边的速度,没有索引则会进行全局一个一个匹配查询。
  • 通过property key建立的索引查询vertex和edge
  • 索引名称必须唯一
//建索引语句,提供索引名称、被索引的元素类型(Vertex.class、Edge.class)
JanusGraphManagement.buildIndex(String:indexName, Class:className)  
  • 配置文件中强制开启索引,不然就会不使用索引
force-index =true
  • 在一个事务对新创建的属性建立索引会立即生效。

  • 对于已经存在的属性创建索引需要执行 reindex procedure去将之前的元素(使用该属性的元素)加入到索引中,直到reindex procedure执行完成索引才会生效。所以建议索引在初始化schema时候创建。

  • 分为:Composite Index索引和Mixed Index索引。

Composite Index

  • 依赖存储后端,而不是索引后端
  • 只支持对property key的等价查询,如果使用了谓词则不会其作用。
  • 支持单属性和多属性的索引,对多属性索引,在查询时只有使用了多个属性才会使用该索引,如果只使用一个属性,则多属性索引不起作用。
  • 支持Index Uniqueness(可选):即被索引的property key其值具有唯一性,如:name是唯一复合索引中的key,那么name=zhouliang的的值在全局中最多只能在顶点或边的name属性中出现一次。
    • 在具有最终一致性的存储后端上如果要保证属性唯一性,索引的一致性约束就需要开启。

案例

  • 创建索引byNameComposite、byNameAndAgeComposite
graph.tx().rollback() //Never create new indexes while a transaction is active
mgmt = graph.openManagement()
name = mgmt.getPropertyKey('name')
age = mgmt.getPropertyKey('age')
mgmt.buildIndex('byNameComposite', Vertex.class).addKey(name).buildCompositeIndex()
mgmt.buildIndex('byNameAndAgeComposite', Vertex.class
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值