CN115617791A - 一种筛选目标主体的方法和装置 - Google Patents
一种筛选目标主体的方法和装置 Download PDFInfo
- Publication number
- CN115617791A CN115617791A CN202210789139.3A CN202210789139A CN115617791A CN 115617791 A CN115617791 A CN 115617791A CN 202210789139 A CN202210789139 A CN 202210789139A CN 115617791 A CN115617791 A CN 115617791A
- Authority
- CN
- China
- Prior art keywords
- dimension
- bitmap
- target
- main body
- value
- 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
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/22—Indexing; Data structures therefor; Storage structures
- G06F16/2228—Indexing structures
- G06F16/2237—Vectors, bitmaps or matrices
-
- 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/2457—Query processing with adaptation to user needs
-
- 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/25—Integrating or interfacing systems involving database management systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/95—Retrieval from the web
- G06F16/951—Indexing; Web crawling techniques
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/95—Retrieval from the web
- G06F16/953—Querying, e.g. by the use of web search engines
- G06F16/9535—Search customisation based on user profiles and personalisation
Abstract
本发明公开了一种筛选目标主体的方法和装置,涉及大数据技术领域。该方法的一具体实施方式包括:确定各个主体与位图中各个位的映射关系;对于每个维度,根据所述各个主体在所述维度下的维度值以及所述各个主体与所述位图中各个位的映射关系,生成维度值位图,从而生成键值对集合;将所述键值对集合以多行方式插入数据表中;接收查询指令,根据所述查询指令中携带的查询条件,从所述数据表中筛选出目标主体。该实施方式能够解决扩展字段不灵活和查询速度慢的技术问题。
Description
技术领域
本发明涉及大数据技术领域,尤其涉及一种筛选目标主体的方法和装置。
背景技术
目前,主体(比如商户、用户、物流、订单等)的维度及其维度值一般通过表来存储。但是,在筛选目标主体时存在以下技术问题:
扩展字段不灵活;海量数据的情况下,针对新增列的插入、删除、更新、查询性能和索引都很慢。
发明内容
有鉴于此,本发明实施例提供一种筛选目标主体的方法和装置,以解决扩展字段不灵活和查询速度慢的技术问题。
为实现上述目的,根据本发明实施例的一个方面,提供了一种筛选目标主体的方法,包括:
确定各个主体与位图中各个位的映射关系;
对于每个维度,根据所述各个主体在所述维度下的维度值以及所述各个主体与所述位图中各个位的映射关系,生成维度值位图,从而生成键值对集合;
将所述键值对集合以多行方式插入数据表中;
接收查询指令,根据所述查询指令中携带的查询条件,从所述数据表中筛选出目标主体。
可选地,确定各个主体与位图中各个位的映射关系,包括:
根据各个主体的标识,确定所述各个主体的排序;
根据所述各个主体的排序,确定所述各个主体与位图中各个位的映射关系;其中,所述各个主体的排序与所述位图中各个位的顺序相同。
可选地,对于每个维度,根据所述各个主体在所述维度下的维度值以及所述各个主体与所述位图中各个位的映射关系,生成维度值位图,从而生成键值对集合,包括:
对于每个维度,基于所述维度下的维度值,确定所述维度对应的各个主键;
对于每个主键,根据所述各个主体在所述维度下的维度值以及所述各个主体与所述位图中各个位的映射关系,生成所述主键对应的维度值位图;
分别根据所述各个主键对应的维度值位图,生成所述各个主键对应的键值,从而得到键值对集合。
可选地,基于所述维度下的维度值,确定所述维度对应的各个主键,包括:
若所述维度下的维度值为数值,则将所述维度值划分为多个维度值区间,从而确定所述维度对应的各个主键;其中,每个主键表示一个数维度值区间;
若所述维度下的维度值为非数值,则对所述维度值进行枚举,从而确定所述维度对应的各个主键;其中,每个主键表示一个维度值。
可选地,根据所述查询指令中携带的查询条件,从所述数据表中筛选出目标主体,包括:
根据所述查询指令中携带的查询条件,确定目标主键和逻辑操作;
从所述数据表中筛选出所述目标主键对应的目标键值;
根据所述各个主体与所述位图中各个位的映射关系、所述目标键值以及所述逻辑操作,筛选出目标主体。
可选地,根据所述各个主体与所述位图中各个位的映射关系、所述目标键值以及所述逻辑操作,筛选出目标主体,包括:
根据所述目标键值,确定所述各个目标主键对应的目标维度值位图;
对所述各个目标主键对应的目标维度值位图执行所述逻辑操作,从而根据所述各个主体与所述位图中各个位的映射关系,筛选出目标主体。
可选地,对所述各个目标主键对应的目标维度值位图执行所述逻辑操作,从而根据所述各个主体与所述位图中各个位的映射关系,筛选出目标主体,包括:
对所述各个目标主键对应的目标维度值位图执行所述逻辑操作,得到一个主体集合位图;
根据所述各个主体与所述位图中各个位的映射关系以及所述主体集合位图,筛选出目标主体。
可选地,所述逻辑操作包括以下一种:
与、或、非。
另外,根据本发明实施例的另一个方面,提供了一种筛选目标主体的装置,包括:
映射模块,用于确定各个主体与位图中各个位的映射关系;
位图模块,用于对于每个维度,根据所述各个主体在所述维度下的维度值以及所述各个主体与所述位图中各个位的映射关系,生成维度值位图,从而生成键值对集合;
插入模块,用于将所述键值对集合以多行方式插入数据表中;
筛选模块,用于接收查询指令,根据所述查询指令中携带的查询条件,从所述数据表中筛选出目标主体。
可选地,所述映射模块还用于:
根据各个主体的标识,确定所述各个主体的排序;
根据所述各个主体的排序,确定所述各个主体与位图中各个位的映射关系;其中,所述各个主体的排序与所述位图中各个位的顺序相同。
可选地,所述位图模块还用于:
对于每个维度,基于所述维度下的维度值,确定所述维度对应的各个主键;
对于每个主键,根据所述各个主体在所述维度下的维度值以及所述各个主体与所述位图中各个位的映射关系,生成所述主键对应的维度值位图;
分别根据所述各个主键对应的维度值位图,生成所述各个主键对应的键值,从而得到键值对集合。
可选地,所述位图模块还用于:
若所述维度下的维度值为数值,则将所述维度值划分为多个维度值区间,从而确定所述维度对应的各个主键;其中,每个主键表示一个数维度值区间;
若所述维度下的维度值为非数值,则对所述维度值进行枚举,从而确定所述维度对应的各个主键;其中,每个主键表示一个维度值。
可选地,所述筛选模块还用于:
根据所述查询指令中携带的查询条件,确定目标主键和逻辑操作;
从所述数据表中筛选出所述目标主键对应的目标键值;
根据所述各个主体与所述位图中各个位的映射关系、所述目标键值以及所述逻辑操作,筛选出目标主体。
可选地,所述筛选模块还用于:
根据所述目标键值,确定所述各个目标主键对应的目标维度值位图;
对所述各个目标主键对应的目标维度值位图执行所述逻辑操作,从而根据所述各个主体与所述位图中各个位的映射关系,筛选出目标主体。
可选地,所述筛选模块还用于:
对所述各个目标主键对应的目标维度值位图执行所述逻辑操作,得到一个主体集合位图;
根据所述各个主体与所述位图中各个位的映射关系以及所述主体集合位图,筛选出目标主体。
可选地,所述逻辑操作包括以下一种:
与、或、非。
根据本发明实施例的另一个方面,还提供了一种电子设备,包括:
一个或多个处理器;
存储装置,用于存储一个或多个程序,
当所述一个或多个程序被所述一个或多个处理器执行时,所述一个或多个处理器实现上述任一实施例所述的方法。
根据本发明实施例的另一个方面,还提供了一种计算机可读介质,其上存储有计算机程序,所述程序被处理器执行时实现上述任一实施例所述的方法。
根据本发明实施例的另一个方面,还提供了一种计算机程序产品,包括计算机程序,所述计算机程序被处理器执行时实现上述任一实施例所述的方法。
上述发明中的一个实施例具有如下优点或有益效果:因为采用根据各个主体在各个维度下的维度值以及各个主体与位图中各个位的映射关系,生成维度值位图,从而生成键值对集合并以多行方式插入到数据表中的技术手段,所以克服了现有技术中扩展字段不灵活和查询速度慢的技术问题。本发明实施例通过添加行记录来替代列字段扩展的方式,将各个主体的维度及其维度值插入到数据表中,让更多筛选维度可以很灵活地支撑,而且仅仅需要一个倒排索引,就可以将各个主体的维度及其维度值插入到数据表中,因此本发明实施例可以实现多维度快速筛选。
上述的非惯用的可选方式所具有的进一步效果将在下文中结合具体实施方式加以说明。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。其中:
图1是根据本发明实施例的筛选目标主体的方法的主要流程的示意图;
图2a-2c是根据本发明实施例的位图的示意图;
图3是根据本发明一个可参考实施例的筛选目标主体的方法的主要流程的示意图;
图4是根据本发明另一个可参考实施例的筛选目标主体的方法的主要流程的示意图;
图5是根据本发明实施例的筛选目标主体的装置的主要模块的示意图;
图6是本发明实施例可以应用于其中的示例性系统架构图;
图7是适于用来实现本发明实施例的终端设备或服务器的计算机系统的结构示意图。
具体实施方式
以下结合附图对本发明的示范性实施例做出说明,其中包括本发明实施例的各种细节以助于理解,应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识到,可以对这里描述的实施例做出各种改变和修改,而不会背离本发明的范围和精神。同样,为了清楚和简明,以下的描述中省略了对公知功能和结构的描述。
以商户为例,目前商户的维度及其维度值一般通过表来存储,如下表所示:
Shop_ID | Shop_Name | City | Sales | Business |
10001 | 某某旗舰店 | 上海 | 200029 | 酒水 |
10002 | 女装直营店 | 广州 | 9302 | 衣服 |
10003 | 美食直营店 | 北京 | 389012 | 餐饮 |
10006 | 蓝蓝器械 | 济南 | 323098 | 医药 |
12001 | 车商家 | 上海 | 12344 | 自动驾驶 |
比如,商户的筛选条件为:城市=上海,2021-10销售额>100W, 2021-10销售额<1000W,主营范围=服装,目前是通过SQL筛选出目标商户,如下所示:
Select shop_id,shop_name from t_shop where city=上海and 2021_10_sales>100w and and 2021_10_sales<1000w and business=服装
以用户为例,用户各个维度的维度值如下表所示:
User_ID | User_Name | City | Active | Repurchase | Sex | RMF |
AAA | 张三 | 上海 | 1d | 7day | man | new |
BBB | 李四 | 广州 | 1week | 3month | female | old |
CCC | 刘冬 | 北京 | 1month | 1month | man | high |
DDD | 李帅 | 济南 | 1d | 3month | man | low |
EEE | 王高 | 上海 | 1week | 1month | female | new |
比如,用户的筛选条件为:定位=北京,活跃=7天,复购天数>7,复购天数<1month,目前是通过SQL筛选出目标用户,如下所示:
Select user_id,user_name from t_user where city=北京and active=7dayand repurchase>7and repurchase<30
可见,现有技术存在以下技术问题:
1)不灵活:多一种筛选类型(比如性别),就需要扩展字段,如果数据量上亿,在mysql执行完扩展字段这个动作都需要30分钟。
2)索引有限:通过扩展字段,因为无法知晓筛选目标主体的条件组合的数量,导致增加了索引的字段可能命中,不增加索引的字段就不会命中,但是通常一个结构化的表,索引字段一般不宜超过7个。
3)海量数据的情况下,针对新增列的插入、删除、更新、查询性能和索引都很慢。
图1是根据本发明实施例的筛选目标主体的方法的主要流程的示意图。作为本发明的一个实施例,如图1所示,所述筛选目标主体的方法可以包括:
步骤101,确定各个主体与位图中各个位的映射关系。
步骤101是准备阶段,对各个主体进行编号,按照编号顺序将各个主体映射成对应的Bit-map(位图)格式。
可选地,步骤101可以包括:根据各个主体的标识,确定所述各个主体的排序;根据所述各个主体的排序,确定所述各个主体与位图中各个位的映射关系;其中,所述各个主体的排序与所述位图中各个位的顺序相同。在本发明的实施例中,主体可以是商户、用户、物流、订单等,通常会给主体指定一个唯一的标识,主体的标识可以是int类型,也可以是字符串uuid类型,各个主体的标识按照预设排序方式(可以是递增、递减或者随机)进行排序,从而确定各个主体与位图中各个位的映射关系,使得各个主体的排序与位图中各个位的顺序相同。
位图的基本思想是用一个bit(位)来标记某个元素对应的value,而key即是该元素。由于采用了位为单位来存储数据,因此在存储空间方面,可以大大节省。
在步骤101之前,需要预估主体的总体容量,比如有32个主体,那么位图就需要用上32位bit来标识。而且,给各个主体分配位图中具体的bit位置时,从最右侧位置0开始,向最左侧依次加1,即位图中各个位的顺序是按照从右到左排序。
例如,以下表中的商户ID为例,对各个商户进行排序,然后对各个主体进行编号,主体字典表如下所示
商户ID | 编号 |
kbin | 0 |
shisang | 1 |
canhiguang | 2 |
meshi | 3 |
aosenzhuang | 4 |
qinngxiu | 5 |
wth | 6 |
ceut | 7 |
dafdag | 8 |
编号顺序也就是主体的排序,接着将各个主体映射到位图中具体的bit位置,位图结构如图2a所示。
因此,主体集合可以采用位图进行标识,有效地节省了存储空间。
如果主体的数量为16个,则可以采用2个8位bit(b[0]/b[1])进行映射,位图结构如图2b所示。
步骤102,对于每个维度,根据所述各个主体在所述维度下的维度值以及所述各个主体与所述位图中各个位的映射关系,生成维度值位图,从而生成键值对集合。
步骤102和步骤103是写入数据阶段,针对主体的不同维度的新增内容进行迭代,并且形成多个维度值对应的位图,将维度值作为主键,位图作为键值,以行记录方式写入数据表中。
可选地,步骤102可以包括:对于每个维度,基于所述维度下的维度值,确定所述维度对应的各个主键;对于每个主键,根据所述各个主体在所述维度下的维度值以及所述各个主体与所述位图中各个位的映射关系,生成所述主键对应的维度值位图;分别根据所述各个主键对应的维度值位图,生成所述各个主键对应的键值,从而得到键值对集合。以商户为例,增加的维度为主营范围,则该维度下的维度值可以包括餐饮、服装、医药等,每个维度对应于一个主键,即business=餐饮,business=服装,business=医药;然后,以key为business=餐饮为例,如果某个商户的主营范围包含餐饮,则将位图中该商户对应的 bit位置的value置为1,否则,置为0,从而生成该key对应的维度值位图,因此总共生成三个维度值位图,最终得到各个主键对应的键值 (即位图),如下所示:
city=上海 | 1 | 0 | 1 | 0 | 0 | 0 | 1 | 0 |
city=北京 | 0 | 1 | 0 | 0 | 1 | 0 | 0 | 0 |
sales=202110-10W | 1 | 0 | 1 | 0 | 0 | 0 | 0 | 0 |
sales=202110-100W | 0 | 1 | 0 | 0 | 1 | 0 | 1 | 1 |
sales=202110-100W | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 1 |
business=服装 | 0 | 1 | 0 | 0 | 1 | 0 | 0 | 0 |
business=医药 | 1 | 0 | 1 | 0 | 0 | 0 | 1 | 1 |
business=餐饮 | 0 | 1 | 0 | 0 | 1 | 0 | 1 | 1 |
可选地,基于所述维度下的维度值,确定所述维度对应的各个主键,包括:若所述维度下的维度值为数值,则将所述维度值划分为多个维度值区间,从而确定所述维度对应的各个主键;其中,每个主键表示一个数维度值区间;若所述维度下的维度值为非数值,则对所述维度值进行枚举,从而确定所述维度对应的各个主键;其中,每个主键表示一个维度值。以最近30天的营业额为例,将该维度下的维度值划分为多个维度值区间,比如:小于一万,1万-2万,2万-5万,大于 5,每个区间对应于一个主键;以主营范围为例,对该维度下的维度值进行枚举,比如:餐饮、服装、医药、物流等,每个维度值对应于一个主键,即business=餐饮、business=服装、business=医药、business=物流。
步骤103,将所述键值对集合以多行方式插入数据表中。
本发明实施例将现有技术中的单独列多行方式变成了多行方式,将键值对集合以多行方式插入数据表中,实现倒排索引,从而查询速度。
插入语句可以如下所示:
Insert into t_shop_info(key,bitmaps)values(business=服装,bitmap(01001000));
Insert into t_shop_info(key,bitmaps)values(business=医药,bitmap(10100011));
Insert into t_shop_info(key,bitmaps)values(business=餐饮,bitmap(01001011));
如果是其他维度,那么变更key的值就可以了,例如:city=上海, city=北京,city=深圳。
上面是针对支持BitMap的关系型数据库通过SQL的方式完成操作,如果KV数据库是Redis,那么操作的命令就如下所示:
SETBIT<key><offset><value>
通过一个偏移值offset对bit数组的offset位置的bit位进行读写操作,需要注意的是offset从0开始。
只需要一个key=business=服装表示存储商户营业范围为服装状态集合数据,将商户ID作为offset,营业范围为服装就设置为1,下线设置0。通过GETBIT判断对应的商户营业范围是否为服装。
针对“Insert into t_shop_info(key,bitmaps)values(business=服装,bitmap(0100100));”对应的SETBIT设置如下:
设置商户ID为2的为1,即
SETBIT business=服装2 1
设置商户ID为5的为1,即
SETBIT business=服装5 1
其他的操作类似。
步骤104,接收查询指令,根据所述查询指令中携带的查询条件,从所述数据表中筛选出目标主体。
步骤104为读取数据计算阶段,针对查询条件筛选出符合查询条件的目标主体。
可选地,根据所述查询指令中携带的查询条件,从所述数据表中筛选出目标主体,包括:根据所述查询指令中携带的查询条件,确定目标主键和逻辑操作;从所述数据表中筛选出所述目标主键对应的目标键值;根据所述各个主体与所述位图中各个位的映射关系、所述目标键值以及所述逻辑操作,筛选出目标主体。比如,查询条件为:城市为上海,营业范围为服装,最近10月份营业额大于100w,那么目标主键为:city=上海,business=服装,sales=202110-100W,逻辑操作为“与”,查询语句如下:
Select key,bitmaps from t_shop_info where key=”city=上海”;
Select key,bitmaps from t_shop_info where key=”business=服装”;
Select key,bitmaps from t_shop_info where key=” sales=202110-100W”
上面是针对支持BitMap的关系型数据库通过SQL的方式完成操作,如果KV数据库是Redis,那么操作的命令就如下所示:
GETBIT<key><offset>
比如针对“Select key,bitmaps from t_shop_info where key=”business=服装”;”可以是
GET business=服装
针对商户ID为5,也可以是:
GETBIT business=服装5
返回1,则为营业范围为服装,否则为0。
执行查询语句,从数据表中筛选出所述目标主键对应的目标键值,也就是三个位图,然后根据三个目标主键对应的这三个位图以及各个主体与位图中各个位的映射关系,筛选出目标主体。
可选地,根据所述各个主体与所述位图中各个位的映射关系、所述目标键值以及所述逻辑操作,筛选出目标主体,包括:根据所述目标键值,确定所述各个目标主键对应的目标维度值位图;对所述各个目标主键对应的目标维度值位图执行所述逻辑操作,从而根据所述各个主体与所述位图中各个位的映射关系,筛选出目标主体。可选地,所述逻辑操作包括以下一种:与、或、非。每个主键对应的键值可以表示为该主键对应的维度值的位图,因此根据多个目标主键可以得到多个目标维度值位图,然后对这些目标维度值位图执行与、或、非等逻辑操作,并根据各个主体与所述位图中各个位的映射关系,筛选出目标主体。
可选地,对所述各个目标主键对应的目标维度值位图执行所述逻辑操作,从而根据所述各个主体与所述位图中各个位的映射关系,筛选出目标主体,包括:对所述各个目标主键对应的目标维度值位图执行所述逻辑操作,得到一个主体集合位图;根据所述各个主体与所述位图中各个位的映射关系以及所述主体集合位图,筛选出目标主体。由于在步骤101中给各个主体分配了位图中具体的bit位置,因此可以根据各个主体在位图中的bit位置以及主体集合位图中每个bit的value 筛选出目标主体,也就是value=1(代表符合查询条件)的bit位置对应的主体。
例如,对以下两个目标维度值位图执行“与”操作,得到一个主体集合位图,如图2c所示。
在该主体集合位图中,1代表符合查询条件的主体,因此基于各个主体与位图中各个bit的映射关系就可以筛选出符合查询条件的主体。
在海量的数据情况下,要做多种维度和维度值筛选,本发明实施例可以做到非常快速的筛选:1),可以根据维度值不一样,在海量数据的情况下做分库、分表、分区来缓解单表压力,因为是行分割,实现简单;2)由于对于多种筛选条件组合仅仅是做与、或、非等逻辑操作,对于计算机来讲非常擅长,因此可以有效提高筛选速度。
本发明实施例提供的方法可以快速地筛选出目标用户,向这些目标用户发放消费券,从而达到准确刺激用户消费的目的。
根据上面所述的各种实施例,可以看出本发明实施例通过根据各个主体在各个维度下的维度值以及各个主体与位图中各个位的映射关系,生成维度值位图,从而生成键值对集合并以多行方式插入到数据表中的技术手段,解决了现有技术中扩展字段不灵活和查询速度慢的技术问题。本发明实施例通过添加行记录来替代列字段扩展的方式,将各个主体的维度及其维度值插入到数据表中,让更多筛选维度可以很灵活地支撑,而且仅仅需要一个倒排索引,就可以将各个主体的维度及其维度值插入到数据表中,因此本发明实施例可以实现多维度快速筛选。
图3是根据本发明一个可参考实施例的筛选目标主体的方法的主要流程的示意图。作为本发明的又一个实施例,如图3所示,所述筛选目标主体的方法可以包括:
步骤301,根据各个主体的标识,确定所述各个主体的排序。
各个主体的标识按照预设排序方式进行排序,预设排序方式可以是标识由小到大递增,也可以是标识由大到小递减,还可以是标识随机排序,主体的标识可以是int类型,也可以是字符串uuid类型。
步骤302,根据所述各个主体的排序,确定所述各个主体与位图中各个位的映射关系;其中,所述各个主体的排序与所述位图中各个位的顺序相同。
确定了各个主体的排序后,按照排序对各个主体进行顺序编号,编号由小到大的顺序对应于位图中各个位由右到左的顺序,由此确定各个主体与位图中各个位的映射关系。
步骤303,对于每个维度,基于所述维度下的维度值,确定所述维度对应的各个主键。
若所述维度下的维度值为数值,则将所述维度值划分为多个维度值区间,从而确定所述维度对应的各个主键;其中,每个主键表示一个数维度值区间;以复购天数为例,将该维度下的维度值划分为多个维度值区间,比如:小于七天,7天-1个月,1个月-3个月,大于3个月,每个区间对应于一个主键。
若所述维度下的维度值为非数值,则对所述维度值进行枚举,从而确定所述维度对应的各个主键;其中,每个主键表示一个维度值。以性别为例,对该维度下的维度值进行枚举,比如:男、女,每个维度值对应于一个主键,即sex=男,sex=女。
步骤304,对于每个主键,根据所述各个主体在所述维度下的维度值以及所述各个主体与所述位图中各个位的映射关系,生成所述主键对应的维度值位图。
例如,对于key为sex=man,则根据各个主体在性别维度下的维度值(男或者女),以及所述各个主体与所述位图中各个位的映射关系,生成该主键(sex=man)对应的维度值位图。同理,对于key为sex=female,则根据各个主体在性别维度下的维度值(男或者女),以及所述各个主体与所述位图中各个位的映射关系,生成该主键(sex=female)对应的维度值位图。
步骤305,分别根据所述各个主键对应的维度值位图,生成所述各个主键对应的键值,从而得到键值对集合。
步骤306,将所述键值对集合以多行方式插入数据表中。
本发明实施例将现有技术中的单独列多行方式变成了多行方式,将键值对集合以多行方式插入数据表中,实现倒排索引,从而查询速度。
步骤307,接收查询指令。
步骤308,根据所述查询指令中携带的查询条件,从所述数据表中筛选出目标主体。
该步骤为读取数据计算阶段,针对查询条件筛选出符合查询条件的目标主体。
另外,在本发明一个可参考实施例中筛选目标主体的方法的具体实施内容,在上面所述筛选目标主体的方法中已经详细说明了,故在此重复内容不再说明。
图4是根据本发明另一个可参考实施例的筛选目标主体的方法的主要流程的示意图。作为本发明的另一个实施例,如图3所示,所述筛选目标主体的方法可以包括:
步骤401,确定各个主体与位图中各个位的映射关系。
步骤402,对于每个维度,根据所述各个主体在所述维度下的维度值以及所述各个主体与所述位图中各个位的映射关系,生成维度值位图,从而生成键值对集合。
步骤403,将所述键值对集合以多行方式插入数据表中。
步骤404,接收查询指令。
步骤405,根据所述查询指令中携带的查询条件,确定目标主键和逻辑操作。可选地,所述逻辑操作包括以下一种:与、或、非。
比如,查询条件为:城市为北京,性别为女,年龄为30-40岁,那么目标主键为:city=北京,sex=female,age=30-40,逻辑操作为“与”。
步骤406,从所述数据表中筛选出所述目标主键对应的目标键值。
通过执行查询语句,从数据表中筛选出各个目标主键对应的目标键值。需要指出的是,有几个目标主键,就会查询出几个目标键值,也就是位图。
步骤407,根据所述目标键值,确定所述各个目标主键对应的目标维度值位图。
根据每个目标键值对应的目标键值(0或者1),确定位图中各个 bit的value,从而分别得到每个目标主键对应的目标维度值位图。
步骤408,对所述各个目标主键对应的目标维度值位图执行所述逻辑操作,得到一个主体集合位图。
根据步骤405中解析出的逻辑操作,对各个目标主键对应的目标维度值位图执行所述逻辑操作(与、或、非等),得到一个主体集合位图。
步骤409,根据所述各个主体与所述位图中各个位的映射关系以及所述主体集合位图,筛选出目标主体。
由于在步骤401中给各个主体分配了位图中具体的bit位置,因此可以根据各个主体在位图中的bit位置以及主体集合位图中每个bit的 value(0或者1)筛选出目标主体。
如果value=1,代表符合查询条件的主体,那么该bit位置对应的主体即为目标主体。
另外,在本发明一个可参考实施例中筛选目标主体的方法的具体实施内容,在上面所述筛选目标主体的方法中已经详细说明了,故在此重复内容不再说明。
图5是根据本发明实施例的筛选目标主体的装置的主要模块的示意图。如图5所示,所述筛选目标主体的装置500包括映射模块501、位图模块502、插入模块503和筛选模块504;其中,映射模块501用于确定各个主体与位图中各个位的映射关系;位图模块502用于对于每个维度,根据所述各个主体在所述维度下的维度值以及所述各个主体与所述位图中各个位的映射关系,生成维度值位图,从而生成键值对集合;插入模块503用于将所述键值对集合以多行方式插入数据表中;筛选模块504用于接收查询指令,根据所述查询指令中携带的查询条件,从所述数据表中筛选出目标主体。
可选地,所述映射模块501还用于:
根据各个主体的标识,确定所述各个主体的排序;
根据所述各个主体的排序,确定所述各个主体与位图中各个位的映射关系;其中,所述各个主体的排序与所述位图中各个位的顺序相同。
可选地,所述位图模块502还用于:
对于每个维度,基于所述维度下的维度值,确定所述维度对应的各个主键;
对于每个主键,根据所述各个主体在所述维度下的维度值以及所述各个主体与所述位图中各个位的映射关系,生成所述主键对应的维度值位图;
分别根据所述各个主键对应的维度值位图,生成所述各个主键对应的键值,从而得到键值对集合。
可选地,所述位图模块502还用于:
若所述维度下的维度值为数值,则将所述维度值划分为多个维度值区间,从而确定所述维度对应的各个主键;其中,每个主键表示一个数维度值区间;
若所述维度下的维度值为非数值,则对所述维度值进行枚举,从而确定所述维度对应的各个主键;其中,每个主键表示一个维度值。
可选地,所述筛选模块504还用于:
根据所述查询指令中携带的查询条件,确定目标主键和逻辑操作;
从所述数据表中筛选出所述目标主键对应的目标键值;
根据所述各个主体与所述位图中各个位的映射关系、所述目标键值以及所述逻辑操作,筛选出目标主体。
可选地,所述筛选模块504还用于:
根据所述目标键值,确定所述各个目标主键对应的目标维度值位图;
对所述各个目标主键对应的目标维度值位图执行所述逻辑操作,从而根据所述各个主体与所述位图中各个位的映射关系,筛选出目标主体。
可选地,所述筛选模块504还用于:
对所述各个目标主键对应的目标维度值位图执行所述逻辑操作,得到一个主体集合位图;
根据所述各个主体与所述位图中各个位的映射关系以及所述主体集合位图,筛选出目标主体。
可选地,所述逻辑操作包括以下一种:
与、或、非。
需要说明的是,在本发明所述筛选目标主体的装置的具体实施内容,在上面所述筛选目标主体的方法中已经详细说明了,故在此重复内容不再说明。
图6示出了可以应用本发明实施例的筛选目标主体的方法或筛选目标主体的装置的示例性系统架构600。
如图6所示,系统架构600可以包括终端设备601、602、603,网络604和服务器606。网络604用以在终端设备601、602、603和服务器606之间提供通信链路的介质。网络604可以包括各种连接类型,例如有线、无线通信链路或者光纤电缆等等。
用户可以使用终端设备601、602、603通过网络604与服务器606 交互,以接收或发送消息等。终端设备601、602、603上可以安装有各种通讯客户端应用,例如购物类应用、网页浏览器应用、搜索类应用、即时通信工具、邮箱客户端、社交平台软件等(仅为示例)。
终端设备601、602、603可以是具有显示屏并且支持网页浏览的各种电子设备,包括但不限于智能手机、平板电脑、膝上型便携计算机和台式计算机等等。
服务器606可以是提供各种服务的服务器,例如对用户利用终端设备601、602、603所浏览的购物类网站提供支持的后台管理服务器 (仅为示例)。后台管理服务器可以对接收到的物品信息查询请求等数据进行分析等处理,并将处理结果反馈给终端设备。
需要说明的是,本发明实施例所提供的筛选目标主体的方法一般由服务器606执行,相应地,所述筛选目标主体的装置一般设置在服务器606中。
应该理解,图6中的终端设备、网络和服务器的数目仅仅是示意性的。根据实现需要,可以具有任意数目的终端设备、网络和服务器。
下面参考图7,其示出了适于用来实现本发明实施例的终端设备的计算机系统700的结构示意图。图7示出的终端设备仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。
如图7所示,计算机系统700包括中央处理单元(CPU) 701,其可以根据存储在只读存储器(ROM) 702中的程序或者从存储部分708加载到随机访问存储器(RAM) 703中的程序而执行各种适当的动作和处理。在RAM 703中,还存储有系统700操作所需的各种程序和数据。CPU 701、ROM 702以及RAM703通过总线704彼此相连。输入/输出(I/O)接口705也连接至总线704。
以下部件连接至I/O接口705:包括键盘、鼠标等的输入部分706;包括诸如阴极射线管(CRT)、液晶显示器(LCD)等以及扬声器等的输出部分707;包括硬盘等的存储部分708;以及包括诸如LAN卡、调制解调器等的网络接口卡的通信部分709。通信部分709经由诸如因特网的网络执行通信处理。驱动器710也根据需要连接至I/O接口705。可拆卸介质711,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器710上,以便于从其上读出的计算机程序根据需要被安装入存储部分708。
特别地,根据本发明公开的实施例,上文参考流程图描述的过程可以被实现为计算机软件程序。例如,本发明公开的实施例包括一种计算机程序,其包括承载在计算机可读介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分709从网络上被下载和安装,和/ 或从可拆卸介质711被安装。在该计算机程序被中央处理单元(CPU) 701执行时,执行本发明的系统中限定的上述功能。
需要说明的是,本发明所示的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本发明中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。而在本发明中,计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:无线、电线、光缆、RF等等,或者上述的任意合适的组合。
附图中的流程图和框图,图示了按照本发明各种实施例的系统、方法和计算机程序的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,上述模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图或流程图中的每个方框、以及框图或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
描述于本发明实施例中所涉及到的模块可以通过软件的方式实现,也可以通过硬件的方式来实现。所描述的模块也可以设置在处理器中,例如,可以描述为:一种处理器包括映射模块、位图模块、插入模块和筛选模块,其中,这些模块的名称在某种情况下并不构成对该模块本身的限定。
作为另一方面,本发明还提供了一种计算机可读介质,该计算机可读介质可以是上述实施例中描述的设备中所包含的;也可以是单独存在,而未装配入该设备中。上述计算机可读介质承载有一个或者多个程序,当上述一个或者多个程序被一个该设备执行时,该设备实现如下方法:确定各个主体与位图中各个位的映射关系;对于每个维度,根据所述各个主体在所述维度下的维度值以及所述各个主体与所述位图中各个位的映射关系,生成维度值位图,从而生成键值对集合;将所述键值对集合以多行方式插入数据表中;接收查询指令,根据所述查询指令中携带的查询条件,从所述数据表中筛选出目标主体。
作为另一方面,本发明实施例还提供了一种计算机程序产品,包括计算机程序,所述计算机程序被处理器执行时实现上述任一实施例所述的方法。
根据本发明实施例的技术方案,因为采用根据各个主体在各个维度下的维度值以及各个主体与位图中各个位的映射关系,生成维度值位图,从而生成键值对集合并以多行方式插入到数据表中的技术手段,所以克服了现有技术中扩展字段不灵活和查询速度慢的技术问题。本发明实施例通过添加行记录来替代列字段扩展的方式,将各个主体的维度及其维度值插入到数据表中,让更多筛选维度可以很灵活地支撑,而且仅仅需要一个倒排索引,就可以将各个主体的维度及其维度值插入到数据表中,因此本发明实施例可以实现多维度快速筛选。
上述具体实施方式,并不构成对本发明保护范围的限制。本领域技术人员应该明白的是,取决于设计要求和其他因素,可以发生各种各样的修改、组合、子组合和替代。任何在本发明的精神和原则之内所作的修改、等同替换和改进等,均应包含在本发明保护范围之内。
Claims (12)
1.一种筛选目标主体的方法,其特征在于,包括:
确定各个主体与位图中各个位的映射关系;
对于每个维度,根据所述各个主体在所述维度下的维度值以及所述各个主体与所述位图中各个位的映射关系,生成维度值位图,从而生成键值对集合;
将所述键值对集合以多行方式插入数据表中;
接收查询指令,根据所述查询指令中携带的查询条件,从所述数据表中筛选出目标主体。
2.根据权利要求1所述的方法,其特征在于,确定各个主体与位图中各个位的映射关系,包括:
根据各个主体的标识,确定所述各个主体的排序;
根据所述各个主体的排序,确定所述各个主体与位图中各个位的映射关系;其中,所述各个主体的排序与所述位图中各个位的顺序相同。
3.根据权利要求1所述的方法,其特征在于,对于每个维度,根据所述各个主体在所述维度下的维度值以及所述各个主体与所述位图中各个位的映射关系,生成维度值位图,从而生成键值对集合,包括:
对于每个维度,基于所述维度下的维度值,确定所述维度对应的各个主键;
对于每个主键,根据所述各个主体在所述维度下的维度值以及所述各个主体与所述位图中各个位的映射关系,生成所述主键对应的维度值位图;
分别根据所述各个主键对应的维度值位图,生成所述各个主键对应的键值,从而得到键值对集合。
4.根据权利要求3所述的方法,其特征在于,基于所述维度下的维度值,确定所述维度对应的各个主键,包括:
若所述维度下的维度值为数值,则将所述维度值划分为多个维度值区间,从而确定所述维度对应的各个主键;其中,每个主键表示一个数维度值区间;
若所述维度下的维度值为非数值,则对所述维度值进行枚举,从而确定所述维度对应的各个主键;其中,每个主键表示一个维度值。
5.根据权利要求1所述的方法,其特征在于,根据所述查询指令中携带的查询条件,从所述数据表中筛选出目标主体,包括:
根据所述查询指令中携带的查询条件,确定目标主键和逻辑操作;
从所述数据表中筛选出所述目标主键对应的目标键值;
根据所述各个主体与所述位图中各个位的映射关系、所述目标键值以及所述逻辑操作,筛选出目标主体。
6.根据权利要求5所述的方法,其特征在于,根据所述各个主体与所述位图中各个位的映射关系、所述目标键值以及所述逻辑操作,筛选出目标主体,包括:
根据所述目标键值,确定所述各个目标主键对应的目标维度值位图;
对所述各个目标主键对应的目标维度值位图执行所述逻辑操作,从而根据所述各个主体与所述位图中各个位的映射关系,筛选出目标主体。
7.根据权利要求6所述的方法,其特征在于,对所述各个目标主键对应的目标维度值位图执行所述逻辑操作,从而根据所述各个主体与所述位图中各个位的映射关系,筛选出目标主体,包括:
对所述各个目标主键对应的目标维度值位图执行所述逻辑操作,得到一个主体集合位图;
根据所述各个主体与所述位图中各个位的映射关系以及所述主体集合位图,筛选出目标主体。
8.根据权利要求6所述的方法,其特征在于,所述逻辑操作包括以下一种:
与、或、非。
9.一种筛选目标主体的装置,其特征在于,包括:
映射模块,用于确定各个主体与位图中各个位的映射关系;
位图模块,用于对于每个维度,根据所述各个主体在所述维度下的维度值以及所述各个主体与所述位图中各个位的映射关系,生成维度值位图,从而生成键值对集合;
插入模块,用于将所述键值对集合以多行方式插入数据表中;
筛选模块,用于接收查询指令,根据所述查询指令中携带的查询条件,从所述数据表中筛选出目标主体。
10.一种电子设备,其特征在于,包括:
一个或多个处理器;
存储装置,用于存储一个或多个程序,
当所述一个或多个程序被所述一个或多个处理器执行时,所述一个或多个处理器实现如权利要求1-8中任一所述的方法。
11.一种计算机可读介质,其上存储有计算机程序,其特征在于,所述程序被处理器执行时实现如权利要求1-8中任一所述的方法。
12.一种计算机程序产品,包括计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1-8中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210789139.3A CN115617791A (zh) | 2022-07-06 | 2022-07-06 | 一种筛选目标主体的方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210789139.3A CN115617791A (zh) | 2022-07-06 | 2022-07-06 | 一种筛选目标主体的方法和装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115617791A true CN115617791A (zh) | 2023-01-17 |
Family
ID=84857241
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210789139.3A Pending CN115617791A (zh) | 2022-07-06 | 2022-07-06 | 一种筛选目标主体的方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115617791A (zh) |
-
2022
- 2022-07-06 CN CN202210789139.3A patent/CN115617791A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10585913B2 (en) | Apparatus and method for distributed query processing utilizing dynamically generated in-memory term maps | |
CN110472068B (zh) | 基于异构分布式知识图谱的大数据处理方法、设备及介质 | |
CN108897874B (zh) | 用于处理数据的方法和装置 | |
CN109614402B (zh) | 多维数据查询方法和装置 | |
CN109034988B (zh) | 一种会计分录生成方法和装置 | |
CN105488050B (zh) | 一种数据库多索引方法、装置及系统 | |
CN107729399B (zh) | 数据处理的方法和装置 | |
CN107977396B (zh) | 一种KeyValue数据库的数据表的更新方法与表数据更新装置 | |
CN110543586A (zh) | 多重用户身份融合方法、装置、设备及存储介质 | |
CN103620601A (zh) | 在映射缩减过程中汇合表 | |
CN107480205B (zh) | 一种进行数据分区的方法和装置 | |
CN105740405B (zh) | 存储数据的方法和装置 | |
CN111046237A (zh) | 用户行为数据处理方法、装置、电子设备及可读介质 | |
CN113986933A (zh) | 物化视图的创建方法、装置、存储介质及电子设备 | |
CN111339743A (zh) | 一种账号生成的方法和装置 | |
CN110442585A (zh) | 数据更新方法、数据更新装置、计算机设备及存储介质 | |
CN111435406A (zh) | 一种纠正数据库语句拼写错误的方法和装置 | |
CN105843809B (zh) | 数据处理方法和装置 | |
US11531706B2 (en) | Graph search using index vertices | |
CN106326295B (zh) | 语义数据的存储方法及装置 | |
CN115617791A (zh) | 一种筛选目标主体的方法和装置 | |
CN112100168A (zh) | 一种确定数据关联关系的方法和装置 | |
CN111723063A (zh) | 一种离线日志数据处理的方法和装置 | |
CN113495891B (zh) | 一种数据处理方法和装置 | |
CN117009430A (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 |