图数据库 JanusGraph

Janusgraph 代码示例:https://blog.csdn.net/O_n_O_/article/details/82706542

知识图谱

###1.什么是知识图谱
知识图谱:是显示知识发展进程与结构关系的一系列各种不同的图形,用可视化技术描述知识资源及其载体,挖掘、分析、构建、绘制和显示知识及它们之间的相互联系。
###2.知识图谱应用
知识图谱的应用场景非常广泛:

  • 场景一 新闻事件的关联分析
  • 场景二 识别反欺诈潜在风险
  • 场景三 不一致性验证识别
  • 场景四 失联客户管理
  • 场景五 知识图谱的可视化展示

知识图谱可以自动推断出新的知识。假设下图左侧是原始的知识图谱,根据两层父子关系,图谱可以自动推断出缺失的祖孙关系,正所谓“爸爸的爸爸是爷爷”。
图数据库 JanusGraph

图数据库

图形数据库:是NoSQL数据库的一种类型,它应用图形理论存储实体之间的关系信息。
最常见例子就是社会网络中人与人之间的关系。关系型数据库用于存储“关系型”数据的效果并不好,其查询复杂、缓慢、超出预期,而图形数据库的独特设计恰恰弥补了这个缺陷。

图具有如下特征

包含节点和边;

  • 节点上有属性(键值对);
  • 边有名字和方向,并总是有一个开始节点和一个结束节点;
  • 边也可以有属性;
图数据库名称 来源 了解
Neo4j 开源图形数据库 单机性能明显,分布式存在瓶颈,企业版收费
JanusGraph 开源的分布式图数据库 好拓展,支持高并发复杂实时图遍历,支持多存储后端,支持多索引后端,支持事务
OrientDB 开源分布式图形-文档混合数据库 从社区的评论来看,性能和可扩展性是个问题,缺乏对纯图形操作的针对性
ArangoDB 多模型数据库 插入性能低,相关文档很少 ,对spark支持少
HugeGraph 百度开源图数据库 2018.8月发布,中文文档,不支持全文检索功能,不支持分布式

JanusGraph简介

  JanusGraph是一个可扩展的图数据库,可以把包含数千亿个顶点和边的图存储在多机集群上。它支持事务,支持数千用户实时、并发访问存储在其中的图。

  我们可以将图数据库系统的应用领域划分成以下两部分:
  用于联机事务图的持久化技术(通常直接实时地从应用程序中访问)。这类技术被称为图数据库,它们和“通常的”关系型数据库世界中的联机事务处理(Online Transactional Processing,OLTP)数据库是一样的。
用于离线图分析的技术(通常都是按照一系列步骤执行)。这类技术被称为图计算引擎。它们可以和其他大数据分析技术看做一类,如数据挖掘和联机分析处理(Online Analytical Processing,OLAP)。

JanusGraph的功能

JanusGraph最大的一个好处就是:可以扩展图数据的处理,能支持实时图遍历和分析查询(Scaling graph data processing for real time traversals and analytical queries is JanusGraph’s foundational benefit.)。
  因为JanusGraph是分布式的,可以*的扩展集群节点的,因此,它可以利用很大的集群,也就可以存储很大的包含数千亿个节点和边的图。由于它又支持实时、数千用户并发遍历图和分析查询图的功能。所以这两个特点是它显著的优势。
  它支持以下功能:
  (1)分布式部署,因此,支持集群。
  (2)可以存储大图,比如包含数千亿Vertices和edges的图。
  (3)支持数千用户实时、并发访问。
  (4)集群节点可以线性扩展,以支持更大的图和更多的并发访问用户。  
  (5)数据分布式存储,并且每一份数据都有多个副本,因此,有更好的计算性能和容错性。 
  (6)支持在多个数据中心做高可用,支持热备份。
  (7)支持各种后端存储系统,目前标准支持以下四种,当然也可以增加第三方的存储系统:
        - Apache Cassandra®
        - Apache HBase®
        - Google Cloud Bigtable
        - Oracle BerkeleyDB
  (8)通过集成大数据平台,比如Apache Spark、Apache Giraph、Apache Hadoop等,支持全局图数据分析、报表、ETL
  (9)支持geo(Gene Expression Omnibus,基因数据分析)、numeric range(这个的含义不清楚)
  (10) 集成ElasticSearch、Apache Solr、Apache Lucene等系统后,可以支持全文搜索。
  (11) 原生集成Apache TinkerPop图技术栈,包括Gremlin graph query language、Gremlin graph server、Gremin applications。
  (12) 开源,基于Apache 2 Licence。
  (13) 通过使用以下系统可以可视化存储在JanusGraph中的图数据:
        - Cytoscape
        - Gephi plugin for Apache TinkerPop
        - Graphexp
        - KeyLines by Cambridge Intelligence
        - Linkurious

Graph

  • schema由edge labels, property keys和vertex labels组成
  • 显式(推荐)或隐式创建
  • 在使用过程中修改的,而且不会导致服务宕机,也不会拖慢查询速度
  • 一个 Graph 用于一个 Scheam
  • Schema Type首次创建时被赋予元素,且不能修改

Edge多样性:

  • MULTI 在一对vertex间可以有任意多个同样label的edge
  • SIMPLE 在一对vertex间最多只能有一个同样label的edge
  • MANY2ONE 多对一
  • ONE2MANY 一对多
  • ONE2ONE 某verex中具有同样Label的edge,只能有最多一个incoming edge和最多一个outgoing edge

Vertex value的基数:

  • SINGLE 每个KEY只允许一个VALUE (默认)
  • LIST 以LIST形式保存VALUE,也即可以有重复值
  • SET 以SET形式保存VALUE,不能有重复值

Property Key Data Type:
图数据库 JanusGraph

索引类型:

  • Composite Index 通过一个或多个固定的key组合来获取Vertex Key或Edge Mixed Index
  • Mixed Index 支持通过其中的任意key的组合查询Vertex或者Edge,使用灵活,效率要比Composite Index低,需要索引后端

分类:

技术点:

相关文章: