腾讯云数据库 TDSQL 与中国人民大学最新联结研究成果被 SIGMOD 2022 接管并将通过长文模式发表。SIGMOD 是国内数据管理与数据库畛域顶尖的学术会议之一 ,腾讯云数据库 TDSQL 论文 已间断多年 入选 VLDB、SIGMOD、ICDE 等国内顶级会议。
本次入选论文题目为:CompressDB: Enabling Efficient Compressed Data Direct Processing for Various Databases。论文针对压缩数据的间接操作与解决,提出一项新型数据库解决技术——CompressDB。本钻研提出并实现了新型数据库技术,利用上下文无关文法来压缩数据,通过新的数据结构和算法设计实现对语法规定进行解析,CompressDB 反对间接对压缩后的数据进行数据查问和操作,并且反对各种数据库系统。
SIGMOD 评委对 CompressDB 的创新性给予了高度评价:在本文中,作者提出了一个反对间接对压缩数据进行更新和计算的零碎 CompressDB,是一个优良的零碎工作 。其作为文件系统层实现,能够被现有的数据库系统间接应用,作者通过在其上运行一系列关系数据库和 NoSQL 数据库来证实了这一点。同时作者在实现中表明, 启用 CompressDB 能够让数据库系统实现更高的吞吐量和更低的提早,同时缩小存储空间。
一、论文概述
在现在的数据管理系统中,解决大数据时间接在压缩数据上进行操作被证实是一种很胜利的形式。这类零碎展现了 较大的压缩劣势和性能晋升 。然而,以后此类零碎只关注数据查问,而一个残缺的大数据管理系统必须反对数据查问和数据操作。咱们开发了一个新型存储引擎 CompressDB。CompressDB 反对压缩数据上的间接数据处理,有以下长处:
第一,CompressDB 利用 context-free 语法来压缩数据,并且同时反对数据查问和数据操作 。
第二,咱们 将 CompressDB 集成到文件系统中,使很多数据库系统能够在不做任何扭转的状况下应用 CompressDB。
第三,咱们 将算子操作下推到存储层,使得能够间接在存储系统中执行数据查问和数据操作,而不须要把大数据转移到内存中,这进步了零碎效率。
咱们验证了 CompressDB 能够反对多种类型的数据库系统,包含 SQLite、LevelDB、MongoDB 和 ClickHouse。咱们用实在利用中的数据集测试了 CompressDB 在单机和分布式环境下的性能,这些数据集有不同的数据量大小、构造和内容。试验表明 CompressDB 均匀带来 40% 的吞吐量晋升和 44% 的提早缩短,并实现 1.81 倍的压缩比。
二、钻研动机
古代大数据系统面临指数级增长的数据量,并应用数据压缩来缩小存储空间。为了防止频繁的压缩和解压缩操作的开销,现有的钻研摸索了间接对压缩数据执行大数据操作。这些零碎在数据分析应用程序中体现出优良的压缩效率和性能晋升。因为大数据通常存储在磁盘中,咱们的想法是 基于规定在存储层对压缩数据进行随机更新。
三、现有技术的局限性
现有的压缩技术在只读的查询处理方面显示出微小后劲,但性能残缺的大数据系统必须同时反对数据的读和写。这就须要零碎反对随机更新以及数据的插入和删除。现有的压缩技术并不反对在压缩数据上间接批改数据,因而每次批改时都必须解压缩和从新压缩绝对较大的数据块,从而导致微小的开销。
四、重要发现
本钻研心愿开发一种高效的技术来填补现有技术的有余,以反对间接对压缩数据进行更新、插入和删除,从而实现一个反对数据查问和数据操作的高效的大数据系统。这是一项具备挑战性的工作,因为现有的压缩技术大多仅针对压缩效率或读数据操作进行了优化。此外,现有技术的压缩数据结构不能批改。例如,一些压缩技术基于索引和后缀数组,其中压缩元素相互依赖,如果一小部分数据须要更新,则效率极低。
五、零碎设计
本钻研开发了一个新的存储引擎 CompressDB,反对间接对压缩数据进行数据查问和数据操作,并且反对各种数据库系统 。咱们发现,如果基于规定的压缩办法的 DAG(directed acyclic graph,有向无环图)深度被限度在较小的数值,那么这种压缩办法开销较小,并实用于数据操作。基于此,CompressDB 采纳基于规定的压缩技术并限度其规定生成深度。同时,CompressDB 能够通过操作语法规定对数据进行实时压缩和操作。与之前基于规定的压缩办法相比,咱们开发了一系列新的设计:在元素级别,咱们提出了一种新的数据结构—— 数据洞(block hole)。在规定级别,咱们为随机更新启用了无效的规定定位和规定拆分计划。在 DAG 级别,咱们升高了规定的深度以提高效率。通过利用新的数据结构和算法设计,CompressDB 无需解压即可高效解决数据。
5.1 零碎设计
图 1 展现了 CompressDB 的系统结构。CompressDB 由三大模块组成:1)数据结构模块,2)压缩模块,3)运算模块。这三个模块反对基于 CompressDB 的数据库系统。数据结构模块为压缩模块和运算模块提供必要的数据结构,包含三种:blockHashTable 示意数据内容到块地位的映射关系,blockRefCount 记录块被援用次数,blockHole 是更新操作引起的存储空洞。压缩模块反对文件系统中的分层压缩,可利用于各种基于块的文件系统。操作模块能够将用户操作下推到文件系统。
图 : CompressDB 系统结构
5.2 操作下推
为了升高数据传输老本,本钻研将算子操作下推到存储层。算子下推是指数据处理间接产生在文件系统层(较低的软件层),使解决操作产生在更靠近数据的中央。基于这种技术,CompressDB 能够显著缩小对磁盘的数据访问量,并减速所有下层数据库应用程序。
5.3 与数据库系统的交互
为了使 CompressDB 可能反对各种数据库,本钻研在文件系统中开发 CompressDB。在文件系统层,CompressDB 能够解决读取和写入等零碎调用,因为它们能够通过“提取”“替换”“增加”等操作实现。因而,CompressDB 能够反对在文件系统上运行的不同类型的数据库系统(例如,SQLite、MySQL、MongoDB 等)。这些数据库系统依赖于 CompressDB 提供的零碎调用。因而,CompressDB 能够反对数据库系统的各种数据类型(例如,整数、浮点数、字符串等)和操作(例如,连贯、抉择、插入等)。此外,咱们为 CompressDB 开发了一些文件系统不反对的操作,例如“插入”和“删除”。因为这些操作没有对应的 POSIX 接口,咱们提供了一组独自的 API,能够无效地应用。
5.4 适用性
CompressDB 是一个存储引擎,次要利用是反对各种数据库系统,而无需批改代码。用户惟一须要做的就是将零碎存储目录设置为 CompressDB 的存储目录。通常来说,CompressDB 实用于有大量冗余数据,并须要进行数据分析和操作的数据库系统。对于其余利用场景,它可能依然无效,但尚未验证。
六、次要成绩和奉献
为了验证 CompressDB 的性能,本钻研应用 CompressDB 反对多个数据库系统,包含 SQLite、LevelDB、MongoDB 和 ClickHouse。本钻研别离在单节点和集群环境中,应用多个具备不同尺寸、构造和内容的实在数据集来评估性能。集群环境中的试验应用五节点集群和一种高性能网络分布式文件系统 MooseFS。MooseFS 在集群中传输数据并提供对数据的高吞吐量拜访。与 MooseFS 的原始版本相比,CompressDB 均匀带来了 40% 的吞吐量晋升、44% 的提早缩小和 1.81 的压缩比,这证实了本钻研的有效性。本钻研做出以下次要奉献:
• 本钻研 间接在压缩数据上开发高效的数据操作 ,例如插入、删除和更新。除了随机拜访,本钻研还反对数据查问和数据操作。
• 本钻研开发了 CompressDB,这是一种 集成到文件系统中的存储引擎 。CompressDB 能够无缝反对各种数据库系统,而无需批改数据库。
• 本钻研 将数据算子操作下推到存储系统,防止了内存和磁盘之间不必要的数据挪动,从而进步了压缩数据的解决效率。
七、本次研究成果面向的畛域
本研究成果面向同时反对数据查问和数据操作的大数据管理系统。CompressDB 提供的压缩能力使数据管理系统可能存储较大的数据量,同时反对压缩数据上高效的数据查问和操作。存储效率和数据查问、操作效率在当今大数据时代是至关重要的性能指标,CompressDB 能够帮忙现有的数据库系统同时晋升这些指标的性能。
福利来啦!为帮忙宽广数据库爱好者更加具体地理解本篇论文内容,咱们邀请到了 中国人民大学副教授、博士生导师、腾讯犀牛鸟基金获得者张峰老师 来到直播间深度解读。6 月 21 日 15:00,一起来直播间学习吧!