图数据库在处理关联关系上具有完全的优势,特别是在我们这个社交网络得到极大发展的互联网时代。
如果我们希望知道谁 LIKES(喜欢)谁(喜欢可以是单向或双向),也想知道谁是谁的 FRIEND_OF(朋友),谁是所有人的 LEADER_OF(领导)。通过搜索来查找,便需要耗费巨量的时间来一一对比,但通过图数据库的子图查询,则可以对这些各异的需求进行更精准的响应。
子图查询最直接的优点就是对数据需求的表达能力很强。假设我们有一个查询需求:“查询小明的哪个朋友,既是小刚的领导,又喜欢小红”。已有的查询理解方式往往只是从查询中抽取关键字来进行,而子图的方式则更为精准,如下图所示。
子图能够理解查询的目标是个顶点,顶点有三条关联的边,分别是对“小红”的喜欢关系,小明的朋友关系,和小刚的领导关系,当下的搜索引擎的主干技术均在于对语句分词,得到关键字后通过关键字对目标网页进行召回排序并反馈,关键字序列的信息相比原句是有不少信息损失的。同时,搜索引擎所获取的信息也是非结构的复杂的数据,如果直接按排序提供给用户,用户需要另外浏览选择过滤得到目标的结果,用户可能在无关的网页中进行费时的筛选。
如上所述,以关键字理解查询需求存在不少信息损失,以网页文本集反馈用户,对用户来说其实也存在额外的信息获取成本,而通过图数据库子图同构的查询,能够对查询需求进行更为精准地响应。
除了在社交关联查询中尤为明显的优越性,图数据库还有如下优势:
1. 用户可以面向对象的思考,用户使用的每个查询都有显式语义,使得用户不必纠结于代码如何编写。
2. 用户可以实时更新和查询图数据库,灵活应对海量的关系变化,如增加删除关系、实体等。
3. 图数据库有利于实时的大数据挖掘结果可视化。
以下推荐一些不错的图数据分析引擎:
1.GraphScope:
2.GDB:
GDB(Graph Database)是阿里云上一款标准图数据产品,目前正在公测中,官网提示正式商业化时间是2019年12月31日。GDB是一种支持属性图模型,用于处理高度连接数据查询与存储的实时可靠的在线数据库,支持 TinkerPop Gremlin 查询语言;高度优化的自研图计算层和存储层,云盘多副本保障数据超高可靠,支持ACID事务;支持高可用实例,节点故障迅速转移,保障业务连续性;提供备份恢复,自动升级,监控告警,故障切换等丰富的运维功能,大幅降低运维成本。
3.Neo4j:
Neo4j是一个嵌入式的、基于磁盘的、具备完全的事务特性的Java持久化引擎,但是它将结构化数据存储在网络上而不是表中。Neo4j提供了大规模可扩展性,在一台机器上可以处理数十亿节点/关系/属性的图,可以扩展到多台机器并行运行。相对于关系数据库来说,图数据库善于处理大量复杂、互连接、低结构化的数据,这些数据变化迅速,需要频繁的查询——在关系数据库中,这些查询会导致大量的表连接,因此会产生性能上的问题。Neo4j重点解决了拥有大量连接的传统RDBMS在查询时出现的性能衰退问题。通过围绕图进行数据建模,Neo4j会以相同的速度遍历节点与边,其遍历速度与构成图的数据量没有任何关系。此外,Neo4j还提供了非常快的图算法、推荐系统和OLAP风格的分析,而这一切在目前的RDBMS系统中都是无法实现的。