CN106599291B - 数据分组方法及装置 - Google Patents

数据分组方法及装置 Download PDF

Info

Publication number
CN106599291B
CN106599291B CN201611217937.XA CN201611217937A CN106599291B CN 106599291 B CN106599291 B CN 106599291B CN 201611217937 A CN201611217937 A CN 201611217937A CN 106599291 B CN106599291 B CN 106599291B
Authority
CN
China
Prior art keywords
data
attribute
combined
logo collection
data attribute
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
Application number
CN201611217937.XA
Other languages
English (en)
Other versions
CN106599291A (zh
Inventor
陈佐伟
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Tencent Technology Shenzhen Co Ltd
Original Assignee
Tencent Technology Shenzhen Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Tencent Technology Shenzhen Co Ltd filed Critical Tencent Technology Shenzhen Co Ltd
Priority to CN201611217937.XA priority Critical patent/CN106599291B/zh
Publication of CN106599291A publication Critical patent/CN106599291A/zh
Application granted granted Critical
Publication of CN106599291B publication Critical patent/CN106599291B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2453Query optimisation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/242Query formulation
    • G06F16/2433Query languages
    • G06F16/2445Data retrieval commands; View definitions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2455Query execution
    • G06F16/24553Query execution of query operations
    • G06F16/24554Unary operations; Data partitioning operations

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Computational Linguistics (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明是关于一种数据分组方法,属于数据查询技术领域。所述方法包括:在对目标数据进行分组时,查询数据集合对应n种数据属性中的每一种数据属性标识集合组(包含每一个属性值的标识集合),并对目标数据的标识集合与该n种数据属性中的每一种数据属性的标识集合组进行交集运算,并根据运算结果获取到按照n种数据属性对目标数据进行分组的分组结果,只需要设置数据集合对应每一种数据属性的标识集合组,即可以满足按照任意种类数和种类的数据属性对数据库中的数据进行分组的需求,从而极大的降低预设信息的存储资源占用量,以及降低该预设信息的生成和查询过程的处理资源消耗。

Description

数据分组方法及装置
技术领域
本发明涉及数据查询技术领域,特别涉及一种数据分组方法及装置。
背景技术
在某些数据库中,每个数据包含多种不同的数据属性,并可以按照其中至少两种数据属性对数据进行分组,以便对外提供与分组相关的查询服务。其中,分组获得的同一数据组中的数据对应该至少两种数据属性的值都相同。
在现有技术中,数据库管理设备预先按照至少两种数据属性的组合,对数据库中的各个数据进行倒排索引,以建立倒排索引表,该倒排索引表中包含该数据属性的组合中的每一组属性值,以及每一组属性值对应的包含有该组属性值的数据的标识。当需要对上述各个数据按照该数据属性的组合进行分组时,数据库管理设备可以查询上述预先建立的倒排索引表,将具有相同的一组属性值的数据作为一个数据组。
对数据库中的数据进行分组时,数据属性的组合中的种类数和种类并不是固定不变的,比如,在前一次进行数据分组时,数据库管理设备按照数据属性a和b对各个数据进行分组,而在下一次进行数据分组时,数据库管理设备可能需要按照数据属性b、c和d进行分组。若按照现有技术中的分组方法,则需要按照数据属性的种类数和种类的各种组合,分别对数据库中的各个数据预先建立倒排索引表,当数据属性的种类较多时,需要预先建立的倒排索引表的数量将会非常庞大。比如,假设数据库中的每个数据包含100种数据属性,若要满足按照任意三种数据属性进行分组的需求,则需要建立(100*99*98)/(3*2*1)=161700个不同的倒排索引表,若还需要满足按照任意其它种类数的数据属性进行分组的需求,则需要建立的倒排索引表的数量还会更多。这些数量庞大的倒排索引表需要占据大量的存储资源,并且,倒排索引表的建立过程以及分组时查询对应的倒排索引表的过程也会消耗大量的处理时间和处理资源。
发明内容
为了解决现有技术中,当数据属性的种类较多时,需要预先建立的倒排索引表的数量非常庞大,导致倒排索引表需要占据大量的存储资源,并且,倒排索引表的建立过程以及分组时查询对应的倒排索引表的过程消耗大量的处理资源的问题,本发明实施例提供了一种数据分组方法及装置,技术方案如下:
第一方面,提供了一种数据分组方法,所述方法包括:
获取目标数据的标识集合,所述目标数据是数据集合中包含相同的n种类型的数据属性的部分或者全部数据,n≥2,且n为整数;
获取所述数据集合对应所述n种数据属性中的每一种数据属性的标识集合组,所述数据属性的标识集合组包含所述数据属性的每一种属性值的标识集合,所述属性值的标识集合包含具有所述属性值的数据的标识;
对所述目标数据的标识集合以及所述每一种数据属性的标识集合组进行交集运算;根据所述交集运算的运算结果,获取按照所述n种数据属性对所述目标数据进行分组的分组结果。
第二方面,提供了一种数据分组装置,所述装置包括:
第一集合获取模块,用于获取目标数据的标识集合,所述目标数据是数据集合中包含相同的n种类型的数据属性的部分或者全部数据,n≥2,且n为整数;
第二集合获取模块,用于获取所述数据集合对应所述n种数据属性中的每一种数据属性的标识集合组,所述数据属性的标识集合组包含所述数据属性的每一种属性值的标识集合,所述属性值的标识集合包含具有所述属性值的数据的标识;
运算模块,用于对所述目标数据的标识集合以及所述每一种数据属性的标识集合组进行交集运算;
结果获取模块,用于根据所述交集运算的运算结果,获取按照所述n种数据属性对所述目标数据进行分组的分组结果。
本发明实施例提供的技术方案可以包括以下有益效果:
只需要预先设置数据集合对应每一种数据属性标识集合组,即可以满足按照任意种类数和种类的数据属性对数据库中的数据进行分组的需求,从而极大的降低预设信息(即数据属性的标识集合组)的存储资源占用量,以及降低该预设信息的生成和查询过程的处理资源消耗。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本发明。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本发明的实施例,并与说明书一起用于解释本发明的原理。
图1是本发明所示方案的实现流程示意图;
图2是根据一示例性实施例示出的一种数据分组方法的流程图;
图3是图2所示实施例涉及的一种交集运算及结果更新的示意图;
图4是根据一示例性实施例示出的一种数据分组方法的流程图;
图5是图4所示实施例涉及的一种交集运算及结果更新的示意图;
图6是根据一示例性实施例示出的一种数据分组装置的框图;
图7是根据一示例性实施例提供的管理设备的结构示意图。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本发明相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本发明的一些方面相一致的装置和方法的例子。
本发明实施例所示的方案可以应用于具有数据库管理功能的各种设备平台中。比如,本方案可以应用于基于个人电脑、工作站、服务器、服务器集群或者云服务平台等实现的数据库管理设备中。
在本发明实施例所示的方案中,数据库存储的数据集合中,每个数据具有多种不同类型的数据属性,且数据库管理设备支持按照其中的n种数据属性(n≥2,且为整数)对数据集合中的目标数据进行分组。其中,在对目标数据进行分组时,只需要查询数据集合对应该n种数据属性中的每一种数据属性的标识集合组(数据属性的标识集合组包含所述数据属性的每一种属性值的标识集合,所述属性值的标识集合包含具有所述属性值的数据的标识),并对目标数据的标识集合以及该n种数据属性中的每一种数据属性的标识集合组进行交集运算,并根据交集运算的运算结果获取到按照n种数据属性对应目标数据进行分组的分组结果。数据库管理设备只需要预先设置数据集合对应每一种数据属性的标识集合组,即可以满足按照任意种类数和种类的数据属性的组合对数据库中的数据进行分组的需求。
具体的,请参考图1,其示出了本发明所示方案的实现流程示意图。如图1所示,数据库管理设备预先设置数据集合对应每种数据属性(图1中示出为数据属性0~X)的每一种属性值的标识集合,当需要对目标数据按照其中的n种数据属性进行分组时,可以从预先设置的标识集合中查询该n种数据属性分别对应的标识集合组(图1示为数据属性1对应的标识集合组以及数据属性4对应的标识集合组),并根据目标数据的标识集合与该数据属性1、4分别对应的标识集合组进行交集运算,并根据运算结果获取按照上述两种数据属性对目标数据进行分组的分组结果。
基于上述方案,假设数据库中的每个数据包含100种数据属性,则数据库管理设备只需要预先设置并存储100个数据属性的标识集合组,在查询n种数据属性分别对应的标识集合时,也只需要在该100个数据属性的标识集合组中进行查询,相对于按照数据属性的种类数和种类的各种组合,分别对数据库中的各个数据预先建立倒排索引表的方法,本发明所示的方案能够极大的降低预设信息(即上述数据属性的标识集合组)的存储资源占用量,以及降低该预设信息的生成和查询过程的处理资源消耗。
图2是根据一示例性实施例示出的一种数据分组方法的流程图,该方法可以用于具有数据库管理功能的数据库管理设备中。如图2所示,该数据分组方法可以包括如下几个步骤:
步骤201,设置数据集合对应n种数据属性中的每一种数据属性的标识集合组。
在本发明实施例中,数据集合是指由数据库中的全部或者部分数据所组成的集合。在该数据库中,每一条数据都对应有若干种数据属性,对于同一种数据属性,不同的数据对应该数据属性的属性值可以相同,也可以不同;每一种数据属性的标识集合组包含该数据属性的每一种属性值的标识集合,其中,标识集合是指由数据的标识组成的集合,每一种属性值的标识集合包含具有该属性值的数据的标识。其中,数据属性可以是组成数据的基本元素之一。比如,某条数据是用于记录学生学习成绩各科考试分数的数据,该数据的标识可以是学生的学号或编号,数据属性可以是各个学科,数据属性的属性值为各个学科的考试分数。
其中,上述数据集合中的每个数据包含相同的n种类型的数据属性,n≥2,且n为整数。比如,请参考表1,其示出了数据库中各个数据对应的数据属性以及各种数据属性的值。
表1
数据的标识 数据属性0 数据属性1 …… 数据属性99
0 1 3 …… 9
1 1 4 …… 5
2 2 4 …… 9
3 1 3 …… NULL
4 2 4 …… 9
…… …… …… …… ……
999 2 4 …… 5
如表1所示,数据库中包含1000个数据(数据的标识为0~999),每个数据也可以被称为一条记录(record),表1中各个数据对应同一个数据属性的属性值可以称为一列(column)。在数据库中,每个数据的数据属性的种类都相同,若某一个数据实际上不存在对应某一个数据属性的属性值时,该数据对应该数据属性的属性值可以用一个特殊的符号来表示,比如,在表1中,数据3实际上不存在数据属性99的属性值,则数据3对应在数据属性99的属性值为NULL。
可选的,数据库管理设备可以通过倒排索引的方式来设置若干个数据对应n种数据属性中的每一种数据属性的标识集合组。比如,数据库管理设备设置数据集合对应n种数据属性中的每一种数据属性的标识集合组的步骤可以如下:
201a,对于一种数据属性,按照该数据集合中的各个数据各自对应该数据属性的属性值,建立该数据集合对应该数据属性的倒排索引信息,该倒排索引信息中包含每一种属性值以及每一种属性值对应的数据的标识。
201b,根据该倒排索引信息,设置该数据集合对应该数据属性的标识集合组。
在本发明实施例中,数据库管理设备只针对每一种数据属性分别对数据集合中的各个数据建立倒排索引,并根据建立的倒排索引获得每一种数据属性中的每一种属性值所对应的标识集合(即包含该属性值的数据的标识组成的集合)。对于一种数据属性,该数据属性包含多少种不同的属性值,则该数据属性的标识集合组中就对应有多少个标识集合。
其中,一个数据的标识是在数据库中唯一表示该数据的信息,比如,在上述表1中,数据库中的各个数据的标识为数据的ID(identity,唯一编码),且各个数据的ID为从0开始编号的整数。在实际应用中,数据的标识也可以是ID之外的其它信息,比如数据的存储地址等。
此外,上述数据集合可以是数据库中存储的所有数据中的部分数据,也可以是数据库中存储的所有数据中的全部数据。
具体的,以表1为例,假设上述数据集合为表1中的数据0~数据4,上述n种数据属性分别为数据属性0和数据属性1,则数据库管理设备按照数据属性0对数据0~数据4建立倒排索引信息,该倒排索引信息可以是如下述表2所示的倒排索引表。
表2
数据属性的属性值(value) 对应的数据的标识集合
1 {0,1,3}
2 {2,4}
如表2所示,数据0~数据4中,对应数据属性0的属性值为1的标识集合为{0,1,3},对应数据属性0的标识集合为{2,4},则数据库管理设备将数据0~数据4对应数据属性0的标识集合组设置为{0,1,3}和{2,4}。
相应的,数据库管理设备按照数据属性1对数据0~数据4建立倒排索引信息,该倒排索引信息可以是如下述表3所示的倒排索引表。
表3
如表3所示,数据0~数据4中,对应数据属性1的属性值为3的标识集合为{0,3},对应数据属性1的属性值为4的标识集合为{1,2,4},则数据库管理设备将数据0~数据4对应数据属性1的标识集合组设置为{0,3}和{1,2,4}。
上述内容仅以按照n种数据属性分别对数据集合进行标识集合组的设置为例进行说明,在实际应用中,数据库管理设备可以预先按照更多的数据属性对该数据集合进行标识集合组的设置,比如可以按照图1所示的流程,按照所有的数据属性分别对该数据集合进行标识集合组的设置。
步骤202,获取目标数据的标识集合,该目标数据是数据集合中的全部或部分数据。
可选的,当数据库管理设备接收到按照上述n种数据属性对数据集合中的目标数据进行分组的指令时,可以将目标数据的标识组成的集合获取为目标数据的标识集合。
比如,若目标数据为上述表1中的数据0、数据2、数据3和数据4,则数据库管理设备获取目标数据的标识集合为{0,2,3,4};若目标数据为上述表1中的数据0、数据1、数据2、数据3和数据4,则数据库管理设备获取目标数据的标识集合为{0,1,2,3,4}。
步骤203,获取该数据集合对应该n种数据属性中的每一种数据属性的标识集合组。
其中,数据库管理设备在设置数据集合对应各个数据属性的标识集合组时,可以直接存储该数据集合分别对应每一个数据属性的倒排索引信息,在按照上述n种数据属性对数据集合中的目标数据进行分组时,数据库管理设备可以查询该数据集合分别对应上述n种数据属性的倒排索引信息,并从查询到的倒排索引信息中获取数据集合对应上述n种数据属性的标识集合组。
比如,以表2和表3为例,数据库管理设备按照数据属性0和数据属性1对数据0~数据4中的目标数据进行分组时,可以查询表2获得数据0~数据4对应数据属性0的标识集合组为{0,1,3}和{2,4},并查询表3获得数据0~数据4对应数据属性1的标识集合组为{0,3}和{1,2,4}。
或者,数据库管理设备在设置数据集合对应各个数据属性的标识集合组时,可以将数据集合对应上述n种数据属性的标识集合组分别对应上述n种数据属性独立存储,在按照上述n种数据属性对数据集合中的目标数据进行分组时,数据库管理设备可以直接根据上述n种数据属性获取相应的标识集合。
比如,以表2和表3为例,数据库管理设备可以将集合{0,1,3}和{2,4}与数据属性0独立于表2进行对应存储,并将集合{0,3}和{1,2,4}与数据属性1独立于表3进行对应存储,数据库管理设备按照数据属性0和数据属性1对数据0~数据4中的目标数据进行分组时,可以根据数据属性0查找对应的标识集合组为{0,1,3}和{2,4},并根据数据属性1查找对应的标识集合组为{0,3}和{1,2,4}。
在执行步骤202和步骤203之后,数据库管理设备可以对该目标数据的标识集合以及该数据集合对应该每一种数据属性的标识集合组依次进行交集运算,具体的运算步骤可以参考下述步骤204和步骤205。
步骤204,在第1次运算时,将该目标数据的标识集合与该n种数据属性的第1种数据属性的标识集合组中的各个标识集合分别进行交集运算,获得第1次运算的运算结果。
步骤205,在第i次运算时,将第i-1次运算的运算结果中的每一个集合与该n种数据属性的第i种数据属性的标识集合组中的各个标识集合分别进行交集运算,获得第i次运算的运算结果,2≤i≤n,且i为整数。
其中,上述步骤204和步骤205的过程,可以参考图3所示的交集运算的示意图。如图3所示,数据库管理设备首先将目标数据的标识集合与第1种数据属性的标识集合组中的各个标识集合分别进行交集运算,获得的至少一个集合即为第1次运算的运算结果,之后,数据库管理设备用第1次运算的运算结果中的每一个集合分别与第2种数据属性的标识集合组中的各个标识集合分别进行交集运算,获得的至少一个集合即为第2次运算的运算结果,若存在第3种数据属性,则数据库管理设备再用第2次运算的运算结果中的每一个集合分别与第3种数据属性的标识集合中的各个标识集合分别进行交集运算,获得的至少一个集合即为第3次运算的运算结果,以此类推,直至获得第n次运算的运算结果。
比如,以目标数据的标识集合为{0,2,3,4},数据集合为数据0~数据4,并按照数据属性0和数据属性1对该目标数据进行分组为例,数据库管理设备通过查询表2和表3,获得数据0~数据4对应数据属性0的标识集合为{0,1,3}和{2,4},数据0~数据4对应数据属性1的标识集合为{0,3}和{1,2,4};数据库管理设备首先将集合{0,2,3,4}与集合{0,1,3}和{2,4}分别进行交集运算。其中,集合{0,2,3,4}与集合{0,1,3}交集运算的结果为{0,3},集合{0,2,3,4}与集合{2,4}交集运算的结果为{2,4},则数据库管理设备获得第1次运算的运算结果为集合{0,3}和{2,4}。之后,数据库管理设备再将集合{0,3}和{2,4}中的每一个集合分别与集合{0,1,3}和{2,4}进行交集运算。其中,集合{0,3}和集合{0,1,3}交集运算的结果为集合{0,3},集合{0,3}和集合{2,4}交集运算的结果为空集,集合{2,4}和集合{0,1,3}交集运算的结果为空集,集合{2,4}和集合{2,4}交集运算的结果为{2,4},则排除两个空集,数据库管理设备获得第2次运算的运算结果为集合{0,3}和{2,4}。
在本发明实施例中,上述第i种数据属性的标识集合组是指用于在第i次运算中进行交集运算的数据属性的标识集合组,其强调的是每次运算时使用不同的标识集合组,并不限制各个标识集合组的运算顺序,数据库管理设备可以按照任意的顺序,将该目标数据的标识集合与该数据集合对应该每一种数据属性的标识集合中的各个标识集合依次进行交集运算。比如,以上述数据属性0对应的标识集合组和数据属性1对应的标识集合组为例,可以先将目标数据的标识集合与数据属性0对应的标识集合组进行交集运算,再将第1次交集运算的运算结果与数据属性1对应的标识集合组进行交集运算,此时,数据属性0为第1种数据属性,数据属性1为第2种数据属性;或者,也可以现将目标数据的标识集合与数据属性1对应的标识集合组进行交集运算,再将第1次交集运算的运算结果与数据属性0对应的标识集合组进行交集运算,此时,数据属性1为第1种数据属性,数据属性0为第2种数据属性。
步骤206,对于第n次运算的运算结果中包含的每一个集合,将该集合中的标识获取为该分组结果中的一个数据组对应的数据的标识。
其中,在根据该依次进行交集运算后的运算结果,获取按照该n种数据属性对该目标数据进行分组的分组结果时,数据库管理设备可以按照步骤205中的最后一次运算的运算结果来确定分组结果,具体的,可以将最后一次运算的运算结果中的每一个集合中的标识所对应的数据作为一个数据组。
比如,以上述目标数据的标识集合为{0,2,3,4},数据集合为数据0~数据4,并按照数据属性0和数据属性1对该目标数据进行分组为例,最后一次(即第2次)运算的运算结果为集合{0,3}和{2,4},则数据库管理设备将数据0和数据3确定为一个数据组,并将数据2和数据4确定为另一个数据组。
步骤207,获取该数据组对应的数据中,该n种数据属性各自的属性值,对应该数据组输出获取到的该n种数据属性各自的属性值。
在本发明实施例中,在确定按照n种数据属性对该目标数据进行分组获得各个数据组后,数据库管理设备还可以获取每一个数据组对应该n种数据属性的属性值,并对应该数据组输出获取到的属性值,以便后续提供相关的服务,比如,若用户查询该n种数据属性的某一组属性值对应的各个数据,数据库管理设备可以将该组属性值对应的数据组中的各个数据提供给用户。
具体的,本发明实施例所示的方案可以应用在基于SQL(Structured QueryLanguage,结构化查询语言)的数据库中,实现SQL中的group by语句所实现的功能。通过本发明实施例所示的方案实现group by的方案可以描述如下:
假设总共有m条记录(即m个数据),给每个记录分配一个ID,第p条记录的ID为p,其中1≤p≤m。每条记录有r列,每列的编号分别为1,2,…r,用column[1],column[2],…column[r]来表示每一列。
第q列(1≤q≤r)共有count[o]个不重复的值,用value[p][q]表示第p列的第q个值。
分别对每一列建立倒排索引,即记录每列上的每个值对应的记录ID的列表。用record_id_list[p][q]表示第p列的第q个值对应的记录ID列表。每个ID列表内部的ID都是不重复的。因此每个ID列表可以看作是一个由ID构成的集合。
用record_id_set[p][q]表示第p列的第q个值对应的记录ID的集合。
给定一个记录ID的集合,称之为init_record_id_set,对这个集合所指示的记录的集合进行group by。
假定按照k列进行group by,列的编号保存在一个大小为k的数组中,用group_by_columns[1…k]来表示。
设定输入为:待group by的记录的ID集合,用init_record_id_set表示,以及group by的列,用group_by_columns[1…k]表示。
设定输出为:由记录的ID的集合构成的列表,用S表示,S中的每个集合代表groupby之后的一个组。
以上述表1至表3为例,假设待group by的记录的ID集合init_record_id_set={0,2,3,4},按照编号为1和2的两列(即上述图1中的数据属性1和数据属性2对应的列)进行group by,则算法中的k=2。
则按照上述算法:
返回SL,即最终group by生成两组结果,{0,3}和{2,4}。ID为0,3的记录在数据属性1和数据属性2对应的列有相同的取值:数据属性1对应的列的值为1,数据属性2对应的列的值为3;ID为2,4的记录在数据属性1和数据属性2对应的列有相同的取值:数据属性1对应的列的值为2,数据属性2对应的列的值为4,此时成功完成group by的步骤。
在本发明实施例中,数据的ID用整数从0开始连续编号,因此数据的ID的集合是由整数构成的集合,可以用有序数组或者bitmap(位图)等方式来实现这种集合的存储和高效的求交集运算,从而按照本发明实施例所描述的步骤高效的实现数据集合的分组。
综上所述,本发明实施例所示的方法,在对目标数据进行分组时,查询数据集合对应该n种数据属性中的每一种数据属性的每一个属性值的标识集合,并将目标数据的标识集合与该n种数据属性中的每一种数据属性的每一个属性值的标识集合依次进行交集运算,并根据运算结果获取到按照n种数据属性对应目标数据进行分组的分组结果,只需要预先设置数据集合对应每一种数据属性的每一个属性值的标识集合,即可以满足按照任意种类数和种类的数据属性对数据库中的数据进行分组的需求,从而极大的降低预设信息的存储资源占用量,以及降低该预设信息的生成和查询过程的处理资源消耗。
图4是根据一示例性实施例示出的一种数据分组方法的流程图,该方法可以用于具有数据库管理功能的数据库管理设备中。如图4所示,该数据分组方法可以包括如下几个步骤:
步骤401,设置数据集合对应n种数据属性中的每一种数据属性的标识集合组。
步骤402,获取目标数据的标识集合,该目标数据是数据集合中的全部或部分数据。
步骤403,获取该数据集合对应该n种数据属性中的每一种数据属性的标识集合组。
步骤404,在第1次运算时,将该目标数据的标识集合与该n种数据属性的第1种数据属性的标识集合组中的各个标识集合分别进行交集运算,获得第1次运算的运算结果。
步骤405,在第i次运算时,将该目标数据的标识集合与该n种数据属性的第i种数据属性的标识集合组中的各个标识集合分别进行交集运算,将运算得到的每一个集合与第i-1次运算的运算结果中的各个集合分别进行交集运算,获得第i次运算的运算结果,2≤i≤n,且i为整数。
其中,上述步骤404和步骤405的过程,可以参考图5所述的交集运算的示意图。如图5所示,数据库管理设备首先将目标数据的标识集合与第1种数据属性的标识集合组中的各个标识集合分别进行交集运算,获得的至少一个集合即为第1次运算的运算结果,之后,数据库管理设备将目标数据的标识集合与第2种数据属性的标识集合组中的各个标识集合分别进行交集运算,并将运算获得的至少一个集合分别与第1次运算的运算结果中的每一个集合分进行交集运算,获得的至少一个集合即为第2次运算的运算结果,若存在第3种数据属性,则数据库管理设备再将目标数据的标识集合与第3种数据属性的标识集合组中的各个标识集合分别进行交集运算,并将运算获得的至少一个集合分别与第2次运算的运算结果中的每一个集合进行交集运算,获得的至少一个集合即为第3次运算的运算结果,以此类推,直至获得第n次运算的运算结果。
比如,以目标数据的标识集合为{0,2,3,4},数据集合为数据0~数据4,并按照数据属性0和数据属性1对该目标数据进行分组为例,数据库管理设备通过查询表2和表3,获得数据0~数据4对应数据属性0的标识集合为{0,1,3}和{2,4},数据0~数据4对应数据属性1的标识集合为{0,3}和{1,2,4};数据库管理设备首先将集合{0,2,3,4}与集合{0,1,3}和{2,4}分别进行交集运算,其中,集合{0,2,3,4}与集合{0,1,3}交集运算的结果为{0,3},集合{0,2,3,4}与集合{2,4}交集运算的结果为{2,4},则数据库管理设备获得第1次运算的运算结果为集合{0,3}和{2,4}。之后,数据库管理设备再将集合{0,2,3,4}与集合{0,1,3}和{2,4}进行交集运算,获得的运算结果为集合为{0,3}和{2,4},数据库管理设备将该运算结果与第1次运算的运算结果(即集合{0,3}和{2,4})进行交集运算,获得第2次运算的运算结果为集合{0,3}和{2,4}。
步骤406,对于第n次运算的运算结果中包含的每一个集合,将该集合中的标识获取为该分组结果中的一个数据组对应的数据的标识。
步骤407,获取该数据组对应的数据中,该n种数据属性各自的属性值,对应该数据组输出获取到的该n种数据属性各自的属性值。
综上所述,本发明实施例所示的方法,在对目标数据进行分组时,查询预先设置的数据集合对应该n种数据属性中的每一种数据属性的每一个属性值的标识集合,并将目标数据的标识集合与该n种数据属性中的每一种数据属性的每一个属性值的标识集合依次进行交集运算,并根据运算结果获取到按照n种数据属性对应目标数据进行分组的分组结果,只需要预先设置数据集合对应每一种数据属性的每一个属性值的标识集合,即可以满足按照任意种类数和种类的数据属性对数据库中的数据进行分组的需求,从而极大的降低预设信息的存储资源占用量,以及降低该预设信息的生成和查询过程的处理资源消耗。
下述为本发明装置实施例,可以用于执行本发明方法实施例。对于本发明装置实施例中未披露的细节,请参照本发明方法实施例。
请参考图6,其示出了一示例性实施例示出的一种数据分组装置的框图。该数据分组装置可以通过硬件或者软硬结合的方式实现为数据库管理设备的全部或者部分。该数据分组装置可以包括:
第一集合获取模块601,用于获取目标数据的标识集合,所述目标数据是数据集合中包含相同的n种类型的数据属性的部分或者全部数据,n≥2,且n为整数;
第二集合获取模块602,用于获取所述数据集合对应所述n种数据属性中的每一种数据属性的标识集合组,所述数据属性的标识集合组包含所述数据属性的每一种属性值的标识集合,所述属性值的标识集合包含具有所述属性值的数据的标识;
运算模块603,用于对所述目标数据的标识集合以及所述每一种数据属性的标识集合组进行交集运算;
结果获取模块604,用于根据所述交集运算的运算结果,获取按照所述n种数据属性对所述目标数据进行分组的分组结果。
可选的,所述装置还包括:
索引信息建立模块,用于在所述第二集合获取模块获取所述数据集合对应所述n种数据属性中的每一种数据属性的标识集合组之前,按照所述数据集合中的各个数据各自对应所述数据属性的属性值,建立所述数据集合对应所述数据属性的倒排索引信息,所述倒排索引信息中包含所述每一种属性值以及所述每一种属性值对应的数据的标识;
集合设置模块,用于根据所述倒排索引信息设置所述数据集合对应所述每一种数据属性的标识集合组。
可选的,所述运算模块,用于
在第1次运算时,将所述目标数据的标识集合与所述n种数据属性的第1种数据属性的标识集合组中的各个标识集合分别进行交集运算,获得第1次运算的运算结果;
在第i次运算时,将第i-1次运算的运算结果中的每一个集合与所述n种数据属性的第i种数据属性的标识集合组中的各个标识集合分别进行交集运算,获得第i次运算的运算结果,2≤i≤n,且i为整数。
可选的,所述运算模块,用于
在第1次运算时,将所述目标数据的标识集合与所述n种数据属性的第1种数据属性的标识集合组中的各个标识集合分别进行交集运算,获得第1次运算的运算结果;
在第i次运算时,将所述目标数据的标识集合与所述n种数据属性的第i种数据属性的标识集合组中的各个标识集合分别进行交集运算,将运算得到的每一个集合与第i-1次运算的运算结果中的各个集合分别进行交集运算,获得第i次运算的运算结果,2≤i≤n,且i为整数。
可选的,所述结果获取模块,用于对于第n次运算的运算结果中包含的每一个集合,将所述集合中的标识获取为所述分组结果中的一个数据组对应的数据的标识。
可选的,所述装置还包括:
属性值获取模块,用于获取所述数据组对应的数据中,所述n种数据属性各自的属性值;
输出模块,用于对应所述数据组输出所述属性值获取模块获取到的所述n种数据属性各自对应的属性值。
综上所述,本发明实施例所示的装置,在对目标数据进行分组时,查询预先设置的数据集合对应该n种数据属性中的每一种数据属性的每一个属性值的标识集合,并将目标数据的标识集合与该n种数据属性中的每一种数据属性的每一个属性值的标识集合依次进行交集运算,并根据运算结果获取到按照n种数据属性对应目标数据进行分组的分组结果,只需要预先设置数据集合对应每一种数据属性的每一个属性值的标识集合,即可以满足按照任意种类数和种类的数据属性对数据库中的数据进行分组的需求,从而极大的降低预设信息的存储资源占用量,以及降低该预设信息的生成和查询过程的处理资源消耗。
本发明实施例还提供了一种包括指令的非临时性计算机可读存储介质,例如包括指令的存储器,上述指令可由数据库管理设备的处理器执行以完成本发明各个实施例所示的数据分组方法。例如,所述非临时性计算机可读存储介质可以是ROM、随机存取存储器(RAM)、CD-ROM、磁带、软盘和光数据存储设备等。
图7是根据一示例性实施例示出的一种管理设备的结构示意图。该管理设备可以实现为本发明上述方案中的数据库管理设备。所述管理设备700包括中央处理单元(CPU)701、包括随机存取存储器(RAM)702和只读存储器(ROM)703的系统存储器704,以及连接系统存储器704和中央处理单元701的系统总线705。所述管理设备700还包括帮助计算机内的各个器件之间传输信息的基本输入/输出系统(I/O系统)706,和用于存储操作系统713、应用程序714和其他程序模块715的大容量存储设备707。
所述基本输入/输出系统706包括有用于显示信息的显示器708和用于用户输入信息的诸如鼠标、键盘之类的输入设备709。其中所述显示器708和输入设备709都通过连接到系统总线705的输入输出控制器710连接到中央处理单元701。所述基本输入/输出系统706还可以包括输入输出控制器710以用于接收和处理来自键盘、鼠标、或电子触控笔等多个其他设备的输入。类似地,输入输出控制器710还提供输出到显示屏、打印机或其他类型的输出设备。
所述大容量存储设备707通过连接到系统总线705的大容量存储控制器(未示出)连接到中央处理单元701。所述大容量存储设备707及其相关联的计算机可读介质为管理设备700提供非易失性存储。也就是说,所述大容量存储设备707可以包括诸如硬盘或者CD-ROM驱动器之类的计算机可读介质(未示出)。
不失一般性,所述计算机可读介质可以包括计算机存储介质和通信介质。计算机存储介质包括以用于存储诸如计算机可读指令、数据结构、程序模块或其他数据等信息的任何方法或技术实现的易失性和非易失性、可移动和不可移动介质。计算机存储介质包括RAM、ROM、EPROM、EEPROM、闪存或其他固态存储其技术,CD-ROM、DVD或其他光学存储、磁带盒、磁带、磁盘存储或其他磁性存储设备。当然,本领域技术人员可知所述计算机存储介质不局限于上述几种。上述的系统存储器704和大容量存储设备707可以统称为存储器。
根据本发明的各种实施例,所述管理设备700还可以通过诸如因特网等网络连接到网络上的远程计算机运行。也即管理设备700可以通过连接在所述系统总线705上的网络接口单元711连接到网络712,或者说,也可以使用网络接口单元711来连接到其他类型的网络或远程计算机系统(未示出)。
所述存储器还包括一个或者一个以上的程序,所述一个或者一个以上程序存储于存储器中,中央处理器701通过执行该一个或一个以上程序来实现图2或图4所示的数据分组方法。
本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本发明的其它实施方案。本申请旨在涵盖本发明的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本发明的一般性原理并包括本发明未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本发明的真正范围和精神由下面的权利要求指出。
应当理解的是,本发明并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本发明的范围仅由所附的权利要求来限制。

Claims (14)

1.一种数据分组方法,其特征在于,所述方法由数据库管理设备执行,所述方法包括:
获取目标数据的标识集合,所述目标数据是数据集合中包含相同的n种类型的数据属性的部分或者全部数据,n≥2,且n为整数;
获取所述数据集合对应所述n种数据属性中的每一种数据属性的标识集合组,所述数据属性的标识集合组包含所述数据属性的每一种属性值的标识集合,所述属性值的标识集合包含具有所述属性值的数据的标识;
对所述目标数据的标识集合以及所述每一种数据属性的标识集合组进行交集运算;根据所述交集运算的运算结果,获取按照所述n种数据属性对所述目标数据进行分组的分组结果;对于所述分组结果中的任一数据组,所述数据组中的各个数据具有属性值相同的所述n种数据属性。
2.根据权利要求1所述的方法,其特征在于,所述获取所述数据集合对应所述n种数据属性中的每一种数据属性的标识集合组之前,所述方法还包括:
按照所述数据集合中的各个数据各自对应所述数据属性的属性值,建立所述数据集合对应所述数据属性的倒排索引信息,所述倒排索引信息中包含所述每一种属性值以及所述每一种属性值对应的数据的标识;
根据所述倒排索引信息设置所述数据集合对应所述数据属性的标识集合组。
3.根据权利要求1所述的方法,其特征在于,所述对所述目标数据的标识集合以及所述每一种数据属性的标识集合组进行交集运算,包括:
在第1次运算时,将所述目标数据的标识集合与所述n种数据属性的第1种数据属性的标识集合组中的各个标识集合分别进行交集运算,获得第1次运算的运算结果;
在第i次运算时,将第i-1次运算的运算结果中的每一个集合与所述n种数据属性的第i种数据属性的标识集合组中的各个标识集合分别进行交集运算,获得第i次运算的运算结果,2≤i≤n,且i为整数。
4.根据权利要求1所述的方法,其特征在于,所述对所述目标数据的标识集合以及所述每一种数据属性的标识集合组进行交集运算,包括:
在第1次运算时,将所述目标数据的标识集合与所述n种数据属性的第1种数据属性的标识集合组中的各个标识集合分别进行交集运算,获得第1次运算的运算结果;
在第i次运算时,将所述目标数据的标识集合与所述n种数据属性的第i种数据属性的标识集合组中的各个标识集合分别进行交集运算,将运算得到的每一个集合与第i-1次运算的运算结果中的各个集合分别进行交集运算,获得第i次运算的运算结果,2≤i≤n,且i为整数。
5.根据权利要求3或4所述的方法,其特征在于,所述根据所述交集运算的运算,获取按照所述n种数据属性对所述目标数据进行分组的分组结果,包括:
对于第n次运算的运算结果中包含的每一个集合,将所述集合中的标识获取为所述分组结果中的一个数据组对应的数据的标识。
6.根据权利要求5所述的方法,其特征在于,所述方法还包括:
获取所述数据组对应的数据中,所述n种数据属性各自的属性值;
对应所述数据组输出获取到的所述n种数据属性各自的属性值。
7.一种数据分组装置,其特征在于,所述装置用于数据库管理设备中,所述装置包括:
第一集合获取模块,用于获取目标数据的标识集合,所述目标数据是数据集合中包含相同的n种类型的数据属性的部分或者全部数据,n≥2,且n为整数;
第二集合获取模块,用于获取所述数据集合对应所述n种数据属性中的每一种数据属性的标识集合组,所述数据属性的标识集合组包含所述数据属性的每一种属性值的标识集合,所述属性值的标识集合包含具有所述属性值的数据的标识;
运算模块,用于对所述目标数据的标识集合以及所述每一种数据属性的标识集合组进行交集运算;
结果获取模块,用于根据所述交集运算的运算结果,获取按照所述n种数据属性对所述目标数据进行分组的分组结果;对于所述分组结果中的任一数据组,所述数据组中的各个数据具有属性值相同的所述n种数据属性。
8.根据权利要求7所述的装置,其特征在于,所述装置还包括:
索引信息建立模块,用于在所述第二集合获取模块获取所述数据集合对应所述n种数据属性中的每一种数据属性的标识集合组之前,按照所述数据集合中的各个数据各自对应所述数据属性的属性值,建立所述数据集合对应所述数据属性的倒排索引信息,所述倒排索引信息中包含所述每一种属性值以及所述每一种属性值对应的数据的标识;
集合设置模块,用于根据所述倒排索引信息设置所述数据集合对应所述每一种数据属性的标识集合组。
9.根据权利要求7所述的装置,其特征在于,所述运算模块,用于
在第1次运算时,将所述目标数据的标识集合与所述n种数据属性的第1种数据属性的标识集合组中的各个标识集合分别进行交集运算,获得第1次运算的运算结果;
在第i次运算时,将第i-1次运算的运算结果中的每一个集合与所述n种数据属性的第i种数据属性的标识集合组中的各个标识集合分别进行交集运算,获得第i次运算的运算结果,2≤i≤n,且i为整数。
10.根据权利要求7所述的装置,其特征在于,所述运算模块,用于
在第1次运算时,将所述目标数据的标识集合与所述n种数据属性的第1种数据属性的标识集合组中的各个标识集合分别进行交集运算,获得第1次运算的运算结果;
在第i次运算时,将所述目标数据的标识集合与所述n种数据属性的第i种数据属性的标识集合组中的各个标识集合分别进行交集运算,将运算得到的每一个集合与第i-1次运算的运算结果中的各个集合分别进行交集运算,获得第i次运算的运算结果,2≤i≤n,且i为整数。
11.根据权利要求9或10所述的装置,其特征在于,
所述结果获取模块,用于对于第n次运算的运算结果中包含的每一个集合,将所述集合中的标识获取为所述分组结果中的一个数据组对应的数据的标识。
12.根据权利要求11所述的装置,其特征在于,所述装置还包括:
属性值获取模块,用于获取所述数据组对应的数据中,所述n种数据属性各自的属性值;
输出模块,用于对应所述数据组输出所述属性值获取模块获取到的所述n种数据属性各自对应的属性值。
13.一种管理设备,其特征在于,所述管理设备包括:处理器和存储器,所述存储器中存储有一个或者一个以上的程序,所述一个或者一个以上程序由处理器执行,以实现如权利要求1至6任一所述数据分组方法。
14.一种计算机可读存储介质,其特征在于,所述存储介质中存储有指令,所述指令由处理器执行,以实现如权利要求1至6任一所述数据分组方法。
CN201611217937.XA 2016-12-26 2016-12-26 数据分组方法及装置 Active CN106599291B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201611217937.XA CN106599291B (zh) 2016-12-26 2016-12-26 数据分组方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201611217937.XA CN106599291B (zh) 2016-12-26 2016-12-26 数据分组方法及装置

Publications (2)

Publication Number Publication Date
CN106599291A CN106599291A (zh) 2017-04-26
CN106599291B true CN106599291B (zh) 2019-10-25

Family

ID=58604228

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201611217937.XA Active CN106599291B (zh) 2016-12-26 2016-12-26 数据分组方法及装置

Country Status (1)

Country Link
CN (1) CN106599291B (zh)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108874805B (zh) * 2017-05-09 2022-05-20 腾讯科技(北京)有限公司 数据的处理方法和装置
CN110019356B (zh) * 2017-09-28 2021-06-01 北京国双科技有限公司 数据查询方法及装置
CN109064310A (zh) * 2018-07-06 2018-12-21 美利车(北京)网络技术有限公司 一种资源获取方法及装置
CN109299096A (zh) * 2018-09-25 2019-02-01 阿里巴巴集团控股有限公司 一种流水数据的处理方法、装置及设备

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105404627A (zh) * 2014-09-11 2016-03-16 阿里巴巴集团控股有限公司 一种用于确定搜索结果的方法与设备
CN105956085A (zh) * 2016-04-29 2016-09-21 合网络技术(北京)有限公司 一种倒排索引的构建方法和装置、检索方法和装置

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20110077998A1 (en) * 2009-09-29 2011-03-31 Microsoft Corporation Categorizing online user behavior data
CN106202398A (zh) * 2016-07-08 2016-12-07 北京易车互联信息技术有限公司 一种索引建立的方法及装置

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105404627A (zh) * 2014-09-11 2016-03-16 阿里巴巴集团控股有限公司 一种用于确定搜索结果的方法与设备
CN105956085A (zh) * 2016-04-29 2016-09-21 合网络技术(北京)有限公司 一种倒排索引的构建方法和装置、检索方法和装置

Also Published As

Publication number Publication date
CN106599291A (zh) 2017-04-26

Similar Documents

Publication Publication Date Title
US10740429B2 (en) Apparatus and method for acquiring, managing, sharing, monitoring, analyzing and publishing web-based time series data
US20210318851A1 (en) Systems and Methods for Dataset Merging using Flow Structures
CN106599291B (zh) 数据分组方法及装置
US10719559B2 (en) System for identifying, associating, searching and presenting documents based on time sequentialization
JP4980395B2 (ja) データ分析システム及び方法
CN104380282B (zh) 聚类化支持系统和方法以及支持该方法的装置
CN108140143A (zh) 正则化机器学习模型
CN106407349A (zh) 一种产品推荐方法及装置
CN108959331A (zh) 运用设备学习框架的方法、装置及计算机程序
CN103886047A (zh) 面向流式数据的分布式在线推荐方法
CN112825089B (zh) 文章推荐方法、装置、设备及存储介质
US10698904B1 (en) Apparatus and method for acquiring, managing, sharing, monitoring, analyzing and publishing web-based time series data
CN109582808A (zh) 一种用户信息查询方法、装置、终端设备和存储介质
CN109542757A (zh) 接口测试环境确定方法、装置、电子设备及存储介质
CN102081666B (zh) 用于分布式图片搜索的索引构建方法和装置
CN110209714A (zh) 报表生成方法、装置、计算机设备及计算机可读存储介质
CN106991090A (zh) 舆情事件实体的分析方法及装置
CN112286879B (zh) 基于元数据的数据资产构建方法及装置
CN105930354A (zh) 存储模型转换方法和装置
CN113094444B (zh) 数据处理方法、数据处理装置、计算机设备和介质
CN104657391B (zh) 页面的处理方法及装置
CN112988821A (zh) 一种基于互联网的题目资料获取方法、装置和电子设备
CN111339064A (zh) 数据倾斜矫正方法、装置及计算机可读存储介质
CN109684588B (zh) 一种资产管理系统及方法
CN110909072B (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