图数据库选型:问题、方法与工具

简介: 图数据库是知识图谱系统的核心。在实际的应用中,为什么要做图数据库选型,图数据库选型应该怎么做?蚂蚁集团图数据库负责人洪春涛,在知识分享社区Datafun的演讲中,对这些问题进行了分析和解答。以下是演讲原文整理。

图数据库是知识图谱系统的核心。在实际的应用中,为什么要做图数据库选型,图数据库选型应该怎么做?

蚂蚁集团图数据库负责人洪春涛,在知识分享社区Datafun的演讲中,对这些问题进行了分析和解答。以下是演讲原文整理。

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

 

图数据库是知识图谱系统的核心。在典型的知识图谱系统中,数据会在知识抽取、整理和推理之后,被存放到图数据库中,然后图数据库会支撑知识图谱的查询、更新、推断等任务。因此图数据的选型决定了图谱系统的规模、性能、稳定性,对整个图谱系统应用非常重要。

 

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

 

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

 

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

 

另外一个主要的问题是,图数据库现在很多应用场景其实是偏探索类的在具体场景当中,会用到哪些算法,需要哪些特性,用户事先并不知道,因此更难选择图数据库的类型。

图片.pngimage.gif

 

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

 

图数据库系统的选型,一个非常重要的工具就是基准测试程序英文叫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度的邻居,以及去跑图算法,这种测试的方法有很大的问题。一是推特本身的图非常有限,不具有可扩展性。图上面的点和边是没有属性,这其实是不符合真实情况的。另外它是一个社交图,跟其他很多常用的金融图等都不太一样,所以只能作为一个简单的参考。最致命的是它只有读没有写,测试的时候就没法去测它的写操作,或者要测写操作也只能加几条边加几个点,这是非常不严谨的。

图片.pngimage.gif

部分厂商在选型时会加一些自己的测试,比如说希望能够测一些读写混合,然后就从自己的数据里选一些示例数据,做读写的操作。这个做法实际上不符合标准,如果很明确地知道在一个场景下面要用什么数据,然后做什么操作,那么做这个测试是可以的。但是绝大多数情况下,我们并不知道以后会用在哪些场景下,它测试的时候只能测非常有限的几个场景,但是以后可能还要增加很多其他的业务,有可能这个数据以后也会增长。

 

所以这些只能作为简单的参考,它不具扩展性,也不具有严谨的效果。

 

这也是为什么我们想要去做Benchmark这件事情。

 

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模拟的是一个社交网站的数据,里边有人的节点,有论坛的节点,论坛里边有很多帖子,然后大家可以去转载这些帖子,同时这个人会有各种各样的资料,有他的公司、大学、城市,通过边会把这些信息连起来,在上面去做查询。是一个比较典型的图查询。

 image.gif

图片.png

我们发现在蚂蚁自己的应用场景下面,有很多跟SNB不一样的地方,因此决定跟LDBC一起做一个金融图的Benchmark。金融Benchmark跟SNB的主要差别是什么呢?

 

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

 

SNB上面的模型点跟点之间是没有重复边的,但是金融图里边就非常多重边的情况,比如说两个人之间会经常转账,那么他们之间就会有非常多的重边出现。金融图的查询跟计算区别也很大,且查询对于延迟的要求更高一些。如果20毫秒之内返回不回来,那么整个用户体验就会很糟糕。

 

SNB里边读跟写是分开的。在金融图里读写是有可能在同一个Query里边的。我们会找很多的环状的结构三角的结构,这些都是跟SNB不一样的地方。所以这也是促使我们去做金融图Benchmark的一个主要动力。

 

目前我们的金融图Benchmark还在设计阶段,主要是在线查询,对延迟要求比较高。另外我们会设计负载的波峰波谷,因为一般来说半夜流量比较小;我们会对数据有TTL,会对过期的数据进行清理。比如说一般系统里边放三个月的数据,超过三个月就自动回收掉了。

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

 

图片.png

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

 

结语

 

综合以上,我们认为图数据库是图谱应用系统的核心,所以它的选型很重要,而Benchmark作为选型最有力的工具非常重要。Benchmark如果做得好,它可以成为一种事实标准,指导系统的设计。我们也倡议更多的人来跟我们一起参与Benchmark的开发以及制定,推进图数据库系统的标准化,共建行业生态。

相关实践学习
阿里云图数据库GDB入门与应用
图数据库(Graph Database,简称GDB)是一种支持Property Graph图模型、用于处理高度连接数据查询与存储的实时、可靠的在线数据库服务。它支持Apache TinkerPop Gremlin查询语言,可以帮您快速构建基于高度连接的数据集的应用程序。GDB非常适合社交网络、欺诈检测、推荐引擎、实时图谱、网络/IT运营这类高度互连数据集的场景。 GDB由阿里云自主研发,具备如下优势: 标准图查询语言:支持属性图,高度兼容Gremlin图查询语言。 高度优化的自研引擎:高度优化的自研图计算层和存储层,云盘多副本保障数据超高可靠,支持ACID事务。 服务高可用:支持高可用实例,节点故障迅速转移,保障业务连续性。 易运维:提供备份恢复、自动升级、监控告警、故障切换等丰富的运维功能,大幅降低运维成本。 产品主页:https://www.aliyun.com/product/gdb
相关文章
|
3月前
|
数据可视化 BI API
无缝对接云数据库:自定义报表生成工具在混合云环境下的部署指南
自定义报表生成工具通过拖拽设计、多数据源整合及自动化输出,帮助业务人员零代码创建个性化报表,解决传统工具灵活性不足、技术门槛高的问题。文章对比其与传统报表差异,列举行业应用场景(如财务、零售),并给出选型建议与主流工具(如FineReport、Power BI、板栗看板)的优劣势分析。
118 0
|
4月前
|
人工智能 运维 关系型数据库
数据库运维:mysql 数据库迁移方法-mysqldump
本文介绍了MySQL数据库迁移的方法与技巧,重点探讨了数据量大小对迁移方式的影响。对于10GB以下的小型数据库,推荐使用mysqldump进行逻辑导出和source导入;10GB以上可考虑mydumper与myloader工具;100GB以上则建议物理迁移。文中还提供了统计数据库及表空间大小的SQL语句,并讲解了如何使用mysqldump导出存储过程、函数和数据结构。通过结合实际应用场景选择合适的工具与方法,可实现高效的数据迁移。
710 1
|
2月前
|
存储 关系型数据库 MySQL
MySQL数据库中进行日期比较的多种方法介绍。
以上方法提供了灵活多样地处理和对比MySQL数据库中存储地不同格式地日子信息方式。根据实际需求选择适当方式能够有效执行所需操作并保证性能优化。
235 10
|
18天前
|
人工智能 数据库 iOS开发
DBeaver Ultimate Edtion 25.2 发布 - 通用数据库工具
DBeaver Ultimate Edtion 25.2 Multilingual (macOS, Linux, Windows) - 通用数据库工具
161 0
|
7月前
|
数据库
【YashanDB知识库】数据库一主一备部署及一主两备部署时,主备手动切换方法及自动切换配置
【YashanDB知识库】数据库一主一备部署及一主两备部署时,主备手动切换方法及自动切换配置
【YashanDB知识库】数据库一主一备部署及一主两备部署时,主备手动切换方法及自动切换配置
|
3月前
|
SQL Oracle 关系型数据库
比较MySQL和Oracle数据库系统,特别是在进行分页查询的方法上的不同
两者的性能差异将取决于数据量大小、索引优化、查询设计以及具体版本的数据库服务器。考虑硬件资源、数据库设计和具体需求对于实现优化的分页查询至关重要。开发者和数据库管理员需要根据自身使用的具体数据库系统版本和环境,选择最合适的分页机制,并进行必要的性能调优来满足应用需求。
128 11
|
3月前
|
SQL 存储 数据库
SQL Server Management Studio (SSMS) 21 - 微软数据库管理工具
SQL Server Management Studio (SSMS) 21 - 微软数据库管理工具
549 0
|
5月前
|
NoSQL Linux 编译器
GDB符号表概念和在Linux下获取符号表的方法
通过掌握这些关于GDB符号表的知识,你可以更好地管理和理解你的程序,希望这些知识可以帮助你更有效地进行调试工作。
212 16
|
5月前
|
存储 算法 Java
实现不同数据库的表间的 JOIN 运算的极简方法
跨库计算是数据分析中的常见难题,尤其涉及多数据库系统时,表间 JOIN 操作复杂度显著提升。esProc 提供了一种高效解决方案,能够简化跨库 JOIN 的实现。例如,在车辆管理、交管和公民信息系统中,通过 esProc 可轻松完成如下任务:按城市统计有车公民事件数量、找出近一年获表彰的车主信息,以及按年份和品牌统计车辆违章次数。esProc 支持不同关联场景(如维表关联与主子表关联)的优化算法,如内存索引、游标处理和有序归并,从而大幅提升编码和运算效率。无论是同构还是异构数据源,esProc 均能灵活应对,为复杂数据分析提供强大支持。
|
6月前
|
Oracle 安全 关系型数据库
【Oracle】使用Navicat Premium连接Oracle数据库两种方法
以上就是两种使用Navicat Premium连接Oracle数据库的方法介绍,希望对你有所帮助!
1184 28

热门文章

最新文章