减少数据库存储容量的数据存储方法技术

技术编号:17970553 阅读:23 留言:0更新日期:2018-05-16 11:24
本发明专利技术涉及一种数据库的数据存储方法,包括:S101:接收待存入的数据表或者数据表的分片;S102:对所述数据表或数据分片中的数据进行模式识别,匹配到多个预设的模式之一;S103:按照与所述多个预设的模式分别相对应的编码方式,对所述数据进行编码;和S104:将编码的结果写入数据库的存储器中。

【技术实现步骤摘要】
减少数据库存储容量的数据存储方法
本专利技术大致涉及计算机网络
,尤其涉及一种减少数据库存储容量的数据存储方法和装置,特别适用于云数据库。
技术介绍
云计算涉及到大量数据的存储,如果能够有效的减少数据所需的存储大小,可以带来多种好处。首先,降低成本。小的存储需要投入少的硬件。其次,服务性能提高。小的数据可以提高Cache的利用率,同样大的Cache可以装入更多的东西。再次,查询数据的速度可以提高,有利于读操作。目前云数据库的例子包括GoogleBigTable,MicrosoftAzureTable,百度云计算事业部的Table服务等。云数据库是云计算系统的重要组成部分,其重要性不言而喻。下面介绍云数据库的总体实现架构以及现有技术。图1是在一个云服务器节点上实现写操作的示意图。第一步把写操作存入日志。第二步把写入的数据存入内存中的内存数据表(MemoryTable)。第三步由后台线程把内存数据表的内容存入永久存储之中(比如磁盘)。图2是在一个云服务器节点上实现读操作的示意图。第一步把Checkpoint文件读入内存中的缓存。第二步把缓存中的内容和内存数据表合并后返回给客户端。如图1和2所示,写入的数据在内存数据表中短暂保存,然后被转移到checkpoint文件中,checkpoint文件一般都在永久存储上,比如磁盘。出于可靠性的考虑,一般会多存储几份。而在读的时候,checkpoint文件中的内容部分的装入内存,以供查找的需要。目前checkpoint文件的存储方式为行存储或者列存储,再辅以压缩技术。其中压缩技术和本专利技术是正交关系,在运用完本专利技术后亦可继续采用压缩技术,所以压缩技术和本专利技术不够成替代关系。本专利技术主要是针对行或者列存储的改进。以下用一个虚拟磁盘的例子来说明现有技术。假设现有一个文件FileABC,长度是5120字节,分成10个扇区,每个扇区512字节。每个扇区有些描述信息,描述信息固定长度10个字节,分别存放在File0,File1和File2中。如下所示。FileABC(总长度5120字节,包含10个扇区)File0(描述信息)File1(描述信息)File2(描述信息)现在用数据库中的一张表记录下来每个扇区的位置及其描述信息的位置。将此表称为扇区表。表一扇区表以第一行为例,扇区0存放在FileABC中偏移量0的位置,它的描述信息(10字节)存放在File0中偏移量0的位置。因此扇区表很容易理解。现有技术1—行存储。按照行存储,扇区表会被存储如下。每个整数假设4字节(4B)。字符串的长度包括其结尾的0,所以FileABC长度是8B。各行在一个连续的存储空间依次展开,先存第一行,然后第二行,以此类推。为了阅读方面,对应不同行的内容用粗体和下划线区分开。0(4B)FileABC(8B)0(4B)File0(6B)0(4B)1(4B)FileABC(8B)512(4B)File1(6B)0(4B)2(4B)FileABC(8B)1024(4B)File2(6B)0(4B)3(4B)FileABC(8B)1536(4B)File0(6B)10(4B)4(4B)FileABC(8B)2048(4B)File1(6B)10(4B)5(4B)FileABC(8B)2560(4B)File2(6B)10(4B)6(4B)FileABC(8B)3072(4B)File0(6B)20(4B)7(4B)FileABC(8B)3584(4B)File1(6B)20(4B)8(4B)FileABC(8B)4096(4B)File2(6B)20(4B)9(4B)FileABC(8B)4608(4B)File0(6B)30(4B)总共算下来,一行需要26B,这个表需要存储空间260B。现有技术2--行存储+字符串表。行存储可以利用字符串表来减少存储空间。基本思想是相同的字符串只存储一份。FileABC多次出现,不如单独把它放在一个地方(即字符串表),后续出现该字符串的地方直接引用这个字符串表。字符串表FileABC(8B)行存储0(4B)0(4B)0(4B)File0(6B)0(4B)1(4B)0(4B)512(4B)File1(6B)0(4B)2(4B)0(4B)1024(4B)File2(6B)0(4B)3(4B)0(4B)1536(4B)File0(6B)10(4B)4(4B)0(4B)2048(4B)File1(6B)10(4B)5(4B)0(4B)2560(4B)File2(6B)10(4B)6(4B)0(4B)3072(4B)File0(6B)20(4B)7(4B)0(4B)3584(4B)File1(6B)20(4B)8(4B)0(4B)4096(4B)File2(6B)20(4B)9(4B)0(4B)4608(4B)File0(6B)30(4B)和现有技术1相比,现有技术2中变化的部分用粗体和下划线标出。标出的部分中0表示字符串表中的偏移量为0的位置,即字符串FileABC的起始地址。偏移量是一个整数,只需要4B。总共算下来,一行需要22B,这个表需要存储空间220B+8B=228B(其中8B为字符串表的开销)。现有技术2比,现有技术1少了32B。现有技术3--列存储。按照列存储,先存储第一行第一列,再存储第二行第一列,再存储第三行第一列,依次类推。第一列存完以后,再存储第一行第二列,第二行第二列,第三行第二列,等等。为阅读方便,属于不同列的内容用粗体和下划线区别开。0(4B)1(4B)2(4B)3(4B)4(4B)5(4B)6(4B)7(4B)8(4B)9(4B)FileABC(8B)FileABC(8B)FileABC(8B)FileABC(8B)FileABC(8B)FileABC(8B)FileABC(8B)FileABC(8B)FileABC(8B)FileABC(8B)0(4B)512(4B)1024(4B)1536(4B)2048(4B)2560(4B)3072(4B)3584(4B)4096(4B)4608(4B)File0(6B)File1(6B)File2(6B)File0(6B)File1(6B)File2(6B)File0(6B)File1(6B)File2(6B)File0(6B)0(4B)0(4B)0(4B)10(4B)10(4B)10(4B)20(4B)20(4B)20(4B)30(4B)列存储改变了数据排列的顺序,但是没有减少数据的大小。所以现有技术3和现有技术1一样,需要260B来存储扇区表。现有技术4–列存储+字符串表。现有技术2中的字符串表也可以用在列存储中。如下。字符串表:FileABC(8B)列存储:0(4B)1(4B)2(4B)3(4B)4(4B)5(4B)6(4B)7(4B)8(4B)9(4B)0(4B)0(4B)0(4B)0(4B)0(4B)0(4B)0(4B)0(4B)0(4B)0(4B)0(4B)512(4B)1024(4B)1536(4B)2048(4B)2560(4B)3072(4B)3584(4B)4096(4B)4608(4B)File0(6B)File1(6B)File2(6B)File0(6B)File1(6B)Fi本文档来自技高网...
减少数据库存储容量的数据存储方法

【技术保护点】
一种数据库的数据存储方法,包括:S101:接收待存入的数据表或者数据表的分片;S102:对所述数据表或数据分片中的数据进行模式识别,匹配到多个预设的模式之一;S103:按照与所述多个预设的模式分别相对应的编码方式,对所述数据进行编码;和S104:将编码的结果写入所述数据库的存储器中。

【技术特征摘要】
1.一种数据库的数据存储方法,包括:S101:接收待存入的数据表或者数据表的分片;S102:对所述数据表或数据分片中的数据进行模式识别,匹配到多个预设的模式之一;S103:按照与所述多个预设的模式分别相对应的编码方式,对所述数据进行编码;和S104:将编码的结果写入所述数据库的存储器中。2.根据权利要求1所述的数据存储方法,其特征在于,还包括:在对所述数据进行模式识别之前,将所述表或者分片中的数据按照列的方式组织。3.根据权利要求1或2所述的数据存储方法,其特征在于,所述多个预设模式包括以下模式的任意组合:模式1:单个数字;存储格式:类型码+数字;模式2:多个重复的数字;存储格式:类型码+复数字的个数+重复的数字;模式3:多个以固定间距递增或者递减的数字;存储格式:类型码+数字的个数+间距+起始数字;模式4:没有规律的一串数字;存储格式:类型码+数字的个数+罗列每个数字;模式5:一个基本数字串反复出现;存储格式:类型码+总共数字的个数+一个数字基本串包含的数字的个数+罗列每个数字;模式6:一个基本数字串包含若干相同的数字,该基本数字串反复出现,每次出现递增或者递减一个固定的间距;存储格式:类型码+总共数字的个数+间距+一个数字基本串包含的数字的个数+第一个基本串中的数字;模式7:一个无规律的基本串按间距递增或递减重复出现;存储格式:类型码+总共数字的个数+间距+一个数字基本串包含的数字的个数+罗列第一个基本串中的数字。4.根据权利要求1-3中任一项所述的数据读取方法,其特征在于,所述数据库是云数据库。5.一种数据库的数据读取方法,包括:S201:从数据库的存储器中读取一段数据的模式类型码和长度;S202:根据所述一段数据的长度,读取所述长度的数据;S203:根据与所述模式类型码相对应的编码方式,计算出所述一段...

【专利技术属性】
技术研发人员:王华勇
申请(专利权)人:北京百度网讯科技有限公司
类型:发明
国别省市:北京,11

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1