图数据库与Neo4j入门指南

学习目标

本文的学习目标是探索图数据库及其用途。将通过Neo4j来了解如何创建图数据库架构,并探索Neo4j的一些基本功能。

目录

  • 什么是图?
  • 什么是Neo4j及其用途?
  • 开始使用Neo4j
  • 使用Neo4j创建图数据库
    • 4.1 在图数据库中创建节点
    • 4.2 在图数据库中创建关系
  • 结论

什么是图?

图数据库中,图表示一系列节点和这些节点之间的关系。节点可以被视为现实世界中的对象。例如,一个人、一个国家、一本书或一个电影标题可以被视为一个节点。这些节点通过一个或多个(通常是多个)节点通过某些关系连接。考虑下面的图像,有一个样本节点和关系图。

圆圈代表节点,箭头代表它们之间的关系。请注意,这些箭头代表方向。在案例中,只包括了单向链接,而双向或自链接在图数据库中也是可能的。人(纳伦德拉·莫迪先生)、印度国旗(代表印度)、政治家和总理是节点。这些节点之间总共有5个链接或关系。以下是可以从图中得出的节点和关系。

  • 纳伦德拉·莫迪先生居住在印度。
  • 纳伦德拉·莫迪先生是总理。
  • 印度的总理。
  • 政治家可以成为总理。
  • 纳伦德拉·莫迪先生担任政治家。

什么是Neo4j及其用途?

Neo4j是一个图数据库管理系统,用于构建原生图数据库,存储和管理数据关系,并能够提供快速查询。Neo4j的社区版是一个开源工具,遵循GPLv3许可。它有助于构建在图数据库中看到的节点和关系,以及额外的功能,如定义节点标签和属性。

节点标签 - 节点可以被赋予标签,这使能够将节点归入同一类别。例如,在前一个例子中,可以给纳伦德拉·莫迪先生贴上“人”的标签,或者给印度国旗贴上“国家”的标签。这些标签使能够通过查询更容易地搜索特定对象。

节点属性 - 属性是键值对,可以分配给节点或关系。在示例中,可以为纳伦德拉·莫迪先生的节点添加一个属性,键为“年龄”,值为“70”。对于印度节点,可以有印度的属性,如人口、GDP等,作为键值对。

现在,对图数据库、节点、关系和Neo4j功能有了相当的理解,让进一步学习如何使用Neo4j创建基本的图数据库。首先,需要从安装Neo4j Desktop社区版或企业版。可以免费获得企业版的开发者许可。下载应用程序后,按照以下步骤创建一个新项目并分配一个数据库来工作。

  1. 创建一个新项目。
  2. 在项目中创建一个新数据库。
  3. 提供数据库的名称和密码,然后点击创建。
  4. 启动数据库。

执行这些步骤后,可以看到控制台栏,可以开始编写Neo4j图查询。

可以通过编写查询来创建节点和关系来开始处理数据库。

‘CREATE’命令在图数据库中创建一个节点。最基本的节点是没有标签或属性的,这意味着它是一个空白或空节点。然而,这个节点将有一个ID,这是一个整数值。这个ID默认提供给每个创建的节点,并且是唯一的。可以使用查询创建一个空节点:

CREATE ()

要创建一个带有标签的节点,可以使用冒号后跟标签名称来提供它。要创建一个带有‘政治家’标签的节点,可以使用查询:

CREATE (:Politician)

还可以为节点提供多个标签。要提供多个标签,可以按照相同的模式继续写冒号后跟标签名称。要创建一个带有‘国家’、‘亚洲’和‘印度’标签的节点,可以使用查询:

CREATE (:Country:Asia:India)

如上所述,节点可以有一个或多个属性和标签。这些属性可以作为花括号中的键值对提供{key: value}。让创建一个标记为‘人’的节点,并为键‘name’提供属性‘纳伦德拉·莫迪先生’,70岁为键‘age’。

CREATE (:Person{name: '纳伦德拉·莫迪先生', age: 70})

成功运行上述查询后,可以使用查询查看节点:

MATCH (node) RETURN (node)

下图是查询输出,有4个节点。可以通过将鼠标悬停在它上面来查看特定节点的标签和属性。在图像中,可以看到节点ID 3的标签‘人’和属性‘name’和‘age’。

本节将展示如何在节点之间创建关系。这里有一个快速提示,用于清除数据库中的所有现有节点和关系;可以使用查询:

MATCH (n) DETACH DELETE (n)

首先,让看看如何创建一个节点的自链接,表示节点之间的关系。将创建一个‘人’节点,并添加一个爱的关系到同一个节点,展示一个人的自爱。

CREATE(p:Person{name: '拉姆'})-[:loves]->(p)

让快速看一下这个查询。‘p’作为查询的引用变量名。请注意,可以在创建节点时添加这个引用变量,如前一节所示。给这个节点提供的标签是‘人’,一个‘name’属性,值为‘拉姆’。方括号内的内容代表试图定义的关系类型。箭头代表这种关系的方向。引用变量名有助于在查询末尾提到的地方分配这种关系。

还可以为给定的关系提供属性。考虑之前的节点,想要添加一个属性,键为‘since’,值为‘always’。

CREATE(p:Person{name: '拉姆'})-[:loves{since: 'always'}]->(p)

要定义两个不同节点之间的关系,可以创建两个节点,然后使用引用变量定义关系。让创建一个印度和她的总理之间的关系。注意,可以使用控制台中的shift enter同时编写多个查询。

CREATE (p1:Person{name: '纳伦德拉·莫迪先生'}) CREATE (c1:Country{name: '印度'}) CREATE (p1)-[r1:prime_minister]->(c1) MATCH (node) RETURN (node)
  • SQL,其次是No-SQL,是最广泛使用的数据库。
  • 图数据库由单独的节点和称为关系的链接组成,这些链接定义了这些节点之间的关系。
  • 节点可以包含标签、关系和属性,而关系需要定义方向,并且可以有可选的属性。
  • Neo4j是一个图数据库,并且越来越受欢迎,用于大数据应用。
  • 已经了解了如何开始使用Neo4j并构建第一个图数据库。
沪ICP备2024098111号-1
上海秋旦网络科技中心:上海市奉贤区金大公路8218号1幢 联系电话:17898875485