<< 返回新闻资讯

MogDB 5.0.0和 Uqbar 2.0.0正式上线并开放下载!

2023年7月17日
o
p
e
n
G
a
u
s
s
,
M
o
g
D
B
,
U
q
b
a
r
,
,
16
 

 

 

早前,在「openGauss Developer Day 2023云和恩墨专题论坛」上,云和恩墨创始人兼总经理、鲲鹏MVP盖国强,openGauss 社区秘书长、openGauss 开源数据库总经理胡正策,CCF数据库专委会副主任、openGauss 社区技术委员会主席、清华大学计算机系副主任、长聘教授李国良,云和恩墨·本原数据技术合伙人张程伟,openGauss 开源数据库总工程师贺承汉,云和恩墨客户成功部总经理李聪,共同见证了企业级关系型数据库 MogDB 5.0.0和超融合时序数据库 Uqbar 2.0.0的产品发布

今天,MogDB 5.0.0和 Uqbar 2.0.0正式在官网上线并开放下载。

 

MogDB 5.0.0

 

MogDB 5.0.0作为LTS版本,基于3.0/3.1版本进一步增强,并引入了 openGauss 5.0.0的全部特性;同时增加多项自研特性。

新增特性

1、集成 openGauss 5.0.0新特性

  • 高性能:基础算子性能提升

  • 高安全:用户级别审计

  • 高可用:CM支持VIP管理

  • 高可用:CM支持两节点部署

  • 高可用:CM磁盘只读检测能力增强

  • 高可用:CM易用性提升

  • 高智能:异常检测支持自配置

  • 企业级特性:事件触发器

  • 应用开发接口:JDBC能力增强

  • 兼容性:兼容 MySQL 包括数据类型、操作符、系统函数、DDL、DML、DCL、PL/SQL等在内的绝大部分常用语法,实现应用近乎零修改迁移。

 

2、并行索引扫描

在使用索引进行查询(IndexScan、IndexOnlyScan)的场景,使用多线程并行对索引进行扫描,典型场景下端到端性能可提升10%以上。

  • 支持普通表及分区表

  • 根据代价评估自动判断是否启用并行索引扫描机制

  • 优化Stream算子,提高并行扫描线程间数据合并处理速率

 

3、并行查询性能优化

对以下算子进行并行查询改造,更好地利用多核处理器和内存资源,提升算子查询性能:

  • 并行sort merge join:当系统配置允许并行执行,并且执行计划适合并行执行时,可以使用多个线程同时扫描和匹配关联列,从而加速连接操作的执行速度;

  • 自适应两阶段hash agg.:当执行聚合查询时,根据实际数据和查询条件的特点,在适合自适应两阶段哈希聚合的场景下,可以避免不必要的内存和磁盘开销,提升查询性能约6%至17%;

  • 运行时结果缓存:在部分查询中,如果查询结果可以被重用,MogDB 会将结果缓存在内存中,以便后续查询可以重复使用,这样可以减少重复计算和磁盘访问的开销,提高查询性能。

 

4、排序算子性能优化

针对不同场景的排序算子进行针对性优化,降低资源消耗,提升排序算子性能:

  • 快速排序:对于定长字段类型的排序,通过消除大量比较函数调用开销,通常可以获得2%~5%的性能提升;

  • 增量排序:对指定字段组合进行排序时,当其中前缀字段组合可以利用上索引或中间查询结果的有序性时,将全量排序优化为增量排序,从而减少排序需要处理的数据量,进而提升性能,配合limit场景使用时,可以带来10~100倍的性能提升效果。

 

5、SQL Bypass增强

SQL Bypass是针对简单SQL的查询优化技术,本版本扩展了SQL Bypass的适用场景:

  • 带有非索引列作为过滤条件的查询语句,通过使能SQL Bypass功能,大数据量下查询性能可提升10%以上,PBE场景下性能提升效果更加明显。

 

6、行存表行级压缩

在数据写入AStore行存表时,后台对数据进行压缩,典型场景下可以获得50%的存储空间节省,同时通过后台流控技术减少对系统资源的占用,性能几乎无损。

  • 以记录行为单位进行压缩解压,对于OLTP点查场景,只需要解压一行数据,没有解压放大,能够获得更好的查询性能;

  • 内存中的页面为压缩状态,在相同Shared Buffer大小下可以提供更高的内存命中率,进而提升查询性能;

  • 在MVCC(多版本并发控制)查找历史版本链时,无需解压中间版本,只需要解压目标版本的数据行。这样可以大大减少解压的工作量,提高查询性能;

  • 采用多数据页共享字典的方案,相比单表训练字典的方案,压缩字典可以随数据的变更自动演进,没有字典逐渐失效的问题。

 

7、非唯一索引压缩

当数据表中创建有B+Tree类型的非唯一索引时,索引中存在多个重复的key/value键值对,通过将多个相同key的key/value键值对合并压缩成一个key->value list的方式,能够获得50%的索引空间节省,同时还能提升索引页面的内存命中率,进而提升index scan的性能。

 

8、gstrace增强

gstrace是用于跟踪内核代码执行路径、记录内核数据结构和分析代码性能的工具,可以帮助开发人员深入了解内核代码的执行情况,提高问题定位效率,本版本在以下几个方面进行增强:

  • 支持在生产环境下进行追踪观测:gstrace可以在不停库的情况下工作,允许用户指定一个或多个模块和函数进行追踪观测,这样可以避免对系统的正常运行造成干扰,并保证生产环境的稳定性;

  • 导出SQL执行细节:gstrace可以记录SQL执行的详细信息,包括查询语句、执行计划、运行时间等等,这些信息可以用于后续的故障分析,帮助快速定位和解决问题,从而提高诊断效率;

  • 支持追踪分析的模块:目前gstrace主要支持追踪walwriter模块、pagewriter模块和checkpointer模块,这些模块在数据库系统中具有重要的作用,通过追踪它们的执行路径和记录相关的数据结构,可以深入了解系统的运行情况,从而进行性能优化和故障排查;

  • 轻量级锁的导出分析:gstrace还支持对轻量级锁进行导出分析,轻量级锁是一种用于提高多线程并发访问效率的锁机制,在数据库系统中广泛应用,通过对轻量级锁的追踪和分析,可以帮助发现和解决潜在的线程安全问题;

  • 追踪会话和线程:gstrace支持追踪一个或多个会话和线程,这样可以精确地定位到特定的会话或线程,进行详细的分析和调试;

  • gstrace DCF模块功能增强:本版本增加了针对DCF模块打开trace的功能,通过指定gstrace追踪DCF模块可以获取DCF相关的函数调用信息及关键数据结构的具体信息,从而帮助开发调试人员快速定位问题,提高诊断效率。

 

9、CM (Cluster Manager)集群支持两节点部署

CM集群支持两节点部署,通过引入第三方网关作为仲裁节点实现多数派仲裁机制,将集群起配成本从3节点降低为2节点:

  • 当集群网络正常时,CM主备实例中的任意一方发起选举时,只要与第三方网关IP通信成功,就会增加自身的票数,以此实现多数派决策;

  • 当集群网络状态异常时,CM主备实例中的任意一方发现和对端CM实例通信异常,但与第三方网关IP通信正常,就会认为对端可能存在故障。如果是CM主节点则会执行降备流程,如果是CM备节点则会根据配置项来判断是否执行升主实现自动故障切换;

  • 提供可选配置来决定网络分区场景下备机是否升主,避免脑裂问题的发生。

 

10、Oracle 兼容性增强

【1】支持procedure / function / package的end后的name和 Oracle 保持一致

【2】支持PLPGSQL subtype

【3】视图增加%rowtype属性

【4】支持 Oracle DBLink 兼容

【5】支持包内常量作为函数或者过程入参的默认值

【6】支持current_date,current_time等保留关键字可以作为表的字段名

【7】支持Insert All特性

【8】For Update支持外连接

【9】支持dbms_utility.format_error_backtrace

【10】支持在数组extend的参数中传入数组的count属性

【11】支持 Oracle 中的自定义type数组

【12】支持Merge into命中索引时增加使用bypass方法

【13】支持where current of的写法

【14】Agg函数支持Keep子句

【15】Agg支持场景扩展

【16】支持两个date类型的数据相减,返回numeric类型

【17】支持表函数table()

【18】支持创建 package function procedure时,去除type类型转换提示

【19】支持q quote转义字符

【20】支持无参数function的同义词调用可以不加括号

【21】支持增加存储过程及函数参数的nocopy属性

【22】Agg(distinct)性能优化

 

修复缺陷:

1、集成 openGauss 5.0.0修复缺陷

  • I6NVAB 3.0.3版本灰度升级到5.0.0版本后回滚和强制回滚均报错;

  • I6NK8U 修改发布/订阅名为已存在的名称,报错ERROR: unsupported object class xxx;

  • I6N2QD similar to在使用escape时,逃逸字符为汉字,报错;like逃逸字符为汉字,成功;

  • I6MOCS 兼容性b库下,对于二级分区表分区键为year函数时,在进行add partition操作后,使用pg_get_tabledef会报未知错误;

  • I6LMTU B兼容模式下,不支持反引号包裹对象;

  • I6KO5S 【资源池化】共享存储升级,执行升级命令,升级失败;

  • I6KRZ6 【资源池化】dsscmd du -p +data -f a命令实际上只计算了目录,没有计算文件;

  • I6IZH9 【资源池化】reform失败没有进入下一轮,集群卡主;

  • I6O0K6 2.0.1、2.0.0和2.0.5版本不带cm工具灰度升级到5.0.0带cm工具后提交失败;

  • I61OX7 cm_agent参数log_dir值改为空无合理报错,且重启cm_agent生效后不再生成新的cm_agent日志;

  • I6K2BZ 变色龙迁移由于双引号问题导致部分迁移失败;

  • I6KIWQ Debezium+kafka增量迁移,timestamp等时间戳类型,迁移后时间有误;

  • I6I640 使用数据校验工具校验15W张表的数据时,校验进程一直是卡住状态。

 

2、MogDB 5.0.0版本修复缺陷

  • 修复同样的sql中对同一张表进行采样,指定相同的随机数种子seed,返回结果不同的问题;

  • 修复xlogdump导出identity full的delete event存在的问题;

  • dolphin在开启线程池情况下,概率性出现mutex死锁问题;

  • 备机扩展段页式空间时异常退出;

  • 【TPCH】ERROR: Stream plan check failed;

  • TPCH 列存下Q20选择错误的查询计划导致查询慢;

  • 1000个warehouse高并发tpcc执行半小时后switchover耗时过长;

  • gpi_interval测试样例在mogdb_function上偶发性报错。

平台支持:

MogDB 5.0.0支持以下操作系统及CPU架构组合:

 

Uqbar 2.0.0

 

Uqbar 2.0.0是首个LTS版本,其继承了1.1.0的功能,在保留 openGauss 的联机事务处理(OLTP)能力的基础上,针对时序数据处理场景进行了功能扩展和针对性优化,增强了时序表功能,对写入性能和压缩率进行了提升;新增持续聚合功能、支持Prometheus数据存储和查询、时序聚合算子增强(包括time_bucket_gapfill和histogram)以及支持LATERAL语法。

基础功能

时序生命周期策略

时序生命周期策略用于时序数据的生命周期管理,通过定义时序生命周期策略可指定数据的保留期限和时间分区大小。时序生命周期策略管理功能包括:新建时序策略、修改时序策略、删除时序策略、设置数据库默认时序策略。

 

时序表管理

时序数据组织和存储的基本对象,与关系型数据库中表的定义类似。创建时序表时需要指定使用的时序策略,时序表按照时序策略中定义的时间分区对数据自动分区,并自动按时间对齐数据。时序表管理功能包括:新建时序表、修改时序表、删除时序表。

 

数据压缩

支持自动和手动压缩存储时序数据。Uqbar 底层采用行列混合存储引擎存储时序数据,后台自动将行存数据转换为列存,同时对数据进行压缩。数据压缩功能包括:自动后台压缩、手动执行压缩命令。

 

过期删除

根据时序生命周期策略,对时序表上超出保留期限的数据,按照分区粒度自动删除。过期删除功能包括:自动后台删除、手动执行删除命令。

 

持续聚合管理

持续聚合功能是后台对时序数据执行周期性查询,并保存查询结果,可用于查询优化及时序数据降采样等场景。持续聚合管理包括:创建持续聚合、修改持续聚合、删除持续聚合。

 

高可用

本版本采用主备架构,最多支持一主七备,主机提供读写能力,备机提供查询能力,支持主备自动故障切换。

 

备份与恢复

支持使用备份恢复工具对数据进行备份和恢复。

 

运维工具

数据库安装工具PTK支持数据库自动化安装部署、图像化管理工具Manager提供数据库监控、备份恢复管理、告警管理等。

第三方工具支持:

  • 支持对接 Kafka 消息组件,主动从 Kafka 消费时序数据;

  • 支持对接可视化工具 Grafana,通过 Grafana 对时序数据数据进行可视化展示;

  • 支持对接 Prometheus,作为 Prometheus 的外置时序数据数据存储,提供更好的写入和查询性能。

时序场景优化

写入性能优化

针对时序数据特征优化时序数据写入性能,支持7*24小时不间断持续大压力写入,支持时序数据乱序写入。

 

查询优化

  • 通过向量化查询引擎,以及并行查询能力,提供海量数据的高性能查询分析能力;

  • 支持倒排索引,支持使用任意标签组合对时序数据进行查询。

 

压缩率优化

  • 将标签与数据分离存储,避免标签数据重复存储;

  • 根据数据类型和特征,使用时序专用压缩算法进行压缩,典型场景下可获得10倍以上的压缩率。

 

时序查询算子

除了关系表已支持的聚合算子,如sum、avg、count等,新增支持时序场景常用的聚合算子:

  • First:数据中符合条件的时间戳最小的数据

  • Last:数据中符合条件的时间戳最大的数据

  • Time_bucket:按照指定的时间窗口对数据进行分组聚合

  • Time_bucket_gapfill:按照指定的时间窗口对数据进行分组聚合,并对缺失的数据按照指定规则插值填充

  • Histogram:对数据按照指定规则生成直方图数据

时序视图:

  • timeseries_views.bgw_job:后台任务视图,可用于查询时序表上有哪些后台任务在执行;

  • timeseries_views.compression_chunkgroup:压缩率视图,按chunkgroup统计,可用于展示时序表的压缩率;

  • timeseries_views.compression_table:压缩率视图,按时序表统计,可用于展示时序表的压缩率;

  • timeseries_views.continuous_aggregation:持续聚合视图,可用于查看时序表上的持续聚合;

  • timeseries_views.policies:时序策略视图,可用于查看当前数据库下的时序策略;

  • timeseries_views.tschunkgroup:时序表视图,按chunkgroup展示,可用于查看时序表的分区;

  • timeseries_views.tstable:时序表视图,按时序表展示,可用于查看当前数据库下的时序表。

缺陷修复:

  • 数据过期删除偶现coredump问题;

  • copy数据过程中内存占用过高,疑似内存泄露问题;

  • guc参数timeseries_compression_delay重新设置后,数据库reload出现coredump问题;

  • 数据压缩后执行field或time列等值查询,偶现进程退出。

平台支持:

Uqbar 2.0.0支持以下操作系统及CPU架构组合:

 

目前,MogDB 5.0.0和Uqbar 2.0.0已在官网开放下载,欢迎访问 https://mogdb.io/download/ 下载体验。