在数据库设计开发之初,开发人员都会面临一个重要的选择:用哪个数据库呢?用什么数据库技术来实现呢?在本文中,笔者将以构建一套文档系统为例,具体阐述用Ultipa Graph如何将开发需求转化成图数据库的存储结构,以及图数据库区别于传统关系型数据库有哪些优势。
一 快捷| 5步完成设计创建
1.了解功能需求。在设计数据库之前,设计人员必须要先了解系统的功能需求。这里可以通过阅读产品需求规格说明书,与项目相关人员(比如项目经理、客户等)进行充分沟通。
2.定义实体及关系。了解系统功能需求之后,设计人员通过分析系统功能定义出系统有哪些实体,以及实体之间的关系。
比如,用户阅读响应权限的不同语言的书目及文章,可包含五种实体:
1.用户
2.权限
3.书目
4.文章
5.语言
五种关系:
1.用户-权限
2.书目-权限
3.文章-权限
4.书目-语言
5.书目-文章
对应五种属性定义:
用户-权限 | 用户id,权限id,授权时间,过期时间 |
书目-权限 | 书目id,权限id |
文章-权限 | 文章id,权限id |
书目-语言 | 书目id,语言id |
书目-文章 | 书目id,文章id |
3.绘制点边图示例。定义好实体和关系之后,接下来我们应该根据实体以及实体之间的关系绘制出点、边图。看图如下:
图1:点边图
4.总结边的创建规则。
绘制好点边图以后,总结一下图中边的创建规则:
1.用户-权限:每个用户可以有多个权限,每个权限可以对应多个用户;
2.书目-权限:每本书可以有多个权限,每个权限可以对应多本书;
3.文章-权限:每篇文章可以有多个权限,每个权限可以对应多篇文章;
4.书目-语言:每本书只能有一种语言,每种语言可以对应多本书;
5.书目-文章:每本书可以有多篇文章,每篇文章只能对应一本书。
5.创建数据结构。使用UQL语言进行图集、schema、属性的创建:
至此,数据库创建任务已经完成!值得一提的是,程序员可以明显地看到,在过去几十年中,很多程序员已经被训练的一定要先了解数据模型,不论它是关系型表结构还是实体E-R模式图,这也让开发流程变得更加复杂和缓慢,请问,你还记得上一次参与解决方案的开发周期有多长?一个季度?半年?一年还是更久?在一个有8000张表的Oracle数据库中,没有任何一个DBA可以完全掌握所有表之间的关联关系,这个时候体验一下用图数据库来操作一把吧。
二 精简| 图数据与表数据相比的优势
一是,点、边分离,思路更清晰。传统数据库的设计过程往往是把重心放在各种“表”的构建上,如将上面列举的应用场景用关系型数据库的表结构来表达,见下图:
图2:传统的关系表、关系型数据库
如图2所示,可清晰地看到表之间的区别:其中,五张彩色表对应的是图数据中的五种实体(彩色表可看作实体表),五张灰色表对应的则是图数据中的五种关系(灰色表即为关系表)。图数据、表数据虽然都存储了同样的信息,但是直观上来讲,图数据将“关系表”抽离出来,对其赋予了“边”的概念并进行存储,能把开发者从茫茫表海中解救出来,将更多的注意力放在实体上,有助于在建库之后对数据进行灵活多样的查询与分析。
二是,通过面向点、边的路径查询来替代传统SQL类数据库的多表关联查询,原因是图数据对“边”概念进行提炼的初衷是要从根本上改变数据的关联方式和存储方式,让边在查询时所发挥的作用大大超过联表查询中的“关系表”,即将针对传统关系表进行的联表查询,变成针对点、边图进行的路径查询,这是图数据查询比表数据查询速度更快的根本原因。
由于边在图中所起的作用是连接两个点,图数据库需要对边的起点和终点进行特殊管理。在为图中的边创建属性时,以前面例子中的“用户-权限”边为例,开发者并不需要创建“用户id”和“权限id”这两个属性,原因是“用户id”和“权限id”分别是“用户-权限”边的起点和终点,而起点和终点在图数据中被视为边的固有属性,是由系统自动创建并进行管理的。
虽然关系型数据库在业界仍占主流,但由于其天生的限制条件亟待被优化或技术替代:
1.扩展困难:由于存在类似Join这样多表查询机制,使得数据库在扩展方面很艰难;
2.读写慢:这种情况主要发生在数据量达到一定规模时,由于关系型数据库的系统逻辑非常复杂,使得其非常容易发生死锁等的并发问题,所以导致其读写速度下滑非常严重;
3.成本高:企业级数据库的License价格很惊人,并且随着系统的规模,而不断上升;
4.有限的查询效率:现有关系型解决方案还无法支撑海量数据存储的高效查询。
图3:图数据库=100%的真实世界
图数据库的所有特点都是相对于传统数据库而言的,尤其是关系型数据库。简单而言,图数据库有三大特点:
1.高维
2.高性能
3.高效率
我们正处于一个大数据的时代,互联网和移动互联网络的快速发展带来了数据产生速率的极大增长,相比于传统的关系型数据库中的关系表(见图2),图数据库(图3)就是被人们创造出来解决这种不断增长的数据挑战的利器——采用可描述复杂关联关系的高维拓扑结构,通过可视化的方式,即能创建一套达到事半功倍支持海量数据和流量、管理部署简单、提升用户满意度和优化运营成本的网站后台数据库了。