图数据库NEO4j

在网络节点分析、社交网络分析、多元素的数据挖掘领域,节点和关系的复杂性已经成为限制数据挖掘的和展示的瓶颈。

neo4j是他们的福音,他是一个JAVA开发的图形数据库。Neo4j的内核是一种极快的图形引擎,具有数据库产品期望的所有特性,如恢复、两阶段提交、符合XA等。
Neo4j既可作为无需任何管理开销的内嵌数据库使用;也可以作为单独的服务器使用,在这种使用场景下,它提供了广泛使用的REST接口,能够方便地集成到基于PHP、NET和JavaScript的环境里。

Neo4j的典型数据特征:

  • 数据结构不是必须的,甚至可以完全没有,这可以简化模式变更和延迟数据迁移。
  • 可以方便建模常见的复杂领域数据集,如CMS里的访问控制可被建模成细粒度的访问控制表,类对象数据库的用例、TripleStores以及其他例子。
  • 典型使用的领域如语义网和RDF、LinkedData、GIS、基因分析、社交网络数据建模、深度推荐算法以及其他领域。
neo4j的高性能:

自适应规模的Neo4j无需任何额外的工作便可以处理包含数十亿节点、关系和属性的图。它的读性能可以很轻松地实现每毫秒(大约每秒1-2百万遍历步骤)遍历2000关系,这完全是事务性的,每个线程都有热缓存。使用最短路径计算,Neo4j在处理包含数千个节点的小型图时,甚至比MySQL快1000倍,随着图规模的增加,差距也越来越大。

这其中的原因在于,在Neo4j里,图遍历执行的速度是常数,跟图的规模大小无关。不象在RDBMS里常见的联结操作那样,这里不涉及降低性能的集合操作。Neo4j以一种延迟风格遍历图 - 节点和关系只有在结果迭代器需要访问它们的时候才会被遍历并返回,对于大规模深度遍历而言,这极大地提高了性能。

示例,下面一段代码,可以生成下面的图:

create (gaojunxiu:Person{name:'gjx', born:1984})
create (weixionghan:Person{name:'wxh', born:1988})
create (tanqi:Person{name:'tanqi', born:1992})
create (yangjinsong:Person{name:'yjs', born:1992})
create
  (gaojunxiu)-[:ask]->(weixionghan),
  (weixionghan)-[:ask]->(tanqi),
  (weixionghan)-[:ask]->(yangjinsong),
  (yangjinsong)-[:ask]->(weixionghan)
with gaojunxiu as a
match (a)-[:ask]->(m)-[:ask]->(n) return a,m,n

图数据库NEO4j_第1张图片



你可能感兴趣的:(技术--java,技术--大数据)