乐趣区

关于知识图谱:图数据库选型问题方法与工具

图数据库是常识图谱零碎的外围。在理论的利用中,为什么要做图数据库选型,图数据库选型应该怎么做?
蚂蚁团体图数据库负责人洪春涛,在常识分享社区 Datafun 的演讲中,对这些问题进行了剖析和解答。以下是演讲原文整顿。

1、为什么要做图数据库选型

图数据库是常识图谱零碎的外围。在典型的常识图谱零碎中,数据会在常识抽取、整顿和推理之后,被寄存到图数据库中,而后图数据库会撑持常识图谱的查问、更新、推断等工作。因而图数据的选型决定了图谱零碎的规模、性能、稳定性,对整个图谱零碎利用十分重要。

目前行业内图数据库类型十分多,常见的有 Neo4j、JanusGraph,以及蚂蚁团体研发的图数据库 TuGraph 等,整体数量在几十种左右。但他们之间的差别十分大,比方查询语言上 Neo4j 用的是 Cypher,JanusGraph 用的是 Gremlin。

图数据库的图模型也有很大差别。图数据库目前大部分以属性图为主,也有另外一类是 RDF 图,这两种图数据库从数据抽象上不一样,其它很多个性,比方有没有用户权限,有没有多图、有没有超图,这些特色也都十分不一样。

应用图数据次要的问题在于,它不像关系型数据库是一个规范的关系代数的形象,下面有规范的 SQL 语言。目前图数据库没有齐全标准化下来,所以对于很多用户造成了很大的困扰,在选图数据库的时候,不晓得应该怎么选。

另外一个次要的问题是,图数据库当初很多利用场景其实是偏摸索类的,在具体场景当中,会用到哪些算法,须要哪些个性,用户当时并不知道,因而更难抉择图数据库的类型。

那么咱们该如何做图数据库系统选型呢?

图数据库系统的选型,一个十分重要的工具就是基准测试程序,英文叫 Benchmark,它会模仿实在的场景对系统进行测试,是比拟规范的测试程序。

以 TPC- C 为例,这是个很规范的对关系型数据库进行测试的基准测试程序,它模仿的是连锁商店对数据库的应用,会在数据库建订单管理系统、库存管理系统、物流治理。这个程序自身会规定事务性应该反对到什么境地,应该有多并发,每一个查问的提早应该有什么样的要求。如果一个关系数据库可能正确地通过 TPC- C 这个测试,并且失去一个值,那么对用户来说,就能够大抵预计在失常的实在的状况下,它的性能,性能大抵如何,进一步预计在实在场景下的功能性、稳定性等。

所以 Benchmark 能够领导咱们对数据库系统的设计,同时它对减速整个行业的倒退是很重要的。

2、咱们须要什么样的基准测试程序

一个好的 Benchmark 有以下个性。

首先要贴合理论,它抉择的场景必须是比拟符合实际状况的。比如说 TPC- C 要模仿一个商店的管理系统,那么这个数据特色、操作特色就必须跟商店差不多,以做库存治理、订单治理为例,这些查问有多少读、有多少写,它们之间的混合比例,都须要符合实际。

性能特色上,要满足肯定的提早要求。读写比例并发有肯定的要求,比方同时会有多少用户在这下面用,它的提早要求是多少,必须要求查问应该是在几十毫秒,都是有肯定的要求。查问跑进去的工夫如果太长,必定不合乎失常的需要。

另外它必须具备可扩展性。理论测试中,商店大小是有差别的,如果说一个 Benchmark 只规定了一种数据大小,那就很难让用户感觉到在本人的场景上面会是什么状况。比如说用户要开一个商店,心愿选一个数据库,但 Benchmark 的测试数据可能只限度了 1GB 数据,而理论用户的数据有 1TB,那这个 Benchmark 就没有参考价值,所以大部分好的 Benchmark 都具备可扩展性,想测 1GB、100GB、1TB 甚至 10TB 都有方法去实现。

还有一点是规范必须要谨严,这是十分重要的。图数据测试,不能用 TPC- C 的数据来随便实现,比方只测读意外写,测试的时候把其中所有的写操作都去掉,跑进去一个后果看似很高,实际上却没有意义,因为并不符合实际的测试规范。所以这个规范自身必须要很谨严,它必须有审计规定,要有对数据的验证。

当初图数据库罕用的几个测试程序,一个是 Twitter,即把 Twitter 颁布的数据集拿来跑 K 跳,从一个点登程去找 K 度的街坊,以及去跑图算法,这种测试的办法有很大的问题。一是推特自身的图十分无限,不具备可扩展性。图下面的点和边是没有属性,这其实是不合乎真实情况的。另外它是一个社交图,跟其余很多罕用的金融图等都不太一样,所以只能作为一个简略的参考。最致命的是它只有读没有写,测试的时候就没法去测它的写操作,或者要测写操作也只能加几条边加几个点,这是十分不谨严的。

3、金融图数据库 benchmark 怎么做

LDBC(The Linked Data Benchmark Council) 是寰球出名的非盈利性技术协会,目前有三个 Benchmark,一个是基于语义网络的 RDF 图,一个是图剖析,另外就是社交网络的图 SNB。

目前国内上做得比拟规范的图数据库测试程序是 LDBC 的 SNB 的测试。SNB 测试是模仿社交网站对于图数据库的利用场景,依照社交网站的数据个性生成数据,它容许生成各种各样大小的数据,同时操作上有读写混合,读也有各种丰盛的语义,有一个十分规范的文档,也有第三方审计。

SNB 测试模仿的是社交的场景,外面有 14 类的点 20 类的边,点跟边下面会有一些属性,能够设置数据规模最小的数据是 SF1,大略生成进去是 1GB 的数据,最大能够 SF100,SF300,SF1000,SF30000 都有。

从操作上它有两类,一类是 Interactive,即模仿在线的查问,它下面有七种简略的读,14 类简单的读。有八种写的操作,理论测试的时候,会要求把这些读写混合的并发的发到这个图数据库下面。另外一类是 BI 的 Workload。BI 的查问里边,它是简单的只读查问,就比下面这个简单读还要更简单,基本上是全局扫描的相似 OLAP 的利用。它的写是批量写,所以这个跟下面的 Interactive 是很不一样的。

在一些验证下面,它会要求读写混合,会有正确性的验证,这些读写做完了当前,须要验一下目前这个数据库的正确性,而后有事务隔离性的要求,最重要的是它有提早的要求,每一个查问规定大略只有千分之一的申请是能够超时的,如果提早超过 100 毫秒的查问超过千分之一。那么这个比例太高了,这个数据库就是不通过的。

SNB 模仿的是一个社交网站的数据,里边有人的节点,有论坛的节点,论坛里边有很多帖子,而后大家能够去转载这些帖子,同时这个人会有各种各样的材料,有他的公司、大学、城市,通过边会把这些信息连起来,在下面去做查问。是一个比拟典型的图查问。

咱们发现在蚂蚁本人的利用场景上面,有很多跟 SNB 不一样的中央,因而决定跟 LDBC 一起做一个金融图的 Benchmark。金融 Benchmark 跟 SNB 的次要差异是什么呢?

首先是场景上的差异,SNB 是一个社交场景,咱们是金融风控等不同类型的场景,从数据上就会有比拟大的差异。社交网络的图,有它的特殊性,首先它往往会有很多大点,比方一个微博大 V 账号,会有很多关注,它就是个大点;而后它外面的点,均匀出度会比拟高,如每个微博账号,均匀会有 300 个左右的关注。这些个性导致社交图跟其它图都不一样,相对而言金融图绝对出度会小一些。

SNB 下面的模型点跟点之间是没有反复边的,然而金融图里边就十分多重边的状况,比如说两个人之间会常常转账,那么他们之间就会有十分多的重边呈现。金融图的查问跟计算区别也很大,且查问对于提早的要求更高一些。如果 20 毫秒之内返回不回来,那么整个用户体验就会很蹩脚。

SNB 里边读跟写是离开的。在金融图里读写是有可能在同一个 Query 里边的。咱们会找很多的环状的构造三角的构造,这些都是跟 SNB 不一样的中央。所以这也是促使咱们去做金融图 Benchmark 的一个次要能源。

目前咱们的金融图 Benchmark 还在设计阶段,次要是在线查问,对提早要求比拟高。另外咱们会设计负载的波峰波谷,因为一般来说中午流量比拟小;咱们会对数据有 TTL,会对过期的数据进行清理。比如说个别零碎里边放三个月的数据,超过三个月就主动回收掉了。

以下是一个比较简单的又读又写的 Query 的示例。

除此之外,咱们还会做一些反欺诈的、反套现的操作,这也是金融场景中常常须要解决的问题。咱们会把金融图数据库 Benchmark 当做一个规范来做。

结语

综合以上,咱们认为图数据库是图谱利用零碎的外围,所以它的选型很重要,而 Benchmark 作为选型最无力的工具十分重要。Benchmark 如果做得好,它能够成为一种事实标准,领导零碎的设计。咱们也倡导更多的人来跟咱们一起参加 Benchmark 的开发以及制订,推动图数据库系统的标准化,共建行业生态。

退出移动版