|探索图数据库在数据资产可视化中的应用( 五 )


d) 图数据库有利于实时的大数据挖掘结果可视化 。
劣势
a) 不适合记录大量基于事件的数据(例如日志条目);
b) 二进制数据存储 。
c) 并发性能要求高的项目 。
d) 目前相关图查询语言比较多 , 尚未有很好统一 。
e) 图数据库相关的一些书籍文档偏少 , 相关生态还在不断完善 。
图数据库在处理关联关系上具有完全的优势 , 但是在一些场景下 , 图数据库并不能完全代替关系型数据库 。
图数据库在处理关联数据时三个技术优势
|探索图数据库在数据资产可视化中的应用
本文插图

1、性能方面:
随着数据量的增多和关联深度的增加 , 传统关系型数据库受制于检索时需要多个表之间连接操作 , 数据写入时也需考虑外键约束 , 从而导致较大的额外开销 , 产生严重的性能问题 。 而图模型固有的数据索引结构 , 使得它的数据查询与分析速度更快 。 在关联关系的处理上 , 用关系型数据库处理不可避免要用到表的JOIN操作 , 对性能的影响较大;而图数据库则是类指针直接跳转访问 , 更高效的操作关联数据 , 比关系型数据库有2到4个数量级的性能提升 。
2、灵活度方面:
图数据库有非常灵活的数据模型 , 使用者可以根据业务变化随时调整数据模型 , 比如任意添加或删除顶点、边 , 扩充或者缩小图模型这些都可以轻松实现 , 这种频繁的 Schema 更改在关系型数据库上不能到很好的支持 。 现实中 , 项目的进程往往是不断演进的 。 数据的内容甚至数据格式也会不断发生变化 。 在关系型数据库中 , 这意味着表结构的变化 , 或者多个新表的建立 , 对源数据的改动非常大 。 而在图数据库里 , 仅需添加新的顶点、边、属性 , 设置为对应的类型即可 。 从本质上说 , 一个表代表一个类型的数据 , 一个顶点代表一个特定的数据 , 意味着关系数据库更关注数据的类型 , 而图数据库更关注数据的个体 , 识别其关联关系 。
3、敏捷度方面:
图数据库的图模型非常直观 , 支持测试驱动开发模式 , 每次构建时可进行功能测试和性能测试 , 符合当今最流行的敏捷开发需求 , 对于提高生产和交付效率也有一定帮助 。 使用图(或者网)的方式来表达现实世界的关系更加直接、自然 , 在万物互联的物联网时代尤为突出 。 如果采用关系型数据 , 先将人物建表 , 再将关系建表 , 最后将数据进行映射 , 需要高度的抽象思维 。 在图数据上进行分析查询时 , 也可以直观地通过点边连接的拓扑 , 交互式找到想要的数据 , 不需要具备任何的专业知识 。
传统关系数据库的性能问题
|探索图数据库在数据资产可视化中的应用
本文插图

性能问题的本质在于数据分析面临的数据量 , 假如只查询几十个节点或者更少的内容 , 这种操作是完全不需要考虑数据库性能优化的 , 但当节点数据从几百个变成几百万个甚至几千万个后 , 数据库性能就成为了整个产品设计的过程中最需考虑的因素之一 。
在数据量这么大的场景中 , 使用传统 SQL 会产生很大的性能问题 , 原因主要有两个:
1、大量 JOIN 操作带来的开销:
之前的查询语句使用了大量的 JOIN 操作来找到需要的结果 。 而大量的 JOIN 操作在数据量很大时会有巨大的性能损失 , 因为数据本身是被存放在指定的地方 , 查询本身只需要用到部分数据 , 但是 JOIN 操作本身会遍历整个数据库 , 这样就会导致查询效率低到让人无法接受 。
2、反向查询带来的开销:
查询单个经理的下属不需要多少开销 , 但是如果我们要去反向查询一个员工的老板 , 使用表结构 , 开销就会变得非常大 。 表结构设计得不合理 , 会对后续的分析、推荐系统产生性能上的影响 。 比如 , 当关系从_老板 -> 员工 变成 _用户 -> 产品 , 如果不支持反向查询 , 推荐系统的实时性就会大打折扣 , 进而带来经济损失 。


推荐阅读