jiuyuan_graphdb/README.md

717 KiB
Raw Blame History

九源智能推理图数据库

获取包请到release,包含手册和项目文件

九源智能推理图数据库是一个基于国产化硬件平台设计的高性能图数据库系统。本系统支持 SQL 和 Cypher 查询语言以及插件化的分析任务数据库底层同时支持表、图、向量等多种数据存储格式。本系统能够支持不同的使用方式可视化界面、命令行交互工具、SDK从而满足各类复杂的应用需求。

现有图数据库的存储引擎,主要是为了支持互联网应用频繁变化的数据,牺牲了查询性能。它们面向的场景主要为金融、社交网络、电商、推荐等业务,特点是规模大、机器多、更新流量大。而九源智能推理图数据库面向的场景目前主要为知识图谱图谱应用,针对智能推理、决策分析、知识搜索等进行优化。这类场景的特点是查询分析性能要求高,更新并没有那么频繁。

首先介绍九源智能推理图数据库的整体架构设计,下面是该系统的整体架构图: image

目前九源智能推理图数据库的架构设计包含了三个层面的研究,分别是:

  • 应用层
  • 引擎层
  • 平台层

1、应用层

在应用层面,九源智能推理图数据库主要面向知识图谱、智能推理、决策分析等应用场景。为了支撑以上场景,九源智能推理图数据库支持不同的使用方式与丰富的查询类型,用以满足相关场景下复杂的用户需求,在保证图数据库通用功能的同时提供给用户定制特殊任务的接口,用以支持不断演进发展的智能推理应用,实现了系统功能的完备性与可扩展性。

从使用方式的层面看,主要支持两种不同使用方式的查询,分别是交互式查询和高速插件化查询。其中交互式查询是传统的数据库使用方式,本系统支持 Cypher 声明式语言 —— 图数据库领域使用最广泛的查询语言,作为交互式查询的基础。而高速插件化查询是九源智能推理图数据库专为智能推理应用中的高性能场景开发的使用方式,开发者可以通过本系统提供的编程接口,只需要编写几十行代码,就可以利用本系统自研的高性能引擎开发出高效的定制化查询,解决了通用查询语言和通用系统在特定应用场景下性能需求难以满足的痛点。

从查询类型的层面看,主要支持图查询任务和图分析任务。图查询任务主要涉及在图数据库中检索特定的数据或数据模式,包括从图中找到特定的顶点、边或者点边的特定模式。这类任务通常通过图数据库查询语言(如 Cypher来实现侧重于数据模式的检索。而图分析任务更加关注从整个图的结构中挖掘信息主要通过执行一些复杂的算法来进一步理解图中的模式和关系。常见的图分析任务包括中心性算法、社群发现、路径算法以及连通性算法等。 为了方便用户的使用九源智能推理图数据库计划支持多种语言的SDK用以满足不同的用户需求。基于 SDK用户可以调用相关接口通过 gRPC 直接访问图数据库的各项接口。由于九源智能推理图数据库支持丰富的功能,考虑到用户的学习成本与使用成本,本系统在 SDK 中提供了图结构抽象。用户可以直接通过 SDK 获得一个 Graph 抽象,这个 Graph 抽象对应着图数据库底层存储的同名的图。基于这个 Graph 抽象,用户可以直接进行 Schema 操作、数据导入操作以及交互式查询。

为了提供高性能,支撑高速插件化查询,本系统还提出了一个 MemoryGraph 抽象,该抽象能够从一个 Graph 抽象中派生,并且可以从中自定义所需的子图。在定义子图之后,对应的子图会被加载到一个自研的分布式图原生存储引擎中,从而支撑后续的高速插件化查询。同一个 MemoryGraph 抽象能够同时支持插件化的图查询任务与图分析任务,并且可以在多个任务之间复用,省去了重复加载子图的开销。

2、引擎层

为了满足智能推理场景的复杂需求,九源智能推理图数据库中包含了三套自研的高性能引擎,分别是并发查询引擎、异步分析引擎以及图原生存储引擎。 并发查询引擎用于支持图查询任务。图查询任务主要包含两种使用方式,交互式和插件化。引擎中针对这两种使用方式分别实现了对应的模块,交互式查询模块和高速插件化查询模块。在交互式查询模块中,主要是处理 Cypher 查询。根据上层传来的请求参数或 Cypher 查询,去下层的图数据管理系统中查询对应的数据。交互式查询模块可以对接多种图数据管理系统,从而适应多种复杂的应用场景。此外,交互式查询模块还支持子图迁移,用户可以自定义所需的子图,然后通过交互式查询模块将数据从图数据管理系统中抽取到图原生存储引擎中,从而支持高速插件化查询。在高速插件化查询模块中,通过精细的线程管理和通信管理,实现了高效的调度与计算,并且实现了网络数据的批量通信,从而有效地利用了现代多核处理器以及高性能网卡的能力。该模块提供了简洁的用户编程接口,隐藏了底层的实现,使得以少量代码实现高速定制化查询成为了可能。

异步分析引擎用于支持图分析任务。这类任务的特点是计算量大、通信量大以及算法复杂性高,因此针对每个图分析任务单独设计高效的算法实现非常困难。本引擎中通过设计通用的协程调度、计算调度以及数据划分机制,将图分析任务中的多个核心步骤统一抽象并优化,并提供了简洁的用户编程接口。用户只需要几十行代码就可以编写出复杂的图分析算法,并且有效地利用现有的计算资源去进行分布式计算,从而满足易用性与性能需求。 图原生存储引擎是一个子图管理引擎,可以通过自定义子图映射的方式,从其他数据管理系统中获取用户所需的子图并存储到本引擎中。本引擎通过内存映射的方式,将子图映射到内存中,从而供并发查询引擎中的高速插件化查询模块和异步分析引擎使用。图原生存储引擎充分利用分布式扩展技术与高速内存,从底层为高速插件化查询提供存储基础。

此外,图原生存储引擎还需要负责管理多个不同的图数据来源。这些来源包括现有的图存储引擎以及 CSV 格式存储的图文件用于兼容不同的引擎与图格式。这样做是因为开发一套新的持久化存储引擎对图数据库查询性能以及业务性能的提升并不显著同时持久化存储的稳定性和可靠性需要经过长时间复杂业务的测试才能保证可靠重新开发新的持久化存储引擎难以保证与现有图存储引擎提供同样高的数据可靠性。因此为了保证数据可靠性并且兼容用户现有的存储引擎我们基于现有的图数据库系统进行数据管理可以兼容现有的应用与服务从而实现业务对九源智能推理图数据库的无缝切换。对CSV文件的支持主要是因为在智能推理应用的只读场景下能够直接对CSV格式的图文件进行加载和查询因此可以省略将CSV格式的文件导入其他系统的步骤。

3、平台层

九源智能推理图数据库是一款支持国产化硬件平台的系统软件,整个图数据库软件以及依赖的其他系统与第三方库都对国产通用处理器和国产通用操作系统进行了适配。目前已经支持银河麒麟操作系统,以及鲲鹏、飞腾、海光三款国产处理器。