Neo4j数据库基础

来源:互联网 发布:大赦国际 知乎 编辑:程序博客网 时间:2024/06/08 13:20

1、Neo4j简介

可能很多同学之前没有接触过图数据库,Neo4j就是一个图数据库,首先对Neo4j做一个初步的介绍: 
Neo4j是一个——面向网络的数据库——基于磁盘的、具备完全的事务特性的Java持久化引擎,但是它将结构化数据存储在网络上而不是表中。网络(从数学角度叫做图)是一个灵活的数据结构,可以应用更加敏捷和快速的开发模式。

2、Neo4j基本特点

它有以下一些基本特点: 
1)、Neo4j是一个开源的图数据库 
2)、完全兼容ACID,即:原子性、一致性、隔离性、持久性 
3)、支持数十亿个节点 
4)、用于存储复杂的数据,可以减少建立中间表来维持关系 
5)、两种部署方式:嵌入式和服务器式

3、Neo4j数据库中的一些基本概念

这里写图片描述 
针对图中的一些基本概念: 
node : 节点 
relationships : 关系,也就是图中的边,注意是有向边 
properties : 属性,针对node/relationship都可以设置property 
Traversal : 图遍历工具 
Indexes : 索引

4、Neo4j与MySQL

这里有列出了一些与关系型数据库对应的概念方便理解: 
这里写图片描述

5、Neo4j底层数据结构

这里写图片描述 
其中: 
节点:存储自己的第一个属性的指针和第一个关系指针 
关系:存储以这个节点为起始节点的其他关系。 
保存:Node的Relationship使用一个双向列表来保存的,可以方便的找到关系的from-to-Node。

6、图的遍历

Traversal(遍历) 
Order : 对应的图的遍历算法 
DEPTH_FIRST : 深度优先搜索,就是找到第一个节点,递归的一直往下找,直到找不到合适的节点后,才进行回溯 
BREADTH_FIRST : 广度优先搜索 
举个栗子: 
这里写图片描述 
图中: 
深度优先:A、B、D、E、I、C、F、G、H 
广度优先:A、B、C、D、E、F、G、H、I

7、Neo4j核心概念

Paths(路径,从一个节点到另一个节点的所有的到达路径) 
路径是一个或多个节点通过关系连接起来的产物,例如得到图谱查询或者遍历的结果。

Schema(模式,类似存储数据的结构) 
neo4j是一个无模式或者less模式的图谱数据库,像mongodb,solr,lucene或者es一样,你可以使用它不需要定义任何schema

Indexes(索引) 
遍历图通过需要大量的随机读写,如果没有索引,则可能意味着每次都是全图扫描,这样效率非常低下,为了获得更好的性能,我们可以在字段属性上构建索引,这样任何查询操作都会使用索引,从而大幅度提升seek性能, 
构建索引是一个异步请求,并不会立刻生效,会再后台创建直至成功后,才能最终生效。如果创建失败,可以重建索引,先删除索引,在创建即可,然后从log里面找出创建失败的原因然后分析。

Constraints(约束) 
约束可以定义在某个字段上,限制字段值唯一,创建约束会自动创建索引。

8、Neo4j中数据模型的类型

不同于传统的关系数据库管理系统,Neo4j是一个无架构的数据库,在开始添加数据之前,你并不需要定义表和关系,一个节点可以具有你喜欢的任何属性,任何节点都可以与任何其他节点建立关系。neo4j数据库中的数据模型隐含在它存储的数据中,而不是将数据模型定义为数据库本身的一个部分。它是你想要存入数据的一个描述,而不是数据库的一系列方法来限制将要存储的内容。




原创粉丝点击