一、Neo4j简介
Neo4j是一个NoSQL的图数据库管理系统,图是一个比线性表和树更高级的数据结构。具有始终保持高效查询性能,不会因数据的增长而降低查询的反应能力,具备事务管理特性,完全支持ACID事务管理。
Neo4j适用于主数据管理、身份识别和访问控制、社交网络、实时推荐引擎、基于图搜索、欺诈检测、网络与IT运营、运输和物流管理及连锁零售等领域。
Neo4j不适合记录大量基于事件的数据、对大规模分布式数据进行处理、二进制数据存储、适合保存在关系型数据库中的结构化数据。
Neo4j企业版是收费的,只有企业版才能使用分布式安装,并提供负载均衡和高可用配置等功能,社区版最多可以使用数十亿个节、关系和属性,对一般小型应用已经足够了。
二、Neo4j API应用
1、基本概念:
与RDBMS相比 :标签->表、节点->行(其中,一个节点可以对应多个标签)、属性->列字段。
支持索引:有效提升查询性能,支持手工定义索引和自动创建模式索引
支持约束:模式约束,比如指定唯一属性
图的遍历算法:
- 广度优先遍历:获取某节点下的可连接的所有节点数据
- 深度优先遍历:获取指定的某条路径数据
2、使用Cypher查询语言(简称CQL)-> 类似SQL查询语言一样
3、Neo4j事务管理
- 原子性、一致性、隔离性、持久性
- 交互周期:所有的数据操作都必须在事务管理范围内执行
- 隔离级别:支持显式写锁,避免在一个事务重复读取数据两个结果完全不同
- 关于死锁:内置了死锁检测机制,抛出异常之前检测出死锁并释放死锁事务
4、其它语言支持Neo4j:Node.js、Python访问Neo4j
三、Neo4j的安装及使用
1、Neo4j性能影响因素:CPU、内存、磁盘、文件系统等
2、安装Neo4j服务器
- 打开linux默认打开文件限制数,默认是1024,Neo4j最低要求是40000
- 支持三种不同的连接方式:Bolt、Http和Https
3、Neo4j配置优化:页面高速缓存、堆大小及垃圾收集器
4、使用Neo4j的web控制台
四、Cypher查询语言
CQL设计理念:让简单的事情变得容易,让复杂的事情成为可能
CQL的使用范围:
1、Neo4j-shell:Neo4j自带的一个命令行工具,即在安装服务器bin目录下
2、web控制台
3、Neo4j API
4、Rest API:支撑RESTful调用,具备RestAPI功能
五、使用SDN建模和设计存储库接口
1、SDN(Spring Data Neo4j)属于Spring Data的一个独立子项目,能像JPA使用ORM一样,SDN使用OGM(对象-图映射)将域对象与图数据进行相互转换。
2、Neo4j数据建模基本原则:用节点来表示现实的事物,用关系表示事物之间的联系。
泰戈尔曾说:“你今天受的苦,吃的亏,担的责,扛的罪,忍的痛,到最后都会变成光,照亮你的路。”