一、什么是图数据库

  1. 图数据库是基于图论实现的一种NoSQL数据库,其数据存储结构和数据查询方式都是以图论为基础的,图数据库主要用于存储更多的连接数据

    图论是数学的一个分支,以图为研究对象。图论中的图是由若干给定的点以及连接两点的线所构成的图形,这种图形通常用来描述事物之间的某种特定关系,用点代表事物,用连接两点的线表示相应两个事物之间具有这种关系。 image.png image.png image.png

  2. 图数据库相比关系型数据库的优势

    image.png 在关系型数据库中,person-department的关系用外键表示 image.png 在图数据库中,用节点和关系取代表-外键-join image.png

  3. NoSQL数据库分类

    1. 键值key-value数据库:Redis
    2. 列存储数据库
    3. 文档型数据库:MongoDB
    4. 图数据库:Neo4j

      二、Neo4j

  4. Neo4j是一个开源的NoSQL图形数据库,使用ScalaJava语言

    1. 提供原生的图数据存储、检索和处理
    2. 采用属性图模型
    3. 专属查询语言Cypher
  5. Neo4j数据模型
    1. 图论基础
      1. 图是一组节点和连接节点的关系,图形以属性的形式将数据存储在节点和关系中,属性是用于表示数据的键值对
      2. 在图论中,用圆代表一个单独的节点,节点之间的关系用箭头标记
        1. 可以使用节点表示个人资料,它本身不包含任何属性,可以为其添加属性

image.png

  1. 2. 两个节点之间创建关系

image.png

  1. 1. 此处两个配置文件之间创建的关系名称为`Follow`,即`Profile-1 Follow Profile-2`
  1. 属性图模型
    1. 表示节点,关系和属性中的数据
    2. 节点和关系都包含属性
    3. 关系连接节点
    4. 属性是键值对
    5. 节点用圆圈表示,关系用方向键表示
    6. 关系具有方向:单向和双向
    7. 每个关系包含“开始节点”或“从节点”和“到节点”或“结束节点”
  2. 在属性图数据模型中,关系是定向的。如果尝试创建没有方向的关系,则会抛出错误。在Neo4j中,关系也是具有方向性的
  3. Neo4j图数据库将其所有数据存储在节点和关系中,不需要任何额外的RDBMS数据库或NoSQL数据库来存储数据。在本机中,Neo4j使用GPE图形处理引擎来使用其本机图存储格式
    1. Neo4j的构建元素
  4. 节点
    1. 用来表示一个实体记录,节点可以包含多个属性Property和多个标签Label
    2. 节点是主要的数据元素
    3. 节点通过关系连接其他节点
    4. 节点有一个或者多个标签,用于描述其在图表中的作用
  5. 关系
    1. 当数据库中存在节点后,需要将节点连接起来构成图,连接两个节点的线被称为关系,亦或是图的边。关系的始端和末端都必须是节点,不可空指向或是空起始
    2. 关系具有方向性
    3. 节点可以有一个或多个递归关系
    4. 关系可以有一个或多个属性
  6. 属性
    1. 用于描述图节点和关系的键值对,其中key为字符串,值可以为任意的Neo4j数据类型
    2. 属性是命名值,其中名称key为字符串
    3. 属性可以被索引和约束
    4. 可以从多个属性创建复合索引
  7. 标签
    1. 标签将一个公共的名称与一组节点相关联,节点或关系可以包含一个或多个标签,可以为现有节点或关系创建新标签,也可以删除现有标签
    2. 标签用于节点分组
    3. 一个节点可以具有多个标签
    4. 对标签进行索引可以加速在图中查找节点
    5. 本机标签索引针对速度进行了优化
  8. 数据浏览器
    1. 安装Neo4j后就可以访问Neo4j数据浏览器

      简单的属性图示例 image.png image.png

  1. Neo4j使用场景
    1. 欺诈检测、谣言检测
    2. 实时推荐引擎
    3. 知识图谱
    4. 反洗钱
    5. 主数据管理
    6. 供应链
    7. 数据谱系
    8. 身份和访问管理