基本原理
简介
互联网时代,随着网络技术的发展,企业积累的数据越来越多。伴随着数据集的不断 增加,传统的关系型数据库查询性能会随之变差,特别是针对一些特殊的业务场景, 所以迫切的需要一种新的解决方案去应对这种危机。为了解决复杂的关系问题,图数 据库应运而生。
图数据库,是指以“图”这种数据结构存储和查询数据,图包含节点和关系,节点和 关系可以存在标签和属性,且边可以有方向。GraphBase是基于FusionInsight HD的分 布式图数据库,基于HBase的分布式存储机制,能够支持百亿节点,千亿关系的海量 数据,提供基于Spark的数据导入和基于Elasticsearch的索引机制,在推荐、关系分析 和金融反欺诈等领域有广泛应用。系统具有如下特点:
● 全分布式,Hadoop生态无缝集成。
● 百亿点千亿边,秒级查询。
● 提供易用的Rest接口,方便数据的查询分析。
● 提供强大的Gremlin图遍历功能,可实现复杂的业务逻辑。
● 支持离线批量导入和实时流导入,对导入性能进行深度优化。
架构
GraphBase包含GraphServer和LoadBalancer角色。
● GraphServer:包含GremlinServer和StandardServer服务,GremlinServer负责 gremlin图查询服务,StandardServer负责REST服务等;系统启动时, meta_graph图先启动,meta_graph图负责存储多图元数据、异步任务等; Zookeeper负责监控服务中活着的实例,并提供分布式锁服务。
● LoadBalancer:提供图服务的负荷分担能力。 GraphBase架构如图图1-37所示。
图 1-37 GraphBase 架构
● 接入层
– Gremlin API:引入开源的Apache TinkerPop Gremlin组件,提供开源标准图 交互式查询语言接口;
– REST API:提供包含图查询、图修改、图管理和华为增强的在线分析图算法 在内的全套接口;
– 通过Load Balancer提供多实例GraphServer的负荷分担。
● 计算层
– 提供图数据库核心引擎,包括数据管理、元数据管理等;
– 后端存储和索引接口适配层;
● 存储层
– 分布式KV存储:提供海量图数据存储能力;
– 搜索引擎提供二级索引,全文检索、模糊检索等能力。
GraphBase典型应用场景:
● 金融反欺诈
● 知识图谱
● 关系分析
关键特性
支持多图
场景描述
● 不同业务部门开发不同的应用,可以共用同一套图数据库
● 不同的应用,采用不同的数据,数据无关联,方便业务隔离
多图方案设计图
● GraphServer:包含GremlinServer和StandardServer服务,GremlinServer负责 gremlin图查询服务,StandardServer负责REST服务等;系统启动时, meta_graph图先启动,meta_graph图负责存储多图元数据、异步任务等; Zookeeper负责监控服务中活着的实例,并提供分布式锁服务。
● LoadBalancer:提供图服务的负荷分担能力。
● GraphWriter:数据批量导入模块。
● GraphStreaming:数据实时导入模块。
数据导入
支持批量导入和实时导入 FusionInsight GraphBase支持批量导入和实时导入两种形式,批量导入利用Spark将存 储在HDFS上的历史数据全量导入到图数据库,实时导入利用kafka和SparkStreaming 将数据实时的导入到图数据库。 支持灵活的数据映射规则,将原始数据方便的映射成图模型。
批量导入支持BulkLoad
新增预计BulkLoad模式的导入能力,支持更快速的数据导入。 数据导入时,可以在一次MapReduce任务中同步生成Graph HFiles和Inner Secondary Index HFiles。
与组件的关系
GraphBase将业务数据和元数据存储在HBase,实现海量数据的支持;将外部索引数据 存储在Elasticsearch,实现全文检索、模糊匹配等查询能力;利用spark实现数据的批量、实时导入;利用Mapreduce实现索引重建和批量删除能力;利用Zookeeper实现 计算引擎多实例的分布式协调能力。 GraphBase与其他组件的关系如图1-38所示。
图 1-38 GraphBase 与其他组件的关系