首页 > 学院 > 开发设计 > 正文

Neo4j数据库基础

2019-11-09 13:37:48
字体:
来源:转载
供稿:网友

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数据库中的数据模型隐含在它存储的数据中,而不是将数据模型定义为数据库本身的一个部分。它是你想要存入数据的一个描述,而不是数据库的一系列方法来限制将要存储的内容。

总结: 之前就一直在看图数据库的相关知识,接下来可能要上手去使用了,在之前先把之前的知识巩固一下,分享一下,请多多指正@_@


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表