精通Neo4j
上QQ阅读APP看书,第一时间看更新

1.1 图数据库背景知识

1.1.1 图数据库历史

任何一项重大科学技术的产生都有其历史背景和必然规律。同样,作为计算机科学基础软件领域的数据库技术也有其产生和发展的历史必然性。下面简要介绍数据库技术发展历程中具有里程碑意义的事件。

1.数据库技术发展的里程碑事件

(1)1962年,数据库(Database)一词最早流行于美国加州(硅谷所在地)一些系统研发公司的技术备忘录中。

(2)1968年,伴随阿波罗登月计划,商业数据库的雏形诞生,出现IBM公司的IMS(Information Management System)、Mainframe,以及Navigational等数据库技术。

(3)1969年,美国国防部召开的数据系统语言会议(Conference on Data Systems Languages,CODASYL)发布了一份“DBTG(Database Task Group)报告”,标志网状数据库系统进入标准化进程。

(4)1970年,IBM公司研究员Edgar Frank Codd发表了题为“A Relational Model of Data for Large Shared Data Banks”(译为“大型共享数据库的数据关系模型”)的论文,这篇论文提出了关系模型的概念,奠定了关系模型的理论基础,他本人被誉为“关系数据库之父”,并于1981年获得了有“计算机界诺贝尔奖”之称的“图灵奖”。

(5)1974年,IBM公司的校企联合计划中,与加州大学伯克利分校Ingres数据库研究项目携手创建了RDBMS(Relation DataBase Management System,关系数据库管理系统)System R原型。

(6)1979年,因IBM公司战略调整其为当时主流的层次数据库,并剥离出处于萌芽状态的关系数据库;加州大学伯克利分校Ingres数据库研究项目联合Oracle公司的Larry Ellison创建了第一个商业关系数据库产品。

(7)1983年,IBM公司发布其第一款自主研发的关系数据库产品DB2。

(8)1984年,天睿公司(Terodata Corporation)发布第一个MPP(Massive Parallel Processor,大规模并行处理)分布式数据库专用平台,或称为无共享架构(Sharing Nothing Architecture),有效提升了系统整体性能。

(9)1986年,首款面向对象数据库GemStone/S出现。

(10)1988年,IBM公司研究员率先提出数据仓库(Data Warehouse),主要用于复杂数据分析,并制定相关行业标准,将数据处理分为两大块业务:联机事务处理(On-Line Transaction Processing,OLTP)和联机分析处理(On-Line Analytical Processing,OLAP)。

(11)1995年,瑞典MySQL AB公司发布第一款开源关系数据库MySQL。

(12)1996年,第一款对象关系数据库Illustra问世,支持高效的对象和关系数据存储与管理。

(13)1998年,随着互联网的兴起,Lawrence Edward Page和Sergey Brin在斯坦福大学宿舍内共同开发了谷歌在线搜索引擎。

(14)1998年,James Gray因在数据库和事务处理方面的突出贡献而获1998年的图灵奖。

(15)2003年,MarkLogic公司发布第一款NoSQL(Not Only SQL,泛指非关系型的数据库)数据库解决方案,XML数据库。

(16)2005年,受Google公司的Map/Reduce和Google File System(GFS)的启发,由Apache基金会所开发的分布式系统基础架构Hadoop发布。

(17)2005年,针对普遍存在的流数据,Streambase公司发布第一款支持流数据处理的复杂事件处理(Complex Event Processing,CEP)解决方案。

(18)2007年,Neo4j公司推出第一款商用NoSQL图数据库,高效支持数据之间的复杂关系分析。

(19)2009年,分布式文件存储的数据库MongoDB发布,为Web应用提供可扩展的高性能数据存储解决方案。

(20)2010年,HBase发行,采用列式存储而非行式,在Hadoop之上提供类似BigTable能力,支持非结构化数据存储。

(21)2013年,有媒体将2013年称为“大数据元年”,“数据即资源”受到广泛认可。

(22)2014年,Michael Stonebraker因对现代数据库的概念和实践作出的根本性贡献获得2014年图灵奖。

(23)2015年,大数据、云计算技术得到广大企业和各国政府的青睐,技术和平台上突飞猛进,比如VoltDB、Spark、Drill等,单是Apache基金会就发布超过25个数据工程项目。

2.数据的4V

不难发现,数据库技术已经有50多年的历史,在计算机领域中算得上是一直保持蓬勃生机与活力的技术之一。其主要表现在如下几个方面。

(1)数据种类多样化。数据从最初的结构化数据(如数字、符号等信息)拓展为半结构化数据(如HTML文档等),再到非结构化数据(如办公文档、文本、图片、XML、各类报表、图像和音视频信息等)。IDC(国际数据公司)的调查报告显示:企业80%的数据都是非结构化数据,且每年按指数增长60%。

(2)数据量增长迅猛。根据IDC的监测统计,2011年,全球数据总量已经达到1.8ZB(270字节),而这个数值还在以每2年翻一番的速度增长,预计到2020年,全球将总共拥有35ZB的数据量,比2011年增长近20倍。也就是说,近2年产生的数据总量相当于人类有史以来所有数据量的总和。

(3)数据产生速度快。受摩尔定律的支配,计算机硬件及网络速度每18个月增加一倍,显然导致数据产生的速度飞速提升。

(4)数据价值备受关注。数据价值由先前的少量局部数据内的价值转向大量全局数据之间的价值,不断涌现出数据仓库、数据挖掘、分布式数据分析等技术。

上述4个方面,无不集中展现到当前所处的大数据时代这一历史舞台中,凸显出数据的4V(Volume大量、Velocity高速、Variety多样、Value价值)特性。从上述数据库简要发展历程稍作分析,便不难发现:数据信息化进程和对数据价值的不断渴求,可以说是持续支撑数据库技术发展的不竭动力和源泉。

3.关系数据库(SQL类)和非关系数据库(NoSQL类)

在这精彩纷呈的数据库技术发展历程中,是否存在一种“包打天下的武学秘籍,包治百病的济世神方”呢?作为数据库领域霸主的关系数据库能否有效解决上述所有难题?现在我们试着回答这个问题。我们先将数据库发展历程中的主要技术稍加归类整理,绘制出如图1-1所示的数据库分类图。

图1-1 数据库分类图

上图非常形象地将数据库技术分为两大类:关系数据库(SQL类)和非关系数据库(NoSQL类)。关系数据库源源不断地为NoSQL类数据库提供理论依据,也就是说,NoSQL类数据库的发展是以关系数据库为基础,很多思想和智慧都来源于关系数据库,比如:事务、分布处理、集群、查询语言等。但NoSQL数据库相对于霸主地位的关系数据库而言,无疑是一种全新的思维和创新。为进一步分析上述枝繁叶茂的NoSQL数据库,有必要对其进行分类。现有的分类方法多种多样,各方法之间分出来的类或子类还可能存在重叠,主流的方法(1)(Mikayel Vardanyan依据数据模型的不同给出的一个基本分类)分为四大类。

(1)键值存储(Key-Value)数据库:主要采用哈希表技术,存储特定的键和指向特定的数据指针。该模型简单、易于部署。例如:Redis、Memcached、Riak KV、Hazelcast、Ehcache、Voldemort、Oracle BDB等。

(2)文档型数据库:以嵌入式版本化文档为数据模型,其灵感是来自于Lotus Notes办公软件,支持全文检索、关键字查询等功能。例如:MongoDB、Amazon DynamoDB、Couchbase、CouchDB、SequoiaDB等。

(3)列存储数据库:列存储数据库是指数据存储采用列式存储架构,相比传统的行式存储架构,数据访问速度更快,压缩率更高,支持大规模横向扩展。例如:Cassandra、HBase、Riak、GBase 8a等。

(4)图数据库:以图论为理论根基,用节点和关系所组成的图为真实世界直观建模,支持百亿乃至千亿量级规模的巨型图的高效关系运算和复杂关系分析,例如:Neo4j、OrientDB、Titan等。

上述四类NoSQL数据库依据其数据模型的不同,均表现出各自的优势和劣势,以及适应的典型应用场景。具体归类如表1-1所示。

表1-1 NoSQL数据库的四大分类分析

另一方面,大量的研发人员或团队对五类主流数据库产品(键值存储数据库、列存储数据库、文档型数据库、图数据库、关系数据库)进行过大量的比较和分析,比较的指标涵盖:性能、可扩展性、复杂性等多个维度。表1-2列出了一个典型的分析结果,它是Ben Scofield在YCSB开源数据库基准测试(Yahoo! Cloud Serving Benchmark)上所测试分析的结果(2)

表1-2 各类数据库主要指标分析

通过上述较为系统全面的分析,无论是从宏观的与劣势和典型应用场景方面,还是微观具体的基准测试方面,之前的问题有了更为清晰的答案。正如数据库领域的布道者、图灵奖得主Michael Stonebraker对数据库未来发展所预言的那样—One size will fit none(单一模式不能包打天下),也就是告诫我们需要将更多的精力花费在选择最合适的技术去有针对性地高效解决所面临的具体问题,恰恰回归到“具体问题具体分析”这一普适的哲学原理。

4.图数据库的发展

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

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

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

从之前罗列的数据库领域重要事件以及表1-1所示内容,细心的读者不难发现:图数据库归类到网状数据库之列。从数据库模型上主要有三大类:层次型、网状型、关系型,网状数据库标准化的出现还早于关系数据模型的提出,而为什么关系数据库却后来居上,长期占住数据库领域的霸主地位呢?要回答这个问题,其实不难,稍对计算机发展历史有一定了解的人就能较容易地找到答案。从表1-2中单看图数据库和关系数据库两行就不难发现,图数据库的实现复杂性远高于关系数据库;另一方面,再回溯到20世纪,回看那时的硬件性能无法跟现在相提并论,单说处理器速度和内存容量,要实现令人神往又如此复杂的图数据库谈何容易,完全可以说是一种“奢求”!因此,当时的研发人员只能另辟蹊径,在数据模型上做文章,降低建模的复杂度,采用二维表(在关系数据库中称为“关系”)这一更易于理解和实现的创新性技术来构建数据库。

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

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