Neo4j 图数据库基础

在本三部分系列文章的第一篇中,了解图数据库的基础知识,图数据库为地球上一些最大的数据池提供支持。
521 位读者喜欢这个。
Grasshopper outside with graph overlay

由 Jen Wike Huger 修改,CC BY-SA

对于非常大的多样化、非结构化信息集合,图数据库已成为帮助收集、管理和搜索大型数据集的技术。在这个由三部分组成的系列文章中,我们将探索图数据库,使用开源图数据库 Neo4j

在本文中,我将向您展示图数据库的基础知识,让您快速了解概念模型。在第二篇文章中,我将向您展示如何启动 Neo4j 数据库并使用内置浏览器工具填充一些数据。并且,在本系列的第三篇也是最后一篇文章中,我们将探讨几个用于在您的开发工作中使用 Neo4j 的编程库。

掌握图数据库的概念模型非常有用,所以我们从这里开始。图数据库中只存储两种数据:节点

  • 节点是实体:诸如人、发票、电影、书籍或其他具体事物。这些有点类似于关系数据库中的记录或行。
  • 边命名关系:连接节点的概念、事件或事物。在关系数据库中,这些关系通常存储在数据库行中,并带有一个链接字段。在图数据库中,它们本身就是有用的、可搜索的对象。

节点和边都可以拥有可搜索的属性。例如,如果您的节点代表人物,他们可能拥有诸如姓名、性别、出生日期、身高等等属性。边属性可以描述两个人之间关系的建立时间、会面情况或关系的性质。

这是一个帮助您可视化此内容的图表

Graph database image 1

opensource.com

在此图中,您了解到 Jane Doe 有一位新丈夫 John;一个女儿(来自她之前的关系)Mary Smith;以及朋友 Robert 和 Rhonda Roe。Roes 有一个儿子 Ryan,他正在和 Mary Smith 约会。

看看它是如何工作的?每个节点代表一个人,独立存在,与其他节点隔离。您需要找到的关于个人的所有信息都可以存储在节点的属性中。边描述人与人之间的关系,具有应用程序所需的尽可能多的细节。

关系是单向的,不能是无向的,但这没问题。由于数据库可以以相同的速度在两个方向上遍历,并且方向可以忽略不计,因此您只需要定义一次这种关系。如果您的应用程序需要定向关系,您可以自由使用它们,但如果暗示了双向性,则不是必需的。

需要注意的另一件事是,图数据库本质上是无模式的。这与关系数据库不同,在关系数据库中,每一行都有一组固定的字段,并且添加新字段是对开发和升级的重大投入。

每个节点都可以拥有一个标签;此标签是大多数应用程序所需的所有“类型”,并且是典型关系数据库中表名的类似物。标签允许您区分不同的节点类型。如果您需要添加新标签或属性,请更改您的应用程序以开始使用它!

使用图数据库,您可以简单地开始使用新属性和标签,节点将在创建或编辑时获取它们。无需转换任何内容;只需在您的代码中开始使用它们即可。在此示例中,您可以看到我们知道 Jane 和 Mary 最喜欢的颜色以及 Mary 的出生日期,但不知道其他任何人的。系统不需要知道这些;用户可以在应用程序正常使用过程中访问节点时随意添加该信息。

作为开发人员,这是一件有用的事情。您不必处理数据库模式更改,只需将新标签或属性添加到处理节点的表单中并开始使用它即可。对于没有该属性的节点,不显示任何内容。您必须使用任一类型的数据库对表单进行编码,但是您减少了使用关系数据库需要完成的大量后端工作。

让我们添加一些新信息

Graph database image 2, defining a new type of node

opensource.com

这是一种新类型的节点,代表位置以及一些相关的关系。现在我们看到 John Doe 出生在加利福尼亚州的佩塔卢马,而他的妻子 Jane 出生在德克萨斯州的大草原城。他们现在都住在德克萨斯州的 Cypress,因为 Jane 在附近的休斯顿工作。Ryan Roe 与城市之间缺乏关系对数据库来说没什么大不了的,我们只是还不知道该信息。数据库可以轻松获取新数据并添加它,根据需要创建新节点和关系,就像应用程序用户输入更多数据一样。

了解节点和边应该足以让您开始使用图数据库。如果您像我一样,您已经在考虑如何在图中重构您正在开发的应用程序。在本系列的下一篇文章中,我将向您展示如何安装 Neo4j、插入数据并进行一些基本搜索。

标签
User profile image.
Ruth Holloway 长期以来一直是一名系统管理员和软件开发人员,早在 VAX 11/780 上就开始了她的职业生涯。她职业生涯的大部分时间(到目前为止)都在为图书馆的技术需求服务,并且自 2008 年以来一直是 Koha 开源图书馆自动化套件的贡献者。Ruth 目前是 Clearbuilt 的 Perl 开发人员和项目主管。

1 条评论

谢谢,很有趣,期待下一篇文章。

知识共享许可协议本作品根据知识共享署名-相同方式共享 4.0 国际许可协议获得许可。
© . All rights reserved.