数据库共享字典压缩方法、装置、电子设备及存储介质与流程

文档序号:33426959发布日期:2023-03-11 04:12阅读:53来源:国知局
1.本技术涉及数据压缩
技术领域
:,特别是涉及一种数据库共享字典压缩方法、装置、电子设备及存储介质。
背景技术
::2.随着信息时代的不断发展,各种信息数据也随之呈指数级增长,无论是传输还是存储等存在对数据处理的过程,对数据进行压缩均有效节省空间并降低成本。其中数据库压缩是针对数据库存储的内容进行压缩存储以节约空间的一种方法,而字典压缩是目前使用最广的一种压缩算法,但是相关技术中的数据库字典压缩算法存在压缩率低,或者字典与数据共同存储难以管理等问题。技术实现要素:3.本技术旨在至少解决现有技术中存在的技术问题之一。为此,本技术实施例提供了一种数据库共享字典压缩方法、装置、电子设备及存储介质,能够提高数据库数据的压缩率,同时基于映射关系将数据页和字典关联起来,便于快速查找对应的字典对数据进行压缩和解压从而提升数据库性能,也便于字典的存储管理。4.第一方面,本技术实施例提供了一种数据库共享字典压缩方法,应用于数据库,所述数据库包括多个数据库表,所述数据库表包括多个数据页,所述数据页包括多个数据行,所述方法包括:对所述数据页执行写入操作,所述写入操作用于将写入数据写入多个所述数据行;当所述数据库表的写入数据达到预设阈值后,利用所述写入数据训练至少一个字典;所述数据页存储有第一元数据,所述数据行存储有第二元数据,所述第一元数据用于存储所述字典与至少一个所述数据页的映射关系,所述第二元数据用于存储所述数据行的属性信息;将训练完成的所述字典存储到字典文件中;基于所述映射关系,从所述字典文件中选取对应的所述字典对所述数据页中所述数据行的所述写入数据进行压缩。5.在本技术的一些实施例中,所述当所述数据库表的写入数据达到预设阈值后,利用所述写入数据训练至少一个字典,还包括:获取所述数据库表中未压缩的所述数据页的未压缩数量;当所述未压缩数量达到预设数量阈值后,将未压缩的所述数据页的写入数据作为字典训练数据;将所述字典训练数据输入字典生成模型,生成多个所述字典,所述字典的数量为预设数量。6.在本技术的一些实施例中,所述将所述字典训练数据输入字典生成模型,生成多个所述字典,还包括:根据所述字典训练数据和预设压缩率生成所述预设数量和字典大小;将所述字典训练数据输入字典生成模型,基于所述预设数量和所述字典大小生成多个所述字典;基于所述映射关系生成所述数据页对所述字典的所述第一元数据。7.在本技术的一些实施例中,所述当所述未压缩数量达到预设数量阈值后,将未压缩的所述数据页的写入数据作为字典训练数据,还包括:将未压缩的所述数据页的写入数据作为初始字典训练数据;按照预设选取策略从所述初始字典训练数据中选取得到所述字典训练数据。8.在本技术的一些实施例中,所述按照预设选取策略从所述初始字典训练数据中选取得到所述字典训练数据,还包括:获取训练数据阈值;根据所述训练数据阈值在所述初始字典训练数据中随机选取或者预设位置选取对应数量大小的数据作为所述字典训练数据。9.在本技术的一些实施例中,所述基于所述映射关系从所述字典文件中选取对应的所述字典对所述数据页中所述数据行的所述写入数据进行压缩之后,还包括:若所述数据页的压缩比未达到预设压缩阈值,则将所述数据页的所述写入数据作为备选数据;获取新增写入数据;利用所述新增写入数据和所述备选数据训练所述字典,以更新所述数据页的字典;利用更新后的所述字典对所述数据页进行压缩。10.在本技术的一些实施例中,所述第一元数据存储在所述数据页的第一预设位置,所述第一元数据包括:字典文件名、文件偏移量、字典长度中的一种或多种。11.在本技术的一些实施例中,所述第二元数据存储在所述数据行的第二预设位置,所述第二元数据包括:行数据长度和/或行事务信息。12.在本技术的一些实施例中,所述字典与至少一个所述数据页的映射关系根据预设映射规则生成,所述预设映射规则包括连续映射规则、非连续映射规则或内容相关映射规则;当所述预设映射规则为连续映射规则时,选取连续的第一数量的数据页与同一所述字典关联;当所述预设映射规则为非连续映射规则时,选取非连续的第二数量的数据页与同一所述字典关联;当所述预设映射规则为内容相关映射规则时,选取写入数据存在相关性的第三数量的数据页与同一所述字典关联。13.在本技术的一些实施例中,对所述数据库表中所述数据页的所述写入数据进行压缩时,对所述数据页的所述第一元数据和每个所述数据页中所述数据行的所述第二元数据不进行压缩。14.在本技术的一些实施例中,所述基于所述映射关系从所述字典文件中选取对应的所述字典对所述数据页中所述数据行的所述写入数据进行压缩之后,还包括:对压缩后的所述数据行进行解压,得到对应的所述写入数据;所述解压的过程包括:读取所述数据页的所述第一元数据,得到所述映射关系;利用所述映射关系在所述字典文件查找对应的所述字典;利用所述字典对所述数据行的所述写入数据进行解压。15.第二方面,本技术实施例还提供了一种数据库共享字典压缩装置,包括:写入模块,用于对数据页执行写入操作,所述写入操作用于将写入数据写入多个数据行;训练模块,用于当数据库表的所述写入数据达到预设阈值后,利用所述写入数据训练至少一个字典;存储模块,用于将训练完成的所述字典存储到字典文件中;压缩模块,用于基于映射关系从所述字典文件中选取对应的所述字典对所述数据页中所述数据行的所述写入数据进行压缩。16.第三方面,本技术实施例还提供了一种电子设备,包括存储器、处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现如本技术第一方面实施例所述的数据库共享字典压缩方法。17.第四方面,本技术实施例还提供了一种计算机可读存储介质,所述存储介质存储有程序,所述程序被处理器执行实现如本技术第一方面实施例所述的数据库共享字典压缩方法。18.本技术实施例至少包括以下有益效果:本技术实施例提供了一种数据库共享字典压缩方法、装置、电子设备及存储介质,首先对数据库表中的数据页执行写入操作,将写入数据写入到数据页的数据行中,当写入数据达到预设阈值后利用其训练字典,然后在数据页中存储第一元数据,记录数据页和字典的映射关系,再将训练完成的字典存储到单独的字典文件中,最后根据映射关系从字典文件选取对应的字典对数据页的数据行的写入数据进行压缩,该过程中通过采用达到预设阈值的写入数据训练字典,在提升字典训练速度的同时提高压缩率,并且以独立的文件存储字典便于管理,基于映射关系将数据页和字典关联起来便于查找对应的字典进行压缩和解压等。19.本技术的附加方面和优点将在下面的描述中部分给出,部分将从下面的描述中变得明显,或通过本技术的实践了解到。附图说明20.本技术的上述和/或附加的方面和优点从结合下面附图对实施例的描述中将变得明显和容易理解,其中:图1是本技术一个实施例提供的数据库共享字典压缩方法流程示意图;图2是图1中步骤s102的流程示意图;图3是图2中步骤s203的流程示意图;图4是本技术一个实施例提供的第一元数据映射关系示意图;图5是图2中步骤s202的流程示意图;图6是图5中步骤s402的流程示意图;图7是图1中步骤s104之后的流程示意图;图8是图1中步骤s104之后的流程示意图;图9是本技术一个实施例提供的映射关系示意图;图10是本技术一个实施例提供的数据库共享字典压缩装置示意图;图11是本技术一个实施例提供的数据库共享字典创建应用流程图;图12是本技术一个实施例提供的电子设备的结构示意图。21.附图标记:写入模块100、训练模块200、存储模块300、压缩模块400、电子设备1000、处理器1001、存储器1002。具体实施方式22.为了使本技术的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本技术进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本技术,并不用于限定本技术。23.下面详细描述本技术的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,仅用于解释本技术,而不能理解为对本技术的限制。24.在本技术的描述中,需要理解的是,涉及到方位描述,例如上、下、前、后、左、右等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本技术和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本技术的限制。25.在本技术的描述中,若干的含义是一个或者多个,多个的含义是两个以上,大于、小于、超过等理解为不包括本数,以上、以下、以内等理解为包括本数。如果有描述到第一、第二只是用于区分技术特征为目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量或者隐含指明所指示的技术特征的先后关系。26.本技术的描述中,除非另有明确的限定,设置、安装、连接等词语应做广义理解,所属
技术领域
:技术人员可以结合技术方案的具体内容合理确定上述词语在本技术中的具体含义。27.为了更好地理解本技术提供的技术方案,在此对本文中出现的术语进行相应地说明:数据压缩:指在不丢失信息的前提下,缩减数据量以减少存储空间,提高传输、存储和处理效率的一种技术方法。或者是按照一定的算法对数据进行重新组织,减少数据的冗余和存储的空间。28.数据库:数据库是“按照数据结构来组织、存储和管理数据的仓库”,是一个长期存储在计算机内的、有组织的、可共享的、统一管理的大量数据的集合。29.数据库表:table,包含数据库中所有数据的数据库对象,是数据库中用来存储数据的对象,是有结构的数据的集合,是整个数据库系统的基础。30.数据页:page,是数据库中磁盘和内存交换的基本单位,也是数据库管理存储空间的基本单位,表示数据库中数据写入到磁盘的单位,一般为8k,16k等。31.元数据:又称中介数据、中继数据,为描述数据的数据,对数据及信息资源的描述性信息,主要是描述数据属性的信息,用来支持如指示存储位置、历史数据、资源查找、文件记录等功能。32.压缩率:衡量数据压缩的指标,压缩率越高,说明压缩之后的数据越小。33.磁盘io:是磁盘的输入和输出(input和output的缩写),指对字节的读取速度,即硬盘的读写能力。34.持久化:是将程序数据在持久状态和瞬时状态间转换的机制,即把数据(如内存中的对象)保存到可永久保存的存储设备中(如磁盘)。持久化的主要应用是将内存中的对象存储在数据库中,或者存储在磁盘文件中、xml数据文件中等等,即指瞬时数据(比如内存中的数据,是不能永久保存的)持久化为持久数据(比如持久化至数据库中,能够长久保存)。35.缓存:指可以进行高速数据交换的存储器,它先于内存与cpu交换数据,因此速率很快。36.字节:byte,简写b,是计算机信息技术用于计量存储容量的一种计量单位,也表示一些计算机编程语言中的数据类型和语言字符,一个字节存储8位无符号数,储存的数值范围为0-255。其中,1字节(byte)=8位(bit),1kb(kilobyte,千字节)=1024b,1mb(megabyte,兆字节)=1024kb,1gb(gigabyte,吉字节,千兆)=1024mb。37.数据库压缩是针对数据库存储的内容主要文本进行压缩存储以节约空间的一种方法,在数据库中对数据的压缩,至少存在以下的好处:1.使用更小的空间,节约存储成本,研究表明实际上数据的存储成本要高于处理器和内存,存储需求空间的膨胀高于对计算的需求。2.减少磁盘io,在很多业务场景中,数据库的性能瓶颈都在磁盘io上,如果将io原始的未压缩数据变为io压缩数据,能够极大的减少io量,从而减少性能瓶颈的发生,实现数据库性能的提升。3.提升缓存命中率。现代服务器存储硬件配置已经相当高,但内存始终是有限制的,因为不可能将所有用户数据都缓存到内存中,如果可以将缓存中的数据也变为压缩数据,这样便可以缓存更多的数据,从而提供缓存命中率,达到提升性能的目的。38.相关技术中,数据库行级压缩技术主要有表级字典和页面级字典。其中表级字典主要是以db2为代表的表级字典压缩算法,对数据库中的每一张数据库表创建一个对应的静态字典并存储在数据表内的隐藏数据行中,使用该静态字典对数据库表中的每个数据行的数据进行压缩,但是当字典创建后不会更新,后续写入该数据库表的数据均需要通过该字典进行压缩,因此其压缩率会随着写入数据的增加而降低,而且每个数据库表的字典大小是固定的,不能适应不同数据库表的大小。页面级字典则主要是以oracle和db2为代表的页面级字典压缩算法,其以数据页为单位创建字典,通过该字典对数据页内的每一个数据行的数据进行压缩和解压,由于每个数据页内都需要存储字典,导致字典的空间占用较大,例如8kb的数据页通常需要占用512b-1kb用于存储字典,由此降低了压缩率。39.基于此,本技术实施例提供了一种数据库共享字典压缩方法、装置、电子设备及存储介质,能够提高数据库数据的压缩率及性能的同时便于字典的查找及管理。40.参照图1所示,本技术实施例提供了一种数据库共享字典压缩方法,应用于数据库中,应该理解的是,数据库包括多个数据库表,数据库表包括多个数据页,数据页包括多个记录,即数据行,该数据库共享字典压缩方法包括但不限于以下步骤s101至步骤s104。41.步骤s101,对数据页执行写入操作。42.在一些实施例中,写入操作用于将写入数据写入到多个数据行中,即将写入数据存储到数据库中数据库表的数据页中。具体的,写入操作可以由用户的输入请求触发,也可以由系统的缓存数据触发,或者由系统定时器预设定时间触发,本实施例对此不做限制,进一步地,在一些实施例中,在对数据页执行写入操作时,还需要先判断数据页中是否还有足够的剩余空间,例如有16kb的写入数据待写入到大小为32kb的数据页中,当数据页已经写入了24kb数据,那么此时该数据页的剩余空间为8kb,比16kb的写入数据小,因此判断结果为该数据页不存在足够的剩余空间。43.步骤s102,当数据库表的写入数据达到预设阈值后,利用写入数据训练至少一个字典。44.在一些实施例中,当数据库表的写入数据达到预设阈值后,例如写入数据的数据量达到预设数量的数据页存储的数据量,或者达到数据库算法自适应选择的压缩数据量阈值,具体的,无论是zstd压缩算法还是lz4压缩算法或者其他压缩算法,都有其优点和缺点,如果压缩率比较高(压缩后节约较大空间)则解压缩速度通常很慢,反之,则解压缩速度快,因此难以达到又快又高压缩率的效果,而数据库算法自适应是指取决于进入系统的数据,必须根据具体情况来选择,示例性的,可以将数据库文件分成若干块,然后使用适合的算法进行压缩。或者选择允许先分割、再压缩的压缩格式,选择允许分割和压缩的容器文件格式,如avro和parquet,这些格式可以与其他压缩格式混合使用,以达到所期望的速度和压缩率,因此数据库算法自适应选择中,不同的压缩算法对应不同的压缩数据量阈值。在一些实施例中,利用写入数据训练至少一个字典。45.在一些实施例中,每个数据页都存储有第一元数据,每个数据行都存储有第二元数据。具体的,第一元数据用于存储字典与预设数量数据页的映射关系,例如十个数据页的数据行共享一个字典,那么这十个数据页中均存储有与该字典对应的映射关系,第二元数据则用于存储对应数据行的属性信息。46.步骤s103,将训练完成的字典存储到字典文件中。47.在一些实施例中,字典训练完成后持久化存储到单独的字典文件中,可以理解的是,字典与数据库分开存储,即既不存储到数据库表内也不存储到数据页中,而是存储到单独的字典文件中,进一步的,将字典文件缓存到内存中,可以理解的是,缓存是硬盘控制器上的一块内存芯片,具有极快的存取速度,它是硬盘内部存储和外界接口之间的缓冲器。由于硬盘的内部数据传输速度和外界传输速度不同,缓存在其中起到一个缓冲的作用。缓存的大小与速度是直接关系到硬盘的传输速度的重要因素,能够大幅度地提高硬盘整体性能。当硬盘存取零碎数据时需要不断地在硬盘与内存之间交换数据,如果有大缓存,则可以将那些零碎数据暂存在缓存中,提高了数据的传输速度。硬盘的缓存主要存在三种作用:第一个作用是预读取,当硬盘受到处理器指令控制开始读取数据时,硬盘上的控制芯片会控制磁头把正在读取的簇的下一个或者几个簇中的数据读到缓存中,当需要读取下一个或者几个簇中的数据的时候,硬盘则不需要再次读取数据,直接把缓存中的数据传输到内存中就可以了,由于缓存的速度远远高于磁头读写的速度,所以能够达到明显改善性能的目的;第二个作用是对写入动作进行缓存,第三个作用就是临时存储最近访问过的数据。由此,在本实施例中只需要通过读取内存的字典文件查询到对应的字典便可以进行压缩或者解压操作,便于读取到的数据快速进行压缩或者解压,从而有效提升数据库的性能。48.在一些实施例中,由于数据库表包括多个数据页,可以预设不同数量的数据页共享一个字典,因此一个数据库表通常对应有多个字典,而一个字典文件可以存储多个字典,例如数据库表中存储1024个数据页的写入数据,每32页的数据页共享一个字典,因此该数据库表对应的字典文件中应该存储有1024/32=32个字典。可以理解的是,数据库中的每一个数据库表均对应一个独立的字典文件,字典文件的命名与数据库表的命名一致,该数据库表的各个字典依次排布在字典文件中。49.在一些实施例中,如果字典持久化存储到字典文件中,则代表字典训练完成。50.步骤s104,从字典文件中选取对应的字典对数据页中数据行的写入数据进行压缩。51.在一些实施例中,根据数据页存储的第一元数据,基于第一元数据存储的映射关系,从字典文件中选取对应的字典对数据页中数据行的写入数据进行压缩。可以理解的是,想对数据页的写入数据进行压缩,首先通过数据页中存储的第一元数据查找到对应的字典,根据字典进行压缩。52.通过写入操作将写入数据写入到数据行中,当写入数据达到预设阈值后,利用其训练字典,并将训练完成的字典存储到独立的字典文件中,通过在数据页中存储第一元数据来存储字典和数据页之间的映射关系,从而在对写入数据进行压缩时根据映射关系查找对应的字典,由此便于对字典进行查找的同时易于存储管理,通过设置预设阈值来训练字典,有效提升了字典的训练速度。53.参照图2所示,在本技术的一些实施例中,上述步骤s102还可以包括但不限于以下步骤s201至步骤s203。54.步骤s201,获取数据库表中未压缩的数据页的未压缩数量。55.在一些实施例中,获取数据库表中未压缩的数据页,可以由压缩请求触发,然后获取未被压缩的数据页的数量,例如数据库表中有16个或者32个数据页的写入数据未进行压缩,通过统计获取对应的数量。56.步骤s202,当未压缩数量达到预设数量阈值后,将未压缩的数据页的写入数据作为字典训练数据。57.在一些实施例中,可以设置预设数量阈值为20个数据页,可以理解的是,当一个数据页的写入数据为16kb时,那么预设数量阈值的20个数据页的写入数据为320kb,即写入数据的预设阈值为320kb,从而可以根据这20个未压缩的数据页的写入数据作为字典的训练数据。58.步骤s203,将字典训练数据输入字典生成模型,生成多个所述字典。59.在一些实施例中,通过字典生成模型生成多个字典,具体生成的字典数量为预设数量,可以由用户配置,例如根据不同的压缩算法对应生成不同的字典,选择保存压缩率最高的字典。可以理解的是,字典生成模型为神经网络模型,根据数据库表中数据的字段频率高低进行压缩,压缩算法可以是zstd、lzw、lz4等,本技术对此不做限制。具体的,参照下面表1所示的数据库表中数据页的写入数据,通过表1可知,name列中boo出现了三次,address列中street出现了7次,为最高频次,city列中san也出现了7次,francisco出现了三次,jose出现了四次,statezip列中ca9出现7次,由此字典生成模型通过统计各个字段的频率,进行压缩训练,得到表2的字典。可以理解的是,字典中通过索引序列表示原数据页中多次出现的各个字段,具体而言,1代表boo,2代表street,3代表san,4代表francisco,5代表jose,6代表ca9,通过该字典,可以将原数据页压缩后表示为表3所示,从而实现了对数据库的数据进行压缩。60.表1表2表3通过获取数据库表中未压缩的数据页的未压缩数量,如果未压缩的数据页数量达到了预设数量阈值,则将其中的写入数据作为字典训练数据,输入到字典生成模型,根据压缩算法训练并生成预设数量的字典,由此通过选取部分数据进行字典的训练,有效提升了字典的训练速度,通过多个字典的比较,选取最高压缩率的字典存储用于后续数据库数据的压缩,从而达到最优压缩率。61.参照图3所示,在本技术的一些实施例中,上述步骤s203还可以包括但不限于以下步骤s301至步骤s303。62.步骤s301,根据字典训练数据和预设压缩率生成预设数量和字典大小。63.在一些实施例中,通过设置预设压缩率可以保证字典的压缩性能,可以理解的是,根据字典训练数据和预设压缩率生成预设数量和字典大小的过程中,可以由用户配置预设数量和字典大小,也可以通过数据库算法自适应选择,从而达到最优压缩率,本技术对此不做限制。64.具体的,如果是用户配置字典的大小,则通过修改数据库的启动配置文件,例如修改hared_dict_row_num,一般情况下,默认hared_dict_row_num=1000000,代表一百万行共享一个字典,而用户可以通过修改具体的数值从而配置字典的大小,如果用户未配置字典的大小,则通过数据库算法自适应选择或者自研算法选择,例如根据写入数据的数据类型选择多少个数据行共享一个字典,从而达到最优压缩率。65.步骤s302,将字典训练数据输入字典生成模型,基于预设数量和所述字典大小生成多个字典。66.在一些实施例中,将字典训练数据输入字典生成模型后,再根据预设数量和字典大小生成字典,使生成的字典大小和数量满足预设条件,例如预设数量是生成16个字典,字典大小可以为64k、4mb等,一般而言,字典越大,压缩效果越好,压缩后的文件越小,但是压缩速度也会越慢,压缩时占用的内存和处理器等资源越多,而字典越小,虽然压缩的速度越快,压缩时占用的内存和处理器等资源越少,但是压缩效果会越差,压缩后的文件也越大,因此字典既不是越小越好,也不是越大越好,而是在预设范围内从而实现达到最优的压缩率的同时不占用其他较多的资源。67.步骤s303,基于映射关系生成数据页对字典的第一元数据。68.在一些实施例中,字典训练完成后存储在独立的字典文件中,因此要想通过字典对数据页的写入数据进行压缩或者解压,需要通过映射关系在字典文件中查找到对应的字典,而映射关系存储在数据页的第一元数据中,所以在字典生成时,需要同步生成数据页对字典的第一元数据。具体的,第一元数据存储在各个数据页的第一预设位置,例如数据页的尾部或者头部,第一元数据可以包括:字典文件名、文件偏移量、字典长度中的一种或者多种信息。可以理解的是,字典文件名一般与数据库表的命名一致,一个数据库表对应一个字典文件,一个字典文件中存储多个字典,而文件偏移量则代表字典在字典文件中的偏移量,字典长度即字典长度的数据,通过第一元数据,便于快速定位查找数据页对应的字典文件中的字典。69.参照图4所示,图中左边代表数据库中的一个数据库表,数据库表中包含n个数据页page,每个数据页page放大后如图中所示,具体的,放大的数据页为page1,其存储有头部信息pageheader,freespace用于存储写入数据,在page1的尾部存储第一元数据dictmeta,具体的,第一元数据dictmeta中存储有字典文件名dictfile、文件偏移量dictoffset以及字典长度dictlen,根据这些信息可以定位到图中右边的字典文件dictfile中,由图可知,数据页page1对应的压缩字典是存储在字典文件dictfile中的第一个字典dict0,从而成功查找到对应的字典进行压缩或者解压操作。70.将字典训练数据输入到字典生成模型后,根据字典训练数据和预设压缩率生成预设数量和字典大小进一步生成多个字典,其中字典大小和预设数量通过用户配置或者数据库算法自适应选择,有利于达到最优的压缩率,在字典训练生成后存储到单独的字典文件中,并同步生成存储数据页与字典的映射关系的第一元数据存储在各个数据页中,便于字典的存储管理的同时还可以快速定位查找,从而实现对数据库中写入数据的压缩或解压操作。71.参照图5所示,在本技术的一些实施例中,上述步骤s202还可以包括但不限于以下步骤s401至步骤s402。72.步骤s401,将未压缩的数据页的写入数据作为初始字典训练数据。73.在一些实施例中,未压缩的数据页的写入数据不会完全是随机数,而是具有一定的关联性,比如数据库中的国籍字段,可能绝大多数的数据行都是中国,如果是年龄字段,则绝大多数的数据行在0~80的范围内,而如果是性别字段,则是男性或者女性,因此将未压缩的数据页的写入数据作为初始字典训练数据,后续再通过进一步的分析处理,便于提升训练字典的性能。74.步骤s402,按照预设选取策略从初始字典训练数据中选取得到字典训练数据。75.在一些实施例中,按照预设选取策略从初始字典训练数据中选取相关的写入数据作为字典的训练数据,可以理解的是,当数据库中的数据库表有10gb的写入数据共享一个字典,即10gb的写入数据都用同一个字典进行压缩或者解压操作,但是数据库并不需要通过完整的10gb写入数据训练该字典,而是对10gb的写入数据进行采样,选取达到预设阈值的部分数据进行训练即可。76.通过将未压缩的数据页的写入数据作为初始字典训练数据,进一步按照预设的选取策略对初始字典训练数据进行选取,得到字典训练数据,可以根据选取的部分数据提前进行压缩,而不损失压缩率的同时提升了字典的训练性能。77.参照图6所示,在本技术的一些实施例中,上述步骤s402还可以包括但不限于以下步骤s501至步骤s502。78.步骤s501,获取训练数据阈值。79.在一些实施例中,如果要对大量的写入数据使用同一个字典进行压缩或者解压,只需要选取该写入数据的部分写入数据进行训练,从而生成全部写入数据进行压缩或解压的共享字典。可以理解的是,获取的部分写入数据需要达到训练数据阈值,否则用于训练的写入数据过少训练生成的字典压缩性能不佳,具体的,10gb的写入数据共享一个字典时,可以设置训练数据阈值为128mb或者256mb,本实施例对此不做限制。80.步骤s502,在初始字典训练数据中随机选取或者预设位置选取对应数量大小的数据作为字典训练数据。81.在一些实施例中,获取到训练数据阈值后,可以在初始字典训练数据中随机选取对应数量大小的写入数据作为字典训练数据,也可以在初始字典训练的预设位置选取对应数量大小的写入数据作为字典训练数据,具体的,获取到的训练数据阈值为128mb,可以在10gb的写入数据中随机选取128mb写入数据,也可以在10gb的写入数据中选取连续的前128mb写入数据或者连续的后128mb写入数据,本技术对此不做限制。82.通过获取训练数据阈值,然后从写入数据中随机采样选取或者在预设位置对应数量大小的写入数据作为字典训练数据从而训练字典,剩下的其他共享该字典的写入数据后续均可以使用该字典进行压缩或者解压,而且不会损失压缩率,提升了字典的训练速度。83.参照图7所示,在本技术的一些实施例中,上述步骤s104之后,如果数据页的压缩比未达到预设压缩阈值,则将数据页的写入数据作为备选数据,之后还可以包括但不限于以下步骤s601至步骤s603。84.步骤s601,获取新增写入数据。85.在一些实施例中,不断有新增的写入数据通过写入操作写入到数据库中,可以通过用户请求或者数据库命令等触发条件从而获取新增写入数据。86.步骤s602,利用新增写入数据和备选数据训练字典,以更新数据页的字典。87.在一些实施例中,如果压缩过程中数据页的压缩比未达到预设压缩阈值,例如预设压缩阈值为80%,即压缩过程中的数据页的压缩比小于80%,则认为该数据页未达到预设压缩阈值,因此压缩失败,从而将该数据页的写入数据作为备选数据。可以理解的是,利用新增写入数据和备选数据重新训练字典,从而更新压缩失败的数据页的字典,具体的,更新数据页中存储的第一元数据的相关数据。88.步骤s603,利用更新后的字典对数据页进行压缩。89.在一些实施例中,通过第一元数据存储的映射关系,从字典文件中查找对应的更新后的字典对数据页进行压缩,如果压缩后的数据页达到预设压缩阈值,则认为压缩成功,如果压缩后的数据页仍未达到预设压缩阈值,则继续将该数据页的写入数据作为备选数据,重新获取新增写入数据进行训练,重复上述过程,直到压缩后的数据页达到预设压缩阈值。90.在一些实施例中,对数据库表中数据页的写入数据进行压缩时,对数据页的第一元数据和每个数据页中数据行的第二元数据不进行压缩。具体的,第一元数据存储在各个数据页中,在数据读取到该数据页时,通过第一元数据存储的映射关系即可查找到对应的字典,无需进行解压操作即可获取字典的相关信息从而对写入数据进行压缩或者解压操作,有利于提升数据库的性能。可以理解的是,数据页中的每个数据行存储的写入数据包括用户数据和第二元数据,第二元数据用于存储数据行的属性信息,包括行数据长度和/或行事务信息,具体的,行数据长度表示该数据行的长度信息,行事务信息表示操作的序列信息,在对数据行进行压缩时,主要对写入数据中的用户数据进行压缩,第二元数据不需要进行压缩,从而减少了解压次数实现数据库性能的提升,而且由于第二元数据占用空间小,通常只有12b或者24b,因此对压缩率的影响几乎可以忽略不计。91.通过将未达到压缩预设数据页的写入数据作为备选数据,然后与后续数据库中的新增写入数据一起作为字典训练数据,重新训练字典并更新相关联的信息,再通过更新后的字典对数据进行压缩,在压缩过程中对数据页存储的第一元数据及数据行存储的第二元数据不进行压缩,从而无需解压即可查找对应的字典,减少了解压次数有效提升了数据库性能,由此实现数据库达到最优的压缩率。92.参照图8所示,在本技术的一些实施例中,上述步骤s104之后,被压缩的写入数据被读取后,需要进行解压从而得到对应的写入数据,其中解压过程包括但不限于以下步骤s701至步骤s703。93.步骤s701,读取数据页的第一元数据,得到映射关系。94.在一些实施例中,通过读取数据页的第一元数据从而得到该数据页与字典的映射关系,具体的,当数据读取到数据页后,首先通过数据行的写入数据判断是否被压缩,如果该数据行的写入数据被压缩,则通过其所在的数据页存储的第一元数据得到与字典的映射关系。95.步骤s702,利用映射关系在字典文件查找对应的字典。96.在一些实施例中,映射关系通过字典文件名、字典在字典文件中的偏移量及字典长度中的一种或多种体现,可以理解的是,首先通过字典文件名查询定位到对应的字典文件中,再根据字典在该字典文件中的偏移量或者字典长度计算定位到具体的字典,从而利用映射关系在字典文件查找对应的字典。97.步骤s703,利用字典对数据页的写入数据进行解压。98.在一些实施例中,利用字典对被压缩的数据页进行解压从而得到对应的写入数据,具体的,将读取到的数据行进行解压,可以理解的是,可以将字典在缓存到内存中,进一步提升压缩或者解压的性能,进一步的,将压缩过程使用的编码器或者解压过程使用的解码器缓存到内存中。99.数据读取到数据库表中数据页的数据行时,判断到该数据行的写入数据被压缩后,根据对应的数据页存储的第一元数据得到与字典的映射关系,基于该映射关系快速定位查找字典文件中对应的字典,从而对数据行进行解压得到写入数据,通过将字典缓存到内存中,有效提升了性能。100.在本技术的一些实施例中,字典文件中的各个字典与至少一个数据页的映射根据预设映射规则生成,具体的,预设映射规则包括连续映射规则、非连续映射规则或内容相关映射规则。101.在一些实施例中,当预设映射规则为连续映射规则时,选取连续的第一数量的数据页与同一字典关联,例如设置第一数量为128,即选取连续的128个数据页与同一字典关联,示例性的,选取第0~127个数据页共享第一个字典,第128~255个数据页共享第二个字典,以此类推,使用同一字典对连续的128个数据页进行压缩或解压,并且在各个数据页中通过第一元数据存储对应的映射关系。102.在一些实施例中,当预设映射规则为非连续映射规则时,选取非连续的第二数量的数据页与同一字典关联,例如设置第二数量为128,即选取128个数据页与同一字典关联,示例性的,可以选取第0,2,4,5,6,9,12,16,32……非连续性的128个数据页共享一个字典。具体的,参照图9所示的映射关系示意图,第一个数据页page1和第三个数据页page3共享同一个字典dict1,而第二数据页page2和第四个数据页page4、第五个数据页page5共享同一个字典dict2,通过在各个数据页中的第一元数据存储的映射关系,可以快速定位并查找对应的字典对数据进行压缩或解压。103.在一些实施例中,当预设映射规则为内容相关映射规则时,选取写入数据存在相关性的第三数量的数据页与同一字典关联,例如设置第三数量为128,即选取128个数据页,并且数据页之间存在相关性,示例性的,每个数据页之间都存在相同的字段,具体的,在企业的数据库中,有员工信息的数据库表,其中各个数据页之间都包括年龄字段、性别字段等相同的字段数据,从而可以认为是存在相关性的数据页,可以共享一个字典进行压缩或者解压,提升了数据库的性能和训练字典的效率。104.本发明实施例还提供一种数据库共享字典压缩装置,可以实现上述数据库共享字典压缩方法,参照图10所示,在本技术一些实施例中,数据库共享字典压缩装置包括写入模块100、训练模块200、存储模块300和压缩模块400。具体的,写入模块100用于对数据页执行写入操作,写入操作用于将写入数据写入多个数据行;训练模块200用于当数据库表的写入数据达到预设阈值后,利用写入数据训练至少一个字典;存储模块300用于将训练完成的字典持久化存储到字典文件中;压缩模块400用于基于映射关系从字典文件中选取对应的字典对数据页中数据行的写入数据进行压缩。105.参照图11所示,在本技术的一些实施例中,压缩的对象是数据页中的每个数据行,因此同一个数据页中的数据行共用一个字典。具体的,在图11.1中,创建了一个空数据库表,当前还未有任何写入数据写入。在图11.2中,数据库表中写入了部分数据,但还未到达创建字典的预设阈值,例如设置的预设阈值为128mb,那么写入数据的数据量需要达到128mb才创建新字典。在图11.3中,继续往该数据库表中写入数据,此时数据库表中的数据量达到了创建字典的预设阈值。在图11.4.1中,使用这些写入数据作为字典训练数据,输入到字典生成模型,根据预设的字典大小和数量训练并生成字典,并将训练出来的字典持久化单独存储到字典文件中,进一步的,字典文件可以缓存到内存中。在图11.4.2中,利用图11.4.1中的训练成功的字典,对数据库表中的数据页进行压缩,具体的,图11.4.2中部分数据页压缩成功,例如数据页page1、数据页page3和数据页page128,部分数据页未压缩成功,例如数据页page2,可以理解的是,未压缩成功是因为该字典对该数据页压缩率未达到预设压缩阈值,例如设置预设压缩阈值为80%,代表数据页page2的压缩率小于80%,从而未压缩成功,其需要与后续新增的写入数据作为新的字典训练数据,重新训练字典到字典文件中,然后再使用新的字典重新进行压缩。106.本实施例的数据库共享字典压缩装置的具体实施方式与上述数据库共享字典压缩方法的具体实施方式基本一致,在此不再一一赘述。107.图12示出了本技术实施例提供的电子设备1000。电子设备1000包括:处理器1001、存储器1002及存储在存储器1002上并可在处理器1001上运行的计算机程序,计算机程序运行时用于执行上述的数据库共享字典压缩方法。108.处理器1001和存储器1002可以通过总线或者其他方式连接。109.存储器1002作为一种非暂态计算机可读存储介质,可用于存储非暂态软件程序以及非暂态性计算机可执行程序,如本技术实施例描述的数据库共享字典压缩方法。处理器1001通过运行存储在存储器1002中的非暂态软件程序以及指令,从而实现上述的数据库共享字典压缩方法。110.存储器1002可以包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需要的应用程序;存储数据区可存储执行上述的数据库共享字典压缩方法。此外,存储器1002可以包括高速随机存取存储器1002,还可以包括非暂态存储器1002,例如至少一个储存设备存储器件、闪存器件或其他非暂态固态存储器件。在一些实施方式中,存储器1002可选包括相对于处理器1001远程设置的存储器1002,这些远程存储器1002可以通过网络连接至该电子设备1000。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。111.实现上述的数据库共享字典压缩方法所需的非暂态软件程序以及指令存储在存储器1002中,当被一个或者多个处理器1001执行时,执行上述的数据库共享字典压缩方法,例如,执行图1中的方法步骤s101至步骤s104、图2中的方法步骤s201至步骤s203、图3中的方法步骤s301至步骤s303、图5中的方法步骤s401至步骤s402、图6中的方法步骤s501至步骤s502、图7中的方法步骤s601至步骤s603、图8中的方法步骤s701至步骤s703。112.本技术实施例还提供了一种存储介质,存储介质为计算机可读存储介质,该存储介质存储有计算机程序,该计算机程序被处理器执行时实现上述数据库共享字典压缩方法。存储器作为一种非暂态计算机可读存储介质,可用于存储非暂态软件程序以及非暂态性计算机可执行程序。此外,存储器可以包括高速随机存取存储器,还可以包括非暂态存储器,例如至少一个磁盘存储器件、闪存器件、或其他非暂态固态存储器件。在一些实施方式中,存储器可选包括相对于处理器远程设置的存储器,这些远程存储器可以通过网络连接至该处理器。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。113.本技术实施例提供的数据库共享字典压缩方法、装置、电子设备及存储介质,通过对数据库表中的数据页执行写入操作,将写入数据写入到数据页的数据行中,当写入数据达到预设阈值后利用其训练字典,然后在数据页中存储第一元数据,记录数据页和字典的映射关系,再将训练完成的字典存储到单独的字典文件中,最后根据映射关系从字典文件选取对应的字典对数据页的数据行的写入数据进行压缩,按照数据行的行粒度进行压缩解压,压缩过程中对数据页的第一元数据保持未压缩状态,从而有效减小了解压次数,提升数据库性能,采用达到预设阈值的少量写入数据训练字典,字典大小及共享字典的数据页数量可以由用户配置,也可以通过数据库算法自适应选取,提升字典训练效率的同时有利于达到最优压缩率,并且以独立的文件存储字典,缓存到内存中便于查询及管理,基于映射关系将数据页和字典关联起来便于查找对应的字典进行压缩和解压。114.以上所描述的装置实施例仅仅是示意性的,其中作为分离部件说明的单元可以是或者也可以不是物理上分开的,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。115.本领域普通技术人员可以理解,上文中所公开方法中的全部或某些步骤、系统可以被实施为软件、固件、硬件及其适当的组合。某些物理组件或所有物理组件可以被实施为由处理器,如中央处理器、数字信号处理器或微处理器执行的软件,或者被实施为硬件,或者被实施为集成电路,如专用集成电路。这样的软件可以分布在计算机可读介质上,计算机可读介质可以包括计算机存储介质(或非暂时性介质)和通信介质(或暂时性介质)。如本领域普通技术人员公知的,术语计算机存储介质包括在用于存储信息(诸如计算机可读指令、数据结构、程序模块或其他数据)的任何方法或技术中实施的易失性和非易失性、可移除和不可移除介质。计算机存储介质包括但不限于ram、rom、eeprom、闪存或其他存储器技术、cd-rom、数字多功能盘(dvd)或其他光盘存储、磁盒、磁带、储存设备存储或其他磁存储装置、或者可以用于存储期望的信息并且可以被计算机访问的任何其他的介质。此外,本领域普通技术人员公知的是,通信介质通常包括计算机可读指令、数据结构、程序模块或者诸如载波或其他传输机制之类的调制数据信号中的其他数据,并且可包括任何信息递送介质。116.还应了解,本技术实施例提供的各种实施方式可以任意进行组合,以实现不同的技术效果。以上是对本技术的较佳实施进行了具体说明,但本技术并不局限于上述实施方式,熟悉本领域的技术人员在不违背本技术精神的共享条件下还可作出种种等同的变形或替换。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1