Neo4j实战之Neo4j概述

一、高性能的,NOSQL图形数据库java

(1)结构化数据存储在网络上而不是表中;sql

(2)高性能的图引擎,具备成熟数据库的全部特性;数据库

(3)嵌入式、高性能、轻量级等优点,愈来愈受到关注;api

(4)面向对象的、灵活的网络结构,而不是严格、静态的表;缓存

(5)具有彻底的事务特性、企业级的数据库的全部好处;服务器

(6)应对海量数据的新型数据库技术佼佼者;网络

(7)应对复杂数据的理想选择;并发

(8)Cypher是neo4j的查询语言;框架

二、遍历nosql

(1)图形数据库中,由关系链接的节点之间,移动访问一组节点的操做;

(2)实现检索的基本操做;

(3)局域化,仅仅用到所需条件;

三、主键值存储

(1)主键值存储表明了最简单、处理大量并发访问数据的方法

(2)缓存是典型的主键值技术;

(3)最简单的nosql(具备简单性、高性能、可扩展),其余分类都是在其基础上;

四、列族存储

(1)分布式主键值模型(缩放型号),必须使用某些数据类型;

五、面向文档数据库

六、Neo4j的事务特性(关于事务的一切都适用):

(1)原子性

(2)一致性

(3)隔离性

(4)持久性:必须确保写入数据库的数据能写入磁盘;

八、Neo4j的java API---节点(Node)《《《《《《《《《《《《《《《《《《

八、Neo4j的java API---关系(RelationshipType接口)《《《《《《《《《《《《《《《《《《

(1)实现该接口,可自定义关系;

(2)DynamicRelationshipType类;

八、Neo4j的java API---属性(property)《《《《《《《《《《《《《《《《《《《《《《

(1)不容许空值null;

八、Neo4j的java API---类型(type)《《《《《《《《《《《《《《《《《《《《《《《

(1)节点默认没有类型;

(2)添加type属性为节点类型;

七、Neo4j的java API---标签(Label)《《《《《《《《《《《《《《《《《《《《《

(1)实现Label接口定义标签,能够用于节点查询;

(2)建议使用标签,是内置功能;

(3)给查询、基于模式索引带来了极大灵活性;

(4)默认状况下,标签、属性查找是蛮力查找(即:遍历全部);

(5)对属性、标签订义模式索引,引擎会使用更快的索引查找;

(6)节点可包含多个标签;

九、Neo4j的java API---能够为关系添加属性(RelationshipType枚举接口)《《《《《《《《《

十、图形遍历

(1)特殊的方式,按照图形节点之间的关系访问节点的过程;

十一、内存注意事项:

(1)Neo4j的ArrayIntIterator实现了Iterator接口;

(2)ArrayIntIterator是个瘦包装类;

(3)ArrayIntIterator对结果迭代以前,还没访问结果集中包含的元素;

(4)第一次访问延时加载,一旦使用,不可再用(java迭代器指望的那样);

(5)Iterator接口容许返回很是大的数据;

(6)使用java的list、set返回大量数据就须要大量堆内存;

十二、Neo4j遍历api:

(1)具备流畅建立器api;

(2)基于回调函数的框架;

(3)TraversalDescription用于描述遍历器行为;

(4)TraversalDescription不可变对象,用于描述遍历规则;

(5)Evaluator评估函数(Evaluator接口);

(6)Path类型,表明从起始节点到目前节点所遍历的全部节点和关系;

(7)路径的起始节点和终止节点依赖于遍历顺序;

(8)Evaluator四个枚举值:

1三、索引

(1)经过属性,容易找到节点和关系;

(2)应用程序建立和维护索引项;

(3)索引由Lucene存储,建立索引项代码以下:

(4)容许传递不一样设置选项,customConfiguration,可包含任意合法Lucene设置;

(5)经过索引查找到一个节点后,按照常规作遍历,很容易找到关系人;

(6)多结果匹配:

(7)IndexHits为检索结果,根据lucene规定,一次性迭代,用过便不能再用;

(8)支持范围查询(由于Lucene支持);

(9)索引的更新采用,先删除、后添加的方式;

(10)不只仅是节点、关系也能够进行索引;

1四、模式索引

(1)模式索引与传统的关系型数据库索引的方式很像,你定义索引,Neo4j维护;

1五、自动索引

(1)设置自动索引取决于运行模式;

(2)运行模式包括嵌入式模式、服务器模式;

(3)每一个值都在Neo4j中索引,存储容量可能变成2倍甚至更多;

(4)使用自动索引,打开节点或关系,也能够同时打开两者自动索引;

(5)配置文件便可

(6)索引全部属性不现实的,图形变化对性能影响和磁盘需求巨大;

1六、索引的成本/效益权衡

(1)索引越多,对磁盘需求越大,修改操做对性能影响越大;

(2)查找彼岸准程序注意点

  • Neo4j编号保存到外部是很差的操做;
  • Neo4j中getAllNodes方法得到Iterable,Iterable迭代全部节点,查找某特定节点性能低下;

1七、索引存储

(1)建立了较小查找表,能够对图形数据库某个位置快速访问;