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)创建了较小查找表,可以对图形数据库某个位置快速访问;