CN117609588A - 数据处理方法、数据处理装置及电子设备 - Google Patents

数据处理方法、数据处理装置及电子设备 Download PDF

Info

Publication number
CN117609588A
CN117609588A CN202311386994.0A CN202311386994A CN117609588A CN 117609588 A CN117609588 A CN 117609588A CN 202311386994 A CN202311386994 A CN 202311386994A CN 117609588 A CN117609588 A CN 117609588A
Authority
CN
China
Prior art keywords
data set
data
query
query request
point
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.)
Pending
Application number
CN202311386994.0A
Other languages
English (en)
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.)
Yidianlingxi Information Technology Guangzhou Co ltd
Original Assignee
Yidianlingxi Information Technology Guangzhou 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 Yidianlingxi Information Technology Guangzhou Co ltd filed Critical Yidianlingxi Information Technology Guangzhou Co ltd
Priority to CN202311386994.0A priority Critical patent/CN117609588A/zh
Publication of CN117609588A publication Critical patent/CN117609588A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/907Retrieval characterised by using metadata, e.g. metadata not derived from the content or metadata generated manually
    • 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/22Indexing; Data structures therefor; Storage structures
    • G06F16/2228Indexing structures
    • G06F16/2237Vectors, bitmaps or matrices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/901Indexing; Data structures therefor; Storage structures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/903Querying
    • G06F16/90335Query processing

Landscapes

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

Abstract

本公开涉及一种数据处理方法、数据处理装置及电子设备,该方法包括:接收查询请求;对所述查询请求进行解析,确定所述查询请求对应的数据集和所述查询请求对于所述数据集的单点运算符;对于每一所述数据集,根据所述数据集的元数据,查询所述数据集的数据内容,及根据所述数据集的数据内容和所述数据集的单点运算符,得到对于所述数据集的单点查询结果;其中,所述数据集的元数据包括所述数据集的存储结构和存储位置;根据每一数据集的单点查询结果,得到并输出对于所述查询请求的响应结果。

Description

数据处理方法、数据处理装置及电子设备
技术领域
本公开涉及数据处理技术领域,更具体地,涉及一种数据处理方法、数据处理装置及电子设备。
背景技术
数据分析系统对数据进行处理,这包括将不同来源的数据进行采集、存储、分析等。通过这些数据处理,可以快速地发现行业趋势、用户特性、运营指标等关键数据,辅助决策,达成发展目标。随着数据量级的不断增加,如何存储、处理和应用海量数据是每一个数据分析系统都面临的巨大挑战。例如在用户运营的场景,往往面临着对数千万、数亿级别用户的海量行为进行分析、洞察和透视。这些场景都需要海量的存储和计算资源,以及尽可能低延迟的查询响应。
随着数据的不断积累,如何组织、管理、存储、和查询十数亿级别的用户、数十亿的商品以及每秒钟大量的网络服务请求日志记录,并精确的实现人、货、场的高效匹配,做到精细化运营,是行业面临的一个巨大挑战。因此,需要对数据查询、分析和存储进行改进。
发明内容
本公开实施例的一个目的是提供一种的新的数据处理技术方案。
根据本公开的第一方面,提供了一种数据处理方法,包括:
接收查询请求;
对所述查询请求进行解析,确定所述查询请求对应的数据集和所述查询请求对于所述数据集的单点运算符;
对于每一所述数据集,根据所述数据集的元数据,查询所述数据集的数据内容,及根据所述数据集的数据内容和所述数据集的单点运算符,得到对于所述数据集的单点查询结果;其中,所述数据集的元数据包括所述数据集的存储结构和存储位置;
根据每一数据集的单点查询结果,得到并输出对于所述查询请求的响应结果。
可选地,所述查询请求对应至少两个数据集,所述至少两个数据集包括第一数据集和第二数据集,所述第一数据集的存储结构为基于高效压缩位图的存储结构,所述第二数据集的存储结构为基于位图分片索引的存储结构。
可选地,所述查询请求涉及所述第一数据集与所述第二数据集的联合运算;所述对所述查询请求进行解析,还确定所述查询请求对应的联合运算符;所述根据每一数据集的单点查询结果,得到并输出所述查询请求的响应结果,包括:
根据每一数据集的单点查询结果和所述联合运算符,得到并输出所述查询请求的响应结果;其中,所述联合运算符包括所述第一数据集的第一单点查询结果与所述第二数据集的第二单点查询结果之间的运算符。
可选地,所述查询请求对应至少两个数据集,所述至少两个数据集包括第三数据集和第四数据集,所述第三数据集和所述第四数据集的存储结构均为基于高效压缩位图的存储结构,所述第三数据集的第一位数大于所述第四数据集的第二位数;所述根据每一数据集的单点查询结果,得到并输出所述查询请求的响应结果,包括:
将所述第四数据集的第二位数的第四单点查询结果转换为第一位数的第四单点查询结果;
根据所述第三数据集的第一位数的第三单点查询结果和所述第四数据集的第一位数的第四单点查询结果,得到并输出所述查询请求的响应结果。
可选地,所述查询请求对应的数据集包括第二数据集,根据所述数据集的元数据,查询所述数据集的数据内容,包括:
根据所述第二数据集的元数据,确定所述第二数据集为基于位图分片索引的存储结构,并确定所述第二数据集的各数据分片的分片存储区;
根据所述分片存储区记录的所对应数据分片的分片信息,以及所述第二数据集的单点运算符,确定所述查询请求涉及的数据分片作为目标分片;
在所述目标分片对应的分片存储区中,查询所述第二数据集的数据内容。
可选地,所述查询请求对应的数据集包括第二数据集,所述第二数据集的存储结构为基于位图分片索引的存储结构,查询所述第二数据集的数据内容之后,所述方法包括:
将查询的所述第二数据集的数据内容保存在内存中,形成新的数据分片;
在所述新的数据分片还用于区别所述第二数据集对应的第二单点运算符的其他运算时,遍历所述新的数据分片,以在所述内存中记录所述新的数据分片的分片信息;
在所述新的数据分片不用于所述其他运算时,省去所述遍历所述新的数据分片的步骤。
可选地,所述查询请求对应的数据集包括第二数据集,根据所述数据集的元数据,查询所述数据集的数据内容,及根据所述数据集的数据内容和所述数据集的单点运算符,得到对于所述数据集的单点查询结果,包括:
根据所述第二数据集的元数据,确定所述第二数据集为基于位图分片索引的存储结构,并确定所述第二数据集的数据分片所在的分配存储区;
将所述数据分片按照用户分组拆分成多个子分片;
启动与所述多个子分片一一对应的多个线程;
通过所述多个线程,在所述分配存储区中并行查询所对应子分片的数据内容,并根据所述单点运算符计算所对应子分片的分片结果;
根据每一线程的分片结果,得到对于所述第二数据集的单点查询结果。
可选地,所述查询请求对应的数据集包括第二数据集,所述第二数据集的存储结构为位图分片索引的存储结构,根据所述第二数据集的数据内容和所述第二数据集的第二单点运算符,得到对于所述第二数据集的第二单点查询结果,包括:
对于所述第二数据集的多个数据分片,在同一内存空间进行对应于所述第二单点运算符的计算,得到所述第二单点查询结果。
可选地,所述接收查询请求之前,所述方法还包括:
获取原始数据集;
确定所述原始数据集的应用属性;其中,所述应用属性为描述所对应数据集含义的属性;
根据所述应用属性,确定所述原始数据集的压缩类型;
基于所确定的压缩类型,对所述原始数据集进行压缩,得到并在存储介质中保存压缩后的数据集;
在元数据文件中记录所述压缩后的数据集的元数据;其中,所述元数据包括所述压缩后的数据集的存储属性和应用属性,所述存储属性包括存储位置和基于所述压缩类型的存储结构;
所述查询请求对应的数据集包括所述压缩后的数据集。
可选地,所述根据所述应用属性,确定所述原始数据集的压缩类型,包括:
在所述应用属性表示所述原始数据为非去重类数据的情况下,确定所述原始数据集的压缩类型为位图分片索引;或者,
在所述应用属性表示所述原始数据为去重类数据、且所述原始数据集的基数大于或者等于设定阈值的情况下,所述压缩类型为位图分片索引;或者,
在所述应用属性表示所述原始数据为去重类数据、且所述原始数据集的基数小于设定阈值的情况下,确定所述原始数据集的压缩类型为高效压缩位图。
根据本公开的第二方面,提供了一种数据处理装置,包括:
接收模块,接收查询请求;
解析模块,对所述查询请求进行解析,确定所述查询请求对应的数据集的元数据和所述查询请求对于所述数据集的单点运算符;
查询模块,对于每一所述数据集,根据所述数据集的元数据,查询所述数据集的数据内容,及根据所述数据集的数据内容和所述数据集的单点运算符,得到对于所述数据集的单点查询结果;其中,所述数据集的元数据包括所述数据集的存储结构和存储位置;
输出模块,用于根据每一数据集的单点查询结果,得到并输出对于所述查询请求的响应结果。
根据本公开的第三方面,提供了一种电子设备,其特征在于,包括存储器和处理器,所述存储器用于存储计算机程序,所述处理器用于在所述计算机程序的控制下,执行根据本公开的第一方面所述的数据处理方法。
本公开实施例的一个有益效果在于,由于数据集的元数据包括数据集的存储结构和存储位置,因此,可以在对实际的数据集内容进行操作之前,通过数据集的元数据预先进行处理,确定对于各个数据集的单点运算符。这里,预先对数据集的元数据的处理,可以减少对于实际数据集的处理量,并支持跨不同存储结构和不同存储介质的查询请求处理,从而提升查询处理效率和查询处理的灵活性。此外,通过这种方式,查询层模块的上层模块,例如分析层模块,不需要了解数据集的具体存储方式和位置。这样,数据集的底层查询操作对于上层的模块或用户是透明的,上层的模块或用户不需要了解底层的存储结构和操作方式。
通过以下参照附图对本说明书的示例性实施例的详细描述,本说明书的实施例的特征及其优点将会变得清楚。
附图说明
被结合在说明书中并构成说明书的一部分的附图示出了本说明书的实施例,并且连同其说明一起用于解释本说明书实施例的原理。
图1示出了可用于实施根据本公开实施例的数据处理方法的一种电子设备的硬件结构示意图。
图2示出了根据一些实施例的数据处理处理方法的流程示意图;
图3示出了根据一些实施例的数据处理系统的示意性框图;
图4示出了根据另一些实施例的数据处理处理方法的流程示意图;
图5示出了根据一个实施例的对查询性能进行优化的步骤的示意性图;
图6示出了根据一个实施例的协议结构总体设计的示意图;
图7示出了根据一个实施例对用户ID进行编码的示意图;
图8示出了根据一个实施例的一个数据表的示意图;
图9示出了根据一个实施例对数据表进行编码的示意图;
图10示出了根据一个实施例的游戏时长数据表的示意图;
图11示出了根据一个实施例对游戏时长进行二进制表示的示意图;
图12示出了根据一个实施例将游戏时长压缩成位图分片索引BSI的示意图;
图13示出了根据一个实施例对压缩数据进行透视分析的示意图;
图14示出了根据一些实施例的数据处理装置的组成结构示意图;
图15示出了根据另一些实施例的电子设备的硬件结构示意图。
具体实施方式
现在将参照附图来详细描述本说明书的各种示例性实施例。
以下对至少一个示例性实施例的描述实际上仅仅是说明性的,决不作为对本说明书实施例及其应用或使用的任何限制。
应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步讨论。
需要说明的是,本公开实施例中所有获取信号、信息或数据的动作都是在遵照所在地国家相应的数据保护法规政策的前提下,并获得由相应设备所有者给予授权的情况下进行的。
对于各个实施例和例子中的一些基本概念进行说明如下。
数据基数表示数据去重后唯一值的数量。基数较小的数据称为低基数据,基数较大的数据称为高基数据。
位图(Bitmap)是计算机领域中一种数据结构,用于将有序高维数据(如:一组Int类型数字)映射成bit进行压缩存储的方法。
高效位图(RB,Roaring Bitmap)是可压缩无序数据的结合位图和数组的两层树状结构的混合压缩技术。常见的高效位图有32位的高效位图和64位的高效位图。
位图分片索引(BSI,bit-sliced index)是基于位图切片的高基数据压缩的压缩算法。
本公开实施例提供了一种新的数据处理方法。在不同实施例中,通过根据元数据进行查询,可以实现查询处理的预过滤,从而提高整体查询性能。
在一些实施例中,通过元数据驱动的数据自动路由压缩方案,针对数据基数,自动选择将其压缩成高效位图RB,还是位图分片索引BSI。在一些实施例中,通过屏蔽具体对数据压缩的细节,实现了对于底层数据的无差别分析,例如,透视分析、漏斗分析、留存分析,交叉分析等。
在一些实施例中,对位图分片索引BSI压缩后的高基数据的查询及运算进行性能优化,包括数据求和、范围查询等。这显著地减少了对有序数据进行位图压缩的耗时。
图1示出了可用于实施根据本公开实施例的数据处理方法的一种电子设备的硬件结构示意图。
该电子设备1000为能够运行数据处理的设备,该设备可以在本地运行数据处理,数据处理功能可以被制作成单独的应用,也可以被集成在其他应用中,在此不做限定。该电子设备1000可以是手机、平板电脑、PC机、服务器等等,在此不做限定。
如图1所示,该电子设备1000可以包括处理器1101、存储器1102、接口装置1103、通信装置1104、输出装置1105、输入装置1106等等。图1所示的硬件配置仅是解释性的,并且决不是为了要限制本公开、其应用或用途。
处理器1101用于执行计算机程序,该计算机程序可以采用比如x86、Arm、RISC、MIPS、SSE等架构的指令集编写。存储器1102例如包括ROM(只读存储器)、RAM(随机存取存储器)、诸如硬盘的非易失性存储器等。接口装置1103例如包括USB接口、网线接口、耳机接口等。通信装置1104例如能够进行有线或无线通信,通信装置1104可以包括至少一种短距离通信模块,例如是基于Hilink协议、WiFi(IEEE 802.11协议)、Mesh、蓝牙、ZigBee、Thread、Z-Wave、NFC、UWB、LiFi等短距离无线通信协议进行短距离无线通信的任意模块,通信装置1104也可以包括远程通信模块,例如是进行WLAN、GPRS、2G/3G/4G/5G远程通信的任意模块。输出装置1105例如可以包括液晶显示屏或者触摸显示屏、扬声器等。输入装置1106例如可以包括触摸屏、键盘、麦克风、各种传感器等。
本实施例中,电子设备1000的存储器1102用于存储计算机程序,该计算机程序用于控制处理器1101进行操作,以执行根据本公开任意实施例的数据处理方法。
接下来,以如图1的电子设备1000作为实施主体为例,说明数据处理方法的各种实施例。
<第一实施例>
图2示出了根据一些实施例的数据处理方法的示意性流程图。如图2所示,该方法可以包括如下步骤S210至S240。
步骤S210,接收查询请求。
查询请求是按照约定协议传入的进行查询的请求。例如,图3示出了一个示例性的数据处理系统的示意图。如图3所示,数据处理系统可以包括存储层模块、查询层模块和分析工具层模块。查询请求可以由分析工具层模块产生并传入查询层模块。在一个例子中,查询请求为“玩游戏的女性用户中,游戏时长在100小时以上的有多少?”。
在一些实施例中,所述查询请求对应至少两个数据集,至少两个数据集包括第一数据集和第二数据集,所述第一数据集的存储结构可以为基于高效压缩位图的存储结构,所述第二数据集的存储结构可以为基于位图分片索引的存储结构。也就是说,该数据处理系统支持跨存储结构的查询请求,而不局限于其中一种存储结构。
步骤S220,对所述查询请求进行解析,确定所述查询请求对应的数据集的元数据和所述查询请求对于所述数据集的单点运算符。
继续步骤S210中的例子,通过解析,可以确定查询请求包括“性别”标签和游戏时长行为查询。由此,可以确定查询请求对应的数据集的元数据,即,“性别”标签对应的元数据和游戏时长行为对应的元数据。另外,还可以确定所述查询请求对于所述数据集的单点运算符。单点运算符是针对单个数据集执行操作的运算符。
步骤S230,对于每一所述数据集,根据所述数据集的元数据,查询所述数据集的数据内容,及根据所述数据集的数据内容和所述数据集的单点运算符,得到对于所述数据集的单点查询结果;其中,所述数据集的元数据包括所述数据集的存储结构和存储位置。
继续步骤S210中的例子,例如,根据所述数据集的元数据,查询与“性别”标签的“女性”标签值对应的数据集以及与“游戏时长行为”对应的数据集。利用单点运算符,分别针对与“女性”标签值对应的数据集以及与“游戏时长行为”对应的数据集执行查询运算操作,分别得到针对两个数据的单点查询结果。
步骤S240,根据每一数据集的单点查询结果,得到并输出对于所述查询请求的响应结果。
在一些实施例中,查询请求涉及所述第一数据集与所述第二数据集的联合运算。在对所述查询请求进行解析时,还确定查询请求对应的联合运算符。这样,步骤S240还可以包括:根据每一数据集的单点查询结果和所述联合运算符,得到并输出所述查询请求的响应结果;其中,所述联合运算符包括所述第一数据集的第一单点查询结果与所述第二数据集的第二单点查询结果之间的运算符。
该联合运算例如是交集运算或者并集运算等,在此不做限定。
在这个实施例,由于数据集的元数据包括数据集的存储结构和存储位置,因此,可以在对实际的数据集内容进行操作之前,通过数据集的元数据预先进行处理,确定对于各个数据集的单点运算符。这里,预先对数据集的元数据的处理,可以减少对于实际数据集的处理量,从而提升查询处理的效率。此外,通过这种方式,查询层模块的上层模块,例如分析层模块,不需要了解数据集的具体存储方式和位置。这样,数据集的底层查询操作对于上层的模块或用户是透明的,上层的模块或用户不需要了解底层的存储结构和操作方式。
<第二实施例>
第二实施例涉及对步骤S240的改进,其他步骤可以与第一实施例所述的步骤S210-S230相同,在这里不再赘述。
在这个实施例中,查询请求对应至少两个数据集,所述至少两个数据集包括第三数据集和第四数据集,所述第三数据集和所述第四数据集的存储结构均为基于高效压缩位图的存储结构,所述第三数据集的第一位数大于所述第四数据集的第二位数。在这种情况下,步骤S240还包括:将所述第四数据集的第二位数的第四单点查询结果转换为第一位数的第四单点查询结果;根据所述第三数据集的第一位数的第三单点查询结果和所述第四数据集的第一位数的第四单点查询结果,得到并输出所述查询请求的响应结果。
例如,第三数据集是以64位高效位图压缩的数据集,第四数据集是以32位高效位图压缩的数据集。在步骤S240中,将对于32位高效位图压缩的第四数据集的单点查询结果转换为64位的单点查询结果。然后,根据64位的第三数据集的单点查询结果和64位的第四数据集的单点查询结果,得到并输出查询请求的响应结果。
在这个实施例中,可以自动转换单点查询结果,这样,可以将不同压缩结构的单点查询结果组合。这种自动转换对于上层的功能层是透明的,用户可以无感知地对各类压缩数据进行灵活的交互式查询分析。
<第三实施例>
第三实施例涉及对步骤S230的改进,其他步骤可以与第一实施例或本公开中的其他实施例所述的步骤S210、S220、S240相同,在这里不再赘述。
在本实施例中,所述查询请求对应的数据集包括存储结构为位图分片索引的第二数据集。在这种情况下,步骤S230还包括:根据所述第二数据集的元数据,确定所述第二数据集为基于位图分片索引的存储结构,并确定所述第二数据集的各数据分片的分片存储区;根据分片存储区记录的所对应数据分片的分片信息,以及第二数据集的单点运算符,确定查询请求涉及的数据分片作为目标分片;在目标分片对应的分片存储区中,查询第二数据集的数据内容。
该分片信息可以理解为是数据分片(即一个BSI)的元数据,可以包括该数据分片的最大值、最小值、非空压缩块等等。
在本实施例中,根据数据分片的分片信息,确定目标分片存储区,并在所述目标分片存储区中查询数据内容。该通过这种方式,可以减少对于非目标分片的数据处理,从而减小数据处理量,提升数据处理效率。
本实施例可以适用于对第二数据集进行TOPK查询、范围查询、求和查询、转置查询等,也就是说,在第二数据集对应的单点运算符涉及TOPK查询、范围查询、求和查询、转置查询等时,可以基于第二数据集的数据分片的分片信息确定查询范围,进而提高查询效率。
<第四实施例>
在第四实施例中,查询请求对应的数据集包括存储结构为位图分片索引的第二数据集。在查询所述第二数据集的数据内容,将查询的第二数据集的数据内容保存在内存中,形成新的数据分片;在新的数据分片还用于区别第二数据集对应的第二单点运算符的其他运算时,遍历该新的数据分片,以在内存中记录所述新的数据分片的分片信息;在新的数据分片不用于所述其他运算时,省去所述遍历该新的数据分片的步骤。
这个实施例中的其他步骤可以和第一实施例或其他实施例中的步骤S210-S240一致,在这里省略对它们的重复描述。
在本实施例中,没有在形成新数据分片之后立即将该新数据分片记录在内存中,而是在确定该新的数据分片还用于其他运算时才执行遍历和记录操作。这样,可以避免不必要的遍历和记录操作所耗费的资源和时间浪费,从而有效提升系统的效率。
例如,在第二电动运算符为求和查询运算时,会涉及第二数据集的多个数据分片的查询,这就会在内存中产生新的数据分片,相对于原始的数据分片,新的数据分片在分片信息上通常会有所变化,如果每次都对其分片信息进行遍历更新,会增加处理量,根据本实施例的处理,仅在其分片信息可能用于后续计算时再进行更新的懒更新处理,可以减少资源消耗。
<第五实施例>
第五实施例涉及对步骤S230的改进,其他步骤可以与第一实施例或本公开中的其他实施例所述的步骤S210、S220、S240相同,在这里不再赘述。
在第五实施例中,查询请求对应的数据集包括第二数据集。步骤S230还包括:根据所述第二数据集的元数据,确定所述第二数据集为基于位图分片索引的存储结构,并确定所述第二数据集的数据分片所在的分配存储区;将所述数据分片按照用户分组拆分成多个子分片;启动与所述多个子分片一一对应的多个线程;通过所述多个线程,在所述分配存储区中并行查询所对应子分片的数据内容,并根据所述单点运算符计算所对应子分片的分片结果;根据每一线程的分片结果,得到对于所述第二数据集的单点查询结果。
在本实施例中,将数据分片按用户分成多个子分片,并且启动多个线程,分别针对多个子分片执行运算,得到数据集的查询结果。这种多线程异步方式可以有效提升系统处理速度。
<第六实施例>
第六实施例涉及对步骤S230的改进,其他步骤可以与第一实施例或本公开中的其他实施例所述的步骤S210、S220、S240相同,在这里不再赘述。
在第六实施例中,查询请求对应的数据集包括第二数据集,所述第二数据集的存储结构为位图分片索引的存储结构。在第六实施例中,在步骤S230中,根据第二数据集的数据内容和第二数据集的第二单点运算符,得到对于所述第二数据集的第二单点查询结果。在这个步骤中,对于第二数据集的多个数据分片,在同一内存空间进行对应于第二单点运算符的计算,得到所述第二单点查询结果。
在本实施例中,对于第二数据集的多个数据分片(即多个BSI)的处理,可以共享内存空间,而无需为每一数据分片开辟独立的内存空间,从而减小内存开销,提升查询速度。
<第七实施例>
在本实施例中,主要改进的方面在于,在接收查询请求之前,还要执行步骤S310-S360,其余的步骤可以与上面实施例中所述步骤相同,在这里不再赘述。
步骤S310,获取原始数据集。
步骤S320,确定所述原始数据集的应用属性;其中,应用属性为描述所对应数据集含义的属性。
应用属性可以包括原始数据集的数据类型,数据类型为标签、行为、指标或者维度等。
步骤S330,根据应用属性,确定原始数据集的压缩类型。
本实施例中,可以根据应用属性确定原始数据集是否为去重类数据,并进一步据此确定原始数据集的压缩类型。例如,标签类为去重类数据,行为类为非去重数据等。
本实施例中,可以在系统中保存反映各应用属性,例如各种数据类型,是否为去重类数据的映射数据。因此,该步骤S330中,可以通过查询该映射数据,根据原始数据集的应用属性,确定其是否为去重类数据。
在一些示例中,在步骤S320中,在应用属性表示原始数据集为非去重类数据的情况下,确定原始数据集的压缩类型为位图分片索引。
在一些示例中,在应用属性表示原始数据为去重类数据、且原始数据集的基数大于或者等于设定阈值的情况下,确定压缩类型为位图分片索引。
在一些示例中,在应用属性表示原始数据为去重类数据、且原始数据集的基数小于设定阈值的情况下,确定原始数据集的压缩类型为高效压缩位图。
步骤S340,基于所确定的压缩类型,对原始数据集进行压缩,得到并在存储介质中保存压缩后的数据集。
步骤S350,在元数据文件中记录压缩后的数据集的元数据;其中,元数据包括所述压缩后的数据集的存储属性和应用属性,存储属性包括存储位置和基于所述压缩类型的存储结构。
步骤S360,所述查询请求对应的数据集包括所述压缩后的数据集。
在这个实施例中,在元数据中记录数据集的存储属性和应用属性,从而在后续的查询操作中,可以利用元数据执行查询前的预处理。这种预处理可以减小系统资源的消耗,提高系统处理速度。
<应用例子1>
如上面所述,图3所示的数据处理系统可以用于执行上面实施例中所描述的操作步骤。如图3所示,存储层模块根据数据特性和数据元数据配置自动构造不同类型/结构的数据/压缩数据并对它们进行存储。存储层模块可以包括数据定义子模块、自适应压缩引擎。
数据定义子模块将明细数据表按其应用属性定义成标签、行为、指标、维度等类型。自适应数据压缩引擎子模块可根据数据的定义类型和数据自身的基数、生命周期、时效性等特性,动态生成数据的适配的压缩结构,例如RB压缩数据和BSI压缩数据。
为了描述的方便,对下面描述中的符号说明如下。
D是明细数据中的数据集。
Dmeta是数据集的元数据。
Cardinality(D)是数据集D的基数计算函数。
Dbsi是位图分片索引压缩后的数据集D。
Drb是高效位图压缩后的数据集D
是数据集D中的数据Di的二进制高1/2N位。
是数据集D中的数据Di的二进制低1/2N位
S是分片号,指将数据集D压缩后,分成多个片进行分布式存储,每一片的分片号。
RB64是用64位二进制存储的高效位图。
RB32是用32位二进制存储的高效位图。
存储层模块可以通过如下步骤对明细数据表进行自适应压缩。
步骤S11,数据定义子模块对于待导入系统的明细数据表中的数据D,定义数据元数据Dmeta,数据元数据Dmeta包括数据应用属性以及数据所在存储地址。接着进入步骤S12。
步骤S12,自适应数据压缩引擎子模块读取待导入系统的明细数据表中的数据D的数据元数据Dmeta,检查明细数据表中的数据D是否有更新版本。如果有更新版本,自适应数据压缩引擎子模块对该数据D进行更新,然后对数据D进行数据压缩编码。接着进入步骤S13。
步骤S13,如果数据D的数据应用属性为去重类数据,则进入步骤S14;否则进入步骤S15。
步骤S14,自适应数据压缩引擎子模块读取原始数据并计算最新版本基数Cardinality(D)。如果基数超过阈值,则进入步骤S15;否则进入步骤S16。
步骤S15,自适应数据压缩引擎子模块基于原始数据和数据字典生成BSI压缩的数据索引文件Dbsi。对数据字典中不存在的新数据进行整型自然顺序编码,并更新数据字典和数据元数据Dmeta
步骤S16,自适应数据压缩引擎子模块检查待构建压缩的数据D的数据类型。如果数据类型为数值类型,则进入步骤S17;否则进入步骤S18。
步骤S17,设数据D内包含数值d1,d2,…di,其类型的总二进制位数为N,取前1/2N位对分片数S取模,分为j片,分片号分别为Ds1,Ds2,…Dsj,取后1/2N位为分片Dsj内偏移量Dmj。则可将d1,d2,…di压缩成S个高效位图RB。当N≤32时为32位的高效位图RB,否则为64位的高效位图RB。
D->Drb=S*RB32 N<=32
D->Drb=S*RB64 N>32
步骤S18:基于原始数据和数据字典生成高效位图RB压缩的数据索引文件Drb。对数据字典中不存在的新数据进行整型自然序编码,并更新数据字典和数据元数据。
步骤S19:对于数据D,支持按Dmeta预定义的生命周期和版本合并周期,定时将多个历史版本数据进行数据合并,以减少查询时文件扫描个数。
如图3所示,查询层模块用于根据数据压缩类型,自动构建合适的SQL查询语句,对压缩数据进行查询。查询层模块可以包括标准查询协议API子模块、查询协议解析器子模块、逻辑执行计划生成策略选择子模块、按索引类型动态生成逻辑执行计划子模块、逻辑执行计划优化子模块和查询语句生成和执行子模块。
标准查询协议API子模块用于接收分析工具层模块根据数据元数据Dmeta传入的标准化的统一结构的查询请求,以进行数据查询。
查询协议解析器子模块用于根据数据元数据Dmeta对查询请求进行解析。
逻辑执行计划生成策略选择子模块用于针对所解析的查询请求,选择逻辑执行计划生成策略。
按索引类型动态生成逻辑执行计划子模块用于按照索引类型,动态生成数据查询逻辑执行计划。
逻辑执行计划优化子模块用于根据数据压缩类型以及查询分析方式优化数据查询逻辑执行计划。
查询语句生成和执行子模块用于根据数据查询逻辑执行计划生成对应存储结构及对应存储数据压缩格式的查询语句,并执行该查询语句。
查询层模块可以通过如下步骤执行查询操作。
步骤S21,标准查询协议API子模块接收由分析工具层模块根据分析类型按约定协议传入的查询请求。
步骤S22,查询协议解析器子模块解析由分析工具层模块传入的查询请求,将查询请求拆分并映射到底层需要查询的所有数据元数据
步骤S23,数据元数据分别指向其对应版本的压缩数据,逻辑执行计划生成策略选择子模块用于选择逻辑执行计划生成策略,按索引类型动态生成逻辑执行计划子模块用于根据所选择的逻辑执行计划生成策略生成数据查询逻辑执行计划,从而将查询条件、存储地址、查询结果运算符等信息存入数据查询逻辑执行计划。
步骤S24,逻辑执行计划优化子模块用于对数据查询逻辑执行计划进行节点合并、单节点查询结果运算符优化等优化。
具体来说,可以将步骤S24拆解为如下步骤S241-S243。
步骤S241,根据查询请求对应的M个数据版本,对中的待查询的相同版本,按版本号自然序构造生成统一的数据版本查询左表,作为左关联(LEFTJOIN)查询驱动表。
步骤S242:对于所有压缩数据(RB、BSI)、无压缩数据(原始数据明细表),拆分出不同的优化策略,包括基于预定义规则的优化(RBO)、以及基于数据本身存储特性的代价优化(CBO),从而可以支持跨存储介质的查询。
具体来说,还可以将步骤S242拆解为如下步骤S2421-S2424。
步骤S2421,对于无压缩数据,按查询维度构造查询条件,按查询结果运算符对按条件查询出来的结果生成运算算子。
步骤S2422,对于高效位图RB压缩数据,如果对于都使用RB64或RB32压缩,则直接生成查询条件及结果运算算子;否则进入步骤S2423。
步骤S2423,对于混合使用RB64或RB32压缩的数据,分别将不同压缩类型的数据拆分计算后,在将压缩的数据根据全局的数据字典进行展开后实时构造生成查询条件及运算算子,并执行计算。
步骤S2424,对于位图分片索引BSI压缩数据,根据不同的结果运算符,针对性地优化查询性能。图5示出了根据一个实施例的对查询性能进行优化的步骤。
如图5所示,对于Top K查询算子、求和查询算子、范围查询算子、装置查询算子,在步骤S1中,可以先根据数据分片BSI的分片信息(也即BSI的元数据)进行过滤,减少对于非必要数据的扫描。可以在元数据中记录压缩后数据的最大值、最小值、非空压缩块等信息。
在针对Top K查询算子、求和查询算子、范围查询算子的步骤S2中,可以进行内存共享优化(in place buffer),从而减小内存开销,提升查询速度。
步骤S3可以适用于转置查询,可以采用异步多线程的方式执行转置查询。转置查询主要用于查询BSI包含的去重值及其对应的基数,例如,用于对高基标签的透视分析,以统计不同消费金额的用户分布。在步骤S3中,可以将BSI按照需要透视的人群拆分成N个部分,用N个线程分别计算对应的值,最后按对应的值进行分组,得到每个值对应的基数。这种查询处理的计算量较大,通过这种异步多线程的方式可以提升速度。
在步骤S4中,在求和查询中,对于元数据最大、最小值的更新。通常,这需要对整个BSI压缩数据进行扫描才能计算得出,计算成本较高。在这里,不是在求和处理之后立即进行更新,而是利用元数据懒更新,在当前BSI用于下一步计算时,计算最大值、最小值,对元数据进行更新,从而显著提升高并发查询时的吞吐量。
步骤S243,生成优化后的逻辑执行计划。
步骤S25:根据查询请求逻辑执行计划,如果有跨存储介质数据查询要求,则查询语句生成和执行子模块分别生成不同数据存储介质的物理查询语句并异步执行,完成后进入步骤S26;否则,查询语句生成和执行子模块生成同存储介质查询语句并异步执行,完成后进入步骤S27。
步骤S26:查询语句生成和执行子模块等待多个存储介质的不同查询结果返回后,在内存中对跨查询结果进行合并与集合运算,返回查询结果。
步骤S27,查询语句生成和执行子模块直接返回查询结果。
如图3所示,分析工具层模块用于提供一系列的分析工具,这些分析工具是可扩展的。分析工具层模块可基于底层存储及查询层实现对数据的交互式多维度分析。分析工具层模块可以包括:对比分析子模块、透视分析子模块、交叉分析子模块、留存分析子模块、漏斗分析子模块、指标分析子模块等,以分别用于对比分析、透视分析、交叉分析、留存分析、漏斗分析、指标拆解等功能。各个子模块可以实现对各种不同分析的配置进行抽象,实现统一的与查询层的通信协议。
图6示出了协议结构总体设计的示意图。如图6所示,对于查询层模块的各个功能,可以基于查询协议,将它们拆分成分析主体、分析维度、结果运算符。分析主体可以是数据版本。分析维度可以包括维度过滤条件和数据版本。结果运算符可以包括求和、求平均、计数等。
在一些实施例中,可以进行数据分析,以将原始数据转化为可运行的查询请求。通过分析工具模块中的一系列工具自模块,可以发现趋势并改善决策,从而促进目标增长。
在这里通过元数据驱动的数据自动路由压缩方案,针对数据基数,自动选择压缩成高效位图RB还是位图分片索引BSI。此外,在一些实施例中,可以屏蔽具体数据压缩的细节,实现了对于底层数据无差别的分析。
<应用例子2>
在这个例子中,如图7所示,假设有5个用户,他们的用户ID是A1、B2、C3、D4、E5,编码值是1、2、3、4、5。
图8示出了5个用户的标签“性别”、“年龄”及相应的标签值。针对图8中的数据集,可以将它压缩成图9所示的高效位图。
例如,如图9所示,针对标签“性别”中的标签值“女”,用户编码是[1,3,4,5],高效位图RB编码是[10111]。其他标签及标签值的编码参见图9的其余部分。
图10示出了各个用户的游戏时长的数据表。图11是对图4中的游戏时长进行二进制编码后的数据表示。假设L[i]表示各个用户的游戏时长的二进制表示的第i位(从低位到高位)为1到用户ID的列表,则有如下结果:
L[0]=[1,2,4,5]
L[1]=[2,3,5]
L[2]=[1,3,4,5]
L[3]=[]
L[4]=[]
L[5]=[1,2,3,4]
L[6]=[1,2,3,4]
将L[i]的整型值列表转换成如下的高效位图:
R[0]=RB[1,2,4,5]
R[1]=RB[2,3,5]
R[2]=RB[1,3,4,5]
R[3]=RB[]
R[4]=RB[]
R[5]=RB[1,2,3,4]
R[6]=RB[1,2,3,4]
如图12所示,可以将游戏时长压缩成位图分片索引BSI。位图分片索引BSI是对游戏时长值的按位拆分表示。
图13示出了对图7-图12的压缩数据进行透视分析的示意图。如图13所示,基于图7-图12的压缩数据,可以实现如下查询。
在步骤S21,接收的查询请求为:玩游戏的女性用户中,游戏时间在100小时以上的有多少?
在步骤S22,执行协议解析,确认本次请求包含:性别标签,游戏时长行为查询。
在步骤S22,确定本次请求对应两个数据集,一个是性别数据的第一数据集,另一个是游戏时长的第二数据集,第一数据集对应的单点运算符为全部查询,第二数据集对应的单点运算符为游戏时长超过100小时的范围查询,第一数据集与第二数据集之间的联合运算符为取交集运算等。
在步骤S23,查询元数据,确认性别标签、游戏时长行为的存储介质和结构。
例如,第一数据集的存储结构为RB存储,第二数据集的存储结构为BSI存储。
在步骤S24,对高速SSD存储器(热存)中存储的性别高效位图数据执行查询操作。
在步骤S25,对文件系统(冷存)中存储的游戏时长行为BSI数据执行查询操作。
例如,在步骤S25可以使用游戏时长作为条件对BSI数据进行转置查询,得出100小时以上的全部用户构成的高效位图。将所得到的高效位图与性别标签中女性对应的高效位图进行交集运算,可得到游戏时长超过100小时的女性人群的查询结果。
步骤S24和步骤S25中的处理可以异步地被执行。
在步骤S26,对性别高效位图数据的查询结果和游戏时长行为BSI数据的查询结果执行组合运算。
在步骤S27,返回最终的查询结果。
此外,还可以执行留存分析、漏斗分析和指标拆解等,在此不做赘述。
<装置实施例>
图14示出了根据本公开实施例的数据处理装置的组成结构示意图。如图14所示,该数据处理装置400包括接收模块410、解析模块420、查询模块430和输出模块440。
接收模块410用于接收查询请求。
解析模块420用于对所述查询请求进行解析,确定所述查询请求对应的数据集的元数据和所述查询请求对于所述数据集的单点运算符。
查询模块430用于对于每一所述数据集,根据所述数据集的元数据,查询所述数据集的数据内容,及根据所述数据集的数据内容和所述数据集的单点运算符,得到对于所述数据集的单点查询结果;其中,所述数据集的元数据包括所述数据集的存储结构和存储位置。
输出模块440用于根据每一数据集的单点查询结果,得到并输出对于所述查询请求的响应结果。
在一些实施例中,所述查询请求对应至少两个数据集,所述至少两个数据集包括第一数据集和第二数据集,所述第一数据集的存储结构为基于高效压缩位图的存储结构,所述第二数据集的存储结构为基于位图分片索引的存储结构。
在一些实施例中,所述查询请求涉及所述第一数据集与所述第二数据集的联合运算;所述对所述查询请求进行解析,还确定所述查询请求对应的联合运算符。所述输出模块440还用于根据每一数据集的单点查询结果和所述联合运算符,得到并输出所述查询请求的响应结果;其中,所述联合运算符包括所述第一数据集的第一单点查询结果与所述第二数据集的第二单点查询结果之间的运算符。
在一些实施例中,所述查询请求对应至少两个数据集,所述至少两个数据集包括第三数据集和第四数据集,所述第三数据集和所述第四数据集的存储结构均为基于高效压缩位图的存储结构,所述第三数据集的第一位数大于所述第四数据集的第二位数。所述输出模块440还用于将所述第四数据集的第二位数的第四单点查询结果转换为第一位数的第四单点查询结果;根据所述第三数据集的第一位数的第三单点查询结果和所述第四数据集的第一位数的第四单点查询结果,得到并输出所述查询请求的响应结果。
在一些实施例中,所述查询请求对应的数据集包括第二数据集。所述查询模块430还用于根据所述第二数据集的元数据,确定所述第二数据集为基于位图分片索引的存储结构,并确定所述第二数据集的各数据分片的分片存储区;根据所述分片存储区记录的所对应数据分片的分片信息,以及所述第二数据集的单点运算符,确定所述查询请求涉及的数据分片作为目标分片;在所述目标分片对应的分片存储区中,查询所述第二数据集的数据内容。
在一些实施例中,所述查询请求对应的数据集包括第二数据集,所述第二数据集的存储结构为基于位图分片索引的存储结构。所述查询模块430还用于在查询所述第二数据集的数据内容之后,将查询的所述第二数据集的数据内容保存在内存中,形成新的数据分片;在所述新的数据分片还用于区别所述第二数据集对应的第二单点运算符的其他运算时,遍历所述新的数据分片,以在所述内存中记录所述新的数据分片的分片信息;在所述新的数据分片不用于所述其他运算时,省去所述遍历所述新的数据分片的步骤。
在一些实施例中,所述查询请求对应的数据集包括第二数据集,所述查询模块430还用于根据所述第二数据集的元数据,确定所述第二数据集为基于位图分片索引的存储结构,并确定所述第二数据集的数据分片所在的分配存储区;将所述数据分片按照用户分组拆分成多个子分片;启动与所述多个子分片一一对应的多个线程;通过所述多个线程,在所述分配存储区中并行查询所对应子分片的数据内容,并根据所述单点运算符计算所对应子分片的分片结果;根据每一线程的分片结果,得到对于所述第二数据集的单点查询结果。
在一些实施例中,所述查询请求对应的数据集包括第二数据集,所述第二数据集的存储结构为位图分片索引的存储结构。所述查询模块430还用于对于所述第二数据集的多个数据分片,在同一内存空间进行对应于所述第二单点运算符的计算,得到所述第二单点查询结果。
在一些实施例中,所述接收查询请求之前,所述数据处理装置400还用于获取原始数据集;确定所述原始数据集的应用属性;其中,所述应用属性为描述所对应数据集含义的属性;根据所述应用属性,确定所述原始数据集的压缩类型;基于所确定的压缩类型,对所述原始数据集进行压缩,得到并在存储介质中保存压缩后的数据集;在元数据文件中记录所述压缩后的数据集的元数据;其中,所述元数据包括所述压缩后的数据集的存储属性和应用属性,所述存储属性包括存储位置和基于所述压缩类型的存储结构;所述查询请求对应的数据集包括所述压缩后的数据集。
在一些实施例中,所述数据处理装置400在所述应用属性表示所述原始数据为非去重类数据的情况下,确定所述原始数据集的压缩类型为位图分片索引;或者,在所述应用属性表示所述原始数据为去重类数据、且所述原始数据集的基数大于或者等于设定阈值的情况下,所述压缩类型为位图分片索引;或者,在所述应用属性表示所述原始数据为去重类数据、且所述原始数据集的基数小于设定阈值的情况下,确定所述原始数据集的压缩类型为高效压缩位图。
<设备实施例>
图15示出了根据另一些实施例的电子设备的硬件结构示意图。如图5所示,该电子设备500包括处理器510和存储器520,该存储器520用于存储计算机程序,该计算机程序用于控制处理器510进行操作,以控制电子设备500执行根据本公开任意实施例的数据处理方法。
本公开实施例还提供了一种计算机可读存储介质,该计算机可读存储介质存储计算机程序,该计算机程序在被处理器执行时实现根据本公开任意实施例的数据处理方法。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置、设备实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
本说明书的实施例可以是设备、方法和/或计算机程序产品。计算机程序产品可以包括计算机可读存储介质,其上载有用于使处理器实现本说明书实施例的各个方面的计算机可读程序指令。
计算机可读存储介质可以是可以保持和存储由指令执行设备使用的指令的有形设备。计算机可读存储介质例如可以是――但不限于――电存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或者上述的任意合适的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、静态随机存取存储器(SRAM)、便携式压缩盘只读存储器(CD-ROM)、数字多功能盘(DVD)、记忆棒、软盘、机械编码设备、例如其上存储有指令的打孔卡或凹槽内凸起结构、以及上述的任意合适的组合。这里所使用的计算机可读存储介质不被解释为瞬时信号本身,诸如无线电波或者其他自由传播的电磁波、通过波导或其他传输媒介传播的电磁波(例如,通过光纤电缆的光脉冲)、或者通过电线传输的电信号。
这里所描述的计算机可读程序指令可以从计算机可读存储介质下载到各个计算/处理设备,或者通过网络、例如因特网、局域网、广域网和/或无线网下载到外部计算机或外部存储设备。网络可以包括铜传输电缆、光纤传输、无线传输、路由器、防火墙、交换机、网关计算机和/或边缘服务器。每个计算/处理设备中的网络适配卡或者网络接口从网络接收计算机可读程序指令,并转发该计算机可读程序指令,以供存储在各个计算/处理设备中的计算机可读存储介质中。
用于执行本说明书的实施例操作的计算机程序指令可以是汇编指令、指令集架构(ISA)指令、机器指令、机器相关指令、微代码、固件指令、状态设置数据、或者以一种或多种编程语言的任意组合编写的源代码或目标代码,编程语言包括面向对象的编程语言—诸如Smalltalk、C++等,以及常规的过程式编程语言—诸如“C”语言或类似的编程语言。计算机可读程序指令可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络—包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。在一些实施例中,通过利用计算机可读程序指令的状态信息来个性化定制电子电路,例如可编程逻辑电路、现场可编程门阵列(FPGA)或可编程逻辑阵列(PLA),该电子电路可以执行计算机可读程序指令,从而实现本说明书实施例的各个方面。
这里参照根据本说明书实施例的方法、装置(设备)和计算机程序产品的流程图和/或框图描述了本说明书实施例的各个方面。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机可读程序指令实现。
这些计算机可读程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理器,从而生产出一种机器,使得这些指令在通过计算机或其它可编程数据处理装置的处理器执行时,产生了实现流程图和/或框图中的一个或多个方框中规定的功能/动作的装置。也可以把这些计算机可读程序指令存储在计算机可读存储介质中,这些指令使得计算机、可编程数据处理装置和/或其他设备以特定方式工作,从而,存储有指令的计算机可读介质则包括一个制造品,其包括实现流程图和/或框图中的一个或多个方框中规定的功能/动作的各个方面的指令。
也可以把计算机可读程序指令加载到计算机、其它可编程数据处理装置、或其它设备上,使得在计算机、其它可编程数据处理装置或其它设备上执行一系列操作步骤,以产生计算机实现的过程,从而使得在计算机、其它可编程数据处理装置、或其它设备上执行的指令实现流程图和/或框图中的一个或多个方框中规定的功能/动作。
附图中的流程图和框图显示了根据本说明书的多个实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或指令的一部分,模块、程序段或指令的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。对于本领域技术人员来说公知的是,通过硬件方式实现、通过软件方式实现以及通过软件和硬件结合的方式实现都是等价的。
以上已经描述了本说明书的各实施例,上述说明是示例性的,并非穷尽性的,并且也不限于所披露的各实施例。在不偏离所说明的各实施例的范围的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实施例的原理、实际应用或对市场中的技术的改进,或者使本技术领域的其它普通技术人员能理解本文披露的各实施例。

Claims (12)

1.一种数据处理方法,包括:
接收查询请求;
对所述查询请求进行解析,确定所述查询请求对应的数据集和所述查询请求对于所述数据集的单点运算符;
对于每一所述数据集,根据所述数据集的元数据,查询所述数据集的数据内容,及根据所述数据集的数据内容和所述数据集的单点运算符,得到对于所述数据集的单点查询结果;其中,所述数据集的元数据包括所述数据集的存储结构和存储位置;
根据每一数据集的单点查询结果,得到并输出对于所述查询请求的响应结果。
2.根据权利要求1所述的方法,其中,所述查询请求对应至少两个数据集,所述至少两个数据集包括第一数据集和第二数据集,所述第一数据集的存储结构为基于高效压缩位图的存储结构,所述第二数据集的存储结构为基于位图分片索引的存储结构。
3.根据权利要求2所述的方法,其中,所述查询请求涉及所述第一数据集与所述第二数据集的联合运算;所述对所述查询请求进行解析,还确定所述查询请求对应的联合运算符,所述联合运算符包括所述第一数据集的第一单点查询结果与所述第二数据集的第二单点查询结果之间的运算符;
所述根据每一数据集的单点查询结果,得到并输出所述查询请求的响应结果,包括:
根据每一数据集的单点查询结果和所述联合运算符,得到并输出所述查询请求的响应结果。
4.根据权利要求1所述的方法,其中,所述查询请求对应至少两个数据集,所述至少两个数据集包括第三数据集和第四数据集,所述第三数据集和所述第四数据集的存储结构均为基于高效压缩位图的存储结构,所述第三数据集的第一位数大于所述第四数据集的第二位数;所述根据每一数据集的单点查询结果,得到并输出所述查询请求的响应结果,包括:
将所述第四数据集的第二位数的第四单点查询结果转换为第一位数的第四单点查询结果;
根据所述第三数据集的第一位数的第三单点查询结果和所述第四数据集的第一位数的第四单点查询结果,得到并输出所述查询请求的响应结果。
5.根据权利要求1所述的方法,其中,所述查询请求对应的数据集包括第二数据集,根据所述数据集的元数据,查询所述数据集的数据内容,包括:
根据所述第二数据集的元数据,确定所述第二数据集为基于位图分片索引的存储结构,并确定所述第二数据集的各数据分片的分片存储区;
根据所述分片存储区记录的所对应数据分片的分片信息,以及所述第二数据集的单点运算符,确定所述查询请求涉及的数据分片作为目标分片;
在所述目标分片对应的分片存储区中,查询所述第二数据集的数据内容。
6.根据权利要求1所述的方法,其中,所述查询请求对应的数据集包括第二数据集,所述第二数据集的存储结构为基于位图分片索引的存储结构,查询所述第二数据集的数据内容之后,所述方法包括:
将查询的所述第二数据集的数据内容保存在内存中,形成新的数据分片;
在所述新的数据分片还用于区别所述第二数据集对应的第二单点运算符的其他运算时,遍历所述新的数据分片,以在所述内存中记录所述新的数据分片的分片信息;
在所述新的数据分片不用于所述其他运算时,省去所述遍历所述新的数据分片的步骤。
7.根据权利要求1所述的方法,其中,所述查询请求对应的数据集包括第二数据集,根据所述数据集的元数据,查询所述数据集的数据内容,及根据所述数据集的数据内容和所述数据集的单点运算符,得到对于所述数据集的单点查询结果,包括:
根据所述第二数据集的元数据,确定所述第二数据集为基于位图分片索引的存储结构,并确定所述第二数据集的数据分片所在的分片存储区;
将所述数据分片按照用户分组拆分成多个子分片;
启动与所述多个子分片一一对应的多个线程;
通过所述多个线程,在所述分配存储区中并行查询所对应子分片的数据内容,并根据所述单点运算符计算所对应子分片的分片结果;
根据每一线程的分片结果,得到对于所述第二数据集的单点查询结果。
8.根据权利要求1所述的方法,其中,所述查询请求对应的数据集包括第二数据集,所述第二数据集的存储结构为位图分片索引的存储结构,根据所述第二数据集的数据内容和所述第二数据集的第二单点运算符,得到对于所述第二数据集的第二单点查询结果,包括:
对于所述第二数据集的多个数据分片,在同一内存空间进行对应于所述第二单点运算符的计算,得到所述第二单点查询结果。
9.根据权利要求1至8中任一项所述的方法,其中,所述接收查询请求之前,所述方法还包括:
获取原始数据集;
确定所述原始数据集的应用属性;其中,所述应用属性为描述所对应数据集含义的属性;
根据所述应用属性,确定所述原始数据集的压缩类型;
基于所确定的压缩类型,对所述原始数据集进行压缩,得到并在存储介质中保存压缩后的数据集;
在元数据文件中记录所述压缩后的数据集的元数据;其中,所述元数据包括所述压缩后的数据集的存储属性和应用属性,所述存储属性包括存储位置和基于所述压缩类型的存储结构;
所述查询请求对应的数据集包括所述压缩后的数据集。
10.根据权利要求9所述的方法,其中,所述根据所述应用属性,确定所述原始数据集的压缩类型,包括:
在所述应用属性表示所述原始数据为非去重类数据的情况下,确定所述原始数据集的压缩类型为位图分片索引;或者,
在所述应用属性表示所述原始数据为去重类数据、且所述原始数据集的基数大于或者等于设定阈值的情况下,所述压缩类型为位图分片索引;或者,
在所述应用属性表示所述原始数据为去重类数据、且所述原始数据集的基数小于设定阈值的情况下,确定所述原始数据集的压缩类型为高效压缩位图。
11.一种数据处理装置,包括:
接收模块,接收查询请求;
解析模块,对所述查询请求进行解析,确定所述查询请求对应的数据集的元数据和所述查询请求对于所述数据集的单点运算符;
查询模块,对于每一所述数据集,根据所述数据集的元数据,查询所述数据集的数据内容,及根据所述数据集的数据内容和所述数据集的单点运算符,得到对于所述数据集的单点查询结果;其中,所述数据集的元数据包括所述数据集的存储结构和存储位置;以及,
输出模块,用于根据每一数据集的单点查询结果,得到并输出对于所述查询请求的响应结果。
12.一种电子设备,其特征在于,包括存储器和处理器,所述存储器用于存储计算机程序,所述处理器用于在所述计算机程序的控制下,执行根据权利要求1至10中任一项所述的数据处理方法。
CN202311386994.0A 2023-10-24 2023-10-24 数据处理方法、数据处理装置及电子设备 Pending CN117609588A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202311386994.0A CN117609588A (zh) 2023-10-24 2023-10-24 数据处理方法、数据处理装置及电子设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202311386994.0A CN117609588A (zh) 2023-10-24 2023-10-24 数据处理方法、数据处理装置及电子设备

Publications (1)

Publication Number Publication Date
CN117609588A true CN117609588A (zh) 2024-02-27

Family

ID=89952402

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202311386994.0A Pending CN117609588A (zh) 2023-10-24 2023-10-24 数据处理方法、数据处理装置及电子设备

Country Status (1)

Country Link
CN (1) CN117609588A (zh)

Similar Documents

Publication Publication Date Title
Harris et al. Improved representation of sequence bloom trees
EP2924594B1 (en) Data encoding and corresponding data structure in a column-store database
EP2321746B1 (en) Efficient large-scale processing of column based data encoded structures
US9383982B2 (en) Data-parallel computation management
US9910855B2 (en) Reordering of database records for improved compression
TWI578176B (zh) 多層搜尋引擎索引
US10019457B1 (en) Multi-level compression for storing data in a data store
EP2350881A2 (en) Efficient large-scale joining for querying of column based data encoded structures
CN101529416A (zh) 消息传送模型和架构
US20100114843A1 (en) Index Compression In Databases
WO2010014956A2 (en) Efficient column based data encoding for large-scale data storage
CN108509543B (zh) 一种基于Spark Streaming的流式RDF数据多关键词并行搜索方法
US9218394B2 (en) Reading rows from memory prior to reading rows from secondary storage
KR102267441B1 (ko) 데이터의 하이브리드 저장을 이용한 데이터 아카이빙 방법 및 시스템
CN104731945A (zh) 一种基于HBase的全文检索方法及装置
JP2012113706A (ja) データベース・クエリ最適化のためのコンピュータで実装される方法、コンピュータ・プログラム、およびデータ処理システム
CN114356971A (zh) 数据处理方法、装置以及系统
US20200356577A1 (en) Database access using a z-curve
CN105786941B (zh) 一种信息挖掘方法和装置
CN114139040A (zh) 一种数据存储及查询方法、装置、设备及可读存储介质
KR101955376B1 (ko) 비공유 아키텍처 기반의 분산 스트림 처리 엔진에서 관계형 질의를 처리하는 방법, 이를 수행하기 위한 기록 매체 및 장치
CN112307061A (zh) 用于查询数据的方法和装置
CN117609588A (zh) 数据处理方法、数据处理装置及电子设备
CN114398883B (zh) 演示文稿生成方法、装置、计算机可读存储介质及服务器
US9659061B2 (en) Method for efficient aggregation of numerous data using sparse bit sets

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