Archive for 1月, 2023

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

在游戏开发设计中,玩家作为一个游戏对象,他们之间可能会存在多种关系,比如:

  • 好友关系;
  • 组队关系;
  • 公会关系;
  • 买卖关系;
  • ……

无论是使用关系型数据库还是key/value型的NoSQL ,按照传统思路对于这些关系的存储结构实现大同小异。例如:玩家会有独立的好友关系数据块,数据块内部至少存储着好友唯一ID,可以通过好友ID索引到好友相关信息;公会存在唯一ID,通过这个ID拉取公会成员信息和其他信息;组队与公会类似…

传统数据库与图数据库思路比对

我们列举一下好友与公会的常规操作,在不考虑合法性校验的情况下:

操作传统方式图数据库方式
玩家A和B成为好友玩家A和B分别在好友数据块增加对方ID两对象A和B之间增加
玩家A和B解除好友 玩家A和B分别在好友数据块删除对方ID 两对象A和B之间删除
玩家A加入公会C玩家A记录所属公会ID,公会C在成员列表加入玩家A两对象A和C之间增加
玩家A离开公会C 玩家A删除所属公会ID,公会C在成员列表删除玩家A 两对象A和C之间删除

直观感觉上使用图数据库方式更简洁一些,传统方式若做得严谨一些可能还需要考虑事务的支持,根据数据库的选型不同会导致数据一先一后写入,需处理先写入成功后写入失败的场景。

为了凸显差异性,这次我们再假设一些更复杂的操作,比如在推荐系统中常见的场景,同样也是不考虑合法性校验的情况下:

Read More →

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

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

图的概念

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

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

Read More →