CN112540972A - 一种基于RoaringBitmap海量用户高效圈选方法及装置 - Google Patents
一种基于RoaringBitmap海量用户高效圈选方法及装置 Download PDFInfo
- Publication number
- CN112540972A CN112540972A CN202011482828.7A CN202011482828A CN112540972A CN 112540972 A CN112540972 A CN 112540972A CN 202011482828 A CN202011482828 A CN 202011482828A CN 112540972 A CN112540972 A CN 112540972A
- Authority
- CN
- China
- Prior art keywords
- bitmap
- user
- data
- cube
- creating
- 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
Links
- 238000010187 selection method Methods 0.000 title claims abstract description 11
- 238000005192 partition Methods 0.000 claims abstract description 63
- 238000013499 data model Methods 0.000 claims abstract description 55
- 238000000034 method Methods 0.000 claims abstract description 36
- 230000006399 behavior Effects 0.000 claims abstract description 20
- 230000001133 acceleration Effects 0.000 claims abstract description 19
- 230000008569 process Effects 0.000 claims abstract description 13
- 230000006870 function Effects 0.000 claims description 43
- 238000004364 calculation method Methods 0.000 claims description 17
- 238000004590 computer program Methods 0.000 claims description 10
- 230000000295 complement effect Effects 0.000 claims description 8
- 230000002776 aggregation Effects 0.000 claims description 7
- 238000004220 aggregation Methods 0.000 claims description 7
- 230000001360 synchronised effect Effects 0.000 claims description 6
- 238000010586 diagram Methods 0.000 description 11
- 238000005259 measurement Methods 0.000 description 3
- 230000008901 benefit Effects 0.000 description 2
- 238000013507 mapping Methods 0.000 description 2
- 238000010295 mobile communication Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000004422 calculation algorithm Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000003973 irrigation Methods 0.000 description 1
- 230000002262 irrigation Effects 0.000 description 1
- 238000000638 solvent extraction Methods 0.000 description 1
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/21—Design, administration or maintenance of databases
- G06F16/211—Schema design and management
- G06F16/212—Schema design and management with details for data modelling support
-
- 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/2282—Tablespace storage structures; 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/24—Querying
- G06F16/245—Query processing
- G06F16/2453—Query optimisation
-
- 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/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Software Systems (AREA)
- Probability & Statistics with Applications (AREA)
- Computational Linguistics (AREA)
- Computing Systems (AREA)
- Fuzzy Systems (AREA)
- Mathematical Physics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开一种基于RoaringBitmap海量用户高效圈选方法及装置,其中,该方法包括:将根据用户行为数据创建用户行为的标签库和业务分类的标签库,然后根据标签库创建数据模型,再根据数据模型创建bitmap分区表存放用户历史数据,最终通过自定义函数计算出结果;从数仓数据同步到数据模型中,然后根据规则从数据模型对bitmap分区表进行补数,最后按需对bitmap分区表进行cube加速生成cube_bitmap表;根据用户所选维度选择直接查结果表或者是经过存储过程查询区分走加速cube查询还是从bitmap分区表中查询。该方法及装置实现了在海量用户中能够准确且高效的圈选出所要统计的信息。
Description
技术领域
本发明涉及移动通讯物联网领域,尤其是一种基于RoaringBitmap(高效位图计算)海量用户高效圈选方法及装置。
背景技术
随着移动通讯设备广泛使用,用户移动端上网数据的逐日累增,在基于不同纬度对用户的圈选通常都是采用OLAP-Druid的预汇总方式和SPARK分布式高效的内存计算方式来解决。但是,OLAP-Druid在去重的业务场景中精度上会丢失,统计的结果不准确,而SPAKR计算方式则是拉明细数据到内存中运算,虽然是分布式的,但是明细数据占用的内存资源相当大,并且在海量的数据做count(distinct)这种操作效率也低。对于海量用户的高效圈选这种业务场景,常规的技术方案用户体验较差。
发明内容
为解决对于海量用户的高效圈选这种业务场景,常规的技术方案用户体验较差的问题,本发明提供一种基于RoaringBitmap海量用户高效圈选方法及装置,基于海量用户的高效圈选业务场景,采用了RoaringBitmap插件在PostGreSql上研发了可以对海量用户高效圈选的方案,实现了用户在海量用户中能够准确且高效的圈选出所要统计的信息。
为实现上述目的,本发明采用下述技术方案:
在本发明一实施例中,提出了一种基于RoaringBitmap海量用户高效圈选方法,该方法包括:
数据模型创建:根据用户行为数据创建用户行为的标签库和业务分类的标签库,根据用户行为的标签库和业务分类的标签库创建数据模型,根据数据模型创建bitmap分区表,根据bitmap分区表创建查询统计的函数func(),再判断是否直接计算结果,是则创建结果表,同时根据bitmap分区表判断是否创建cube_bitmap表,是则创建cube_bitmap表,根据cube_bitmap表创建查询统计的函数func();
数据补数:从数仓数据同步到数据模型中,根据对应的函数func()进行补数,将IMSI同步到字典表中用于bitmap计算,根据分区删除要补数的日期数据,bitmap分区表数据根据数据模型数据进行补数,判断是否进行cube加速,是则生成模型cube_bitmap表;
自定义多维用户圈选:查询时判断是否路由到结果表直接查询,否则存储过程,判断是否路由cube,是则根据模型cube_bitmap表对应的函数func()查询,否则根据bitmap分区表对应的函数func()查询,根据bitmap分区表做计算返回临时结果表进行用户圈选统计。
进一步地,数据模型由指定的维度包括地市、性别、爱好、年龄、终端和职业以及指标包括活跃用户、沉睡用户、新用户和用户上网时长组成,该数据模型的数据从数仓中同步。
进一步地,bitmap分区表由要统计的维度+flag+statis_date+roaringbitmap字段构成;根据统计的维度汇总、去重、聚合和查询统计的函数func(),计算出每天以及历史的用户bitmap,最后根据日期设置为bitmap分区表。
进一步地,查询统计的函数func()支持多个时间段以及同环比查询。
进一步地,cube_bitmap表用于cube查询加速。
进一步地,结果表用于存储通过bitmap预计算的结果。
进一步地,将IMSI同步到字典表中用于bitmap计算,包括:
将IMSI同步到字典表中,并给每个用户生成一个唯一整数标识,将用于标识用户的整数存储到bitmap中,进行bitmap的位运算。
在本发明一实施例中,还提出了一种基于RoaringBitmap海量用户高效圈选装置,该装置包括:
数据模型创建模块,用于根据用户行为数据创建用户行为的标签库和业务分类的标签库,根据用户行为的标签库和业务分类的标签库创建数据模型,根据数据模型创建bitmap分区表,根据bitmap分区表创建查询统计的函数func(),再判断是否直接计算结果,是则创建结果表,同时根据bitmap分区表判断是否创建cube_bitmap表,是则创建cube_bitmap表,根据cube_bitmap表创建查询统计的函数func();
数据补数模块,用于从数仓数据同步到数据模型中,根据对应的函数func()进行补数,将IMSI同步到字典表中用于bitmap计算,根据分区删除要补数的日期数据,bitmap分区表数据根据数据模型数据进行补数,判断是否进行cube加速,是则生成模型cube_bitmap表;
自定义多维用户圈选模块,用于查询时判断是否路由到结果表直接查询,否则存储过程,判断是否路由cube,是则根据模型cube_bitmap表对应的函数func()查询,否则根据bitmap分区表对应的函数func()查询,根据bitmap分区表做计算返回临时结果表进行用户圈选统计。
进一步地,数据模型由指定的维度包括地市、性别、爱好、年龄、终端和职业以及指标包括活跃用户、沉睡用户、新用户和用户上网时长组成,该数据模型的数据从数仓中同步。
进一步地,bitmap分区表由要统计的维度+flag+statis_date+roaringbitmap字段构成;根据统计的维度汇总、去重、聚合和查询统计的函数func(),计算出每天以及历史的用户bitmap,最后根据日期设置为bitmap分区表。
进一步地,查询统计的函数func()支持多个时间段以及同环比查询。
进一步地,cube_bitmap表用于cube查询加速。
进一步地,结果表用于存储通过bitmap预计算的结果。
进一步地,将IMSI同步到字典表中用于bitmap计算,包括:
将IMSI同步到字典表中,并给每个用户生成一个唯一整数标识,将用于标识用户的整数存储到bitmap中,进行bitmap的位运算。
在本发明一实施例中,还提出了一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行计算机程序时实现前述基于RoaringBitmap海量用户高效圈选方法。
在本发明一实施例中,还提出了一种计算机可读存储介质,计算机可读存储介质存储有执行基于RoaringBitmap海量用户高效圈选方法的计算机程序。
有益效果:
1、本发明应用于在海量用户中圈选活跃用户和沉睡用户,用户可以随机选择需要统计的维度进行高效的圈选,查询效率较高,完美解决了此类场景用户的需求。
2、本发明的海量用户圈选实则是bitmap集合之间的位运算,其存储和计算资源消耗不大,并且运算效率较高,同时也解决了目前海量数据去重、精度丢失和效率低等难题。
附图说明
图1是本发明一实施例的基于RoaringBitmap海量用户高效圈选方法流程示意图;
图2是本发明一实施例的数据模型创建流程示意图;
图3是本发明一实施例的数据补数流程示意图;
图4是本发明一实施例的自定义多维用户圈选流程示意图;
图5是本发明一实施例的用户圈选IMSI组成示意图;
图6是本发明一实施例的基于RoaringBitmap海量用户高效圈选装置结构示意图;
图7是本发明一实施例的计算机设备结构示意图。
具体实施方式
下面将参考若干示例性实施方式来描述本发明的原理和精神,应当理解,给出这些实施方式仅仅是为了使本领域技术人员能够更好地理解进而实现本发明,而并非以任何方式限制本发明的范围。相反,提供这些实施方式是为了使本公开更加透彻和完整,并且能够将本公开的范围完整地传达给本领域的技术人员。
本领域技术人员知道,本发明的实施方式可以实现为一种***、装置、设备、方法或计算机程序产品。因此,本公开可以具体实现为以下形式,即:完全的硬件、完全的软件(包括固件、驻留软件、微代码等),或者硬件和软件结合的形式。
根据本发明的实施方式,提出了一种基于RoaringBitmap海量用户高效圈选方法及装置,支持用户自定义维度进行圈选;支持高效的在海量用户中进行圈选;计算资源占用较少;存储资源占用较少;支持海量数据高效的精确去重。
下面参考本发明的若干代表性实施方式,详细阐释本发明的原理和精神。
图1是本发明一实施例的基于RoaringBitmap海量用户高效圈选方法流程示意图。如图1所示,该方法包括:
bitmap模型创建:bitmap模型生成和查询func()生成;
bitmap计算逻辑封装:模型bitmap计算和cube_bitmap计算;
通过模型bitmap计算得到模型和cube的bitmap结果,供用户终端模型查询和加速cube查询,同时删除临时结果表;
通过IDE定时调度,删除临时结果表。
下面进行详细的流程描述:
1、数据模型创建
图2是本发明一实施例的数据模型创建流程示意图。如图2所示,根据用户行为数据创建用户行为的标签库和业务分类的标签库,根据用户行为的标签库和业务分类的标签库创建数据模型(根据传入的维度和度量创建),根据数据模型创建bitmap分区表,根据bitmap分区表创建查询统计的函数func()(参数有时间、维度、度量排序、全链路id),再判断是否直接计算结果,是则创建结果表,同时根据bitmap分区表判断是否创建cube_bitmap表,是则创建cube_bitmap表,根据cube_bitmap表创建查询统计的函数func()(参数有时间、维度、度量排序、全链路id);
数据模型由指定的维度(地市、性别、爱好、年龄、终端和职业等)和指标(活跃用户、沉睡用户、新用户和用户上网时长等)组成,该数据模型的数据从数仓中同步;
数据模型的bitmap分区表,该表主要是要统计的维度+flag+statis_date+roaringbitmap字段构成,根据统计的维度汇总、去重、聚合和查询统计的函数func(),计算每天以及历史的用户bitmap,最后根据日期将该表设置为分区表;
查询统计的函数func(),支持多个时间段以及同环比查询;
cube_bitmap表,主要用于cube(数据立方体)查询加速;
结果表,用于预计算的结果存储到结果表中,结果表的数据是事先通过bitmap计算好的结果存放起来的,查询时候不需要通过bitmap实时运算。
2、数据补数(bitmap相关表补数)
图3是本发明一实施例的数据补数流程示意图。如图3所示,从数仓数据同步到数据模型中,根据对应的函数func()进行补数,将IMSI同步到字典表中用于bitmap计算,根据分区删除要补数的日期数据,bitmap分区表数据根据数据模型数据进行补数,判断是否进行cube加速,是则生成模型cube_bitmap表;具体如下:
先从数仓数据同步到数据模型中,再根据自定义规则映射到指定的维度汇总、去重、聚合和查询统计的函数func()进行手工或自动补数;
将每天的IMSI(用户唯一标识)同步到字典表中,此表主要用于存储IMSI以及每个IMSI对应的一个整数值,该整数值将是该用户的唯一标识,后续的运算都是基于此对应的标识进行位运算;
数据模型和字典表通过IMSI进行关联,获取用户标识ID进行转化rb_or_agg(rb_build(ARRAY[b.id::INT])),获取当天(flag=1)统计维度用户的存入到bitmap分区表中数据;
将数据模型的bitmap分区表中当天的(flag=1)和前一天(flag=2)统计的bitmap数据进行rb_or_agg(bitmap)操作,数据整合后作为当天的flag=2数据***到bitmap分区表中;
日全量统计表只有flag+statis_date+Roaringbitmap字段,主要统计当天的用户和历史用户bitmap情况,统计flag=1的当天bitmap数据,数据模型与用户表进行关联bitmap取rb_or_agg(rb_build(ARRAY[b.id::INT]));
日全量统计表统计flag=2的当天bitmap数据,从自身表中获取当天flag=1和昨天统计的flag=2的数据,然后做rb_or_agg(bitmap);
cube加速补数是基于bitmap分区表进行补数,维度是biatmap分区表中维度的子集,主要用于查询加速。
3、自定义多维用户圈选
图4是本发明一实施例的自定义多维用户圈选流程示意图。如图4所示,查询时判断是否路由到结果表直接查询,否则存储过程,判断是否路由cube,是则根据模型cube_bitmap表对应的函数func()查询,否则根据bitmap分区表对应的函数func()查询,根据bitmap分区表做计算返回临时结果表;具体如下:
查询时先根据所选维度进行判断是否路由到结果表还是路由到存储过程查询,存储过程查询分为是否走加速cube查询还是从数据模型的bitmap分区表中查询;
数据模型的biatmap分区表或cube加速都从子集对应的bitmap分区表中获取bitmap_cur和bitmap_sum,从日全量统计表中获取全量的bitmap_all数据(flag=2且日期是查询日期的前一天)后,进行bitmap位运算(位图算法,内存中连续的二进制位bit,用于对大量整型数据做去重和查询),最后将数据***临时结果表中;
最后根据返回的临时结果表进行用户圈选统计。
4、cube加速
cube加速,剔除无用的统计维度,只保留需要统计的维度信息,降低group by后的基数,提高运算效率。
需要说明的是,尽管在上述实施例及附图中以特定顺序描述了本发明方法的操作,但是,这并非要求或者暗示必须按照该特定顺序来执行这些操作,或是必须执行全部所示的操作才能实现期望的结果。附加地或备选地,可以省略某些步骤,将多个步骤合并为一个步骤执行,和/或将一个步骤分解为多个步骤执行。
为了对上述基于RoaringBitmap海量用户高效圈选方法进行更为清楚的解释,下面结合一个具体的实施例来进行说明,然而值得注意的是该实施例仅是为了更好地说明本发明,并不构成对本发明不当的限定。
应用举例如下:
图5是本发明一实施例的用户圈选IMSI组成示意图。如图5所示,设计方案如下:
<1>将用户的IMSI分别映射成对应的唯一整数,后续都基于此整数进行bitmap位运算;
<2>Bitmap_Table_A统计每天地市的活跃用户,统计维度只有地市+tag(1当天2历史)+日期,每天会有两条统计信息,一个是当天的用户bitmap集合,另外一个是历史的用户bitmap集合,第二天统计基于第一天统计的集合和当天的集合做rb_or_agg,形成一个新的当天历史bitmap集合;
<3>Bitmap_Table_B基于统计维度(性别+年龄段)+tag+日期,来统计活跃用户情况,每天也会有两条统计信息,一个是当天的,一个是历史的,当天统计的是所有的性别和年龄段做的group by统计,统计bitmap集合打上标签为flag=1,历史flag=2是基于前一天历史加上当天统计的集合做rb_or_agg,形成一个新的当天历史bitmap集合。
<4>两种场景统计:
第一,0923南京活跃用户,则根据Bitmap_Table_A表统计,见下表1:
表1
日期 | 渠道 | Flag(1当天2历史) | Bitmap集合 |
0923 | 南京 | 1 | {A,C} |
0923 | 上海 | 1 | {B} |
0923 | 南京 | 2 | {A,C} |
0923 | 上海 | 2 | {B} |
0924 | 南京 | 1 | {A,D} |
0924 | 上海 | 1 | {} |
0924 | 南京 | 2 | {A,C,D} |
0924 | 上海 | 2 | {B} |
统计0923活跃实则就是bitmap集合{A,D},{A,C,D}和bitmap集合{A,C}进行rb_andnot_cardinality位运算,结果为{D},活跃用户的数量为1。
第二,0826男性80后活跃用户,则根据Bitmap_table_B统计,见下表2:
表2
日期 | 性别 | 年龄 | Flag | Bitmap集合 |
0826 | 男 | 80 | 1 | {A} |
0826 | 男 | 90 | 1 | {C} |
0826 | 男 | 00 | 1 | {B} |
0826 | 女 | 80 | 2 | {A} |
0826 | 女 | 90 | 2 | {C} |
0826 | 女 | 00 | 2 | {B} |
0827 | 男 | 80 | 1 | {D} |
0827 | 女 | 90 | 1 | {A} |
0827 | 男 | 80 | 2 | {D} |
0827 | 女 | 90 | 2 | {C,A} |
统计0826男性活跃用户实则就是bitmap集合{A}和bitmap集合{D}进行rb_andnot_cardinality位运算,结果为{A},活跃用户的数量为1。
基于同一发明构思,本发明还提出一种基于RoaringBitmap海量用户高效圈选装置。该装置的实施可以参见上述方法的实施,重复之处不再赘述。以下所使用的术语“模块”,可以是实现预定功能的软件和/或硬件的组合。尽管以下实施例所描述的装置较佳地以软件来实现,但是硬件,或者软件和硬件的组合的实现也是可能并被构想的。
图6是本发明一实施例的基于RoaringBitmap海量用户高效圈选装置结构示意图。如图6所示,该装置包括:
数据模型创建模块101,用于根据用户行为数据创建用户行为的标签库和业务分类的标签库,根据用户行为的标签库和业务分类的标签库创建数据模型,根据数据模型创建bitmap分区表,根据bitmap分区表创建查询统计的函数func(),再判断是否直接计算结果,是则创建结果表,同时根据bitmap分区表判断是否创建cube_bitmap表,是则创建cube_bitmap表,根据cube_bitmap表创建查询统计的函数func();
数据模型由指定的维度包括地市、性别、爱好、年龄、终端和职业以及指标包括活跃用户、沉睡用户、新用户和用户上网时长组成,该数据模型的数据从数仓中同步;
bitmap分区表由要统计的维度+flag+statis_date+roaringbitmap字段构成;根据统计的维度汇总、去重、聚合和查询统计的函数func(),计算出每天以及历史的用户bitmap,最后根据日期设置为bitmap分区表;
查询统计的函数func()支持多个时间段以及同环比查询;
cube_bitmap表用于cube查询加速;
结果表用于存储通过bitmap预计算的结果;
数据补数模块102,用于从数仓数据同步到数据模型中,根据对应的函数func()进行补数,将IMSI同步到字典表中用于bitmap计算即将IMSI同步到字典表中,并给每个用户生成一个唯一整数标识,将用于标识用户的整数存储到bitmap中,进行bitmap的位运算,根据分区删除要补数的日期数据,bitmap分区表数据根据数据模型数据进行补数,判断是否进行cube加速,是则生成模型cube_bitmap表;
自定义多维用户圈选模块103,用于查询时判断是否路由到结果表直接查询,否则存储过程,判断是否路由cube,是则根据模型cube_bitmap表对应的函数func()查询,否则根据bitmap分区表对应的函数func()查询,根据bitmap分区表做计算返回临时结果表进行用户圈选统计。
应当注意,尽管在上文详细描述中提及了基于RoaringBitmap海量用户高效圈选装置的若干模块,但是这种划分仅仅是示例性的并非强制性的。实际上,根据本发明的实施方式,上文描述的两个或更多模块的特征和功能可以在一个模块中具体化。反之,上文描述的一个模块的特征和功能可以进一步划分为由多个模块来具体化。
基于前述发明构思,如图7所示,本发明还提出一种计算机设备200,包括存储器210、处理器220及存储在存储器210上并可在处理器220上运行的计算机程序230,处理器220执行计算机程序230时实现前述基于RoaringBitmap海量用户高效圈选方法。
基于前述发明构思,本发明还提出一种计算机可读存储介质,计算机可读存储介质存储有执行前述基于RoaringBitmap海量用户高效圈选方法的计算机程序。
本发明提出的基于RoaringBitmap海量用户高效圈选方法及装置,在1亿用户圈选活跃用户和沉睡用户性能提高10倍以上。
虽然已经参考若干具体实施方式描述了本发明的精神和原理,但是应该理解,本发明并不限于所公开的具体实施方式,对各方面的划分也不意味着这些方面中的特征不能组合以进行受益,这种划分仅是为了表述的方便。本发明旨在涵盖所附权利要求的精神和范围内所包含的各种修改和等同布置。
对本发明保护范围的限制,所属领域技术人员应该明白,在本发明的技术方案的基础上,本领域技术人员不需要付出创造性劳动即可做出的各种修改或变形仍在本发明的保护范围以内。
Claims (16)
1.一种基于RoaringBitmap海量用户高效圈选方法,其特征在于,该方法包括:
数据模型创建:根据用户行为数据创建用户行为的标签库和业务分类的标签库,根据用户行为的标签库和业务分类的标签库创建数据模型,根据数据模型创建bitmap分区表,根据bitmap分区表创建查询统计的函数func(),再判断是否直接计算结果,是则创建结果表,同时根据bitmap分区表判断是否创建cube_bitmap表,是则创建cube_bitmap表,根据cube_bitmap表创建查询统计的函数func();
数据补数:从数仓数据同步到数据模型中,根据对应的函数func()进行补数,将IMSI同步到字典表中用于bitmap计算,根据分区删除要补数的日期数据,bitmap分区表数据根据数据模型数据进行补数,判断是否进行cube加速,是则生成模型cube_bitmap表;
自定义多维用户圈选:查询时判断是否路由到结果表直接查询,否则存储过程,判断是否路由cube,是则根据模型cube_bitmap表对应的函数func()查询,否则根据bitmap分区表对应的函数func()查询,根据bitmap分区表做计算返回临时结果表进行用户圈选统计。
2.根据权利要求1所述的基于RoaringBitmap海量用户高效圈选方法,其特征在于,所述数据模型由指定的维度包括地市、性别、爱好、年龄、终端和职业以及指标包括活跃用户、沉睡用户、新用户和用户上网时长组成,该数据模型的数据从数仓中同步。
3.根据权利要求1所述的基于RoaringBitmap海量用户高效圈选方法,其特征在于,所述bitmap分区表由要统计的维度+flag+statis_date+roaringbitmap字段构成;根据统计的维度汇总、去重、聚合和查询统计的函数func(),计算出每天以及历史的用户bitmap,最后根据日期设置为bitmap分区表。
4.根据权利要求1所述的基于RoaringBitmap海量用户高效圈选方法,其特征在于,所述查询统计的函数func()支持多个时间段以及同环比查询。
5.根据权利要求1所述的基于RoaringBitmap海量用户高效圈选方法,其特征在于,所述cube_bitmap表用于cube查询加速。
6.根据权利要求1所述的基于RoaringBitmap海量用户高效圈选方法,其特征在于,所述结果表用于存储通过bitmap预计算的结果。
7.根据权利要求1所述的基于RoaringBitmap海量用户高效圈选方法,其特征在于,所述将IMSI同步到字典表中用于bitmap计算,包括:
将IMSI同步到字典表中,并给每个用户生成一个唯一整数标识,将用于标识用户的整数存储到bitmap中,进行bitmap的位运算。
8.一种基于RoaringBitmap海量用户高效圈选装置,其特征在于,该装置包括:
数据模型创建模块,用于根据用户行为数据创建用户行为的标签库和业务分类的标签库,根据用户行为的标签库和业务分类的标签库创建数据模型,根据数据模型创建bitmap分区表,根据bitmap分区表创建查询统计的函数func(),再判断是否直接计算结果,是则创建结果表,同时根据bitmap分区表判断是否创建cube_bitmap表,是则创建cube_bitmap表,根据cube_bitmap表创建查询统计的函数func();
数据补数模块,用于从数仓数据同步到数据模型中,根据对应的函数func()进行补数,将IMSI同步到字典表中用于bitmap计算,根据分区删除要补数的日期数据,bitmap分区表数据根据数据模型数据进行补数,判断是否进行cube加速,是则生成模型cube_bitmap表;
自定义多维用户圈选模块,用于查询时判断是否路由到结果表直接查询,否则存储过程,判断是否路由cube,是则根据模型cube_bitmap表对应的函数func()查询,否则根据bitmap分区表对应的函数func()查询,根据bitmap分区表做计算返回临时结果表进行用户圈选统计。
9.根据权利要求8所述的基于RoaringBitmap海量用户高效圈选装置,其特征在于,所述数据模型由指定的维度包括地市、性别、爱好、年龄、终端和职业以及指标包括活跃用户、沉睡用户、新用户和用户上网时长组成,该数据模型的数据从数仓中同步。
10.根据权利要求8所述的基于RoaringBitmap海量用户高效圈选装置,其特征在于,所述bitmap分区表由要统计的维度+flag+statis_date+roaringbitmap字段构成;根据统计的维度汇总、去重、聚合和查询统计的函数func(),计算出每天以及历史的用户bitmap,最后根据日期设置为bitmap分区表。
11.根据权利要求8所述的基于RoaringBitmap海量用户高效圈选装置,其特征在于,所述查询统计的函数func()支持多个时间段以及同环比查询。
12.根据权利要求8所述的基于RoaringBitmap海量用户高效圈选装置,其特征在于,所述cube_bitmap表用于cube查询加速。
13.根据权利要求8所述的基于RoaringBitmap海量用户高效圈选装置,其特征在于,所述结果表用于存储通过bitmap预计算的结果。
14.根据权利要求8所述的基于RoaringBitmap海量用户高效圈选装置,其特征在于,所述将IMSI同步到字典表中用于bitmap计算,包括:
将IMSI同步到字典表中,并给每个用户生成一个唯一整数标识,将用于标识用户的整数存储到bitmap中,进行bitmap的位运算。
15.一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1-7任一项所述方法。
16.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有执行权利要求1-7任一项所述方法的计算机程序。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011482828.7A CN112540972A (zh) | 2020-12-16 | 2020-12-16 | 一种基于RoaringBitmap海量用户高效圈选方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011482828.7A CN112540972A (zh) | 2020-12-16 | 2020-12-16 | 一种基于RoaringBitmap海量用户高效圈选方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN112540972A true CN112540972A (zh) | 2021-03-23 |
Family
ID=75018842
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011482828.7A Pending CN112540972A (zh) | 2020-12-16 | 2020-12-16 | 一种基于RoaringBitmap海量用户高效圈选方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112540972A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113434513A (zh) * | 2021-07-14 | 2021-09-24 | 上海浦东发展银行股份有限公司 | 用户标签数据存储方法、装置、***、设备及存储介质 |
CN115934806A (zh) * | 2023-02-07 | 2023-04-07 | 云账户技术(天津)有限公司 | 一种基于rbm的数据去重的统计方法、装置、设备及介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2018176623A1 (zh) * | 2017-03-28 | 2018-10-04 | 上海跬智信息技术有限公司 | 一种olap预计算模型、自动建模方法及自动建模*** |
CN110648185A (zh) * | 2019-11-28 | 2020-01-03 | 苏宁云计算有限公司 | 一种目标人群圈选方法、装置及计算机设备 |
CN111444165A (zh) * | 2019-01-16 | 2020-07-24 | 苏宁易购集团股份有限公司 | 用于电商平台的会员数据圈选方法及*** |
CN112000747A (zh) * | 2020-07-08 | 2020-11-27 | 苏宁云计算有限公司 | 数据多维分析方法、装置及*** |
-
2020
- 2020-12-16 CN CN202011482828.7A patent/CN112540972A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2018176623A1 (zh) * | 2017-03-28 | 2018-10-04 | 上海跬智信息技术有限公司 | 一种olap预计算模型、自动建模方法及自动建模*** |
CN111444165A (zh) * | 2019-01-16 | 2020-07-24 | 苏宁易购集团股份有限公司 | 用于电商平台的会员数据圈选方法及*** |
CN110648185A (zh) * | 2019-11-28 | 2020-01-03 | 苏宁云计算有限公司 | 一种目标人群圈选方法、装置及计算机设备 |
CN112000747A (zh) * | 2020-07-08 | 2020-11-27 | 苏宁云计算有限公司 | 数据多维分析方法、装置及*** |
Non-Patent Citations (1)
Title |
---|
普通网友: "苏宁6亿会员是如何做到精确快速分析的?", 《HTTPS://BLOG.CSDN.NET/K6T9Q8XKS6IIKZPPIFQ/ARTICLE/DETAILS/107096213》 * |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113434513A (zh) * | 2021-07-14 | 2021-09-24 | 上海浦东发展银行股份有限公司 | 用户标签数据存储方法、装置、***、设备及存储介质 |
CN115934806A (zh) * | 2023-02-07 | 2023-04-07 | 云账户技术(天津)有限公司 | 一种基于rbm的数据去重的统计方法、装置、设备及介质 |
CN115934806B (zh) * | 2023-02-07 | 2023-05-26 | 云账户技术(天津)有限公司 | 一种基于rbm的数据去重的统计方法、装置、设备及介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110413611B (zh) | 数据存储、查询方法及装置 | |
CN112540972A (zh) | 一种基于RoaringBitmap海量用户高效圈选方法及装置 | |
CN105335402B (zh) | 基于静态Cache的搜索方法、索引数据生成方法以及装置 | |
CN108874803A (zh) | 数据存储方法、装置及存储介质 | |
CN108549696B (zh) | 一种基于内存计算的时间序列数据相似性查询方法 | |
CN104636349A (zh) | 一种索引数据压缩以及索引数据搜索的方法和设备 | |
CN109299101B (zh) | 数据检索方法、装置、服务器和存储介质 | |
CN105468699B (zh) | 去重数据统计方法及设备 | |
CN105701128B (zh) | 一种查询语句的优化方法和装置 | |
CN108304404B (zh) | 一种基于改进的Sketch结构的数据频率估计方法 | |
CN111475511A (zh) | 基于树状结构的数据存储方法、访问方法、装置及设备 | |
CN108549688B (zh) | 一种数据操作的优化方法、装置、设备和存储介质 | |
CN109739854A (zh) | 一种数据存储方法及装置 | |
WO2014035934A2 (en) | Compressed set representation for sets as measures in olap cubes | |
CN112527836A (zh) | 一种基于t-box平台的大数据查询方法 | |
CN114996552A (zh) | 一种数据获取方法及终端 | |
US20230273875A1 (en) | Method for searching free blocks in bitmap data, and related components | |
CN107203550B (zh) | 一种数据处理方法和数据库服务器 | |
EP3488359A1 (en) | Systems and methods for database compression and evaluation | |
CN110309367B (zh) | 信息分类的方法、信息处理的方法和装置 | |
CN108268515B (zh) | 聚合表维度的选择方法和装置 | |
CN101799803A (zh) | 信息处理方法、模块及*** | |
CN115934806B (zh) | 一种基于rbm的数据去重的统计方法、装置、设备及介质 | |
CN117648391B (zh) | 一种gnss轨迹数据存储、查询方法及数据库*** | |
CN114780679B (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 | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20210323 |
|
RJ01 | Rejection of invention patent application after publication |