暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

GaussDB多模数据库面向数据强一致的多模数据库系统架构

原创 Oracle 2023-05-22
524


GaussDB用户除使用关系数据库能力外,还会使用图数据库、时序等多模引擎能力。如公共安全场景下,用户会将MPPDB(Massively Parallel Processing DataBase,大规模并行处理数据库)数据,导出到图数据库中,使用图引擎提供的图遍历算法,查找同航班、同乘火车等关系。在类似应用场景下,存在数据转换性能低,使用多套系统维护和开发成本高,数据导出安全性差等问题。引入多模数据库统一框架(Multi-Model Database (MMDB) Uniform Framework),为用户提供关系数据库、图数据库、时序数据库等多模数据库统一数据访问和维护接口,简化运维和应用开发人员的学习和使用成本,提升数据使用安全性(数据无需在多个系统之间进行倒换,减少了数据在网络上暴露的时间)。

1. 系统逻辑架构

多模数据库统一框架基于GaussDB开发,通过类似领养(Linked)机制,快速扩展图、时序数据库引擎能力,对外提供统一的DML、DDL、DCL、Utilities、GUI访问接口。运维和应用开发人员可以将扩展的多模数据库与GuassDB无缝衔接起来,统一管理与运维当成一套系统,通过统一接口使用扩展引擎提供的能力,简化对新的数据库引擎的学习和使用成本。

扩展引擎(Extension Engine)包括图引擎、时序引擎、流引擎扩展采用统一机制、模块化设计,并提供类似领养(Linked)机制,具有扩展快速、对原系统无影响的优点。

统一DML(Uniform DML)提供关系数据库SQL语言、图数据库图遍历语言(Gremlin)、时序函数和操作等多语言的数据操作能力。用户可以使用统一的ODBC、JDBC、GUI接口访问MPPDB及扩展引擎。

统一DDL、DCL、Utilities均使用存储过程(API),为各扩展引擎维护专属的虚拟系统表(Pseudo Catalog),减少对MPPDB的影响和依赖。

统一DDL(Uniform DDL)为扩展引擎提供统一数据定义能力,包括扩展引擎创建、删除,扩展引擎对象的创建、销毁(如图5-18引擎的图、顶点、边的创建和删除)等DDL能力。

统一DCL(Uniform DCL)为扩展引擎提供统一数据控制能力,包括统一权限管理Grant、Revoke,性能统计Analyze能力。

统一Utilities(Uniform Utilities)提供备份恢复、安装卸载、集群管理等。

统一GUI在高斯Data Studio IDE基础上,扩展了对图数据库、时序数据库的支持。提供扩展引擎的基本数据访问接口及管理接口(备份、恢复等)。设计时尽量保持Data Studio原有系统设计及显示结构,减少对原有Data Studio改动量。

图5-18 多模数据库逻辑架构图(Multi-Model Database (MMDB) Uniform Framework)

在图5-18的多模数据库系统的逻辑架构中,除了统一的多模框架外,该系统架构使用了统一的数据存储,即关系型存储。据统计,当前大量的客户的数据产生源主要包括两大类:①关系型交易数据系统(如Oralce,DB2)等;②传感器,周期性的产生比较规则的数据。分布式关系数据库系统实现数据的统一存储与处理,可以大幅度的简化客户的数据处理,最终实现数据的强一致。

为了简化用户对数据的管理与处理,我们在数据统一存储(即关系型存储)的基础上提供了多类数据处理引擎,包括图数据处理引擎、时序数据处理引擎、空间数据处理引擎等,不仅可以提高对多类数据模型的处理效率,同时也提供了多类数据处理引擎的处理语言。比如,对于图引擎,我们提供了Gremlin图处理语言的支持;对于时序引擎,我们提供了业界标准的时序处理语言。

多模数据库系统中多模数据模型的任意组合。为了适应不同用户对不同类型数据处理的需求,GaussDB多模数据库系统提供了多种模型之间的任意组合。在整体架构上,我们将引擎的元数据独立出来,以实现任意时刻的启动和关闭新的多模引擎。

2. 系统物理架构

图5-19 GaussDB多模数据库的物理设计架构图

多模数据库是处理包含图、时序等多种数据模型的统一的数据库。图5-19给出了多模数据库的系统物理架构。多模数据库提供统一的DDL和DCL管理,用户可以方便地把外部引擎交给多模数据库进行管理。

多模数据库DML采用UDF(User Defined Function)的方式。提供统一的GUI、ODBC、JDBC等外部接口,输入相应的UDF进行对外部数据的查询分析。多模数据库接收到查询请求后,发送给对应的外部引擎执行,并将执行结果返回,借助GaussDB原有的方式呈现给用户。

多模数据库的系统表采用虚拟系统表(Pseudo Catalog)的方式管理。虚拟系统表都是用户表。这样,用户可以方便地添加和删除多模的能力,最小程度地对MPPDB施加影响。

多模数据库在GaussDB基础上进行设计。GaussDB引入多模框架后,需要在GaussDB内部进行扩展,用来适配多模数据的执行和管理流程。这里的扩展指的是GaussDB内部针对多模引擎所做的适配。它既可能是功能上的——包括多模数据对象和关系型数据对象的相互依赖关系,对异常处理、事务管理所做的适配,还有针对多模数据的执行流程在GaussDB内部所做的适配工作;又可以是性能上的——例如优化器等组件上提供对多模引擎的支持。

公共模块(Common Envelope)介于这些扩展和外部引擎之间,关键组件——公共模块封装(Common Envelope Wrapper)打包提供了GaussDB扩展针对不同引擎的具体实现。我们也可以把这部分内容叫作外部引擎封装(Foreign Engine Wrapper)。即针对不同的引擎,可以通过Foreign Engine Wrapper打包不同的实现过程。

此外多模数据库还提供其他统一框架管理,包括连接管理、轻量解析(Shallow Parse)、多模缓存管理等。

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论