CN109033271B - 基于列存储的数据***方法、装置、服务器及存储介质 - Google Patents
基于列存储的数据***方法、装置、服务器及存储介质 Download PDFInfo
- Publication number
- CN109033271B CN109033271B CN201810749909.5A CN201810749909A CN109033271B CN 109033271 B CN109033271 B CN 109033271B CN 201810749909 A CN201810749909 A CN 201810749909A CN 109033271 B CN109033271 B CN 109033271B
- Authority
- CN
- China
- Prior art keywords
- data
- preset
- column
- auxiliary
- rows
- 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
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了基于列存储的数据***方法、装置、服务器及存储介质,涉及数据库领域,该方法包括:获取列存储表的待***数据;获取列存储表对应的***辅助表中的数据;若待***数据和***辅助表中的数据总行数小于预设行数,则将待***数据***到***辅助表中;若待***数据和***辅助表中的数据的总行数大于或等于预设行数,则将***辅助表中的数据和待***数据按照预设行数将每一列存储为一个或多个数据区,并清空***辅助表,将剩余的数据存储到***辅助表中;将一个或多个数据区保存为列存储表的数据文件,将获取的每个数据区的控制信息和统计信息,***到列存储表对应的列存储辅助表中。本发明采用上述技术方案,提高了列存储表的数据***效率。
Description
技术领域
本发明实施例涉及数据库技术,尤其涉及一种基于列存储的数据***方法、装置、服务器及存储介质。
背景技术
为了提高数据查询性能,用列存储方式存储数据的方法应运而生。列存储表的查询性能固然优于行存储表,但是相反地,列存储表的***性能要低于行存储表。
列存储表的基础思想是把表中的数据按照以列为单位进行存储,一行的数据存储的物理位置不是连续的,因此当频繁单行(或少行)***时,列存储表的性能会很差。
发明内容
有鉴于此,本发明实施例提供一种基于列存储的数据***方法、装置、服务器及存储介质,以解决频繁***小数据时操作繁琐的问题。
第一方面,本发明实施例提供了一种基于列存储的数据***方法,所述方法包括:
获取列存储表的待***数据;
根据所述待***数据,获取所述列存储表对应的***辅助表中的数据,所述***辅助表用于记录小于预设行数的***数据;
若所述待***数据和所述***辅助表中的数据的总行数小于所述预设行数,则将所述待***数据***到所述***辅助表中;
若所述待***数据和所述***辅助表中的数据的总行数大于或等于所述预设行数,则将所述***辅助表中的数据和所述待***数据按照预设行数将每一列存储为一个或多个数据区,并清空所述***辅助表,将所述待***数据中剩余的数据存储到所述***辅助表中;
将所述一个或多个数据区保存为所述列存储表的数据文件,获取每个数据区的控制信息和统计信息,并将每个数据区的控制信息和统计信息***到所述列存储表对应的列存储辅助表中。
第二方面,本发明实施例还提供了一种基于列存储的数据***装置,所述装置包括:
第一数据获取模块,用于获取列存储表的待***数据;
第二数据获取模块,用于根据所述待***数据,获取所述列存储表对应的***辅助表中的数据,所述***辅助表用于记录小于预设行数的***数据;
数据***模块,用于若所述待***数据和所述***辅助表中的数据的总行数小于所述预设行数,则将所述待***数据***到所述***辅助表中;
数据存储模块,用于若所述待***数据和所述***辅助表中的数据的总行数大于或等于所述预设行数时,则将所述***辅助表中的数据和所述待***数据按照预设行数将每一列存储为一个或多个数据区,并清空所述***辅助表,将所述待***数据中剩余的数据存储到所述***辅助表中;
文件保存模块,用于将所述一个或多个数据区保存为所述列存储表的数据文件;获取每个数据区的控制信息和统计信息;将每个数据区的控制信息和统计信息***到所述列存储表对应的列存储辅助表中。
第三方面,本发明实施例还提供了一种服务器,包括;
一个或多个处理器;
存储装置,用于存储一个或多个程序;
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现本发明任一实施例所述的基于列存储的数据***方法。
第四方面,本发明实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现如本发明实施例中任一所述的基于列存储的数据***方法。
本发明实施例提供的技术方案,在对数据进行***时,通过判断待***数据以及***辅助表的总行数与预设行数的大小关系来确定数据的***规则。当待***数据以及***辅助表的总行数小于预设行数时,将待***数据直接存储在***辅助表中,否则将待***数据与***辅助表中的数据进行分区存储。解决了对基于列存储的数据进行***时对数据文件频繁读写的问题,减小了IO,进而提升了数据***效率的效果。
附图说明
图1是本发明实施例一提供的基于列存储的数据***方法的流程图;
图2是本发明实施例二提供的基于列存储的数据***方法的流程图;
图3是本发明实施例三提供的基于列存储的数据***方法的流程图;
图4是本发明实施例四提供的基于列存储的数据***装置的结构示意图。
图5是本发明实施例五提供的一种服务器的结构示意图。
具体实施方式
下面结合附图和实施例对本发明作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释本发明,而非对本发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本发明相关的部分而非全部内容。
实施例一
图1是本发明实施例一提供的基于列存储的数据***方法的流程图,本实施例可适用于数据******,该方法可以由数据***装置来执行,如图1所示,本实施例提供的技术方案具体包括如下步骤:
步骤110,获取列存储表的待***数据。
列存储就是把数据以列为单位进行存储,其具体存储规则和管理实现方式会直接决定列存储表的操作效率。用户需要***的数据即待***数据,指定了要***的列存储表。
本申请实施例中的待***数据可以是任意需要***的数据对象,示例性地,可以是学生数据对象,其中,学生数据对象通常包含学生的姓名、性别、学号、年龄、年级等字段,或是老师数据对象,其中,老师数据对象通常包含姓名、年龄、教龄、薪资等字段。
步骤120,根据所述待***数据,获取所述列存储表对应的***辅助表中的数据,所述***辅助表用于记录小于预设行数的***数据。
本实施例中,预设行数是预先设定的行数,列存储表是原始数据表的每一列数据按照预设行数进行分区存储,这样的区称为数据区,预设行数也称为区大小。
可选的,***辅助表的结构为行存储的形式,用于缓存向列存储表***的数据,且缓存的数据的行数小于列存储表中的数据区的区大小。当***辅助表中的数据行数达到区大小时,把***辅助表中的数据以列为单位写入每个列对应的数据文件,然后清空***辅助表。其中,所述待***数据为行存储数据,所述***辅助表的结构和所述待***数据的结构相同。
本实施例使得频繁小数据量的***先把数据***到***辅助表中,等到***辅助表中的数据行数达到区大小时再写入到数据文件中,避免对数据文件频繁的读写,减小了IO,提升了效率。
在获取到待***数据时,首先获取列存储表对应的***辅助表中的数据,因为***辅助表中的数据比待***数据的***时间要早,这时需要判断***辅助表中的数据和待***数据的总行数是否小于预设行数。
步骤130,判断所述待***数据和所述***辅助表中的数据的总行数是否小于所述预设行数,如果是则执行步骤140,如果否则执行步骤150。
步骤140,将所述待***数据***到所述***辅助表中;
在得到用户待***的数据和***辅助表中的数据后,比较所述待***数据和所述***辅助表中的数据的总行数与预设行数的大小,如果所述待***数据和所述***辅助表中的数据的总行数小于预设行数,则将待***的数据直接存储在***辅助表中。
示例性地,若预设行数为10,待***数据的行数为5,数据***前***辅助表中无数据。由于5+0<10,则直接将数据***到***辅助表中。
示例性地,预设行数为10,待***数据的行数为5,数据***前***辅助表中的数据行数为4。由于5+4<10,则将数据直接***到***辅助表中。
步骤150,将所述***辅助表中的数据和所述待***数据按照预设行数将每一列存储为一个或多个数据区,并清空所述***辅助表,将所述待***数据中剩余的数据存储到所述***辅助表中。
若经过比较得出所述待***数据和所述***辅助表中的数据的总行数大于或等于预设行数,则将***辅助表中的数据与待***数据按照先后顺序组成的数据作为新的待***数据,将新的待***数据按照预设行数将每一列存储为一个或多个数据区,并将其存储在相应的数据文件中,将剩余的数据存储在***辅助表中。
示例性地,预设行数为10,待***数据的行数为5,数据***前***辅助表中的数据行数为8。由于5+8>10,则将***辅助表中的8行数据和待***数据的前2行数据按照每一列分别存储为一个数据区,带***数据中剩余的3行数据存储在***辅助表中。
步骤160,将所述一个或多个数据区保存为所述列存储表的数据文件,获取每个数据区的控制信息和统计信息,并将每个数据区的控制信息和统计信息***到所述列存储表对应的列存储辅助表中。
可选的,同一个数据区中的数据存储在同一个数据文件中,一个数据文件可以存储一到多个数据区。每个数据区的控制信息和统计信息会生成相应的列存储辅助表记录,将该记录***到列存储辅助表中。列存储辅助表用于记录每个列的每个数据区在数据文件中的偏移地址和数据长度等控制信息,以及每个区中存储的列值的最大值和最小值等统计信息。
可选的,列存储辅助表的结构如下:
表1列存储辅助表结构
下面对上述列存储表的结构进行解释说明:
1)列号:该列在创建表时表定义中对应的序号;
2)区号:不同的数据区会有不同的编号,数据区所对应的编号为区号;
3)文件号:数据文件所对应的文件编号;
4)文件中的偏移:当前数据区在数据文件中的偏移字节,例如,若三个数据区保存到同一个数据文件中,则第一个数据区的文件中的偏移为0,第二个数据区的文件中的偏移为第一个数据区占用的数据空间,第三个数据区的文件中的偏移为第一个和第二个数据区占用的数据空间。
5)区大小:数据区所能存储数据的总行数,是用户预先设定的;
6)区内有效数据行数:去除删除数据后数据区中数据的行数;
7)数据占用空间大小:数据存储所占用的字节数;
8)包括的空(NULL)值的行数:数据区中的数据中空值所占的行数;
9)所有数据互不相同的行数:列存储表中所存储的数据中互不相同的数据所占的行数;
10)区内最大值:数据区中的最大数据值;
11)区内最小值:数据区中的最小数据值;
12)区内所有值的和:数据区内所有数据值得总和。
其中,列存储辅助表中的列号、区号、文件号、数据占用空间大小、文件中的偏移为控制信息;区内最大值、区内最小值、区内所有值的和、区大小、区内有效数据行数、包括的空值的行数及所有数据互不相同的行数为统计信息。
本发明实施例提供的技术方案,在对数据进行***时,通过判断待***数据和***辅助表中的数据的总行数与所述预设行数的大小关系来确定数据的具体***规则。当***辅助表中的数据行数达到数据区大小时,按照预设行数将每一列存储为一个或多个数据区,并将其存储在相应的数据文件中,清空***辅助表中的数据,将剩余的数据存储在***辅助表中将数据,解决了对基于列存储的数据进行***时对数据文件频繁读写的问题,减小了IO,提升了数据***效率。
在上述技术方案的基础上,还可选包括:
在预设时间,将所述***辅助表中的数据写入所述列存储表的数据文件,并清空所述***辅助表。
其中,所述预设时间用户可以根据需要进行设置,如可以设置为***较为空闲的时间,如每天的凌晨3点,或者是每周日的凌晨3点。
通过在到达预设时间时,将***辅助表中的数据写入列存储表的数据文件,可以避免***辅助表数据膨胀的问题,提高数据的查询效率。
实施例二
图2给出了本发明实施例二提供的一种基于列存储的数据***方法的流程图。本实施例以上述实施例为基础,提供一种优选的实施例,未在本实施例中详尽描述的细节参见上述实施例一。如图2所示,本实施例提供的一种基于列存储的数据***的方法,包括以下步骤:
步骤210,获取列存储表的待***数据。
步骤220,根据所述待***数据,获取所述列存储表对应的***辅助表中的数据,所述***辅助表用于记录小于预设行数的***数据。
步骤230,判断所述待***数据和所述***辅助表中的数据的总行数是否小于所述预设行数,如果是则执行步骤240,如果否则执行步骤250。
步骤240,将所述待***数据***到所述***辅助表中。
步骤250,判断所述***辅助表中的数据是否为空,如果是则执行步骤260,如果否则执行步骤270。
步骤260,将所述待***数据中的前面整数倍所述预设行数的数据按照每一列存储为数量为所述整数倍且行数为所述预设行数的数据区,将所述待***数据中剩余的数据存储到所述***辅助表中,之后执行步骤280。
示例性地,若预设行数为3,待***数据的行数为8,数据***前***辅助表中无数据。由于8+0>3,则提取出待***数据中前2倍预设行数的数据,即6行,按照每个列生成2个数据区,且数据区的行数为3,并将取出的数据存储在对应的数据文件中,将待***数据中剩余的2行数据存储到所述***辅助表中。
步骤270,提取所述***数据表中的数据及所述待***数据中前面的数据组成整数倍预设行数的数据,按照每一列存储为数量为该整数倍且行数为所述预设行数的数据区,清空所述***辅助表,将所述待***数据中的剩余数据***到所述***辅助表中,之后执行步骤280。
示例性地,若预设行数为3,待***数据的行数为8,数据***前***辅助表中的数据行数为2。由于8+2>3,则取出***辅助表和待***数据中3倍预设行数的数据,即9行,按照每个列生成3个数据区,且数据区的行数为3,并将取出的数据存储在对应的数据文件中,将待***数据中剩余的1行数据存储到所述***辅助表中。
步骤280,将所述一个或多个数据区保存为所述列存储表的数据文件,获取每个数据区的控制信息和统计信息,并将每个数据区的控制信息和统计信息***到所述列存储表对应的列存储辅助表中。
本发明实施例提供的技术方案,在对数据进行***时,通过判断所述待***数据和所述***辅助表中的数据的总行数与所述预设行数的大小关系,来确定数据的***规则。当待***数据和***辅助表中的数据总行数超过整数倍预设行数时,将数据按照每一列存储为数量为整数倍且行数为所述预设行数的数据区并将其写入到数据文件中,清空***辅助表中的数据,将剩余的数据存储在***辅助表中将数据。解决了对数据文件频繁读写的问题,减小了IO,提升了数据***效率。
实施例三
图3给出了本发明实施例三提供的一种基于列存储的数据***方法的流程图。本实施例以上述实施例二为基础,提供一种优选的实施例,未在本实施例中详尽描述的细节参见上述实施例二。如图3所示,本实施例提供的一种基于列存储的数据***的方法,包括以下步骤:
步骤301,获取列存储表的待***数据。
步骤302,根据所述待***数据,获取所述列存储表对应的***辅助表中的数据,所述***辅助表用于记录小于预设行数的***数据。
步骤303,判断所述待***数据和所述***辅助表中的数据的总行数小于所述预设行数,如果是则执行步骤304,如果否则执行步骤305。
步骤304,将所述待***数据***到所述***辅助表中。
步骤305,判断所述***辅助表中的数据是否为空,如果是则执行步骤306,如果否则执行步骤307。
步骤306,将所述待***数据中的前面整数倍所述预设行数的数据按照每一列存储为数量为所述整数倍且行数为所述预设行数的数据区,将所述待***数据中剩余的数据存储到所述***辅助表中,之后执行步骤310。
步骤307,判断所述***数据表中的数据和所述待***数据的总行数是否小于两倍的所述预设行数,如果是,则执行步骤308,如果否则执行步骤309。
步骤308,提取所述***辅助表中的数据和所述待***数据中的前面的数据组成预设行数的数据,按照每一列存储为一个数据区,清空所述***辅助表,将所述待***数据中的剩余数据***到所述***辅助表中,之后执行步骤310。
示例性地,若预设行数为6,待***数据的行数为8,数据***前***辅助表中的数据行数为2,由于12>8+2>6,则取出***辅助表中的数据和待***数据中前4行数据,组成6行数据,按照每个列生成1个数据区,并将其存储在对应的数据文件中,清空***辅助表,并将待***数据中剩余的4行数据存储到所述***辅助表中。
步骤309,提取所述***辅助表中的数据和所述待***数据中的前面的数据组成预设行数的数据,按照每一列存储为一个数据区,将所述待***数据中剩余整数倍所述预设行数的数据按照每一列存储为数量为该剩余整数倍且行数为所述预设行数的数据区,清空所述***辅助表,将所述待***数据中的剩余数据***到所述***辅助表中,之后执行步骤310。
示例性地,若预设行数为4,待***数据的行数为15,数据***前***辅助表中的数据行数为2。由于15+2>(4*2),则取出***辅助表中的数据和待***数据中前2行数据,组成4行数据,按照每个列生成1个数据区,并将其存储在对应的数据文件中,待***数据中剩余的13行数据中还包括3倍的预设行数的数据,即12行数据,每一列存储为数量为3且行数为4的数据区,从而每一列存储为了数量为4的数据区,并将其存储在对应的数据文件中,清空***辅助表,并将剩余的1行数据***到***辅助表中。
步骤310,将所述一个或多个数据区保存为所述列存储表的数据文件,获取每个数据区的控制信息和统计信息,并将每个数据区的控制信息和统计信息***到所述列存储表对应的列存储辅助表中。
本发明实施例提供的技术方案,在对数据进行***时,通过判断所述待***数据和所述***辅助表中的数据的总行数与两倍的所述预设行数的大小关系,来确定数据的***规则。当所述***数据表中的数据和所述待***数据的总行数小于两倍的所述预设行数时,提取所述***辅助表中的数据和所述待***数据中的前面的数据组成预设行数的数据,按照每一列存储为一个数据区;否则提取所述***辅助表中的数据和所述待***数据中的前面的数据组成预设行数的数据,按照每一列存储为一个数据区,将所述待***数据中剩余整数倍所述预设行数的数据按照每一列存储为数量为该剩余整数倍且行数为所述预设行数的数据区。然后清空所述***辅助表,将所述待***数据中的剩余数据***到所述***辅助表中。解决了对数据文件频繁读写的问题,减小了IO,提升了数据***效率。
实施例四
图4是本发明实施例四提供的一种基于列存储的数据***装置的流程图,所述装置用于执行基于列存储的数据***方法。如图4所示,所述装置包括第一数据获取模块410、第二数据获取模块420、数据***模块430、数据存储模块440以及文件保存模块450。
其中,第一数据获取模块410,用于获取列存储表的待***数据;
第二数据获取模块420,用于根据所述待***数据,获取所述列存储表对应的***辅助表中的数据,所述***辅助表用于记录小于预设行数的***数据;
数据***模块430,用于若所述待***数据和所述***辅助表中的数据的总行数小于所述预设行数,则将所述待***数据***到所述***辅助表中;
数据存储模块440,用于若所述待***数据和所述***辅助表中的数据的总行数大于或等于所述预设行数时,则将所述***辅助表中的数据和所述待***数据按照预设行数将每一列存储为一个或多个数据区,并清空所述***辅助表,将所述待***数据中剩余的数据存储到所述***辅助表中;
文件保存模块450,用于将所述一个或多个数据区保存为所述列存储表的数据文件;获取每个数据区的控制信息和统计信息;将每个数据区的控制信息和统计信息***到所述列存储表对应的列存储辅助表中。
进一步的,所述数据存储模块包括:
第一数据存储单元,用于若所述***辅助表中的数据为空,则将所述待***数据中的前面整数倍所述预设行数的数据按照每一列存储为数量为所述整数倍且行数为所述预设行数的数据区,将所述待***数据中剩余的数据存储到所述***辅助表中;
第二数据存储单元,用于若所述***辅助表中的数据不为空,则提取所述***数据表中的数据及所述待***数据中前面的数据组成整数倍预设行数的数据,按照每一列存储为数量为该整数倍且行数为所述预设行数的数据区,清空所述***辅助表,将所述待***数据中的剩余数据***到所述***辅助表中。
进一步的,所述第二数据存储单元具体用于:
若所述***数据表中的数据和所述待***数据的总行数大于或等于所述预设行数且小于两倍的所述预设行数,则提取所述***辅助表中的数据和所述待***数据中的前面的数据组成预设行数的数据,按照每一列存储为一个数据区;
若所述***数据表中的数据和所述待***数据的总行数大于两倍的所述预设行数,提取所述***辅助表中的数据和所述待***数据中的前面的数据组成预设行数的数据,按照每一列存储为一个数据区,将所述待***数据中剩余整数倍所述预设行数的数据按照每一列存储为数量为该整数倍且行数为所述预设行数的数据区。
进一步的,所述待***数据为行存储数据,所述***辅助表的结构和所述待***数据的结构相同。
进一步的,还包括:
***表重整模块,用于在预设时间,将所述***辅助表中的数据写入所述列存储表的数据文件,并清空所述***辅助表。
上述基于列存储的数据***装置可执行本发明任意实施例所提供的基于列存储的数据***方法,具备执行方法相应的功能模块和有益效果。未在本实施例中详尽描述的技术细节,可参见本发明任意实施例提供的基于列存储的数据***方法。
实施例五
本发明实施例五提供了一种服务器,集成了本发明任意实施例所提供基于列存储的数据***装置。具体的,如图5所示,本发明实施例提供一种服务器,该服务器包括:
一个或者多个处理器510,图5中以一个处理器510为例;
存储器520;以及一个或者多个模块。
所述服务器还可以包括:输入装置530和输出装置540。所述终端中的处理器510、存储器520、输入装置530和输出装置540可以通过总线或其他方式连接,图5中以通过总线连接为例。
存储器520作为一种计算机可读存储介质,可用于存储软件程序、计算机可执行程序以及模块,如本发明实施例中的基于列存储的数据***方法对应的程序指令/模块(例如,附图4所示的第一获取模块410、第二获取模块420、第一***模块430以及第二***模块440)。处理器510通过运行存储在存储器520中的软件程序、指令以及模块,从而执行终端的各种功能应用以及数据处理,即实现上述方法实施例中的基于列存储的数据***方法。
存储器520可包括存储程序区和存储数据区,其中,存储程序区可存储操作***、至少一个功能所需的应用程序;存储数据区可存储根据终端的使用所创建的数据等。此外,存储器520可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他非易失性固态存储器件。在一些实例中,存储器520可进一步包括相对于处理器510远程设置的存储器,这些远程存储器可以通过网络连接至终端。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
输入装置530可用于接收输入的数字或字符信息,以及产生与终端的用户设置以及功能控制有关的键信号输入。输出装置540可包括显示屏等显示设备。
上述终端可执行本发明任意实施例所提供的基于列存储的数据***方法,具备执行方法相应的功能模块和有益效果。
实施例六
本发明实施例六还提供了一种存储介质,其上存储有计算机程序,该程序被处理器执行时实现如本申请所有发明实施例提供的基于列存储的数据查询方法:
也即,该程序被处理器执行时实现:
获取列存储表的待***数据;
根据所述待***数据,获取所述列存储表对应的***辅助表中的数据,所述***辅助表用于记录小于预设行数的***数据;
若所述待***数据和所述***辅助表中的数据的总行数小于所述预设行数,则将所述待***数据***到所述***辅助表中;
若所述待***数据和所述***辅助表中的数据的总行数大于或等于所述预设行数,则将所述***辅助表中的数据和所述待***数据按照预设行数将每一列存储为一个或多个数据区,并清空所述***辅助表,将所述待***数据中剩余的数据存储到所述***辅助表中;
将所述一个或多个数据区保存为所述列存储表的数据文件,获取每个数据区的控制信息和统计信息,并将每个数据区的控制信息和统计信息***到所述列存储表对应的列存储辅助表中。
可以采用一个或多个计算机可读的介质的任意组合。计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的***、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本文件中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行***、装置或者器件使用或者与其结合使用。
计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括——但不限于——电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行***、装置或者器件使用或者与其结合使用的程序。
计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括——但不限于——无线、电线、光缆、RF等等,或者上述的任意合适的组合。
可以以一种或多种程序设计语言或其组合来编写用于执行本发明操作的计算机程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如Java、Smalltalk、C++,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络——包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
注意,上述仅为本发明的较佳实施例及所运用技术原理。本领域技术人员会理解,本发明不限于这里所述的特定实施例,对本领域技术人员来说能够进行各种明显的变化、重新调整和替代而不会脱离本发明的保护范围。因此,虽然通过以上实施例对本发明进行了较为详细的说明,但是本发明不仅仅限于以上实施例,在不脱离本发明构思的情况下,还可以包括更多其他等效实施例,而本发明的范围由所附的权利要求范围决定。
Claims (9)
1.一种基于列存储的数据***方法,其特征在于,所述方法包括:
获取列存储表的待***数据;
根据所述待***数据,获取所述列存储表对应的***辅助表中的数据,所述***辅助表用于记录小于预设行数的***数据;
若所述待***数据和所述***辅助表中的数据的总行数小于所述预设行数,则将所述待***数据***到所述***辅助表中;
若所述待***数据和所述***辅助表中的数据的总行数大于或等于所述预设行数,则将所述***辅助表中的数据和所述待***数据按照预设行数将每一列存储为一个或多个数据区,并清空所述***辅助表,将所述待***数据中剩余的数据存储到所述***辅助表中;
将所述一个或多个数据区保存为所述列存储表的数据文件,获取每个数据区的控制信息和统计信息,并将每个数据区的控制信息和统计信息***到所述列存储表对应的列存储辅助表中;
其中,所述待***数据为行存储数据,所述***辅助表的结构和所述待***数据的结构相同。
2.根据权利要求1所述的方法,其特征在于,若所述待***数据和所述***辅助表中的数据的总行数大于或等于所述预设行数,则将所述***辅助表中的数据和所述待***数据按照预设行数将每一列存储为一个或多个数据区,并清空所述***辅助表,将所述待***数据中剩余的数据存储到所述***辅助表中,包括:
若所述***辅助表中的数据为空,则将所述待***数据中的前面整数倍所述预设行数的数据按照每一列存储为数量为所述整数倍且行数为所述预设行数的数据区,将所述待***数据中剩余的数据存储到所述***辅助表中;
若所述***辅助表中的数据不为空,则提取所述***数据表中的数据及所述待***数据中前面的数据组成整数倍预设行数的数据,按照每一列存储为数量为该整数倍且行数为所述预设行数的数据区,清空所述***辅助表,将所述待***数据中的剩余数据***到所述***辅助表中。
3.根据权利要求2所述的方法,其特征在于,提取所述***数据表中的数据及所述待***数据中前面的数据组成整数倍预设行数的数据,按照每一列存储为数量为该整数倍且行数为所述预设行数的数据区,包括:
若所述***数据表中的数据和所述待***数据的总行数大于或等于所述预设行数且小于两倍的所述预设行数,则提取所述***辅助表中的数据和所述待***数据中的前面的数据组成预设行数的数据,按照每一列存储为一个数据区;
若所述***数据表中的数据和所述待***数据的总行数大于或等于两倍的所述预设行数,提取所述***辅助表中的数据和所述待***数据中的前面的数据组成预设行数的数据,按照每一列存储为一个数据区,将所述待***数据中剩余整数倍所述预设行数的数据按照每一列存储为数量为该剩余整数倍且行数为所述预设行数的数据区。
4.根据权利要求1所述的方法,其特征在于,还包括:
在预设时间,将所述***辅助表中的数据写入所述列存储表的数据文件,并清空所述***辅助表。
5.一种基于列存储的数据***装置,其特征在于,所述装置包括:
第一数据获取模块,用于获取列存储表的待***数据;
第二数据获取模块,用于根据所述待***数据,获取所述列存储表对应的***辅助表中的数据,所述***辅助表用于记录小于预设行数的***数据;
数据***模块,用于若所述待***数据和所述***辅助表中的数据的总行数小于所述预设行数,则将所述待***数据***到所述***辅助表中;
数据存储模块,用于若所述待***数据和所述***辅助表中的数据的总行数大于或等于所述预设行数时,则将所述***辅助表中的数据和所述待***数据按照预设行数将每一列存储为一个或多个数据区,并清空所述***辅助表,将所述待***数据中剩余的数据存储到所述***辅助表中;
文件保存模块,用于将所述一个或多个数据区保存为所述列存储表的数据文件;获取每个数据区的控制信息和统计信息;将每个数据区的控制信息和统计信息***到所述列存储表对应的列存储辅助表中;
其中,所述待***数据为行存储数据,所述***辅助表的结构和所述待***数据的结构相同。
6.根据权利要求5所述的装置,其特征在于,所述数据存储模块包括:
第一数据存储单元,用于若所述***辅助表中的数据为空,则将所述待***数据中的前面整数倍所述预设行数的数据按照每一列存储为数量为所述整数倍且行数为所述预设行数的数据区,将所述待***数据中剩余的数据存储到所述***辅助表中;
第二数据存储单元,用于若所述***辅助表中的数据不为空,则提取所述***数据表中的数据及所述待***数据中前面的数据组成整数倍预设行数的数据,按照每一列存储为数量为该整数倍且行数为所述预设行数的数据区,清空所述***辅助表,将所述待***数据中的剩余数据***到所述***辅助表中。
7.根据权利要求6所述的装置,其特征在于,所述第二数据存储单元具体用于:
若所述***数据表中的数据和所述待***数据的总行数大于或等于所述预设行数且小于两倍的所述预设行数,则提取所述***辅助表中的数据和所述待***数据中的前面的数据组成预设行数的数据,按照每一列存储为一个数据区;
若所述***数据表中的数据和所述待***数据的总行数大于两倍的所述预设行数,提取所述***辅助表中的数据和所述待***数据中的前面的数据组成预设行数的数据,按照每一列存储为一个数据区,将所述待***数据中剩余整数倍所述预设行数的数据按照每一列存储为数量为该整数倍且行数为所述预设行数的数据区。
8.一种服务器,其特征在于,所述服务器包括:
一个或多个处理器;
存储装置,用于存储一个或多个程序;
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如权利要求1-4中任一所述的基于列存储的数据***方法。
9.一种计算机存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现如权利要求1-4中任一所述的基于列存储的数据***方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810749909.5A CN109033271B (zh) | 2018-07-10 | 2018-07-10 | 基于列存储的数据***方法、装置、服务器及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810749909.5A CN109033271B (zh) | 2018-07-10 | 2018-07-10 | 基于列存储的数据***方法、装置、服务器及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109033271A CN109033271A (zh) | 2018-12-18 |
CN109033271B true CN109033271B (zh) | 2021-03-02 |
Family
ID=64641397
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810749909.5A Active CN109033271B (zh) | 2018-07-10 | 2018-07-10 | 基于列存储的数据***方法、装置、服务器及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109033271B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117725096B (zh) * | 2024-02-07 | 2024-05-03 | 北京四维纵横数据技术有限公司 | 关系型数据库的数据存储和查询方法、装置、设备及介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102129458A (zh) * | 2011-03-09 | 2011-07-20 | 胡劲松 | 关系型数据库的存储方法及装置 |
CN102609491A (zh) * | 2012-01-20 | 2012-07-25 | 东华大学 | 一种基于列存储的区级数据压缩方法 |
CN103177055A (zh) * | 2011-12-22 | 2013-06-26 | Sap股份公司 | 存储为行存储和列存储二者的混合数据库表 |
CN103870483A (zh) * | 2012-12-13 | 2014-06-18 | 厦门雅迅网络股份有限公司 | 一种动态调整内存空间批量存储数据的方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20080162298A1 (en) * | 2000-06-15 | 2008-07-03 | American Express Travel Related Services Company, Inc. | Online ordering system and method |
-
2018
- 2018-07-10 CN CN201810749909.5A patent/CN109033271B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102129458A (zh) * | 2011-03-09 | 2011-07-20 | 胡劲松 | 关系型数据库的存储方法及装置 |
CN103177055A (zh) * | 2011-12-22 | 2013-06-26 | Sap股份公司 | 存储为行存储和列存储二者的混合数据库表 |
CN102609491A (zh) * | 2012-01-20 | 2012-07-25 | 东华大学 | 一种基于列存储的区级数据压缩方法 |
CN103870483A (zh) * | 2012-12-13 | 2014-06-18 | 厦门雅迅网络股份有限公司 | 一种动态调整内存空间批量存储数据的方法 |
Also Published As
Publication number | Publication date |
---|---|
CN109033271A (zh) | 2018-12-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108959587B (zh) | 基于列存储的数据更新方法、装置、服务器及存储介质 | |
US11636083B2 (en) | Data processing method and apparatus, storage medium and electronic device | |
CN111258966A (zh) | 一种数据去重方法、装置、设备及存储介质 | |
US9069818B2 (en) | Textual search for numerical properties | |
CN108875077B (zh) | 数据库的列存储方法、装置、服务器及存储介质 | |
US9323798B2 (en) | Storing a key value to a deleted row based on key range density | |
US11789940B2 (en) | Natural language interface to databases | |
CN111061758B (zh) | 数据存储方法、装置及存储介质 | |
CN105373541A (zh) | 数据库的数据操作请求的处理方法和*** | |
CN109582231B (zh) | 数据存储方法、装置、电子设备及存储介质 | |
CN105117433A (zh) | 一种基于Hive解析HFile统计查询HBase的方法和*** | |
CN111666344B (zh) | 异构数据同步方法及装置 | |
CN114925101A (zh) | 数据处理方法、装置、存储介质及电子设备 | |
CN110222046B (zh) | 列表数据的处理方法、装置、服务器和存储介质 | |
CN109033271B (zh) | 基于列存储的数据***方法、装置、服务器及存储介质 | |
CN110647577A (zh) | 数据立方体的分区方法、装置、计算机设备及存储介质 | |
CN107862082B (zh) | 基于MySQL计数器表的高并发计数方法及web服务器 | |
CN109697234B (zh) | 实体的多属性信息查询方法、装置、服务器和介质 | |
CN109542912B (zh) | 区间数据存储方法、装置、服务器及存储介质 | |
CN111858393A (zh) | 内存页面管理方法、内存页面管理装置、介质与电子设备 | |
CN111401934A (zh) | 分布式广告统计方法以及装置 | |
CN112835905B (zh) | 一种数组类型列的索引方法、装置、设备以及存储介质 | |
CN108984720B (zh) | 基于列存储的数据查询方法、装置、服务器及存储介质 | |
CN108984719B (zh) | 基于列存储的数据删除方法、装置、服务器及存储介质 | |
CN112632266B (zh) | 数据写入方法、装置、计算机设备及可读存储介质 |
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 |