其他分享
首页 > 其他分享> > 知识图谱-

知识图谱-

作者:互联网

1. 图数据库

  1. 数据库分类: 传统的关系数据库和NoSQL数据库
    传统的关系数据库:mySQL、oracle
    NoSQL数据库分为Graph,Document,Column Family以及Key-Value Store等四种,分别对应titan、ES、hbase、redis。
  2. 图数据库相对于传统关系型数据库的优点
    (1)传统关系型数据库为每一类实体建表,但没有对关系进行表示的机制。因此在更多实体引入之后,我们将需要越来越多的关联表,从而使得基于关系型数据库的解决方案繁琐易错。
    (2)图数据库由于其独特的设计,为关系和属性的查询提供了快速的解决方案。
  3. 常见的图数据库
    titan、neo4j、OrientDB、JanusGraph、HugeGraph、Trinity

1.4 图数据库比较

4.1 neo4j与titan和JanusGraph:
(1)neo4j的用户生态更加完整,使用量多,受欢迎数据库排名第1。
(2)开源版neo4j不支持分布式,而JanusGraph支持分布式。
(3)neo4j的表示语言不直观,没有sql方便

4.3 Trinity与JanusGraph和Neo4j:
Trinity中的边作为Node的属性存在,本身不能具有属性;JanusGraph和Neo4j的边本身是一个对象,可以具有属性

4.4 titan与JanusGraph
JanusGraph是titan的升级版,titan目前已无人维护。
titan存在的问题:
(1)Titan 1.0.0仅仅稳定支持hadoop 1.2.1
(2)Titan 1.0.0采用较新版本的slf4j(1.7.5)和Hadoop采用的slf4j(1.4.3)版本不一致,可能会导致基于Hadoop的Titan图数据库运算,如mr.updateIndex不能正常运行.
(3)Titan 1.0.0,其PageRankVertexProgram,针对大规模顶点(>= 1000万)时,由于程序bug,没有保存部分顶点的PageRank值

2 图查询语句

2.1 总结

SQL:数据以表形式存在,有比较强的schema定义,表间的数据关联以联接(join)的方式实现。这是一种事实标准,大部分人都想把其它问题也转换回SQL或类SQL的方式上来。

SPARQL:面向RDF(Resource Description Framework)的三元组数据,W3C标准,无schema,在研究中应用非常广泛。SPARQL的查询与RDF是一致的,RDF是图,SPARQL查询是子图匹配。

Gremlin:数据以属性图的形式存在,可以认为是上面两种的混合体,属性仍然在表中,但是联接关系是直接以链接(比如指针)的形式存在的。查询的本质是图遍历,擅长解决求图的直径、点到点之间的路径,比如刘德华连接奥巴马需要几度关系。

Cypher: Neoj4数据库使用的图查询语言

2.2 缺点

1、SQL的问题:
这里涉及到一个问题,属性值并不总是单一值(List),而SQL表是有这个假设的(比如MySQL,PostgreSQL是有Array类型的)。针对每一个多值属性都需要进行额外拆表,这对表的管理带来了巨大挑战。查询时频繁地进行多表联接对数据库性能也是个挑战。另外,也可以直接在关系型数据库中存储三元组,但是查询效率并不高。

2、SPARQL:
Free Schema的方式,在使用Gremlin时可能需要创建的很多表,造成使用不便,效率低下,可以考虑这种方式,例如知识图谱的应用场景

2.3 查询语句介绍

深入学习图数据库语言Gremlin 系列文章链接汇总

标签:titan,SQL,图谱,数据库,知识,查询,JanusGraph,属性
来源: https://blog.csdn.net/weixin_36378508/article/details/120206927