Neo4j实战之Neo4j概述

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

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

(2)高性能的图引擎,具有成熟数据库的所有特性;

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

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

(5)具备完全的事务特性、企业级的数据库的所有好处;

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

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

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

2、遍历

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

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

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

3、主键值存储

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

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

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

4、列族存储

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

5、面向文档数据库

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

(1)原子性

(2)一致性

(3)隔离性

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

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

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

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

(2)DynamicRelationshipType类;

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

(1)不允许空值null;

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

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

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

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

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

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

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

(4)默认情况下,标签、属性查找是蛮力查找(即:遍历所有);

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

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

9、Neo4j的java API---可以为关系添加属性(RelationshipType枚举接口)《《《《《《《《《

10、图形遍历

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

11、内存注意事项:

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

(2)ArrayIntIterator是个瘦包装类;

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

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

(5)Iterator接口允许返回非常大的数据;

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

12、Neo4j遍历api:

(1)具有流畅创建器api;

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

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

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

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

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

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

(8)Evaluator四个枚举值:

13、索引

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

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

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

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

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

(6)多结果匹配:

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

(8)支持范围查询(因为Lucene支持);

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

(10)不仅仅是节点、关系也可以进行索引;

14、模式索引

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

15、自动索引

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

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

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

(4)使用自动索引,打开节点或关系,也可以同时打开二者自动索引;

(5)配置文件即可

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

16、索引的成本/效益权衡

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

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

  • Neo4j编号保存到外部是不好的操作;
  • Neo4j中getAllNodes方法获得Iterable,Iterable迭代所有节点,查找某特定节点性能低下;

17、索引存储

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

猜你喜欢

转载自my.oschina.net/u/3847203/blog/1813960
今日推荐