知识图谱图数据库选型

 ·  2020-04-03 14:19:37  ·  北京瑞铭安普科技有限公司

      知识图谱(Knowledge Graph),在图书情报界称为知识域可视化或知识领域映射地图,是显示知识发展进程与结构关系的一系列各种不同的图形,用可视化技术描述知识资源及其载体,挖掘、分析、构建、绘制和显示知识及它们之间的相互联系。    

 


知识图谱图数据库选型

知识图谱数据库
 
      在做知识图谱时,我们最常碰到的问题莫过于对图数据库的选择。当前,业界有 Neo4j 和 Cayley 这两种最为常用的图数据库可供选择。
 
      大家可能会普遍地认为:无论是网上资料的丰富程度,还是数据库知名度的排名,Neo4j 在各个方面的优势都胜过 Cayley。然而在实际选型中,我们却选择了后者。
 
具体原因如下:
  • 数据的体量。由于我们公司有着两亿规模的日活数据量,而且还会持续产生无数个节点,因此我们需要选用一款能够支持大体量数据的数据库。

  • 开源的属性。如今 Neo4j 的企业版已经不再开源。而就算它以前的开源模式也并不完全。由于其核心内容并未开源,因此一旦出现了问题,我们很难得到及时的支持与帮助。

  • 是否支持分布式。鉴于上述企业版的限制,有人曾提出采用免费的版本。可是,由于只有企业版的 Neo4j 才能支持分布式存储与集群,而且其免费版无法支撑我们的数据体量,因此我们后续没有再去考虑 Neo4j。

  • 落地时的性能。其间,我们还曾经对比过 Dgraph 与 Cayley。鉴于两者都是开源型的数据库,且都能够支持分布式,因此我们考量了它们的第三个维度:落地时的性能。

    我们曾经使用上亿的数据量,去分别检验两种数据库查找关系和建立关系的性能。

    随后,我们发现由于自身存在着 Bug,Dgraph 对于支持边的权重计算存在着缺陷,会导致在进行边与边、点与点的计算时出现性能上的问题。

    因此经过综合考虑,我们最终还是选用了 Cayley 作为自己的图数据库。当然,我们也将自己的发现提交给了 Dgraph 的作者,如今的 Dgraph 版本,已经修正了该 Bug。

 
      总的来说,我们在给企业选择图数据库时,需要分析企业自身的数据体量。如果要处理的数据量和知识量特别多,而且对于速度、性能有一定的要求的话,就不能使用单机版的数据库,而应当去考虑分布式。
 
      与此同时,更重要的是:应用的场景。如果本企业除了要计算两个节点之间的关系,还需要得出节点关系所对应的边权重的话,那么我们更应该进行综合考量和全面对比。一般而言,大多数图数据库(如 Neo4j),都会自带底层数据库。
 
      而在实际建模的过程中,我们完全可以在底层不去使用图数据库,例如:可以用 MongoDB 作为底层;然后在它的上面去嵌套一层并未内置底层数据库的图数据库。而且实践证明,这样的混合模式会更加灵活且高效。