图数据库在游戏开发中使用思考(上)

图数据库,从概念的出现到现今蓬勃发展跨度几十年,它可以细分为NoSQL(Not Only SQL)非关系型数据库的一种:

图的概念

图数据库这里的“图(Graph)”并非指的风景、人物照片或者GIF动图,而是指类似于“网络拓扑图”或者“股权关系图”这类结构的图,目的用来表示节点之间的关系,这类结构图也可以称之为属性图模型

还有其他概念分类,例如:资源描述框架(Resource Description Framework,RDF)。这里我们不做延伸,本文后续图的概念均围绕属性图展开。

属性图有三个核心要素:

  • 节点(Vertex),用来表示对象;
  • 边(Edge),存在方向性,用来表示两个对象之间的关系,对象之间可同时存在多条关系;
  • 属性(Property), key/value结构,用来表示节点和边的属性,每个节点和边可同时存在多个属性;

可以参考这个图理解要素之间的联系:

图数据库的优势

1、图具有更好的解释性:

上图为例,我们用文字来描述节点之前的关系:“张三是公司A的法人,张三和李四是公司B的雇员”。若通过文字描述,我们比较难第一时间联想到李四有一个同事(张三)是某个公司(公司A)的法人。

在这个简单的例子里,图优势可能没那么明显。但当节点越多,关系越复杂时,图的解释性优势越凸显,更多了解可以参考后面的使用案例。

2、图处理关系数据时更具优势:

图数据库的存储引擎和查询引擎针对图的结构专门设计,所以图基于关系的遍历要高效得多。这里有一篇文章(Social Media Mining in Theory and Practice)拿了传统关系型数据数据库与Neo4J在关系深度遍历上做了一些对比:

Social Media Mining in Theory and Practice里的对比结论

可见在一些特定的关系场景中,图数据库有几近碾压的性能优势。

在数据规模上图数据库也有不小的优势,比如NebulaGraph的slogan:“NebulaGraph是一款开源的、分布式的、易扩展的原生图数据库,能够承载数千亿个点和数万亿条边的超大规模数据集,并且提供毫秒级查询。”强调了千亿点,万亿边,毫秒级这三个概念,这些内容放到关系型数据库可能都需要定制特殊的分库分表方案。

图数据库当前典型使用案例

这里列举了一些大厂对于图数据库的实践总结,可以更直观的感受下图数据库的作用。

NebulaGraph的使用举例 – https://docs.nebula-graph.com.cn/3.3.0/1.introduction/0-0-graph/

图计算在网易游戏中的应用 – https://zhuanlan.zhihu.com/p/370433730

美团图数据库平台建设及业务实践 – https://zhuanlan.zhihu.com/p/345637888

图数据库在腾讯的应用实践 – https://zhuanlan.zhihu.com/p/450584880

这篇博文主要介绍了图数据库的一些基本概念,以及当前使用案例,描述图数据库是一个什么样的东西,能解决大概什么样的问题。下篇会结合实际,思考图数据库针对游戏开发能提供怎么样的能力。

(全文结束)


转载文章请注明出处:漫漫路 - lanindex.com

Leave a Comment

Your email address will not be published.