CN108228759B - 记录集的存储处理方法、装置、计算机设备和存储介质 - Google Patents
记录集的存储处理方法、装置、计算机设备和存储介质 Download PDFInfo
- Publication number
- CN108228759B CN108228759B CN201711405770.4A CN201711405770A CN108228759B CN 108228759 B CN108228759 B CN 108228759B CN 201711405770 A CN201711405770 A CN 201711405770A CN 108228759 B CN108228759 B CN 108228759B
- Authority
- CN
- China
- Prior art keywords
- bit
- field
- bitmap
- value
- values
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2458—Special types of queries, e.g. statistical queries, fuzzy queries or distributed queries
- G06F16/2462—Approximate or statistical queries
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/221—Column-oriented storage; Management thereof
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2228—Indexing structures
- G06F16/2237—Vectors, bitmaps or matrices
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- General Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Probability & Statistics with Applications (AREA)
- Fuzzy Systems (AREA)
- Computational Linguistics (AREA)
- Mathematical Physics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请涉及一种记录集的存储处理方法、装置、计算机设备和存储介质,所述方法包括:获取记录集,所述记录集包括多个字段名以及与所述字段名对应的字段值;利用所述与所述字段名对应的字段值分别建立与所述字段名对应的位图,所述位图中包括多个位对象;将与所述字段名对应的字段值进行转换,生成与所述字段名对应的多个位对象的位值;根据所述位对象将所述位值添加至对应的位图中,将多个添加位值后的位图进行存储。采用本方法能够有效减少记录集的内存占用。
Description
技术领域
本申请涉及计算机技术领域,特别是涉及一种记录集的存储处理方法、装置、计算机设备和存储介质。
背景技术
随着计算机技术的迅速发展,各种各样的海量信息不断增加,数据量也不断增加,利用传统关系型数据库中的记录集对数据进行处理,已经不能满足海量数据环境下的对数据进行节能存储以及高效运算的需求。记录集可以是从数据库中检索到的数据的集合,记录集可以是完整的数据库表,也可以只包括其中的一部分数据库表。
在对数据库中的记录集进行处理的时,传统的方式是对记录集中的数据采用行式存储的方式存储于内存中,以存储数据、传输数据或对数据进行运算。而采用行式存储的方式,记录集仍然会占用较大内存,且在处理数据的过程中,需要遍历所有数据,导致存储空间占用较大。在记录集的处理过程中如何有效减少内存占用成为目前需要解决的技术问题。
发明内容
基于此,有必要针对上述技术问题,提供一种能够有效减少内存占用的记录集的存储处理方法、装置、计算机设备和存储介质。
一种记录集的存储处理方法,包括:
获取记录集,所述记录集包括多个字段名以及与所述字段名对应的字段值;
利用所述与所述字段名对应的字段值分别建立与所述字段名对应的位图,所述位图中包括多个位对象;
将与所述字段名对应的字段值进行转换,生成与所述字段名对应的多个位对象的位值;
根据所述位对象将所述位值添加至对应的位图中,将多个添加位值后的位图进行存储。
在其中一个实施例中,所述利用所述与所述字段名对应的字段值分别建立与所述字段名对应的位图步骤包括:
根据所述字段名获取对应的字段值;
对所述字段值进行去重处理,得到去重后的字段值;
利用与所述字段名对应的去重后的字段值分别建立相应的位图。
在其中一个实施例中,所述记录集还包括行标识;所述位值包括第一位值和第二位值;所述将与所述字段名对应的字段值进行转换,生成与所述字段名对应的多个位对象的位值的步骤包括:
根据所述行标识在所述记录集中获取与所述字段名对应的字段值;
根据所述行标识在所述位图中将所述字段值与所述位对象进行比对;
当与所述行标识对应的字段值与所述位对象相匹配时,将所述字段值转换为所述位对象对应的第一位值;
当与所述行标识对应的字段值与所述位对象不匹配时,将所述字段值转换为所述位对象对应的第二位值。
在其中一个实施例中,所述方法还包括:
接收查询请求,所述查询请求中携带了一个或多个待查询字段名;
获取所述待查询字段名在对应位图中对应的位对象;
在所述位图中查询所述位对象对应的位值;
对所述位对象对应的位值进行解析,得到与所述待查询字段名对应的字段值。
在其中一个实施例中,所述方法还包括:
接收统计请求,所述统计请求中携带了一个或多个待统计字段名;
获取所述待统计字段名在对应位图中对应的位对象;
在所述位图中查询所述位对象对应的位值;
对所述位对象对应的位值进行统计,得到与所述待统计字段名对应的统计数量。
在其中一个实施例中,所述方法还包括:
获取多个位图中位值的数据类型;
根据所述数据类型对多个位图中的位值进行统计,得到位值的统计数量;
利用所述数据类型与所述位值的统计数量计算所述记录集存储所需的字节数。
在其中一个实施例中,所述方法还包括:
对所述添加位值后的位图进行压缩,将压缩后的位图进行存储;
当接收到查询请求或统计请求时,对所述压缩后的位图进行解压;
利用所述解压后的位图进行查询操作或者统计操作。
一种记录集的存储处理装置,包括:
获取模块,用于获取记录集,所述记录集包括多个字段名以及与所述字段名对应的字段值;
转换模块,用于利用所述与所述字段名对应的字段值分别建立与所述字段名对应的位图,所述位图中包括多个位对象;将与所述字段名对应的字段值进行转换,生成与所述字段名对应的多个位对象的位值;
存储模块,用于根据所述位对象将所述位值添加至对应的位图中,将多个添加位值后的位图进行存储。
在其中一个实施例中,所述转换模块还用于根据所述字段名获取对应的字段值;对所述字段值进行去重处理,得到去重后的字段值;利用与所述字段名对应的去重后的字段值分别建立相应的位图。
在其中一个实施例中,所述记录集还包括行标识;所述位值包括第一位值和第二位值;所述转换模块还用于根据所述行标识在所述记录集中获取与所述字段名对应的字段值;根据所述行标识在所述位图中将所述字段值与所述位对象进行比对;当与所述行标识对应的字段值与所述位对象相匹配时,将所述字段值转换为所述位对象对应的第一位值;当与所述行标识对应的字段值与所述位对象不匹配时,将所述字段值转换为所述位对象对应的第二位值。
在其中一个实施例中,所述装置还包括查询模块,用于接收查询请求,所述查询请求中携带了一个或多个待查询字段名;获取所述待查询字段名在对应位图中对应的位对象;在所述位图中查询所述位对象对应的位值;对所述位对象对应的位值进行解析,得到与所述待查询字段名对应的字段值。
在其中一个实施例中,所述装置还包括统计模块,用于接收统计请求,所述统计请求中携带了一个或多个待统计字段名;获取所述待统计字段名在对应位图中对应的位对象;在所述位图中查询所述位对象对应的位值;对所述位对象对应的位值进行统计,得到与所述待统计字段名对应的统计数量。
在其中一个实施例中,所述装置还包括计算模块,用于获取多个位图中位值的数据类型;根据所述数据类型对多个位图中的位值进行统计,得到位值的统计数量;利用所述数据类型与所述位值的统计数量计算所述记录集存储所需的字节数。
在其中一个实施例中,所述装置还包括压缩模块,用于对所述添加位值后的位图进行压缩,将压缩后的位图进行存储;当接收到查询请求或统计请求时,对所述压缩后的位图进行解压;利用所述解压后的位图进行查询操作或者统计操作。
上述记录集的存储处理方法、装置、计算机设备和存储介质,利用记录集中的字段名与对应的字段值创建多个与字段名对应的位图。位图中可以包含多个位对象。通过将与字段名对应的字段值进行转换,生成相应位图中位对象的位值,由此减少了存储字段值所需的内存空间。将位值对应位对象添加至相应的位图中,由此可以将记录集拆分为多个位图进行列式存储。由于位图中记录的是位对象以及位值,由此有效地减少了记录集的内存占用。
附图说明
图1为一个实施例中记录集的存储处理方法的应用场景图;
图2为另一个实施例中记录集的存储处理方法的应用场景图;
图3为一个实施例中记录集的存储处理方法的流程图;
图4为另一个实施例中记录集的存储处理方法的流程图;
图5为又一个实施例中记录集的存储处理方法的流程图;
图6为还一个实施例中记录集的存储处理方法的流程图;
图7为再一个实施例中记录集的存储处理方法的流程图;
图8为一个实施例中记录集的存储处理装置的内部结构图;
图9为一个实施例中计算机设备的内部结构图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定申请。可以理解,本发明所使用的术语“第一”、“第二”等可在本文中用于描述各种元件,但这些元件不受这些术语限制。这些术语仅用于将第一个元件与另一个元件区分。
本申请实施例中提供的记录集的存储处理方法还以可应用于如图1所示的应用场景中。其中,终端102,可以是笔记本电脑、台式电脑等,用于实现记录集的存储处理方法。服务器104,可以是独立服务器,也可以是集群服务器。服务器104中存储有产品数据、业务数据等数据表。终端102通过网络与服务器 104连接,终端102可以从服务器104中获取数据表中的记录集。终端102获取记录集后,利用记录集中的字段名与对应的字段值创建多个与字段名对应的位图。位图中可以包含多个位对象。终端102通过将与字段名对应的字段值进行转换,生成相应位图中位对象的位值,由此减少了存储字段值所需的内存空间。终端102将位值对应位对象添加至相应的位图中,由此可以将记录集拆分为多个位图进行列式存储。由于位图中记录的是位对象以及位值,由此有效地减少了记录集的内存占用。
本申请实施例中提供的记录集的存储处理方法可以应用于如图2所示的应用场景中。其中,记录集处理服务器202,可以是独立服务器,也可以是集群服务器,用于实现记录集的存储处理方法。网站服务器204,网站服务器204可以是对应各个网站的服务器,各个网站对应的网页中大量的信息数据。记录集处理服务器202通过网络与网站服务器204连接。记录集处理服务器202可以通过网络爬虫技术从网站服务器204中获取对应的网页中的信息数据。记录集处理服务器202通过对获取到的信息数据进行汇总,生成记录集。记录集处理服务器202获取记录集后,利用记录集中的字段名与对应的字段值创建多个与字段名对应的位图。位图中可以包含多个位对象。记录集处理服务器202通过将与字段名对应的字段值进行转换,生成相应位图中位对象的位值,由此减少了存储字段值所需的内存空间。记录集处理服务器202将位值对应位对象添加至相应的位图中,由此可以将记录集拆分为多个位图进行列式存储。由于位图中记录的是位对象以及位值,由此有效地减少了记录集的内存占用。
在一个实施例中,如图3所示,提供了一种记录集的存储处理方法,该方法既可以应用于图1中的终端,也可以应用于图2中的记录集处理服务器。为了使说明书的内容简洁明要,以该方法应用于终端为例进行说明,应用于处理服务器的情形在此不再赘述。该方法具体包括以下步骤:
步骤302,获取记录集,记录集包括多个字段名以及与字段名对应的字段值。
终端在对数据表中的数据进行处理时,通常需要获取数据库表中的记录集,通过对记录集进行处理,从而对数据表中的数据进行处理。例如,终端可以对记录集进行传输、运算和查询等处理。如在软件开发的过程中,也会对记录集进行处理。记录集是指从数据库中检索到的数据的集合,记录集可以包括完整的数据库表,也可以包括数据库表中的一部分数据库表。
终端对应的服务器中存储有数据库,终端可以通过访问服务器获取数据表中的记录集。具体地,记录集可以是数据表,每个记录集中包括多个字段名以及与字段名对应的字段值。例如,表一中提供了一个记录集对应的数据表。其中,字段名包括“类别”、“颜色”和“性别”。字段名“类别”对应的字段值包括多个“上衣”、“裤子”和“裙子”。字段名“颜色”对应的字段值包括多个“红色”、“蓝色”和“黑色”。字段名“性别”对应的字段值包括多个“男”和“女”。
表一:
步骤204,利用与字段名对应的字段值分别建立与字段名对应的位图,位图中包括多个位对象。
终端获取记录集后,记录集可以是由多个行和列组成的数据表。通常首行可以为字段名,字段名对应的列的数据可以为字段值。一个记录集中包括多个字段名,以及分别与字段名分别对应的多个字段值。终端利用每个字段名和与字段名对应的字段值分别建立多个与字段名对应的位图。每个字段名包括多个对应的字段值,因此每个字段名对应的位图中包括多个位对象。其中,位图中的位对象可以和与字段名对应的字段值相同,位图中的位对象也可以和与字段名对应的字段值不同。例如,表一所示的记录集,可以利用与字段名对应的字段值分别建立“类型”位图、“颜色”位图和“性别”位图。
进一步地,字段名对应的字段值可以为多个不同的数据,其中也可以包括重复相同的数据。字段值可以为字段名对应的列的所有数据。进一步地,字段值还可以是终端对字段名对应的列的所有数据进行去重后的数据。
当位对象和与字段名对应的字段值不同时,位对象和与字段名对应的字段值可以采用不同的数据类型的字符或字符串。为了有效减少记录集存储所需的空间,位对象的数据类型所占用的字节数可以比与字段名对应的字段值的数据类型占用的字节数少。
终端通过建立位对象与字段名之间的对应关系,将位对象转换为与字段值相对应的不同的数据类型的位对象。例如,终端在建立上述表一中“类型”字段名对应的位图的过程中,将字段名“类型”对应的字段值转换为位对象时,字段名和位对象之间的对应关系可以如下表二所示,“类型”对应的字段值“上衣”、“裤子”、“裙子”分别对应的位对象可以为“A”、“B”、“C”。字段值的数据类型为字符型,每个字符的字节数为2,每个字段值的字节数则为4。终端将位对象转换为为一个字母后,每个位对象的字节数仅为2。终端通过将字段值转换为字节数比原始字段值更少的数据类型的位对象,从而能够有效地较少记录集的内存占用。
表二:
字段值 | 位对象 |
上衣 | A |
裤子 | B |
裙子 | C |
步骤306,将与字段名对应的字段值进行转换,生成与字段名对应的多个位对象的位值。
终端分别提取记录集中与字段名对应多个字段值,将与字段名对应的字段值进行转换,生成与字段名对应的多个位对象的位值,由此终端可以利用每个字段名对应的位对象和位对象对应的位值分别建立多个与字段名对应的位图。
具体地,记录集还包括行标识,终端根据行标识在记录集中获取与字段名对应的字段值,每个字段值有对应的行标识。终端将位图中的行标识对应的字段值与位对象进行比对,当行标识对应的字段值与位对象相匹配时,终端将该字段值转换为位对象对应的第一位值。当行标识对应的字段值与位对象不匹配时,终端将该字段值转换为位对象对应的第二位值。对字段值进行转换后,生成与字段名对应的多个位对象的位值。
例如,上述表一中包括字段名“类别”、“颜色”和“性别”,以及与字段名分别对应的字段值。终端根据行标识根据行标识在记录集中获取与字段名“类别”、“颜色”和“性别”分别对应的字段值,每个字段值有对应的行标识。终端将位图中的行标识对应的字段值与位对象进行比对,当行标识对应的字段值与位对象相匹配时,终端将该字段值转换为位对象对应的第一位值,例如,第一值可以为1。当行标识对应的字段值与位对象不匹配时,当该字段值转换为位对象对应的第二位值,例如,第二值可以为0。终端对字段值进行转换后,生成与字段名对应的多个位对象的位值。例如,记录集中字段名为“类型”,行标识为1的对应字段值为“上衣”,将位图中的行标识对应的字段值与位对象进行匹配,则将第1行“上衣”对应的字段值转换为值为1的位值,位对象“裤子”和“裙子”的位值与第1行的“上衣”不匹配,对应的位值则可以为0。由此,终端通过对每个字段名对应的字段值进行转换后,生成多个与字段名对应的多个位对象的位值。
每个位值有对应的数据类型,终端将位对象对应的位值转换为“1”和“0”后,位值的数据类型可以为字节型,字节型的数据类型对应的字节数为1。终端获取位值的数据类型后,可以分别统计出位对象“上衣”、“裤子”和“裙子”对应的位值的数量为8。终端利用位值的数据类型和统计数量,从而能够计算出类别位图存储所需的字节数为24。终端分别计算出颜色和性别对应的位图存储所需的字节数,可以得到颜色和性别对应的位图存储所需的字节数分别为24和 16,由此能够计算出存储记录集所需要的字节数为64。而原始的如表一所示的记录集中,字段值的数据类型为字符型,对应的字段值的字节数则为80。很明显转换为位图后所占的字节数比原始的记录集所占的字节数更少。通过将记录集转换为列式的位图进行存储,明显有效地减少了记录集的内存占用。
步骤308,根据位对象将位值添加至对应的位图中,将多个添加位值后的位图进行存储。
终端生成多个与字段名对应的多个位对象的位值后,根据位对象分别将位值添加至对应的位图中。终端通过将记录集中字段名对应的字段值转换为字段名对应的位图中的位对象,将位对象对应的位值添加到位对象的列中,生成多个与字段名对应的列式的位图。终端将每个记录集中的字段名和字段名对应的字段值单独存储为与字段名对应的位图,由此实现了对记录集进行列式存储,从而有效地减少了记录集的内存占用。
例如下图所示,位图一为终端生成的与字段名为“类别”对应的位图,位图二为终端生成的与字段名为“颜色”对应的位图,位图三表为终端生成的与字段名为“性别”对应的位图。
位图一:
位图二:
红色 | 蓝色 | 黑色 |
1 | 0 | 0 |
0 | 1 | 0 |
0 | 0 | 1 |
1 | 0 | 0 |
1 | 0 | 0 |
0 | 1 | 0 |
0 | 0 | 1 |
1 | 0 | 0 |
位图三:
男 | 女 |
0 | 1 |
0 | 1 |
0 | 1 |
0 | 1 |
1 | 0 |
0 | 1 |
0 | 1 |
0 | 1 |
进一步地,终端在提取记录集中与字段名对应多个字段值,将与字段名对应的字段值进行转换,生成与字段名对应的多个位对象的位值时,可以采用多线程并发处理。终端同时将与多个字段名分别对应的多个字段值进行转换,生成与字段名对应的多个位对象的位值,由此可以提高字段值的转换效率和位值的生成效率。终端生成多个与字段名对应的多个位对象的位值后,多个线程同时根据位对象分别将位值添加至对应的位图中。终端通过多线程并发同时对多个位图进行处理,从而提高了位图的生成效率,进而提高了记录集的存储效率。
本实施例中,终端利用记录集中的字段名与对应的字段值创建多个与字段名对应的位图。位图中可以包含多个位对象。终端通过将与字段名对应的字段值进行转换,生成相应位图中位对象的位值,由此减少了存储字段值所需的内存空间。终端将位值对应位对象添加至相应的位图中,由此可以将记录集拆分为多个位图进行列式存储。由于位图中记录的是位对象以及位值,由此有效地减少了记录集的内存占用,并且能够有效提高记录集的运算性能。
在一个实施例中,利用与字段名对应的字段值分别建立与字段名对应的位图步骤包括:根据字段名获取对应的字段值;对字段值进行去重处理,得到去重后的字段值;利用与字段名对应的去重后的字段值分别建立相应的位图。
终端获取记录集,记录集可以是由多个行和列组成的数据表,每个记录集中包括多个字段名以及与字段名对应的字段值,通常首行可以为字段名,字段名对应的列的数据可以为字段值。其中,字段名对应的字段值可以为多个不同的数据,也可以包括重复相同的数据。
终端根据字段名获取对应的字段值,当字段值中的数据中包括重复相同的字段值时,对字段值进行去重处理。例如,终端可以采用遍历字段名对应的所有字段值的方式,提取第一次出现的字段值。当再次出现相同的字段值时,则不再进行提取,由此可以得到去重后的不同的字段值。终端利用与字段名对应的去重后的字段值分别建立与字段名对应的位图,将去重后的字段值转换为位对象。其中,位对象的值可以与字段值相同,由此能够得到与字段名对应的字节数少的位对象,从而能够高效地减少记录集的内存占用。
例如,上述表一中的其中一个字段名为“性别”,与字段名对应的字段值为多个重复的“男”或“女”,可见,字段值中只包括“男”和“女”这两种类型的字段值。因此,终端可以对字段值进行去重处理,得到“男”和“女”这两个字段值。终端将这两个字段值转换为位对象,建立与字段名“性别”对应的位图,由此能够得到位对象仅为“男”和“女”两列的位图,进而高效地减少了记录集的内存占用。
进一步地,记录集中还包括行标识,终端根据字段名获取对应的字段值,对字段值进行去重处理,得到去重后的字段值后,终端还可以获取行标识的数量和去重后的字段值的数量,计算出字段名对应的位图的大小。终端根据行标识的数量和去重后的字段值的数量分别建立与字段名对应大小的位图,由此可以根据计算出的位图大小快速地建立对应的位图。
在另一个实施例中,终端根据字段名获取对应的字段值后,字段名对应的所有字段值可能为不重复的不同字段值。当所有字段值为不重复的不同字段值时,则不需要对字段值进行去重处理,终端直接利用与字段名对应的字段值分别建立相应的位图,将记录集转换为对应的列式位图进行存储即可。
在另一个实施例中,终端根据字段名获取对应的字段值,利用与字段名对应的字段值分别建立与字段名对应的位图,将字段值转换为位对象。其中位对象的值可以是与字段值不同的值,终端可以将字段值转换为不同数据类型的位对象。进一步地,终端可以将字段值转换为字节数比原始字段值更少的数据类型的位对象,从而能够有效减少位对象的存储空间。
例如,上述表一中字段名为“类型”的位对象和字段名之间的对应关系可以如上述表二所示,“类型”对应的字段值“上衣”、“裤子”、“裙子”分别对应的位对象可以为“A”、“B”、“C”。字段值的数据类型为汉字,位对象的数据类型为字母,由于字母的字节数比汉字的字节数更少,终端通过将字段值转换为字节数比原始字段值更少的数据类型的位对象,从而能够有效地较少记录集的内存占用。
在一个实施例中,记录集还包括行标识;位值包括第一位值和第二位值;将与字段名对应的字段值进行转换,生成与字段名对应的多个位对象的位值的步骤包括:根据行标识在记录集中获取与字段名对应的字段值;根据行标识在位图中将字段值与位对象进行比对;当与行标识对应的字段值与位对象相匹配时,将字段值转换为位对象对应的第一位值;当与行标识对应的字段值与位对象不匹配时,将字段值转换为位对象对应的第二位值。
终端获取记录集后,记录集中包括多个字段名以及与字段名对应的字段值,字段名对应的列的数据可以为字段值。字段值与字段名和行标识相互对应。终端利用与字段名对应的字段值分别建立与字段名对应的位图,位图中包括多个位对象。终端将与字段名对应的字段值进行转换,生成与字段名对应的多个位对象的位值,其中,位值包括第一位值和第二位值。
具体地,终端根据行标识根据行标识在记录集中获取与字段名对应的字段值,每个字段值有对应的行标识。终端将位图中的行标识对应的字段值与位对象进行比对,当行标识对应的字段值与位对象相匹配时,将该字段值转换为位对象对应的第一位值。其中,多个位对象对应的第一值可以为相同的值。例如,第一位值可以都为1。当行标识对应的字段值与位对象不匹配时,当该字段值转换为位对象对应的第二位值,例如,第二位值可以为0。终端对字段值进行转换后,生成与字段名对应的多个位对象的位值,从而可以得到字节数较少的位值。
例如,字段名为“性别”下包括多个值为“男”或“女”的字段值,终端将字段值为“男”和“女”转换为与字段名对应的位对象后,在位对象为“男”的一列位值中。当行标识为1的对应的字段值与位对象相匹配时,即第1行的字段值也为“男”时,则表明对应的字段值与位对象相匹配,终端将第1行对应的位值转换为1。反之,如果第1行的字段值为“女”时,则表明对应的字段值与位对象不匹配,则将第1行对应的位值转换为0。同上,在位对象为“女”的一列位值中,当第1行的字段值为“女”时,终端将第一行对应的位值转换为1,若不为“女”时,则将对应的位值转换为0。由此终端对字段值进行转换后,能够生成与多个位对象对应的“1”和“0”的位值,从而可以得到二进制式的字节数较少的位值,进而能够有效地减少记录集的内存占用。
在一个实施例中,如图4所示,该方法还包括:
步骤310,接收查询请求,查询请求中携带了一个或多个待查询字段名。
步骤312,获取待查询字段名在对应位图中对应的位对象。
步骤314,在位图中查询位对象对应的位值。
步骤316,对位对象对应的位值进行解析,得到与待查询字段名对应的字段值。
终端获取记录集后,记录集中包括多个字段名和与字段名对应的多个字段值,终端根据字段名获取对应的字段值,对字段值进行去重处理,得到去重后的字段值,利用与字段名对应的去重后的字段值分别建立相应的位图。位图中包括多个位对象。其中,记录集还包括行标识。终端根据行标识在记录集中获取与字段名对应的字段值,根据行标识在位图中将字段值与位对象进行比对。当与行标识对应的字段值与位对象相匹配时,终端将字段值转换为位对象对应的第一位值。当与行标识对应的字段值与位对象不匹配时,将字段值转换为位对象对应的第二位值。终端通过将与字段名对应的字段值进行转换,生成与字段名对应的多个位对象的位值。根据位对象将位值添加至对应的位图中,终端将多个添加位值后的位图进行存储。由此能够有效地减少了记录集的内存占用。
终端对多个位图进行存储后,可以接收终端发送的查询请求,该查询请求中携带了一个多或多个待查询字段名,例如待查询字段名可以为“红色”。
终端获取待查询字段名在对应位图中对应的位对象,在位图中查询位对象对应的位值。具体地,终端可以对位对象对应的所有位值进行遍历,筛选出与位对象对应的不为第二位值的位值。
根据位值与字段值的对应关系,对筛选出的位对象对应的位值进行解析,由此可以得到与待查询字段名对应的字段值。终端通过将记录集转换为列式位图后进行存储,有效地减少了记录集的内存占用。利用位对象对应的位值对待查询字段进行查询,从而能够在位图中快速查询出查询结果。
进一步地,终端筛选出待查询字段名对应的位值后,还可以得到筛选出的位值对应的行标识。根据位值对应的行标识,可以得到与行标识对应的其他位图中的位对象。由此可以得到与待查询字段名对应的字段值和与待查询字段名相关对应的字段值。
例如,当记录集为上述表一所示的数据表,待查询字段名为“红色”时,终端获取上述颜色位图表所示的位图,对位对象对应的位值进行遍历,筛选出所有值为1的位值,由此能够得到所有颜色为“红色”的字段值。终端还可以根据值为1的行标识,获取到行标识对应的类别位图和性别位图中对应的位值,由此能够得到所有颜色为“红色”的字段值,以及颜色为“红色”对应的类别和对应的性别的字段值。
在另一个实施例中,在查询的过程中,终端获取待查询字段名在对应位图中对应的位对象,在位图中查询位对象对应的位值。具体地,终端可以直接在位图中获取第一位值对应的位值,由此可以不必遍历所有的位值,对获取到的位对象对应的位值进行解析,从而能够快速得到与待查询字段名对应的字段值。通过将记录集转换为列式位图后进行存储,减少了记录集的内存占用,并且有效地提高了记录集的运算性能。终端根据待查询字段名直接在位图中查找位对象对应的第一位值,从而能够在位图中进行高效查询。
例如,当记录集为上述表一所示的数据表,待查询字段名为“红色”时,终端获取上述颜色位图表所示的位图,直接获取位对象为“红色”的值为1的位值,对获取到的位值进行解析后,由此能够得到所有颜色为“红色”的字段值。从而能够在位图中快速查询到颜色为“红色”的字段值。
进一步的,终端在统计的过程中可以对记录集的多个字段名和字段值进行过滤。例如,待查询字段名中颜色为“红色”,类型为“上衣”。终端获取待查询字段名在对应的位图中位对象对应的位序列,即“红色”的位序列10011001,“上衣”的位序列10101010。将二进制位序列进行位与(and)操作,即“10011001 &10101010=10001000”。二进制位运算是高性能的CPU(中央处理器,Central Processing Unit)指令级别的运算。由于采用了列式存储的方式对位图进行存储,通过对待统计字段按列过滤,直接采用高性能的CPU指令运算进行查询,从而能够有效地提高记录集的运算性能,进而能够快速地运算出查询结果。
在另一个实施例中,终端对多个位图存储后,还可以接收终端自身的查询请求,可以是终端在对其他数据进行处理时,需要查询记录集中数据的查询请求。该查询请求中携带了一个多或多个待查询字段名,例如待查询字段名可以为“红色”。终端获取待查询字段名在对应位图中对应的位对象,在位图中查询位对象对应的位值。具体地,终端可以对位对象对应的位值进行遍历,筛选出位对象不为第二位值的位值。终端根据位值与字段值的对应关系,对筛选出位对象对应的位值进行解析,由此可以得到与待查询字段名对应的字段值。终端通过将记录集转换为列式位图后进行存储,有效地减少了记录集的内存占用,从而提高了记录集的运算效率,进而能够高效地查询记录集中数据。
在一个实施例中,如图5所示,该方法还包括:
步骤318,接收统计请求,统计请求中携带了一个或多个待统计字段名。
步骤320,获取待统计字段名在对应位图中对应的位对象。
步骤322,在位图中查询位对象对应的位值。
步骤324,对位对象对应的位值进行统计,得到与待统计字段名对应的统计数量。
终端获取记录集后,记录集中包括多个字段名和与字段名对应的多个字段值,终端根据字段名获取对应的字段值,对字段值进行去重处理,得到去重后的字段值,利用与字段名对应的去重后的字段值分别建立相应的位图。位图中包括多个位对象。其中,记录集还包括行标识。终端根据行标识在记录集中获取与字段名对应的字段值,根据行标识在位图中将字段值与位对象进行比对。当与行标识对应的字段值与位对象相匹配时,终端将字段值转换为位对象对应的第一位值。当与行标识对应的字段值与位对象不匹配时,终端将字段值转换为位对象对应的第二位值。通过将与字段名对应的字段值进行转换,终端生成与字段名对应的多个位对象的位值。终端根据位对象将位值添加至对应的位图中,将多个添加位值后的位图进行存储。由此能够有效地减少了记录集的内存占用。
终端对多个位图进行存储后,还可以接收终端发送的统计请求,该统计请求中携带了一个多或多个待统计字段名,例如,待查询字段名可以为“红色”。
终端获取待统计字段名在对应位图中对应的位对象,在位图中查询位对象对应的位值。具体地,终端可以对位对象对应的所有位值进行遍历,筛选出与位对象对应的不为第二位值的位值。
终端对筛选出的位对象对应的位值进行统计,由此可以得到与待统计字段名对应的统计数量。通过将记录集转换为列式位图后进行存储,减少了记录集的内存占用,并且有效地提高了记录集的运算性能。终端通过利用位对象对应的位值对待统计字段进行统计,从而能够在位图中快速统计出统计结果。
例如,当记录集为上述表一所示的数据表,待统计字段名为“红色”时,终端获取上述颜色位图表所示的位图,对位对象对应的位值进行遍历,筛选出所有值为1的位值,对筛选出的位值数量进行统计,由此能够统计出所有颜色为“红色”的数量。终端通过利用位对象对应的位值对待统计字段进行统计,从而能够在位图中快速统计出统计结果。
在另一个实施例中,在统计的过程中,终端获取待统计字段名在对应位图中对应的位对象,在位图中查询位对象对应的位值。具体地,终端可以直接在位图中获取第一位值对应的位值,对位对象对应的位值进行统计,由此可以不必遍历所有的位值,从而能够快速得到与待统计字段名对应的统计数量。终端通过直接获取第一位值对应的位值,进而能够快速地统计出待统计字段的数量。
例如,当记录集为上述表一所示的数据表,待统计字段名为“红色”时,终端获取上述颜色位图表所示的位图,直接获取位对象为“红色”的值为1的位值,统计出获取到的所有位值为1的数量,由此能够在位图中快速统计出得到所有颜色为“红色”的数量。
进一步的,终端在统计的过程中可以对记录集的多个字段名和字段值进行过滤。例如,待统计字段名中颜色为“红色”,类型为“上衣”。终端获取待统计字段名在对应位图中位对象对应的位序列,即“红色”的位序列10011001,“上衣”的位序列10101010。将二进制位序列进行位与(and)操作,即“10011001 &10101010=10001000”。二进制位运算是高性能的CPU(中央处理器,Central Processing Unit)指令级别的运算。由于采用了列式存储的方式对位图进行存储,通过对待统计字段按列过滤,直接采用高性能的CPU指令运算进行统计,从而能够有效地提高记录集的运算性能,进而能够快速地运算出统计结果。
在另一个实施例中,终端对多个位图存储后,还可以接收终端自身的统计请求,可以是终端在对其他数据进行处理时,需要统计记录集中数据的统计请求。该统计请求中携带了一个多或多个待统计字段名,例如待查询字段名可以为“红色”。终端获取待统计字段名在对应位图中对应的位对象,在位图中查询位对象对应的位值。具体地,终端可以对位对象对应的所有位值进行遍历,筛选出与位对象对应的不为第二位值的位值。终端对筛选出的位对象对应的位值进行统计,由此可以得到与待统计字段名对应的统计数量。通过将记录集转换为列式位图后进行存储,有效地减少了记录集的内存占用。终端通过利用位对象对应的位值对待统计字段进行统计,从而能够在位图中快速统计出统计结果。
在一个实施例中,如图6所示,该方法还包括:
步骤326,获取多个位图中位值的数据类型。
步骤328,根据数据类型对多个位图中的位值进行统计,得到位值的统计数量.
步骤330,利用数据类型与位值的统计数量计算记录集存储所需的字节数。
终端获取记录集后,记录集中包括多个字段名和与字段名对应的多个字段值,终端根据字段名获取对应的字段值,对字段值进行去重处理,得到去重后的字段值。终端利用与字段名对应的去重后的字段值分别建立相应的位图。位图中包括多个位对象。其中,记录集还包括行标识。终端根据行标识在记录集中获取与字段名对应的字段值,根据行标识在位图中将字段值与位对象进行比对。当与行标识对应的字段值与位对象相匹配时,终端将字段值转换为位对象对应的第一位值。当与行标识对应的字段值与位对象不匹配时,终端将字段值转换为位对象对应的第二位值。终端通过将与字段名对应的字段值进行转换,生成与字段名对应的多个位对象的位值。终端根据位对象将位值添加至对应的位图中,将多个添加位值后的位图进行存储。
终端对多个位图进行存储后,还可以获取多个位图中位值的数据类型。例如,位值的数据类型可以包括字节型、数字型、文本型等不同的数据类型,每个数据类型有对应的字节数。
终端根据数据类型对多个位图中的位值进行统计,可以得到位值的数量,利用位值的数据类型和统计数量计算记录集存储所需的字节数,由此能够得到存储位图所需要的字节数。
例如,上述类别位图表中所示,位对象“上衣”、“裤子”和“裙子”分别对应了多个位值“1”和“0”,其中位值的数据类型可以为字节型,字节型的数据类型对应的字节数为1。终端获取位值的数据类型后,可以分别统计出位对象“上衣”、“裤子”和“裙子”对应的位值的数量为8。终端利用位值的数据类型和统计数量,从而能够计算出类别位图存储所需的字节数为24。终端分别计算出颜色位图和性别位图存储所需的字节数,可以得到颜色位图和性别位图存储所需的字节数分别为24和16,由此能够计算出存储记录集所需要的字节数为64。而原始的如表一所示的记录集中,字段值的数据类型为字符型,对应的字段值的字节数则为80。很明显转换为位图后所占的字节数比原始的记录集所占的字节数更少。终端通过将记录集转换为列式的位图进行存储,明显有效地减少了记录集的内存占用。
在一个实施例中,如图7所示,该方法还包括:
步骤332,对添加位值后的位图进行压缩,将压缩后的位图进行存储。
步骤334,当接收到查询请求或统计请求时,对压缩后的位图进行解压.
步骤336,利用解压后的位图进行查询操作或者统计操作。
终端获取记录集后,记录集中包括多个字段名和与字段名对应的多个字段值,终端根据字段名获取对应的字段值,对字段值进行去重处理,得到去重后的字段值,利用与字段名对应的去重后的字段值分别建立相应的位图。位图中包括多个位对象。其中,记录集还包括行标识。终端根据行标识在记录集中获取与字段名对应的字段值,根据行标识在位图中将字段值与位对象进行比对。当与行标识对应的字段值与位对象相匹配时,终端将字段值转换为位对象对应的第一位值。当与行标识对应的字段值与位对象不匹配时,终端将字段值转换为位对象对应的第二位值。终端通过将与字段名对应的字段值进行转换,生成与字段名对应的多个位对象的位值。
终端根据位对象将位值添加至对应的位图中,对添加位值后的位图进行压缩,通过将压缩后的位图进行存储。具体地,终端可以采用无损压缩的方式对位图进行压缩。例如,终端可以将固定长度存储类型的位图存储为可变长度的存储类型的位图。对所有固定长度的数据类型转换为最小所需字节进行存储。具体地,终端可以在每个位图的所有数据行中,对所有列查找重复的值,并将重复的值存储在压缩信息CI(压缩信息,CompressionInformation)中。终端将长的重复值替换为短的数据值,使用最小的可变数据类型进行存储,以节省数据空间。由此能够有效地减少了记录集的内存占用。
当终端接收到查询请求或统计请求时,对压缩后的位图进行解压,将压缩后的位图中的数据还原,得到解压后的位图。由此终端就可以利用解压后的位图进行查询操作或统计操作。终端通过对位图进行压缩存储,需要运算时再进行解压,有效地减少了记录集的内存占用,从而提高了记录集的运算效率。
在一个实施例中,如图8所示,提供了一种记录集的存储处理装置,该装置包括:获取模块802、转换模块804和存储模块806,其中:
获取模块802,用于获取记录集,记录集包括多个字段名以及与字段名对应的字段值。
转换模块804,用于利用与字段名对应的字段值分别建立与字段名对应的位图,位图中包括多个位对象;将与字段名对应的字段值进行转换,生成与字段名对应的多个位对象的位值。
存储模块806,用于根据位对象将位值添加至对应的位图中,将多个添加位值后的位图进行存储。
在一个实施例中,转换模块还用于根据字段名获取对应的字段值对字段值进行去重处理,得到去重后的字段值;利用与字段名对应的去重后的字段值分别建立相应位图。
在一个实施例中,记录集还包括行标识;位值包括第一位值和第二位值;转换模块还用于根据行标识在记录集中获取与字段名对应的字段值;根据行标识在位图中将字段值与位对象进行比对;当与行标识对应的字段值与位对象相匹配时,将字段值转换为位对象对应的第一位值;当与行标识对应的字段值与位对象不匹配时,将字段值转换为位对象对应的第二位值。
在一个实施例中,该装置还包括查询模块,用于接收查询请求,查询请求中携带了一个或多个待查询字段名;获取待查询字段名在对应位图中对应的位对象;在位图中查询位对象对应的位值;对位对象对应的位值进行解析,得到与待查询字段名对应的字段值。
在一个实施例中,该装置还包括统计模块,用于接收统计请求,该统计请求中携带了一个或多个待统计字段名;获取待统计字段名在对应位图中对应的位对象;在位图中查询位对象对应的位值;对位对象对应的位值进行统计,得到与待统计字段名对应的统计数量。
在一个实施例中,该装置还包括计算模块,用于获取多个位图中位值的数据类型;根据数据类型对多个位图中的位值进行统计,得到位值的统计数量;利用数据类型与位值的统计数量计算记录集存储所需的字节数。
在一个实施例中,该装置还包括压缩模块,用于对添加位值后的位图进行压缩,将压缩后的位图进行存储;当接收到查询请求或统计请求时,对压缩后的位图进行解压;利用解压后的位图进行查询操作或者统计操作。
在一个实施例中,提供了一种计算机设备。该计算机设备可以是服务器,还可以是终端。当该计算机设备为终端时,其内部结构示意图可以如图9所示。该计算机设备包括通过系统总线连接的处理器、非易失性存储介质、内存储器和网络接口。其中,该计算机设备的处理器用于提供计算和控制能力,支撑整个终端的运行。该计算机设备的非易失性存储介质存储操作系统和计算机程序。该计算机设备的内存储器为非易失性存储介质中的计算机程序的运行提供环境,内存储器可用于存储数据库表、记录集和位值等信息。该计算机设备的网络接口用于据以接入网络与外部的终端通过网络连接通信,比如获取记录集等。该计算机程序被处理器执行时以实现一种记录集的存储处理方法。本领域技术人员可以理解,图9中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
在一个实施例中,提供了一种计算机设备,该计算机设备可以是服务器,也可以是终端。该计算机设备包括处理器和存储器,所述存储器存储有计算机程序,所述计算机程序被处理器执行时,可使得处理器执行如下步骤:获取记录集,记录集包括多个字段名以及与字段名对应的字段值;利用与字段名对应的字段值分别建立与字段名对应的位图,位图中包括多个位对象;将与字段名对应的字段值进行转换,生成与字段名对应的多个位对象的位值;根据位对象将位值添加至对应的位图中,将多个添加位值后的位图进行存储。
在一个实施例中,处理器执行计算机程序时还实现以下步骤:根据字段名获取对应的字段值;对字段值进行去重处理,得到去重后的字段值;利用与字段名对应的去重后的字段值分别建立相应的位图。
在一个实施例中,记录集还包括行标识;位值包括第一位值和第二位值;处理器执行计算机程序时还实现以下步骤:根据行标识在记录集中获取与字段名对应的字段值;根据行标识在位图中将字段值与位对象进行比对;当与行标识对应的字段值与位对象相匹配时,将字段值转换为位对象对应的第一位值;当与行标识对应的字段值与位对象不匹配时,将字段值转换为位对象对应的第二位值。
在一个实施例中,处理器执行计算机程序时还实现以下步骤:接收查询请求,查询请求中携带了一个或多个待查询字段名;获取待查询字段名在对应位图中对应的位对象;在位图中查询位对象对应的位值;对位对象对应的位值进行解析,得到与待查询字段名对应的字段值。
在一个实施例中,处理器执行计算机程序时还实现以下步骤:接收统计请求,统计请求中携带了一个或多个待统计字段名;获取待统计字段名在对应位图中对应的位对象;在位图中查询位对象对应的位值;对位对象对应的位值进行统计,得到与待统计字段名对应的统计数量。
在一个实施例中,处理器执行计算机程序时还实现以下步骤:获取多个位图中位值的数据类型;根据数据类型对多个位图中的位值进行统计,得到位值的统计数量;利用数据类型与位值的统计数量计算记录集存储所需的字节数。
在一个实施例中,处理器执行计算机程序时还实现以下步骤:对添加位值后的位图进行压缩,将压缩后的位图进行存储;当接收到查询请求或统计请求时,对压缩后的位图进行解压;利用解压后的位图进行查询操作或者统计操作。
在一个实施例中,提供了一种计算机可读存储介质,该计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时,可使得处理器执行如下步骤:获取记录集,记录集包括多个字段名以及与字段名对应的字段值;利用与字段名对应的字段值分别建立与字段名对应的位图,位图中包括多个位对象;将与字段名对应的字段值进行转换,生成与字段名对应的多个位对象的位值;根据位对象将位值添加至对应的位图中,将多个添加位值后的位图进行存储。
在一个实施例中,计算机程序被处理器执行时还实现以下步骤:根据字段名获取对应的字段值;对字段值进行去重处理,得到去重后的字段值;利用与字段名对应的去重后的字段值分别建立相应的位图。
在一个实施例中,记录集还包括行标识;位值包括第一位值和第二位值;计算机程序被处理器执行时还实现以下步骤:根据行标识在记录集中获取与字段名对应的字段值;根据行标识在位图中将字段值与位对象进行比对;当与行标识对应的字段值与位对象相匹配时,将字段值转换为位对象对应的第一位值;当与行标识对应的字段值与位对象不匹配时,将字段值转换为位对象对应的第二位值。
在一个实施例中,计算机程序被处理器执行时还实现以下步骤:接收查询请求,查询请求中携带了一个或多个待查询字段名;获取待查询字段名在对应位图中对应的位对象;在位图中查询位对象对应的位值;对位对象对应的位值进行解析,得到与待查询字段名对应的字段值。
在一个实施例中,计算机程序被处理器执行时还实现以下步骤:接收统计请求,统计请求中携带了一个或多个待统计字段名;获取待统计字段名在对应位图中对应的位对象;在位图中查询位对象对应的位值;对位对象对应的位值进行统计,得到与待统计字段名对应的统计数量。
在一个实施例中,计算机程序被处理器执行时还实现以下步骤:获取多个位图中位值的数据类型;根据数据类型对多个位图中的位值进行统计,得到位值的统计数量;利用数据类型与位值的统计数量计算记录集存储所需的字节数。
在一个实施例中,计算机程序被处理器执行时还实现以下步骤:对添加位值后的位图进行压缩,将压缩后的位图进行存储;当接收到查询请求或统计请求时,对压缩后的位图进行解压;利用解压后的位图进行查询操作或者统计操作。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,该计算机程序可存储于非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,前述的存储介质可为磁碟、光盘、只读存储记忆体 (Read-Only Memory,ROM)等。
以上所述实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本发明的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。因此,本发明专利的保护范围应以所附权利要求为准。
Claims (10)
1.一种记录集的存储处理方法,包括:
获取记录集,所述记录集包括多个字段名以及与所述字段名对应的字段值;所述字段名对应列的数据为字段值;
对各所述字段名对应列的数据进行去重处理,利用去重处理后的字段名以及对应的字段值,分别建立与各所述字段名对应的列式的位图,所述位图中包括多个位对象;各所述位对象与所述字段名所对应的各所述字段值相对应;并对各所述字段名对应的字段值的数据类型进行转换,生成与各所述字段值对应的位对象;各所述位对象的字节占用少于对应字段值的字节占用;
根据所述记录集的行标识获取与所述字段名对应的各所述字段值,根据所述行标识将各所述字段值与相应的位对象进行比对;以将与各所述字段名对应的字段值进行转换,生成相应位图中与各所述位对象对应的位值,并将所述位值添加至所述位图中对应的位对象的位置;所述位值用于表示所述记录集中各所述字段名对应列的数据;
当所述行标识的字段值与所述相应的位对象相匹配时,将所述字段值转换为所述位对象对应的第一位值;否则,将所述字段值转换为所述位对象对应的第二位值;
根据所述位对象将所述第一位值和所述第二位值添加至对应的位图中,分别生成与各所述字段名对应的列式的位图,并将所述记录集中的各所述字段名对应的位图分别进行列式存储;所述列式存储后的列式位图用于根据字段名在对应的位图中查询到相应位对象的位值;
当接收到查询请求时,获取待查询字段名在对应位图中对应的位对象;所述查询请求中携带了一个或多个待查询字段名;
根据所述待查询字段名在所述位图中按行进行遍历,以在所述位图中查询所述位对象对应的第一位值,并根据所述第一位值对应的行标识对所述位对象对应的第一位值进行解析,得到查询结果。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
接收统计请求,所述统计请求中携带了一个或多个待统计字段名;
获取所述待统计字段名在对应位图中对应的位对象;
在所述位图中查询所述位对象对应的位值;
对所述位对象对应的位值进行统计,得到与所述待统计字段名对应的统计数量。
3.根据权利要求1所述的方法,其特征在于,所述方法还包括:
获取多个位图中位值的数据类型;
根据所述数据类型对多个位图中的位值进行统计,得到位值的统计数量;
利用所述数据类型与所述位值的统计数量计算所述记录集存储所需的字节数。
4.根据权利要求1所述的方法,其特征在于,所述方法还包括:
对所述添加位值后的位图进行压缩,将压缩后的位图进行存储;
当接收到查询请求或统计请求时,对所述压缩后的位图进行解压;
利用所述解压后的位图进行查询操作或者统计操作。
5.一种记录集的存储处理装置,包括:
获取模块,用于获取记录集,所述记录集包括多个字段名以及与所述字段名对应的字段值;所述字段名对应列的数据为字段值;
转换模块,用于对各所述字段名对应列的数据进行去重处理,利用去重处理后的字段名以及对应的字段值,分别建立与各所述字段名对应的列式的位图,所述位图中包括多个位对象;各所述位对象与所述字段名所对应的各所述字段值相对应;并对各所述字段名对应的字段值的数据类型进行转换,生成与各所述字段值对应的位对象;各所述位对象的字节占用少于对应字段值的字节占用;根据所述记录集的行标识获取与所述字段名对应的各所述字段值,根据所述行标识将各所述字段值与相应的位对象进行比对;以将与各所述字段名对应的字段值进行转换,生成相应位图中与各所述位对象对应的位值,并将所述位值添加至所述位图中对应的位对象的位置;所述位值用于表示所述记录集中各所述字段名对应列的数据;当所述行标识的字段值与所述相应的位对象相匹配时,将所述字段值转换为所述位对象对应的第一位值;否则,将所述字段值转换为所述位对象对应的第二位值;
存储模块,用于根据所述位对象将所述第一位值和所述第二位值添加至对应的位图中,分别生成与各所述字段名对应的列式的位图,并将所述记录集中的各所述字段名对应的位图分别进行列式存储;所述列式存储后的列式位图用于根据字段名在对应的位图中查询到相应位对象的位值;
查询模块,用于当接收到查询请求时,获取待查询字段名在对应位图中对应的位对象;所述查询请求中携带了一个或多个待查询字段名;根据所述待查询字段名在所述位图中按行进行遍历,以在所述位图中查询所述位对象对应的第一位值,并根据所述第一位值对应的行标识对所述位对象对应的第一位值进行解析,得到查询结果。
6.根据权利要求5所述的装置,其特征在于,所述装置还包括统计模块,用于接收统计请求,所述统计请求中携带了一个或多个待统计字段名;获取所述待统计字段名在对应位图中对应的位对象;在所述位图中查询所述位对象对应的位值;对所述位对象对应的位值进行统计,得到与所述待统计字段名对应的统计数量。
7.根据权利要求5所述的装置,其特征在于,所述装置还包括计算模块,用于获取多个位图中位值的数据类型;根据所述数据类型对多个位图中的位值进行统计,得到位值的统计数量;利用所述数据类型与所述位值的统计数量计算所述记录集存储所需的字节数。
8.根据权利要求5所述的装置,其特征在于,所述装置还包括压缩模块,用于对所述添加位值后的位图进行压缩,将压缩后的位图进行存储;当接收到查询请求或统计请求时,对所述压缩后的位图进行解压;利用所述解压后的位图进行查询操作或者统计操作。
9.一种计算机设备,包括存储器、处理器以及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述理器执行所述程序时实现权利要求1至4中任一项所述方法的步骤。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现权利要求1至4中任一项所述方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711405770.4A CN108228759B (zh) | 2017-12-22 | 2017-12-22 | 记录集的存储处理方法、装置、计算机设备和存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711405770.4A CN108228759B (zh) | 2017-12-22 | 2017-12-22 | 记录集的存储处理方法、装置、计算机设备和存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108228759A CN108228759A (zh) | 2018-06-29 |
CN108228759B true CN108228759B (zh) | 2021-07-27 |
Family
ID=62647754
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201711405770.4A Active CN108228759B (zh) | 2017-12-22 | 2017-12-22 | 记录集的存储处理方法、装置、计算机设备和存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108228759B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110825927A (zh) * | 2019-11-27 | 2020-02-21 | 北京奇艺世纪科技有限公司 | 数据查询方法、装置、电子设备及计算机可读存储介质 |
CN115658728B (zh) * | 2022-11-16 | 2023-06-13 | 荣耀终端有限公司 | 一种查询方法、电子设备及存储介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101968806A (zh) * | 2010-10-22 | 2011-02-09 | 天津南大通用数据技术有限公司 | 数据存储方法、查询方法及装置 |
JP4810915B2 (ja) * | 2005-07-28 | 2011-11-09 | 日本電気株式会社 | データ検索装置及び方法、並びにコンピュータ・プログラム |
CN102253980A (zh) * | 2011-06-23 | 2011-11-23 | 上海西本网络科技有限公司 | 数据处理方法及数据处理系统 |
CN106844662A (zh) * | 2017-01-23 | 2017-06-13 | 北京奇虎科技有限公司 | 即时消息阅读状态的记录方法及装置 |
WO2017166759A1 (zh) * | 2016-04-01 | 2017-10-05 | 乐视控股(北京)有限公司 | 缓存管理方法、装置、移动终端和电子设备 |
-
2017
- 2017-12-22 CN CN201711405770.4A patent/CN108228759B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP4810915B2 (ja) * | 2005-07-28 | 2011-11-09 | 日本電気株式会社 | データ検索装置及び方法、並びにコンピュータ・プログラム |
CN101968806A (zh) * | 2010-10-22 | 2011-02-09 | 天津南大通用数据技术有限公司 | 数据存储方法、查询方法及装置 |
CN102253980A (zh) * | 2011-06-23 | 2011-11-23 | 上海西本网络科技有限公司 | 数据处理方法及数据处理系统 |
WO2017166759A1 (zh) * | 2016-04-01 | 2017-10-05 | 乐视控股(北京)有限公司 | 缓存管理方法、装置、移动终端和电子设备 |
CN106844662A (zh) * | 2017-01-23 | 2017-06-13 | 北京奇虎科技有限公司 | 即时消息阅读状态的记录方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN108228759A (zh) | 2018-06-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110147722A (zh) | 一种视频处理方法、视频处理装置及终端设备 | |
KR102021057B1 (ko) | 문서 내 문단 추출 장치 및 방법 | |
US11030050B2 (en) | Method and device of archiving database and method and device of retrieving archived database | |
CN106897280B (zh) | 数据查询方法及装置 | |
CN108228759B (zh) | 记录集的存储处理方法、装置、计算机设备和存储介质 | |
CN112463784A (zh) | 数据去重方法、装置、设备及计算机可读存储介质 | |
US20190034466A1 (en) | Database archiving method and device for creating index information and method and device of retrieving archived database including index information | |
CN114139040A (zh) | 一种数据存储及查询方法、装置、设备及可读存储介质 | |
CN113159211A (zh) | 用于相似图像检索的方法、计算设备和计算机存储介质 | |
CN116821053A (zh) | 数据上报方法、装置、计算机设备和存储介质 | |
CN106708876B (zh) | 一种基于Lucene的相似视频检索方法及系统 | |
CN110032432A (zh) | 实例的压缩方法和装置、实例的解压方法和装置 | |
CN115422142B (zh) | 数据压缩方法及装置 | |
CN106874498B (zh) | 一种金融数据的存取方法及存取装置 | |
CN113315793B (zh) | 基于智能压缩的数据传输方法、装置、设备及介质 | |
CN115794788A (zh) | 数据去重方法、装置、设备及存储介质 | |
CN113760849B (zh) | 日志处理方法、系统、电子设备及计算机可读存储介质 | |
CN105530011A (zh) | 一种基于三角形统计的图数据压缩方法和查询方法 | |
CN112054805B (zh) | 一种模型数据压缩方法、系统及相关设备 | |
CN115295164A (zh) | 医保数据的处理方法、装置、电子设备和存储介质 | |
CN111163053B (zh) | 一种恶意url检测方法及系统 | |
CN103631797A (zh) | 用于数据列表的操作方法和装置 | |
CN115510051A (zh) | 数据处理方法、查询方法、装置及电子设备 | |
CN116054840B (zh) | 一种json字符串数据压缩方法、装置及存储介质 | |
US12032578B1 (en) | Data compression, store, and search system |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |