1.1 为什么是现在将图引入数据库技术
图已经存在了数个世纪。为什么现在突然变得重要起来?
在你跳过这节之前,我们希望你能停下来听我们说完。我们确实要介绍历史,但这不会很长,也不深入。我们需要这样做,因为近来历史上的兴衰可以解释图的再次兴起。
图之所以现在复兴是因为技术行业的关注点在过去几十年中改变了。在这之前,技术和数据库更关注如何最有效地存储数据。关系型技术逐步演进为领跑者确保了这种效率。现在我们想知道如何能从数据中获取最大的价值。
我们现在获得的启示是当数据连接起来时,它在本质上就更有价值。
了解一些数据库技术演变的历史,对我们理解如何发展到这一步会有很多启发,甚至可以解释你为什么选择这本书。数据库技术的历史可以粗略地分为三个时代:层次型、关系型和NoSQL。以下是对这些历史时代的简略探讨,重点是每个时代与本书的关系。
下面的内容将简要介绍图技术的演变。我们只强调行业庞大历史中最相关的部分。至少,我们节省了你的宝贵时间,让你不至于浪费时间在维基百科链接中自己查询。
这段简短的历史将把我们从20世纪60年代带到今天。如图1-1所示,该段历史将以第四个时代——图思维告终。我们希望你和我们一起踏上这段短暂的旅程,因为我们相信,历史背景是开启图技术在我们行业内广泛采用的关键之一。
图1-1:用数据库技术演进的历史时间轴说明图思维的出现
1.1.1 20世纪60年代~80年代:分层数据
在技术文献中,20世纪60年代~80年代的数据库技术被交替地标记为“分层”(hierarchical)或“导航”(navigational)。无论用哪个词,这个时代旨在以树状结构组织数据。
在这个时代,数据库技术将数据存储为相互链接的记录。这些系统的架构师设想遍历这些树状结构,这样任何记录都可以通过键、系统扫描或通过导航树的链接被访问。
在20世纪60年代早期,CODASYL(Conference/Committee on Data Systems Languages,数据系统语言大会暨委员会)的数据库任务组(Database Task Group,DBTG),组织编纂了该行业最早期的一系列标准。数据库任务组创建了一个从这些树形结构中检索记录的标准。这个早期标准被称为“CODASYL方式”,为从数据库管理系统中检索数据制定了以下三个目标[1]:
1.使用主键。
2.按序列顺序检索所有数据。
3.从一条记录导航链接到另外一条记录。
CODASYL是一个成立于1959年的联盟,是曾经负责创建和标准化COBOL的组织。
最初,CODASYL的技术人员想要通过键、扫描和链接来检索数据。而迄今为止,我们已经看到这三种原始标准中的两种有了重大创新和采用:键和扫描。
但是为什么没有用CODASYL检索标准中的第三种(从一条记录导航链接到另外一条记录)呢?根据记录之间的链接,存储、导航和检索记录,这就是我们要讲的图技术。如上文所述,图并不是什么新鲜事,技术人员已经使用很久了。
用一句话总结这部分历史就是:CODASYL的链接导航技术太难用了也太慢。那时提出的最有创意的解决方案是B树或者自平衡树数据结构,作为解决性能问题的结构性优化。在这里,B树通过提供可替代访问路径来加速在这些关联记录之间的条目检索[2]。
最终,实施成本、硬件成熟度和交付价值之间的不平衡致使这些系统被束之高阁,让位于速度更快的关系型系统。到了今天,CODASYL已不复存在,尽管一些CODASYL委员依然继续着他们的工作。
1.1.2 20世纪80年代~21世纪00年代:实体关系
Edgar F.Codd将数据组织与其检索系统分离的想法点燃了数据管理技术的新一波创新浪潮[3]。Codd的工作开创了数据库实体关系时代。
实体关系时代持续了几十年,行业完善了按键检索数据的方法,即20世纪60年代早期工作组设定的目标之一。在这个时代,我们的行业开发了在存储、管理和从表中检索数据方面极其有效的技术,直到现在也是如此。当时研发的技术在以后数十年后的今天仍然被广泛应用,因为它们已经被验证、有良好的文档,并且为人熟知。
这个时代的系统引入并推广了一种特定的数据思考方式。首先且最重要的是,关系型系统是建立在关系代数的良好数学理论之上的。需要特别指出的是,关系型系统将数据组织成为集合。这些集合关注如何存储和检索真实世界的实体,比如人物、地点和事物。相似的实体,例如人物,会被分到一个数据表中。在这些数据表里,每一条数据是一行(row)。可以通过主键访问数据表中每一条数据。
在关系型系统中,实体可以被关联在一起。但要创建实体之间的关系,你需要新建更多的表。一张关联表将会组合每个实体的主键,并在关联表中将它们存储成新的一行。这个时代及其创新者打造的表形数据解决方案繁盛至今。
关于关系型系统的话题,有海量书籍和资源可以参考,本书并不打算对此进行过多介绍,而是会重点关注今天已被广泛接受的思维过程和设计原则。
无论是好是坏,这个时代引入了一种根深蒂固的观念,即所有数据都映射到一个表中。
如果你的数据需要被组织在表中并从表中检索,关系型技术仍然是首选解决方案。但是无论它们的角色何等重要,关系型技术都不是一个万能的解决方案。
20世纪90年代末期,互联网的兴起吹响了信息时代的号角。在这短暂的历史舞台上,我们嗅到了之前闻所未闻、见所未见的数据量和形态。在数据库创新的这个时代,难以想象的数据量以千奇百怪的形态开始涌入应用程序的队列中。此时终于有人意识到关系型模型是有所欠缺的:它甚至没有提及数据使用的方式。行业已经有了详尽的存储模型,但是对于如何分析及智能地应用数据却一筹莫展。
这带我们来到了数据库创新的第三波浪潮,也是最近一次。
1.1.3 21世纪00年代~20年代:NoSQL
数据库技术在21世纪00年代~20年代的发展可以一句话概括为NoSQL(Non-SQL或不仅仅SQL)浪潮的来临。这个时代的目标是为存储、管理和查询所有形态的数据打造具有扩展性的技术。
啤酒酿造市场在美国的蓬勃发展所激发的数据库创新,可以帮助我们更好地理解NoSQL时代。啤酒的发酵流程没有变化,但是风味却增加了,原料的品质和鲜度得到了提升。酿造师和消费者之间的距离被拉近了,对生产方向产生了即时反馈环。现在,超市里的啤酒不再是老三样,可能有30个以上的品牌供你选择。
在寻找发酵的不同组合的问题上,数据库行业可供选择的数据库管理技术经历了指数级增长。架构师需要可扩展的技术来处理不同形态、量级的数据,以及飞速增长的应用程序的需求。这波浪潮中流行的数据形态包括键值、宽表(wide-column)、文档、流和图。
NoSQL时代想传递的信息很明显:在表结构中存储、管理和查询海量数据不是永远行得通的,就如同不是每个人都想来一杯“勇闯天涯”。
NoSQL运动有几个动机。这些动机对于理解为什么以及我们处在这波图技术市场的技术成熟周期的哪个阶段来说是至关重要的。我们想指出的三个动机是对数据序列化标准、专用工具和水平可扩展性的需求。
首先,网页应用程序的流行为在这些应用程序之间传递数据创造了天然的渠道。通过这些渠道,创新者发明了各种全新的数据序列化标准,例如XML、JSON和YAML。
自然地,这些标准引出了第二个动机:专用工具。跨Web交换数据的协议与生俱来就不是结构化的。该需求引发了键值、文档、图和其他专用数据库的创新和普及。
最后,这类新兴应用程序及其汹涌而来的数据,给系统可扩展性带来了前所未有的压力。摩尔定律的衍生物和应用给这个时代带来一线希望:硬件成本,进而数据存储成本,在持续降低。摩尔定律的效应使得数据复制、专用系统和整体计算能力都变得更便宜[4]。
NoSQL时代的创新和新需求,为行业从垂直扩展系统迁移到水平扩展系统铺平了道路。水平扩展系统通过增加物理或者虚拟机来提升系统的整体计算能力。水平扩展系统,通常被称为集群,对于终端用户来说表现为一个单独的平台,用户通常无从得知他们的负载实际上是被一组服务器承载的。另外,一个垂直扩展系统需要更强力的机器。空间不足?那就找个更大更贵的盒子,直到没有更大的为止。
水平扩展意味着增加更多资源来分担负载,通常是并行的。垂直扩展意味着增大、增快某一个资源,以便它处理更多负载。
基于上述动机,这个为非结构化数据构建可扩展数据架构的通用工具集逐渐演变为NoSQL时代最重要的产物。现在,当设计下一个应用程序时,开发团队可以进行选择评估。他们可以从一整套技术集中进行选择,以适应不同的数据形态、速率及可扩展性的需求。他们也有工具用来管理、存储、搜索和检索任何规模的文档、键值、宽表以及图数据。通过这些工具,我们开始以前所未有的方式处理多种形式的数据。
我们可以用这与众不同的工具和数据做什么呢?我们可以更快地解决更大规模、更复杂的问题。
1.1.4 21世纪20年代以后:图
我们从整个行业历史中看到的关联性为数据库创新的第四个时代奠定了基础:图思维的浪潮。
这个时代的创新从存储系统的效率转移到了如何从存储系统里的数据中汲取价值。
为什么是21世纪20年代
在我们概述对图时代的看法之前,你可能想知道为什么我们把图思维时代的开端设在2020年。下面我们想说明一下我们对图市场时间线的看法。
我们着眼于2020年时间线的原因来自两个思路的交汇。这里,我们汇集了Geoffrey A.Moore被广泛采用的模型[5],以及当下对过去三个数据库创新时代的观察。
如同CODASYL,技术采纳的生命周期通常无法逃脱Moore在20世纪50年代提出的理论。见Everett M.Roger写于1962年的Diffusion of Innovations[6]一书。
特别地,在早期采用者和新技术的广泛采用之间有一个已经被证明的、可观察到的时间滞后。我们在1.1.2节介绍20世纪70年代关系型数据库时看到过这种时间滞后。从第一篇论文到可实际应用的关系型技术出现之间有10年的滞后。你可以在其他时代中找到类似的滞后。
历史告诉我们图时代之前的每个时代都出现过一个小众的时期,要在几年以后才能得到广泛采用。检视21世纪20年代,我们对图市场的情况做出同样的假设。同时,历史也告诉我们这并不意味着现有工具的消逝。
不管你想要怎么测量,它都不是一个我们可以确定日期的股票市场预测。我们的展望最终描绘了一个由价值演变驱动的技术采用的新时代。也就是说,价值在从存储效率转向来自高度连接的数据资产。这种变化需要时间,而且往往不会按计划行事。
连点成线
回想20世纪60年代由CODASYL委员会提出的关于检索数据的三种模式:通过键、扫描和链接访问数据。第一个目标,通过键提取数据,对于任何形态的数据来说都是最高效的访问方式。这种效率是在实体关系时代实现的,并且仍然是一种流行的解决方案。
对于CODASYL委员会的第二个目标,通过扫描访问数据,NoSQL时代已经出现了可以处理大量数据扫描的技术。现在我们的软硬件都具备从海量数据集中提取价值的能力。也就是说,我们已经成功实现了委员会的前两个目标。
最后一个目标:通过遍历链接访问数据。我们的行业已经绕了整整一圈。
行业重新关注图技术与我们从高效管理数据到需要从数据中提取价值的转变密切相关。这种转变并不是说高效管理数据不重要了,而是我们已经解决了一个问题,现在需要面对下一个难题了。我们的行业在关注速度和成本的同时也开始强调价值。
当你能够把分离的信息关联起来组成新的洞见时,你就可以从数据中提取价值。从数据中提取价值来自理解数据中复杂的关系网络。
这等同于理解复杂问题和复杂系统,这些问题和系统在你的数据中可以通过固有的网络观察到。
我们的行业和本书的重点是开发和部署能够从数据中提供价值的技术。与关系型时代一样,理解、部署和应用这些技术需要一种新的思维方式。
为了看到我们在这里谈论的价值,需要改变思维方式。这种思维是从优先考虑结构化数据转变到考虑其关系。这就是我们所说的图思维。