kgraph -m6米乐安卓版下载

m6米乐安卓版下载-米乐app官网下载
k
kgraph
编辑
简介:kgraph 是快手研发的一款单机千万qps的分布式图数据库,于2019年底开始调研开发。
简介:kgraph 是快手研发的一款单机千万qps的分布式图数据库,于2019年底开始调研开发。

目录

产品简介

kgraph 是快手研发的一款分布式图数据库产品,于2019年底开始调研开发。

kgraph 设计目标

  • 高性能,目标是单机千万qps;
  • 为了解决内存加载数据耗时长的问题,我们需要一个持久化存储引擎;
  • 为了解决本地内存数据容量不足的问题,性能和数据量支持线性扩容。

kgraph 产品架构

整个系统可以分为三层,kv存储层,图逻辑层,以及计算层。

三层是相互独立的,可以分别实现水平拓展,如果存储的数据比较多,可以线性拓展kv存储层;如果计算任务较重,可以线性拓展计算层。

对于kv存储层,kgraph使用了高性能rpc框架krpc和intel的新硬件pmem,实现了极致的单机性能;

对于图逻辑层,主要是对点和边的定义,也就是如何将点和边转化成kv;包括实现了点和边的增删查改等基本接口;

对于图计算层,主要设计到两个模块:

  • 第一个graphserver,它的定位第一个是proxy,用户可以通过grpc或者krpc访问,第二个定位是一些图算法的实现,比如topn算法;

  • 第二个是gremlinserver,它的定位是gremlin语言的计算层,他的存储后端依赖kgraph存储集群,多个gremlinserver组成了gremlin分布式集群。

kv存储层


对于kv存储层,集群包含三种角色:client,master和datanode。

数据根据client定义的分shard算法,存储在datanode的各个shard当中,由datanode服务读写。

master主要有以下几个作用

  • 维护机器的状态;
  • shard调度:包括机器宕机时的failover,添加机器时shard迁移;
  • 维护shard的路由信息。

对于一般的的读写流程,client向master请求路由并缓存在本地,根据client端定义的分区算法,把图相关的数据转化成kv对,通过krpc协议写对应的datanode。

数据模型

kgraph基于有向异构属性图建模,如上图右侧,一个代表人的节点指向了代表视频的节点,边类型是点赞。

有向图,指的是边是有方向的,一个点的边可以分为出边和入边,出边入边分别存储;异构图,指的是允许存在多种类型的点和边,比如用户和视频分属两种不同的类型;属性图,可以理解为点和边上的键值对,比如用户具有年龄,性别等属性。

对于点的建模如下,有以下几个字段:uint64_t的id或者string类型的用户自定义id;string类型的代表类型的type,由id或者自定义id type唯一代表一个点;属性,也就是键值对。

对于边:有确定的起点和终点;string类型的代表类型的type,由起点 终点 type唯一代表一条边;属性。

kgraph和table上的数据对比如图,database和graph对应,一个type对应一个table,一个点或者边对应一个row,属性指的是column。

使用方式

对于kgraph的使用方式:

  1. 可以通过c java sdk访问,他的形态类似上图右侧;
  2. 可以通过grpc访问;
  3. 可以访问gremlin server。

kgraph支持gremlin查询语言,其一是gremlin的生态比较完备,gremlin生态的工具,都可以进行迁移使用;其二他是一种函数调用式的查询语言,学习成本比较低,能够很好表达复杂的查询,表达力比sdk 或者 grpc更好。

我们可以简单看两个gremlin的例子,如右下图:第一个查询语句是对于666节点出边指向的点,其中类型是people的所有点;第二个查询语句是666号关注的所有视频主的粉丝群体,这些粉丝群体关注的女视频主按照重合度排序取前10个。

所属公司

北京快手科技有限公司

评论

0
0
词条统计
创建者:小小亮
编辑次数:1
浏览次数:330
api调用次数:0
贡献者
网站地图