01 图数据库简介
1 图是什么
- 图定义:顶点和边的集合,或者说是一些节点和关联这些节点的联系的集合
- 带标签的属性图(labeled property graph)具备如下特征:
- 包含节点和联系
- 节点上有属性(键值对)
- 节点可以由一个或多个标签
- 联系有名字和方向,并总有一个开始节点和一个结束节点
- 联系也可以有属性
2 图领域概览
图领域可以分成如下两部分:
- 主要用于联机事务图的持久化技术,通常直接实时地被应用程序访问:
- 这类技术被称为图数据库
- 和关系型数据库的联机事务处理(online transcational processing ,OLTP)是一样的
- 主要用于离线图分析的技术,通常按一系列步骤执行
- 这类被称为图计算引擎
- 和其他大数据分析技术可看做一类,如数据挖掘和联机分析处理(online analytical processing,OLAP)
主流的图模型有3种,如下:
- 属性图:市场上大多数图数据库使用的都是属性图模型的变体
- 资源描述框架(Resource Description Framework,RDF)三元组
- 超图:
2.1 图数据库
图数据库管理系统:
- 一种在线的数据库管理系统,
- 支持对图数据模型的增、删、改、查(CRUD)方法
图数据库一般用于事务(OLTP)系统中,对事务性能进行了优化,在设计时通常考虑了事务完整性和操作可用性。
图数据库有两个特性需要多加考虑:
- 底层存储:
- 一些图数据库使用原生图存储,这类存储是优化过的,并且专门为了存储和管理图而设计的
- 不是所有图数据使用的都是原生图存储,也有一些图数据库将图数据序列化,保存到关系型数据库或面向对象数据库,或是用他通用数据存储
- 处理引擎
- 一些定义要求图数据库使用免索引邻接,即关联节点在数据库里是物理意义上的“指向”彼此
- 如果宽泛一些,实现了对图数据模型的CRUD操作的数据库都可以称为图数据库
- 免索引邻接带来了巨大的性能优势是其他数据库无法比拟的
原生图的优劣:
- 优点:
- 遍历查询时性能优势很大
- 通过将节点和联系的简单抽象组装为相互关联的结构,使我们能够建造任意复杂的模型,形象的映射我们的问题域
- 比起那些传统的关系型数据库和其他NoSQL存储,我们所得到的模型更简单,也更具有表现力
- 缺点:一些未使用遍历的查询会比较困难,并且需要占用巨大的内存
2.2 图计算引擎
图计算引擎的作用:
- 可以在大数据集上使用全局图算法
- 旨在识别数据中的集群,如回答这样的问题”在一个社交网络中,平均每个人有多少联系?“
图计算引擎的特色:
- 偏重于全局查询
- 通常为扫描和批处理大规模信息做过优化,与关系型数据库中的数据挖掘和OLAP类似
- 只有一部分的图计算引擎有自己的图存储层,其他的则只完全关注如何处理外部传入的数据,然后返回结果到其他地方存储
图计算引擎:
- 内存的、单机的:
- Cassovary
- 分布式:
- Pegasus
- Giraph
大部分分布式图计算引擎都是基于Google发布的Pregel白皮书(主要讲述了如何使用图计算引擎来计算网页排名)
3 图数据库的威力
- 提供了强大而新颖的数据建模方法,及其灵活的数据模型,与当今敏捷然健交付实践推崇的交付模式相一致
- 可以用一些列用例和数据模式来说明:
- 采用图的方案,性能可以提升一个甚至几个数量级
- 比起聚合的批处理,其延迟也小的多
3.1 性能
与关系型数据库相比,随着数据集的不断增大,关系型数据库处理密集join(join-inensive)查询的性能也会随之变差
图数据库在数据集增大时,它的性能趋向于保持不变,这是因为查询总是只与图的一部分相关。每个查询的执行时间只和满足查询条件的那部分便利的图的大小成正比(而不是整个图的大小)
3.2 灵活性
我们希望问题域来决定如何连接数据,不需要在对数据的真实模样和复杂度了解最少的时候,被迫预先做出决定,随着对问题域了解的加深,结构和模式(schema)会自己浮现出来。
图天生是可扩展的,即对已存在的结构添加不同种类的新联系、新节点、新标签和新子图,而不用担心破幻已有的查询或应用程序的功能。
基于图的灵活性特征,我们不必在项目最初就穷思竭虑的吧领域中的每个细节末枝都考虑到模型中,对于不断变化的业务需求,简直就是蛮干。这意味着做更少的数据迁移,从而降低维护开销和风险。
3.3 敏捷性
我们希望能像改进应用程序的其他部分一样改进我们的数据模型。现代图数据库可以让我们平滑的开发方式、配以优雅的系统维护做到这一点。现代图数据库天生不需要模式,再加上其API和查询语言的可测性,使我们可以用一个可控的方式来开发应用程序。
同时因为图数据库不需要模式,所以它缺少以模式为导向的数据管理机制,但这并不是一个风险,相反它促使我们采用了一种更可见、可操作的管理方式。
图数据库的管理通常作用于编程方式,利用测试来驱动数据模型和查询,以及依靠图来断言业务规则。
图数据库开发方式非常符合当今的敏捷软件开发和测试驱动软件开发实践,这使得以图数据库为后端的应用程序可以跟上不断变化的业务环境。