Nebula在京东北辰组织了他们的第二次Meetup,公司CEO叶小萌是蚂蚁金服图数据库Geobase的负责人。两位技术总监:陈恒和侯凤林,陈恒之前是HBase committer,现主要负责Nebula的存储层设计,类似TiKV。侯凤林(dutor)应该是负责query engine,类似TiDB。
架构是典型的存储计算分离,计算层设计是类SQL,添加go语法来实现边跳转,管道来简化嵌套子查询。storage层是kv结构,按照key做静态hash分区(暂不支持动态分区),hash值是根据顶点计算(解释图场景几乎没有按照点做order by的需求),也就是同一个顶点的所有点和出入边都存同一个分区,出入边遍历友好。但是,对求A到B之间的top 10权重边这种需求,查询不友好,需要单独加索引。
每个分区三副本组成一个raft group来实现复制,rocksdb引擎。单节点可能有很多分区,而每个分区都需要一个线程来负责推raft log,他们实现了一个共享线程池来负责推raft log,从而控制线程数。每个group内可设leaner角色,就是异步复制到其他系统,用于离线场景等。meta server跟data server设计类似,唯一区别是meta server负责meta相关的kv请求,data server负责图算子的kv请求。
目前处于alpha版本,下半年会发布可用于生产环境的release版本。我理解金融反欺诈反洗钱领域对图数据库的需求很强烈,理由如下: 首先蚂蚁金服是国内最开始自研图数据库的厂商,后团队出来创业后,最先找到的合作对象是京东数科,京东有强烈需求,星云有技术和经验,二者是极佳的互补。未来的核心服务对象,我猜仍然会是银行,金融企业,保险行业,证券这些不缺钱的大金主。除BAT外的第二梯队和第三梯队的互联网公司会陆续参与到他们的社区来,开发,测试,修bug,提高口碑和知名度,甚至成为行业图数据库领域的标准产品(例如查询语言一旦成为国内标准,用户上了船,就很难下船了)。
暂时不支持事务,他们未来打算用实用的pecolator分布式事务协议,有缺点(最大问题在于时间戳服务限制了集群的更大拓展性)但简单实用,因为基于rocksdb很容易通过单行事务实现多行事务,同时实现了去中心化的锁冲突检测。
开源的方式很棒,选择的方向是风口,团队技术靠谱,又有风投加持,未来可期。
最后,个人一点理解: infra既是个技术活,又是个产品活。对用户来说,产品经理的作用仍更胜于工程师,希望他们能打磨出一款精致的infra产品。