图数据库的产生背景

第 1 章 Neo4j 图数据库基础

1.1 图数据库的产生背景

1.1.1 “图”由来的历史故事

在生活中经常用到“图(Graph)”这个词。然而,其含义很有可能与本文不同。事实上,大多数人(显然不是你,否则你可能不会来看本文)当谈论到图时会想到:饼图(pie charts)、柱状图(bar charts)、图形(graphics)等,这些都不是我们这里所说的图。

那图到底是什么呢?为了回答这个问题,有必要了解其相关的历史背景。图实际上是一个相当古老的概念,首次出现在著名的瑞士数学家莱昂哈德·欧拉(Leonhard Euler) 的学术论文中。他试图解决一个古老的问题,即我们现在所说的哥尼斯堡七桥问题(Seven Bridges of Königsberg),该问题很容易理解。

哥尼斯堡当时是普鲁士帝国位于普雷格尔河上一个美丽的中世纪城市,现今属于俄罗斯,介于波兰和立陶宛之间。如果在现今地图上试着去查找它,很可能会找不到,因为它现在被称作加里宁格勒。普雷格尔河不仅把哥尼斯堡分为左右两岸,还在河中央形成了一个小岛,叫 Kneiphof 、从而将城市分割为四块区域(记为A、B、C和D),各区域由七座桥相连(分别标为a、b、c、d、e、f和g),如下图(欧拉在 1736 年的论文中提出的该问题)所示。

在这里插入图片描述

  • 这七座桥连接着城市的四个不同区域。
  • 问题是游览这座城市,参观每一个区域,穿过每一座桥且每座桥只能经过一次。

本质上,这是一个寻径问题,类似的问题还有骑士巡逻问题(knight’s ride problem)、旅行商问题(traveling salesman problem)等。现在根本称不上是一个非常困难的任务,然而,在当时,人们为试图解决此问题困惑了很长一段时间。直到欧拉的加入,对这个问题采取了一种非同寻常的数学方法,才得以彻底解决。

欧拉做了以下两件有趣的事:

  • 首先,他并未采用传统的暴力搜索方法来解决这个问题(就是在地图上标出所有不同的可能路径,再试图找出是否有这样一条路线可穿越整个城市,暴力搜索的本质就是不断尝试、排查错误),而采用不同的方法。他以退为进,先对问题进行抽象,试图构建解决该问题领域的模型。至少在欧拉看来,大家的注意力集中到问题的错误部分一街道 上。欧拉很快得出结论,哥尼斯堡的街道并没有真正解决问题。对于寻径,唯一重要的是以下几点:

    • 城市的各个区域
    • 连接城市各区域的桥

至此,我们似乎突然发现了一个完全不同的问题,即“世界第一张图”,其准确的展现如下图(简化的哥尼斯堡七桥问题)所示。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-0DfRTF8E-1649689082600)(C:\Users\陈俊丞\AppData\Roaming\Typora\typora-user-images\image-20220411222544937.png)]

  • 其次,欧拉将数学方法应用到他所创建的模型上,从而解决了这个难题。欧拉的逻辑很简单,如果想在哥尼斯堡城市漫步,就必须这样做:

    • 必须从城市四个区域中的任何一个开始。
    • 必须离开该区域,换句话说,必须穿过一座桥到城市的另一个区域。
    • 然后要穿过另外 5 座桥,离开并进入城市的不同区域。
    • 最后,将在城市的另一个区域结束。

因此,欧拉认为,第一个和最后一个区域必须有奇数座桥连接城市的其他区域(因为离开第一个区域、到达最后一个区域仅一次),而其他两个区域必须有偶数座桥连接,因为到达和离开各需要一次。

连接城市区域的桥的数量在欧拉创造的模型中具有非常特殊的意义,即模型的图表示,称之为图节点的度。为了使哥尼斯堡的每一座桥都经过一次,欧拉证明了所要做的就是运用一种非常简单的方法来建立城市各区域的度(换句话说就是计算桥的数量),如下图所示。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-v33eD5In-1649689082600)(C:\Users\陈俊丞\AppData\Roaming\Typora\typora-user-images\image-20220411222946654.png)]

这就是欧拉如何解决著名的“哥尼斯堡七桥问题”。通过证明城市的任何区域没有偶数座桥,从而证明了该漫游问题是不可能的。如果再增加一座桥,就立即使其成为可能,但在当时该城市和桥梁的状况下是无法做到“欧拉漫游(Eulerian Walk)”的。

通过上述方法,欧拉创造了世界上第一张图。同样其研究技术具有普适性,任意一个图要能实现“欧拉漫游”,必须仅有零个或两个奇度顶点,所有中间顶点度都必须为偶数。

总而言之,图只不过是两个或多个实体之间关联的抽象数学表示,为实体对象间的相互关系进行建模。通常由以下部分组成:

  • 节点,即前面提到的对象或实体:数学中通常称为顶点(vertices),而在本文或图数据库(比如 Neo4j )中,通常称为节点(nodes)。
  • 节点之间的连接:数学中称为边(edges),而本文中称为关系( relationships)。
  • 节点和关系相互连接构成一个图:许多重要的度量指标,例如连接到一个节点的边数(称之为度)就可以确定下来。许多其他度量指标也就自然形成。
1.1.2 图数据库的产生背景

“千年虫问题”和网页激增表明数据库管理系统新时代的来临。新一代数据库管理系统统称为 NoSQL 数据库,自 然是针对关系数据库而言的。该名称的来源难以考证,但显然是关系数据库管理系统受挫后诞生的。大多数人将 NoSQL 当作 Not Only SQL 的缩写,但在数据库领域仍有争议。

我认为,大多数 NoSQL 数据库的基本理念是面向任务(task-oriented)的数据库管理系统。如同老生常谈:如果你唯一的工具是锤子, 那么一切看起来都像钉子(If all you have is a hammer, everything looks like a nail)。现在我们有不同种类的锤子、起子、凿子、铲子,还有更多的工具来解决数据管理问题。当然,最好的方法是选择合适的工具来完成不同的工作,如果只用关系数据库事实上可能会适得其反。除 SQL 数据库外,其他的可以分成四类:

  • 键值存储(key-value stores)
  • 列式存储(column-family stores)
  • 文档存储(document stores)
  • 图数据库(graph databases)

具体到图数据库而言,相对于传统关系数据库这一“老大哥”就最多只能称作“小老弟”。作为图数据库的领跑者一Neo4j 最初发布版本是在2007年,一路奔跑 前行至今也不过十几年。可见这一新型数据库技术有其固有的、旺盛的生命力,细想不难发现,这来源于:图是一种能对现实世界进行普适直观的建模工具,通俗地说,图无处不在!我们信手就可拈来一大批身边与吃穿住行生活密切相关的图事例,比如人际交往、购物消费、交通网络、旅游规划等。

正如全球著名的信息咨询公司——高德纳咨询公司(Gartner Group)所分析:商业世界中有5个非常有价值的图:Social Graph(社交图)、Intent Graph(意向图)、Consumption Graph(消费图)、Interest Graph(兴趣图)、Mobile Graph(移动图),并指出应用这些图的能力是一个“可持续的竞争优势”。

图数据库在数据库领域如此“晚产”,正如其理论基础图论在数学界一样像“新生儿”,图论最早可追溯到图论创始人瑞典数学家欧拉(Leormnhard Euler) 于1738年解决了柯尼斯堡七桥问题。现在图论应用极其广泛,但大发展时期是 20 世纪 40~60 年代,一 系列图论相关研究取得了突破性进展,包括:拟阵理论、超图理论、极图理论、代数图论、拓扑图论等。

关系数据库中的“关系”二字,还真是与我们所熟知的,比如人际关系、借贷关系等完全不搭界,仅仅是“关系数据库之父” Edgar Frank Codd 在其论文中将: 在集合论基础上构建二维表 称作关系罢了。那是不是说传统关系型数据库不能存储、管理我们所熟知的这些关系呢?这个显然不是,而是将这些熟知的关系隐藏转化为以集合论为基础的关系代数上的一种常用的连接操作(Join),最终在当时用关系模型的易理解性和理论可行性来超越网状模型之.上的图数据库的复杂性,成就了关系型数据库的持久辉煌!

也有人可能会说,图数据库实际上是建立在关系数据库的基础上:

  • 数据模型中存储粒度更细、表现力更丰富,支持更复杂的查询,能有效解决“连接爆炸(join bomb)”问题。
  • 究其本意是重用了一些最初导航数据库的想法,并吸取了关系数据库的教训:降低复杂性、简化查询功能。

诚然,得益于信息技术的飞速发展,无论是硬件、网络,还是软件等各方面都今非昔比,图数据库自从 2007 年第一个可商用 Neo4j 产品的出现,就成为政界、学界、商界、媒界持续关注的焦点,其发展势头绝不亚于当年的关系数据库,俨然成为能高效、便捷、直观地处理海量、快速、多样的数据,并能快速挖掘其中纷繁复杂关系的一把利器!

  • 6
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

我真的不是cjc

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值