Stevenhua 发表于 2025-4-13 11:19:59

Rapid引擎压缩率和代码的疑问

https://greatsql.cn/docs/8.0.32- ... f-rapid-engine.html


看了文档有两个疑问
第一个:

Rapid引擎内部采用DataBlocks存储结构,这是一种兼顾OLTP和OLAP的压缩存储结构。其数据存储的基本格式:RowGroup based Storage。存储引擎将一个表的数据按行划分为多个RowGroup的组合,每个RowGroup最大存储122880行,内部数据按列进行存储。


这种存储结构跟SQL Server的列存储索引一样,也是多个RowGroup,但是SQL Server的RowGroup最大存储100万行,这样可以保证最大压缩率
存储10万行数据量太少了,压缩率会很低


第二个:


启用Rapid引擎后,会在数据库主目录datadir中产生一些新文件/目录,主要有:
duckdb.data,Rapid引擎数据文件,存储所有Rapid引擎表用户数据,类似InnoDB系统表空间文件ibdata*,已分配的磁盘空间可以重复使用,但在用户数据删除后不能回收归还操作系统。如果想要让Rapid引擎数据文件释放占用的磁盘空间,需要先卸载Rapid,而后即可删除相关文件,再次启用Rapid引擎即可。请参考 2.1 启用Rapid引擎 和 2.2 卸载Rapid引擎。
duckdb.data.wal,Rapid引擎的预写日志,在Rapid引擎运行过程中,对其的所有修改操作在提交之前,都会预先写入日志,以保证数据库系统的原子性和持久性。
duckdb.data.tmp,Rapid引擎存放临时文件的目录。Rapid引擎运行时,在执行大查询请求或加载大量数据时,如果内存不足,则需要将运行过程中产生的数据先保存在临时文件中。


Rapid引擎是直接使用duckdb的代码吗?还是魔改过的?


reddey 发表于 2025-4-13 14:06:14

Rapid引擎的核心代码是采用C++11开发,该引擎没有任何其他的依赖。应该不是DUCKDB魔改的吧

yejr 发表于 2025-4-13 19:35:32

Rapid和Turbo引擎底层都是基于DuckDB的,除了整合以外,也做了一些调整和优化

Stevenhua 发表于 2025-4-13 19:53:53

yejr 发表于 2025-4-13 19:35
Rapid和Turbo引擎底层都是基于DuckDB的,除了整合以外,也做了一些调整和优化


按照叶老师那么说,就是Rapid和Turbo引擎这两个引擎都是duckdb魔改的, 我看pgsql也是用duckdb做列存储引擎加速
如果用duckdb做的话,感觉greatsql没有什么优势,大家都魔改duckdb来做列存储加速引擎

yejr 发表于 2025-4-13 22:12:38

Stevenhua 发表于 2025-4-13 19:53
按照叶老师那么说,就是Rapid和Turbo引擎这两个引擎都是duckdb魔改的, 我看pgsql也是用duckdb做列存储 ...

你“GreatSQL没什么优势”的观点从何而来,有什么论据支撑吗

Stevenhua 发表于 2025-4-13 22:51:25

yejr 发表于 2025-4-13 22:12
你“GreatSQL没什么优势”的观点从何而来,有什么论据支撑吗

同质化太严重

yejr 发表于 2025-4-13 23:24:10

Stevenhua 发表于 2025-4-13 22:51
同质化太严重

在开源MySQL这个生态里,GreatSQL应该是唯一支持AP引擎的,尤其是还有Rapid和Turbo两个引擎,不存在同质化的问题吧

reddey 发表于 2025-4-14 08:53:23

Stevenhua 发表于 2025-4-13 22:51
同质化太严重

这个也不一定吧,经过调整后青出蓝而胜于蓝。

Stevenhua 发表于 2025-4-14 11:16:26

yejr 发表于 2025-4-13 23:24
在开源MySQL这个生态里,GreatSQL应该是唯一支持AP引擎的,尤其是还有Rapid和Turbo两个引擎,不存在同质 ...

greatsql加油!
页: [1]
查看完整版本: Rapid引擎压缩率和代码的疑问