高性能NoSQL图数据库Neo4j

2022-12-05 18:32:37 浏览数 (1)

一、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数据建模基本原则:用节点来表示现实的事物,用关系表示事物之间的联系。

泰戈尔曾说:“你今天受的苦,吃的亏,担的责,扛的罪,忍的痛,到最后都会变成光,照亮你的路。”

0 人点赞