GraphView 介绍
欢迎来到GraphView,Graphview是一款能帮助你在MicrosoftSQL Server和微软云Azure SQL 数据库上高效率的管理和处理图数据的中间件。本文提供了一份Graphview的简要说明,包括了它的设计理念、基本的概念、功能和编程接口。同时本文也包含了详细的算法和实现细节。
什么是GraphView
GraphView 是一个用扩展SQL语言在数据表中存储和查询图数据的、基于SQL Server或者微软云Azure SQL DB实例的类库。GraphView不是一个独立的数据库,而是一个接受图数据操作语言并转化成SQL Server和Azure SQL Database 能运行的T-SQL语言的中间件。所以GraphView可以被看作一个连接到SQL Server/Azure SQL Database的特殊的连接器。开发者会觉得除了它可以接受图数据查询语言之外,它和.net Framework提供的默认的SQL连接器(比如SqlConnection)没有什么区别。
设计理念
图数据已经变得似乎无处不在。如今大多数管理图的解决方案都是以NoSQL概念为中心的。一个比较通用的反对用关系数据库来进行图操作的观点是认为使用连接(join)操作产生的序列表来遍历图性能太低,成本太高。但这个说法是不准确的。证明关系型数据库根本上的无法高效的处理图数据的说法过于模糊。首先,不是所有的join操作都很昂贵,消耗取决于输入的数据量,比如索引和视图。Join操作可以是高效的。更重要的是,即使是一个原生的图数据库,join操作也是有性能支出的。为了说明这个问题,我们可以假设一个原生的图数据库,其中的每个节点都被原生的作为一条包含了节点属性的数据,就像一张或多张的邻接表。在这个图数据库中,从节点到其邻接节点的遍历需要经过三个步骤:(1)检索数据库中给的节点的物理记录;(2)迭代此邻接表;(3)对每一个邻接节点,使用其ID或其引用来检索其物理数据。其中最后一个检索步骤本质上来说就是一个嵌套循环的join操作,它使用了记录的关键词,即一个物理地址或引用来定位一条记录。嵌套循环join在关系型数据库中,尤其是存在对节点ID的索引的时候并不一定昂贵。甚至在索引已经获取了其上下文并读入内存时,它的效率非常高。
我们假设第二步,也就是在图中遍历邻接节点是关系型数据库和原生图数据库的关键差异。传统的关系型数据库中,数据通常被标准化以避免冗余和修改异常。图数据库中的实体被高度连接并呈现出高度的多对多关系。对数据标准化而言,在两个实体之间的多对多关系将会产生一张用两列描述其连接关系的表。这样的一种组织形式意味着实体的属性被从图拓扑中分离了开来。为了遍历一个实体的所有邻接节点,查询引擎必须增加额外的连接操作来查询链接表以获得节点之间拓扑关系信息,这导致比原生图数据库更差的性能。
GraphView的方式是填补原生图存储和关系型数据库中的鸿沟,使SQL Server(还有微软云上的Azure 关系数据库)表现得像原生的图存储一样。GraphView是一个建构在SQL Server之上并复用其功能的实现。依托于适当地使用了SQL功能,GraphView的物理数据的行为和表现基本与原生图数据库相同。事实上,得益于多年的研究和开发SQL Server ,GraphView继承了许多被原生图数据库所忽略的复杂的优化,并提供了无与伦比的出色性能。
功能
GraphView是一个基于SQL Server和Azure数据库来管理图数据的Dll类库。它提供了所有图数据库所需的标准功能。并且由于它依赖于SQL Server ,它还继承了原生图数据库所不具备的、而关系型数据库所具有的很多功能。
GraphView提供了以下功能:
l 图数据库。建立在GraphView之上的图数据库也是一个标准的关系数据库。图数据库由若干各种类型的节点和边组成,每种节点和边都包含了若干属性。
l 数据操作。GraphView扩展了标准的SQL语句来进行图操作,包括插入和删除节点与边。操作语法类似于标准的INSERT/DELET语句,但增加了符合标准图描述的扩展。
l 查询。GraphView的查询语句允许用户匹配图的模式以在图数据库中查询。查询语句扩展了SQL 的SELECT语句,并增加了MATCH子句用于定义图模式。再加上T-SQL中的循环和迭代,查询语句允许用户进行图的遍历操作。
l 索引。为了提高查询速度,GraphView也允许用户创建索引。所有SQLServer和Azure 关系数据库支持的索引都被继承了下来,不仅包括B-tree索引和新的索引技术比如列存储索引等。
l 事务。所有GraphView中的操作都是事务安全的。而且没有所谓的事务边界限制,所以事务能用于处理节点、边甚至是整个图。
l 基于SQL的功能。GraphView继承了很多SQLServer和Azure关系数据库的功能。一下是一个对管理至关重要的功能列表:
n 权限控制。GraphView使用SQL Server的授权机制来控制图数据库的权限。只有获得SQL Server授权的情况下用户才能进行操作。
n 复制。GraphView在SQL Server数据库中进行图数据存储,数据库的复制将导致全图数据的复制。
n 备份。GraphView保持数据库对SQLServer管理员可见。管理员能应用备份操作来进行数据库备份。