CN112035493A - 用户属性数据的更新方法、装置、服务器和存储介质 - Google Patents
用户属性数据的更新方法、装置、服务器和存储介质 Download PDFInfo
- Publication number
- CN112035493A CN112035493A CN202010716307.7A CN202010716307A CN112035493A CN 112035493 A CN112035493 A CN 112035493A CN 202010716307 A CN202010716307 A CN 202010716307A CN 112035493 A CN112035493 A CN 112035493A
- Authority
- CN
- China
- Prior art keywords
- bit
- data
- updated
- database
- user
- 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
- 238000000034 method Methods 0.000 title claims abstract description 42
- 230000008859 change Effects 0.000 claims description 82
- 230000008520 organization Effects 0.000 description 12
- 238000010586 diagram Methods 0.000 description 10
- 230000004048 modification Effects 0.000 description 9
- 238000012986 modification Methods 0.000 description 9
- 230000006870 function Effects 0.000 description 8
- 230000006399 behavior Effects 0.000 description 6
- 238000004590 computer program Methods 0.000 description 4
- 238000001514 detection method Methods 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 230000002093 peripheral effect Effects 0.000 description 2
- 230000008569 process Effects 0.000 description 2
- 230000006978 adaptation Effects 0.000 description 1
- 230000004075 alteration Effects 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000004891 communication 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/23—Updating
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本公开关于一种用户属性数据的更新方法、装置、服务器和存储介质,属于数据处理领域。具体实施方案为:当用户状态信息变化时,获取数据库之中用以存储用户属性数据的位数据,并确定位数据之中每一位所对应的属性类别和状态含义;根据属性类别和状态含义,确定位数据之中的待更新位以及待更新位所对应的目标值;根据目标值和待更新位的原值生成针对用户属性数据的数据库运算操作序列;根据数据库运算操作序列之中的数据库运算操作,对数据库之中用户属性数据的位数据进行运算,以使待更新位从原值更新为目标值。该实施方案充分利用了数据库的数据类型存储功能以及按位更新方式,实现了用户属性数据的更新。
Description
技术领域
本公开涉及数据处理领域,尤其涉及一种用户属性数据的更新方法、装置、服务器和存储介质。
背景技术
数据库是数据的有序集合。它是模式、表、查询、报告、视图和其他对象的集合。数据通常被组织成以支持需要信息的流程的方式来模拟现实的各个方面,例如,以支持存储用户属性信息的方式来实现用户属性的查询的可用性。
数据库管理系统是一种与用户、其他应用程序和数据库本身进行交互以获取和分析数据的计算机软件应用程序。数据库管理系统已成为现有系统中不可或缺的一个重要组成部分,而数据的存取功能则是数据库系统最基本的功能。例如,利用数据库管理系统的数据存取功能,实现对应用程序之中大量用户的用户属性数据进行管理,而当该应用程序之中用户的用户属性发生变化时,需要对数据库之中该用户的用户属性数据进行更新。
发明内容
本公开提供一种用户属性数据的更新方法、装置、服务器和存储介质,以至少解决相关技术中数据库之中用户属性数据更新的问题。本公开的技术方案如下:
根据本公开实施例的第一方面,提供一种用户属性数据的更新方法,包括:
当用户状态信息变化时,获取数据库之中用以存储用户属性数据的位数据,并确定所述位数据之中每一位所对应的属性类别和状态含义;
根据所述位数据之中每一位所对应的属性类别和状态含义,确定所述位数据之中的待更新位以及所述待更新位所对应的目标值,其中,所述目标值为用户属性随着用户状态信息变化而发生变化后所对应的值;
根据所述目标值和所述待更新位的原值生成针对所述用户属性数据的数据库运算操作序列,其中,所述数据库运算操作序列包括至少一个数据库运算操作;以及
根据所述数据库运算操作序列之中的数据库运算操作,对所述数据库之中所述用户属性数据的位数据进行运算,以使所述位数据之中的待更新位从所述原值更新为所述目标值。
根据本公开的一些实施例,所述根据所述位数据之中每一位所对应的属性类别和状态含义,确定所述位数据之中的待更新位以及所述待更新位所对应的目标值,包括:
获取所述用户属性数据之中的属性变化值以及所述属性变化值所属的属性类别;
根据所述属性变化值所属的属性类别和所述位数据之中每一位所对应的属性类别,确定所述位数据之中的待更新位;
根据所述属性变化值和所述位数据之中每一位所对应的状态含义,确定所述待更新位所对应的目标值。
根据本公开的一些实施例,所述根据所述目标值和所述待更新位的原值生成针对所述用户属性数据的数据库运算操作序列,包括:
根据所述待更新位的目标值和所述原值,确定所述待更新位所对应的属性类别的变更类型;
根据所述变更类型生成针对所述用户属性数据的数据库运算操作序列。
根据本公开的一些实施例,当所述变更类型为第一类型时,所述数据库运算操作序列包括逻辑或运算操作;当所述变更类型为第二类型时,所述数据库运算操作序列包括依次进行的逻辑取反运算操作和逻辑与运算操作;
其中,所述第一类型表示所述待更新位从无属性状态切换为有属性状态,所述第二类型表示所述待更新位从所述有属性状态切换为所述无属性状态。
根据本公开的一些实施例,当所述变更类型为所述第一类型时,根据所述数据库运算操作序列之中的数据库运算操作,对所述数据库之中所述用户属性数据的位数据进行运算,包括:
基于所述待更新位,生成所述用户属性数据的位数据所对应的第一中间数值;
将所述位数据所对应的原始数值和所述位数据所对应的第一中间数值进行逻辑或运算操作。
根据本公开的实施例,所述将所述位数据所对应的原始数值和所述位数据所对应的第一中间数值进行逻辑或运算操作,包括:
将所述原始数值之中和所述第一中间数值之中相同位置上的数值进行比较;
在所述原始数值之中和所述第一中间数值之中相同位置上的数值不一致时,将所述原始数据之中所述相同位置上的数值更新为1;
在所述原始数值之中和所述第一中间数值之中相同位置上的数值一致时,将所述原始数值之中所述相同位置上的数值保持不变。
根据本公开的一些实施例,当所述变更类型为所述第二类型时,根据所述数据库运算操作序列之中的数据库运算操作,对所述数据库之中所述用户属性数据的位数据进行运算,包括:
基于所述待更新位,生成所述用户属性数据的位数据所对应的第一中间数值;
将所述位数据所对应的第一中间数值进行逻辑取反运算操作,得到第二中间数值;
将所述第二中间数值和所述位数据所对应的原始数值进行逻辑与运算操作。
根据本公开的实施例,所述将所述第二中间数值和所述位数据所对应的原始数值进行逻辑与运算操作,包括:
将所述原始数值之中和所述第二中间数值之中相同位置上的数值进行比较;
在所述原始数值之中和所述第二中间数值之中相同位置上的数值不一致时,将所述原始数值之中所述相同位置上的数值更新为0;
在所述原始数值之中和所述第二中间数值之中相同位置上的数值一致时,将所述原始数值之中所述相同位置上的数值保持不变。
根据本公开的一些实施例,在根据所述目标值和所述待更新位的原值生成针对所述用户属性数据的数据库运算操作序列之前,所述方法还包括:
在所述数据库之中不存在针对所述用户的用户属性数据的存储记录时,根据所述待更新位以及所述待更新位所对应的目标值生成针对所述用户的用户属性数据的待存储数据;
将所述待存储数据插入至所述数据库之中,以使所述数据库之中存在针对所述用户的用户属性数据;
在所述数据库之中存在针对所述用户的用户属性数据的存储记录时,执行所述根据所述目标值和所述待更新位的原值生成针对所述用户属性数据的数据库运算操作序列的步骤。
根据本公开的一些实施例,在根据所述数据库运算操作序列之中的数据库运算操作,对所述数据库之中所述用户属性数据的位数据进行运算之前,所述方法还包括:
基于所述数据库的行级锁,对所述数据库之中所述用户属性数据的位数据所在行进行加锁。
根据本公开的一些实施例,在用户状态信息变化之前,所述方法还包括:
获取用户针对目标应用的使用行为数据;
根据所述使用行为数据,检测所述用户状态信息是否发生变化。
根据本公开实施例的第二方面,提供一种用户属性数据的更新装置,包括:
第一获取模块,被配置为在用户状态信息变化时,获取数据库之中用以存储用户属性数据的位数据,并确定所述位数据之中每一位所对应的属性类别和状态含义;
第一确定模块,被配置为根据所述位数据之中每一位所对应的属性类别和状态含义,确定所述位数据之中的待更新位以及所述待更新位所对应的目标值,其中,所述目标值为用户属性随着用户状态信息变化而发生变化后所对应的值;
第一生成模块,被配置为根据所述目标值和所述待更新位的原值生成针对所述用户属性数据的数据库运算操作序列,其中,所述数据库运算操作序列包括至少一个数据库运算操作;以及
更新模块,被配置为根据所述数据库运算操作序列之中的数据库运算操作,对所述数据库之中所述用户属性数据的位数据进行运算,以使所述位数据之中的待更新位从所述原值更新为所述目标值。
根据本公开的一些实施例,所述第一确定模块被配置为:获取所述用户属性数据之中的属性变化值以及所述属性变化值所属的属性类别,并根据所述属性变化值所属的属性类别和所述位数据之中每一位所对应的属性类别,确定所述位数据之中的待更新位,以及根据所述属性变化值和所述位数据之中每一位所对应的状态含义,确定所述待更新位所对应的目标值。
根据本公开的一些实施例,所述第一生成模块包括:
确定单元,被配置为根据所述待更新位的目标值和所述原值,确定所述待更新位所对应的属性类别的变更类型;
生成单元,被配置为根据所述变更类型生成针对所述用户属性数据的数据库运算操作序列。
根据本公开的一些实施例,当所述变更类型为第一类型时,所述数据库运算操作序列包括逻辑或运算操作;当所述变更类型为第二类型时,所述数据库运算操作序列包括依次进行的逻辑取反运算操作和逻辑与运算操作;
其中,所述第一类型表示所述待更新位从无属性状态切换为有属性状态,所述第二类型表示所述待更新位从所述有属性状态切换为所述无属性状态。
根据本公开的一些实施例,当所述变更类型为所述第一类型时,所述更新模块包括:
第一生成单元,被配置为基于所述待更新位,生成所述用户属性数据的位数据所对应的第一中间数值;
第一更新单元,被配置为将所述位数据所对应的原始数值和所述位数据所对应的第一中间数值进行逻辑或运算操作。
根据本公开的实施例,所述第一更新单元被配置为:
将所述原始数值之中和所述第一中间数值之中相同位置上的数值进行比较;
在所述原始数值之中和所述第一中间数值之中相同位置上的数值不一致时,将所述原始数据之中所述相同位置上的数值更新为1;
在所述原始数值之中和所述第一中间数值之中相同位置上的数值一致时,将所述原始数值之中所述相同位置上的数值保持不变。
根据本公开的一些实施例,当所述变更类型为所述第二类型时,所述更新模块包括:
第二生成单元,被配置为基于所述待更新位,生成所述用户属性数据的位数据所对应的第一中间数值;
第二更新单元,被配置为将所述位数据所对应的第一中间数值进行逻辑取反运算操作,得到第二中间数值,并将所述第二中间数值和所述位数据所对应的原始数值进行逻辑与运算操作。
根据本公开的实施例,所述第二更新单元被配置为:
将所述原始数值之中和所述第二中间数值之中相同位置上的数值进行比较;
在所述原始数值之中和所述第二中间数值之中相同位置上的数值不一致时,将所述原始数值之中所述相同位置上的数值更新为0;
在所述原始数值之中和所述第二中间数值之中相同位置上的数值一致时,将所述原始数值之中所述相同位置上的数值保持不变。
根据本公开的一些实施例,所述更新装置还包括:
第二生成模块,被配置为在所述数据库之中不存在针对所述用户的用户属性数据的存储记录时,根据所述待更新位以及所述待更新位所对应的目标值生成针对所述用户的用户属性数据的待存储数据;
其中,所述更新模块,还被配置为将所述待存储数据插入至所述数据库之中,以使所述数据库之中存在针对所述用户的用户属性数据;
所述第一生成模块,还被配置为在所述数据库之中存在针对所述用户的用户属性数据的存储记录时,根据所述目标值和所述待更新位的原值生成针对所述用户属性数据的数据库运算操作序列。
根据本公开的一些实施例,所述更新装置还包括:
加锁模块,被配置为在所述更新模块根据所述数据库运算操作序列之中的数据库运算操作,对所述数据库之中所述用户属性数据的位数据进行运算之前,基于所述数据库的行级锁,对所述数据库之中所述用户属性数据的位数据所在行进行加锁。
根据本公开的一些实施例,所述更新装置还包括:
第二获取模块,被配置为获取用户针对目标应用的使用行为数据;
检测模块,被配置为根据所述使用行为数据,检测所述用户状态信息是否发生变化。
根据本公开实施例的第三方面,提供一种服务器,包括:
处理器;
用于存储所述处理器可执行指令的存储器;
其中,所述处理器被配置为执行所述指令,以实现本公开第一方面实施例所述的用户属性数据的更新方法。
根据本公开实施例的第四方面,提供一种存储介质,当所述存储介质中的指令由服务器的处理器执行时,使得所述服务器能够执行本公开第一方面实施例所述的用户属性数据的更新方法。
根据本公开实施例的第五方面,提供一种计算机程序产品,当所述计算机程序产品中的指令由处理器执行时,执行本公开第一方面实施例所述的用户属性数据的更新方法。
本公开的实施例提供的技术方案至少带来以下有益效果:
在确定需要对数据库之中用以存储用户属性数据的位数据进行更新时,可确定该位数据之中的待更新位以及待更新位所对应的目标值,并根据待更新位所对应的目标值和待更新位在数据库之中的原值,选取数据库运算操作,利用选取的数据库运算操作对数据库之中用户属性数据的位数据进行按位运算,从而将该位数据之中的待更新位从原值更新为目标值,充分利用了数据库的数据类型存储功能以及按位更新方式,实现了用户属性数据的更新。
另外,本公开实施例通过在数据库层实现用户属性数据的更新,充分利用数据库进行数据更新时所具有的原子性特性,可以实现对同一个用户的用户属性数据进行多次并发修改的同时,还可以保证数据修改的完整性。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理,并不构成对本公开的不当限定。
图1是根据一示例性实施例示出的一种用户属性数据的更新方法的流程图。
图2是根据又一示例性实施例示出的一种用户属性数据的更新方法的流程图。
图3是根据另一示例性实施例示出的一种用户属性数据的更新方法的流程图。
图4是根据一示例性实施例示出的一种用户属性数据的更新装置框图。
图5是根据另一示例性实施例示出的一种用户属性数据的更新装置框图。
图6是根据又一示例性实施例示出的一种用户属性数据的更新装置框图。
图7是根据又一示例性实施例示出的一种用户属性数据的更新装置框图。
图8是根据另一示例性实施例示出的一种用户属性数据的更新装置框图。
图9是根据另一示例性实施例示出的一种用户属性数据的更新装置框图。
图10是根据又一示例性实施例示出的一种用户属性数据的更新装置框图。
图11是根据一示例性实施例示出的一种用于更新用户属性数据的服务器200的框图。
具体实施方式
为了使本领域普通人员更好地理解本公开的技术方案,下面将结合附图,对本公开实施例中的技术方案进行清楚、完整地描述。
需要说明的是,本公开的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本公开的实施例能够以除了在这里图示或描述的那些以外的顺序实施。以下示例性实施例中所描述的实施方式并不代表与本公开相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本公开的一些方面相一致的装置和方法的例子。
图1是根据一示例性实施例示出的一种用户属性数据的更新方法的流程图,如图1所示,该用户属性数据的更新方法可用于数据库服务器中,包括以下步骤。
在步骤S11中,当用户状态信息变化时,获取数据库之中用以存储用户属性数据的位数据,并确定位数据之中每一位所对应的属性类别和状态含义。
需要说明的是,用户属性数据可以表示用户的当前状态,所以,当用户的状态信息发生变化时,对应的用户属性数据也相应发生变化。其中,应用程序之中用户的用户属性数据存储于数据库服务器中。例如,当用户在使用应用程序时,可能会使得用户的状态信息发生变化,从而使得用户的属性数据发生变化。在用户属性数据发生变化时,需要对数据库之中该用户的用户属性数据进行更新。
在本公开的实施例中,数据库服务器可采用二进制形式存储用户属性数据,例如,数据库之中用户属性数据是利用一串二进制数存储的,其中,所述一串二进制数之中的每一位都是用户的标记,每一位的标记可为1或0,分别表示一个状态,用来标记用户的属性。也就是说,数据库服务器之中可采用二进制的位数据存储该用户属性信息。其中,数据库可包括但不限于MySQL、SQL Server等。作为一种示例,该数据库可为MySQL数据库。
在用户状态信息变化时,说明用户的属性数据也会随着发生变化,此时需要对数据库之中该用户的用户属性数据进行更新。可选地,需先获取数据库之中用以存储用户属性数据的位数据,并确定该位数据之中每一位所对应的属性类别和状态含义。
在步骤S12中,根据位数据之中每一位所对应的属性类别和状态含义,确定该位数据之中的待更新位以及待更新位所对应的目标值。其中,所述目标值为用户属性随着用户状态信息变化而发生变化后所对应的值。
在获得用户属性数据的位数据之中每一位所对应的属性类别和状态含义之后,可根据该位数据之中每一位所对应的属性类别和状态含义确定该位数据之中的待更新位以及该待更新位所对应的目标值。
其中,该待更新位可理解为用户属性数据之中哪个或哪些属性发生了变化,而发生了变化的属性在二进制数(即位数据)之中所对应的位置;待更新位所对应的目标值可根据用户属性数据之中发生变化的属性的变化值来确定。在本公开的一些实施例中,可获取用户属性数据之中的属性变化值以及属性变化值所属的属性类别,并根据属性变化值所属的属性类别和该位数据之中每一位所对应的属性类别,确定该位数据之中的待更新位,并根据属性变化值和该位数据之中每一位所对应的状态含义,确定待更新位所对应的目标值。
举例而言,假设用户属性有3个属性,数据库可利用3位二进制存储用户属性数据,假设第一位属性是:是否是主播,1代表是,0代表不是;第二位属性是:是否有充值过,1代表是,0代表不是;第3位属性代表用户是否加入组织机构,1表示加入,0表示未加入。当用户状态信息发生变化,比如用户加入了主播时,可确定用户属性数据之中“是否是主播”属性发生了变化,此时将“是否是主播”这一属性所对应的二进制位确定为待更新位,该待更新位所对应的目标值为“1”,其代表加入了主播。
在步骤S13中,根据目标值和待更新位的原值生成针对用户属性数据的数据库运算操作序列,其中,数据库运算操作序列包括至少一个数据库运算操作。
在本公开的实施例中,所述原值可理解为待更新位在数据库之中的原始数值。
需要说明的是,数据库运算操作可包括但不限于逻辑或运算操作、逻辑取反运算操作和逻辑与运算操作。本公开实施例在对数据库之中一个用户的属性数据进行更新时,采用的是按位运算更新,待更新位所对应的属性类别的变更类型的不同,则在对待更新位进行数值更新时,所采用的数据库运算操作也会不同。
在本公开的一些实施例中,可根据待更新位的目标值和原值,确定待更新位所对应的属性类别的变更类型,并根据变更类型生成针对用户属性数据的数据库运算操作序列。作为一种示例,当变更类型为第一类型时,数据库运算操作序列可包括逻辑或运算操作;当变更类型为第二类型时,数据库运算操作序列可包括依次进行的逻辑取反运算操作和逻辑与运算操作;其中,该第一类型表示待更新位从无属性状态切换为有属性状态,第二类型表示待更新位从有属性状态切换为无属性状态。
举例而言,假设用户属性有3个属性,数据库可利用3位二进制存储用户属性数据,假设第一位属性是:是否是主播,1代表是,0代表不是;第二位属性是:是否有充值过,1代表是,0代表不是;第3位属性代表用户是否加入组织机构,1表示加入,0表示未加入。当用户状态信息发生变化,比如用户加入了主播时,则待更新位为第一位,待更新位所对应的目标值为1,待更新位的原值为0,根据目标值和原值确定待更新位所对应的属性类别的变更类型为第一类型,即表示用户的“是否是主播”属性状态从无属性状态切换为有属性状态,此时可选取逻辑或运算操作用以对数据库之中的用户属性数据进行按位更新;又如,用户退出了主播,则待更新位为第一位,待更新位所对应的目标值为0,待更新位的原值为1,根据目标值和原值确定待更新位所对应的属性类别的变更类型为第一类型,即表示用户的“是否是主播”属性状态从有属性状态切换为无属性状态,此时可依次选取逻辑取反运算操作和逻辑与运算操作对数据库之中该用户的用户属性数据的位数据进行按位更新。
在步骤S14中,根据数据库运算操作序列之中的数据库运算操作,对数据库之中用户属性数据的位数据进行运算,以使该位数据之中的待更新位从原值更新为目标值。
可选地,依据数据库运算操作序列之中的数据库运算操作对数据库之中用户属性数据的位数据进行按位运算,得到的二进制数值即为更新后的用户属性数据所对应的二进制数,从而使得数据库中用以存储用户属性数据的位数据之中的待更新位的数值从原值更新为目标值,实现了用户属性数据的更新。
根据本公开实施例的用户属性数据的更新方法,在确定需要对数据库之中用以存储用户属性数据的位数据进行更新时,可确定该位数据之中的待更新位以及待更新位所对应的目标值,并根据待更新位所对应的目标值和待更新位在数据库之中的原值,选取数据库运算操作,利用选取的数据库运算操作对数据库之中用户属性数据的位数据进行按位运算,从而将该位数据之中的待更新位从原值更新为目标值,充分利用了数据库的数据类型存储功能以及按位更新方式,实现了用户属性数据的更新。另外,通过在数据库层实现用户属性数据的更新,充分利用数据库进行数据更新时所具有的原子性特性,可以实现对同一个用户的用户属性数据进行多次并发修改的同时,还可以保证数据修改的完整性。
需要说明的是,由于待更新位所对应的属性类别的变更类型的不同,故在对待更新位进行数值更新时,所采用的数据库运算操作也会不同。在本公开的实施例中,当变更类型为第一类型时,可利用逻辑或运算操作对数据库之中用以存储用户属性数据的位数据进行按位更新;当变更类型为第二类型时,可依次利用逻辑取反运算操作和逻辑与运算操作数据库之中用于存储用户属性数据的位数据进行按位更新。具体而言,如图2所示,该用户属性数据的更新方法可以包括:
在步骤S21中,当用户状态信息变化时,获取数据库之中用以存储用户属性数据的位数据,并确定位数据之中每一位所对应的属性类别和状态含义。
在步骤S22中,根据位数据之中每一位所对应的属性类别和状态含义,确定用户属性数据之中的待更新位以及待更新位所对应的目标值,其中,目标值为用户属性随着用户状态信息变化而发生变化后所对应的值。
在步骤S23中,根据待更新位的目标值和原值,确定待更新位所对应的属性类别的变更类型。
需要说明的是,原值可理解为待更新位在数据库之中的原始数值。
在本公开的实施例中,变更类型可包括第一类型和第二类型。其中,该第一类型表示待更新位从无属性状态切换为有属性状态,第二类型表示待更新位从有属性状态切换为无属性状态。
在步骤S24中,当变更类型为第一类型时,选取逻辑或运算操作作为针对用户属性数据的数据库运算操作。
在步骤S25中,基于待更新位,生成用户属性数据的位数据所对应的第一中间数值。
也就是说,在确定待更新位所对应的属性类别的变更类型之后,可根据待更新位生成一个针对用户属性数据的位数据所对应的第一中间数值,其中,该第一中间数值为一个二进制数,该第一中间数值的位数与数据库之中用户属性数据所对应的二进制数(即用户属性数据存储在数据库之中时所呈现的位数据)的位数一致。
举例而言,假设目标应用程序中针对每个用户均具有13个属性,数据库服务器可采用一个13位二进制数来存储用户属性数据,该13位二进制数中的每一位代表该用户的属性状态,以用户A的用户属性数据在数据库之中所存储的原始数据“0010000101000”为例,即数据库中所呈现的用户A的用户属性数据所对应的二进制数为0010000101000,为例方便描述,此示例中仅示例出该二进制数中第一位、第二位和第三位分别所代表的属性状态含义,假设第一位属性是:是否是主播,1代表是,0代表不是;第二位属性是:是否有充值过,1代表是,0代表不是;第3位属性代表用户是否加入组织机构,1表示加入,0表示未加入。例如,当用户状态信息发生变化,假设用户加入主播,且加入组织结构,则可确定需对用户属性数据所对应的二进制数中的第一位和第三位进行更新,待更新的第一位的目标值为1,待更新的第三位的目标值为1,此时,可根据待更新的第一位和第三位,生成一个针对用户属性数据所对应的二进制数的位数一致,如0000000000101,其中,该第一中间数值中的“1”表示数值“1”所对应的位为待更新位,第一中间数值中的“0”表示数值“0”所对应的位无需更新,也就是说,可根据待更新位生成一个与用户属性数据具有相同位的一串二进制数,其中,所生成的二进制数中的待更新位上的数值为1,其他无需更新的位上的数值为0。
在步骤S26中,将用户属性数据的位数据所对应的原始数值和该位数据所对应的第一中间数值进行逻辑或运算操作,以使该位数据之中的待更新位从原值更新为目标值。其中,该原始数值可理解为用户属性数据在数据库之中存储时所呈现的二进制数。
在本公开的一些实施例中,将原始数值之中和第一中间数值之中相同位置上的数值进行比较,在原始数值之中和第一中间数值之中相同位置上的数值不一致时,将原始数据之中相同位置上的数值更新为1;在原始数值之中和第一中间数值之中相同位置上的数值一致时,将原始数值之中相同位置上的数值保持不变。
也就是说,可将用户属性数据的位数据所对应的原始数值和该位数据所对应的第一中间数值,按位进行逻辑或运算操作,若原始数值之中和第一中间数值之中相同位置上的数值不一致,则可将原始数据之中相同位置上的数值更新为1,若原始数值之中和第一中间数值之中相同位置上的数值一致,则将原始数值之中相同位置上的数值保持不变。
举例而言,假设数据库中所呈现的用户A的用户属性数据的位数据所对应的原始数值为0010000101000,根据待更新位生成的第一中间数值为0000000000101,可将该原始数值之中和第一中间数值之中相同位置上的数值进行比较,若相同位置上的数值不一致,则将原始数据之中相同位置上的数值更新为1,若相同位置上的数值一致,则将原始数值之中相同位置上的数值保持不变,即将原始数值“0010000101000”与第一中间数值“0000000000101”进行逻辑或运算操作,得到运算操作结果为“0010000101101”,可见,此时已将待更新位从原值更新为目标值,实现了用户属性的按位更新。
在步骤S27中,当变更类型为第二类型时,选取逻辑取反运算操作和逻辑与运算操作作为针对用户属性数据的数据库运算操作。
在步骤S28中,基于待更新位,生成用户属性数据的位数据所对应的第一中间数值。
也就是说,在确定待更新位所对应的属性类别的变更类型之后,可根据待更新位生成一个针对用户属性数据的位数据所对应的第一中间数值,其中,该第一中间数值为一个二进制数,该第一中间数值的位数与数据库之中用户属性数据所对应的二进制数(即用户属性数据存储在数据库之中时所呈现的位数据)的位数一致。
举例而言,假设目标应用程序中针对每个用户均具有13个属性,数据库服务器可采用一个13位二进制数来存储用户属性数据,该13位二进制数中的每一位代表该用户的属性状态,以用户A的用户属性数据的位数据在数据库之中所存储的原始数据“0010000101000”为例,即数据库中所呈现的用户A的用户属性数据所对应的二进制数为0010000101000,为例方便描述,此示例中仅示例出该二进制数中第一位、第二位和第三位分别所代表的属性状态含义,假设第一位属性是:是否是主播,1代表是,0代表不是;第二位属性是:是否有充值过,1代表是,0代表不是;第3位属性代表用户是否加入组织机构,1表示加入,0表示未加入。例如,当用户状态信息发生变化,假设用户退出组织机构,则可确定需对用户属性数据所对应的二进制数中的第三位进行更新,待更新的第三位的目标值为0,此时,可根据待更新的第三位,生成一个针对用户属性数据所对应的二进制数的位数一致,如0000000000100,其中,该第一中间数值中的“1”表示数值“1”所对应的位为待更新位,第一中间数值中的“0”表示数值“0”所对应的位无需更新,也就是说,可根据待更新位生成一个与用户属性数据具有相同位的一串二进制数,其中,所生成的二进制数中的待更新位上的数值为1,其他无需更新的位上的数值为0。
在步骤S29中,将用户属性数据的位数据所对应的第一中间数值进行逻辑取反运算操作,得到第二中间数值。
例如,以第一中间数值为0000000000100为例,对“0000000000100”进行逻辑取反运算操作,可得到第二中间数值“1111111111011”。
在步骤S210中,将第二中间数值和该位数据所对应的原始数值进行逻辑与运算操作,以使该位数据之中的待更新位从原值更新为目标值。
在本公开的一些实施例中,将原始数值之中和第二中间数值之中相同位置上的数值进行比较,在原始数值之中和第二中间数值之中相同位置上的数值不一致时,将原始数值之中相同位置上的数值更新为0;在原始数值之中和第二中间数值之中相同位置上的数值一致时,将原始数值之中相同位置上的数值保持不变。
也就是说,将原始数值和第二中间数值按位进行逻辑与运算操作,若原始数值之中和第二中间数值之中相同位置上的数值不一致,则将原始数据之中相同位置上的数值更新为0,若原始数值之中和第二中间数值之中相同位置上的数值一致,则将原始数值之中相同位置上的数值保持不变。
举例而言,假设数据库中所呈现的用户A的用户属性数据的位数据所对应的原始数值为0010000101000,根据待更新位生成的第一中间数值为0000000000100,先对第一中间数值进行逻辑取反运算操作,得到第二中间数值为1111111111011,若相同位置上的数值不一致,则将原始数据之中相同位置上的数值更新为0,若相同位置上的数值一致,则将原始数值之中相同位置上的数值保持不变,即将原始数值“0010000101000”与第二中间数值“1111111111011”进行逻辑与运算操作,得到运算操作结果为“0010000101001”,可见,此时已将待更新位从原值更新为目标值,实现了用户属性的按位更新。
根据本公开实施例的用户属性数据的更新方法,在确定用户属性数据的位数据之中的待更新位以及待更新位所对应的目标值之后,可根据待更新位的目标值和原值,确定待更新位所对应的属性类别的变更类型,并根据变更类型选取对应的逻辑运算操作,进而采用对应的逻辑运算操作对数据库之中用户属性数据的位数据进行按位更新,从而保证了用户属性数据按位更新的准确性。
需要说明的是,数据库中可能不存在待更新用户的用户属性数据的位数据,例如,该用户是新注册用户,则数据库中当前未存储有该新注册用户的属性数据的位数据,因此,在对数据库之中用户属性数据的位数据进行更新之前,需判断数据库之中是否存在有针对该用户的用户属性数据的存储记录,若根据判断结果进行不同的更新操作。具体而言,图3是根据另一示例性实施例示出的一种用户属性数据的更新方法的流程图,如图3所示,该用户属性数据的更新方法可以包括:
在步骤S31中,当用户状态信息变化时,获取数据库之中用以存储用户属性数据的位数据,并确定位数据之中每一位所对应的属性类别和状态含义。
在步骤S32中,根据位数据之中每一位所对应的属性类别和状态含义,确定用户属性数据之中的待更新位以及待更新位所对应的目标值,其中,目标值为用户属性随着用户状态信息变化而发生变化后所对应的值。
在步骤S33中,判断数据库之中是否存在针对用户的用户属性数据的存储记录。若否,则执行步骤S34,若是,则执行步骤S36。
在步骤S34中,根据待更新位以及待更新位所对应的目标值生成针对用户的用户属性数据的待存储数据。
也就是说,当数据库之中不存在针对用户的用户属性数据的存储记录,比如该用户为新注册用户,此时该数据库之中尚未有该用户的属性数据,由于此时该用户的状态信息发生了变化,可根据待更新位和待更新位所对应的目标值生成针对用户的用户属性数据的待存储数据。举例而言,假设目标应用程序中针对每个用户均具有13个属性,数据库服务器可采用一个13位二进制数来存储用户属性数据,该13位二进制数中的每一位代表该用户的属性状态,为例方便描述,此示例中仅示例出该二进制数中第一位、第二位和第三位分别所代表的属性状态含义,假设第一位属性是:是否是主播,1代表是,0代表不是;第二位属性是:是否有充值过,1代表是,0代表不是;第3位属性代表用户是否加入组织机构,1表示加入,0表示未加入。例如,假设新注册用户B加入了主播,且加入组织机构,此时确定待更新位为第一位和第三位,待更新位所对应的目标值分别为1,可根据待更新位以及待更新位所对应的目标值生成针对用户的用户属性数据的待存储数据,比如“0000000000101”。又如,假设新注册用户B退出组织机构,由于数据库中没有该新注册用户B的属性数据,则此时生成该新注册用户B的用户属性数据的待存储数据为“0000000000000”,也就是说,即使此时新注册用户B的属性从有属性状态变为无属性状态,而由于数据库先前并不存在新注册用户B的用户属性数据,所以,此时可在数据库中存储该注册用户B的用户属性数据,其用户属性数据所对应的二进制数为“0000000000000”。
在步骤S35中,将待存储数据插入至数据库之中,以使数据库之中存在针对用户的用户属性数据,从而完成对该用户的用户属性数据的更新。
在步骤S36中,根据目标值和待更新位的原值生成针对用户属性数据的数据库运算操作序列,其中,数据库运算操作序列包括至少一个数据库运算操作。
在本公开的实施例中,所述原值可理解为待更新位在数据库之中的原始数值。
需要说明的是,数据库运算操作可包括但不限于逻辑或运算操作、逻辑取反运算操作和逻辑与运算操作。本公开实施例在对数据库之中一个用户的属性数据进行更新时,采用的是按位运算更新,待更新位所对应的属性类别的变更类型的不同,则在对待更新位进行数值更新时,所采用的数据库运算操作也会不同。
在本公开的一些实施例中,可根据待更新位的目标值和原值,确定待更新位所对应的属性类别的变更类型,并根据变更类型生成针对用户属性数据的数据库运算操作序列。作为一种示例,当变更类型为第一类型时,数据库运算操作序列可包括逻辑或运算操作;当变更类型为第二类型时,数据库运算操作序列可包括依次进行的逻辑取反运算操作和逻辑与运算操作;其中,该第一类型表示待更新位从无属性状态切换为有属性状态,第二类型表示待更新位从有属性状态切换为无属性状态。
举例而言,假设用户属性有3个属性,数据库可利用3位二进制存储用户属性数据,假设第一位属性是:是否是主播,1代表是,0代表不是;第二位属性是:是否有充值过,1代表是,0代表不是;第3位属性代表用户是否加入组织机构,1表示加入,0表示未加入。当用户状态信息发生变化,比如用户加入了主播时,则待更新位为第一位,待更新位所对应的目标值为1,待更新位的原值为0,根据目标值和原值确定待更新位所对应的属性类别的变更类型为第一类型,即表示用户的“是否是主播”属性状态从无属性状态切换为有属性状态,此时可选取逻辑或运算操作用以对数据库之中的用户属性数据进行按位更新;又如,用户退出了主播,则待更新位为第一位,待更新位所对应的目标值为0,待更新位的原值为1,根据目标值和原值确定待更新位所对应的属性类别的变更类型为第一类型,即表示用户的“是否是主播”属性状态从有属性状态切换为无属性状态,此时可依次选取逻辑取反运算操作和逻辑与运算操作对数据库之中该用户的用户属性数据进行按位更新。
在步骤S37中,根据数据库运算操作序列之中的数据库运算操作,对数据库之中用户属性数据的位数据进行运算,以使位数据之中的待更新位从原值更新为目标值。
根据本公开实施例的用户属性数据的更新方法,在对数据库之中用户属性数据的位数据进行更新之前,需判断数据库之中是否存在有针对该用户的用户属性数据的存储记录,若根据判断结果进行不同的更新操作,例如,在数据库之中存在该用户的用户属性数据的存储记录时,根据待更新位的目标值和原值选取对应的数据库运算操作,利用数据库运算操作对用户属性数据进行按位更新,当数据库之中不存在该用户的用户属性数据的存储记录时,则直接根据待更新位及其目标值生成针对该用户属性数据的待存储数据,并将该待存储数据插入到数据库之中,以使数据库之中存在针对用户的用户属性数据,从而可以保证用户属性数据更新的准确性。
为了避免对同一个用户的用户属性数据进行多次并发修改而造成数据的更新丢失,在本公开的一些实施例中,在根据数据库运算操作序列之中的数据库运算操作,对数据库之中用户属性数据的位数据进行运算之前,基于数据库的行级锁,对数据库之中用户属性数据的位数据所在行进行加锁。例如,若需要对用户A的用户属性数据的位数据进行更新,则在采用数据库运算操作序列之中的数据库运算操作对数据库之中用户A属性数据的位数据进行运算之前,可先利用数据库的行级锁对数据库之中用户A属性数据的位数据所在行进行加锁,在根据数据库运算操作序列之中的数据库运算操作对数据库之中用户属性数据的位数据进行运算,以使该位数据之中的待更新位从原值更新位目标值之后,再将针对该用户A属性数据的位数据所在行的行锁进行释放。其中,数据库之中用户A属性数据的位数据所在行被锁的期间,数据库无法再对该用户A属性数据的位数据所在行进行数据更改等操作,从而可以安全的对同一个用户的用户属性数据进行多次并发修改,可以保证数据修改的完整性。
在本公开的一些实施例中,当用户状态信息变化时,确定用户属性数据之中的待更新位的个数可为一个或多个;当待更新位的个数为多个时,多个待更新位所对应的属性类别的变更类型可能即存在第一类型,又存在第二类型,比如,待更新位的个数为3个,其中有2个待更新位所对应的属性类别的变更类型为第一类型,剩下1个待更新位所对应的属性类别的变更类型为第二类型,此时在对该用户的用户属性数据进行按位更新时,可分两次对该用户的用户属性数据的位数据进行按位更新,例如,可先根据属于第一类型的待更新位及其目标值对该用户属性数据的位数据进行一次按位更新,以使该用户属性数据之中的位数据属于第一类型的待更新位从原值更新位目标值,之后,再根据属于第二类型的待更新位及其目标值对当前数据库之中该用户属性数据的位数据进行一次按位更新,从而实现了针对该用户属性数据的全部更新。
举例而言,假设目标应用程序中针对每个用户均具有13个属性,数据库服务器可采用一个13位二进制数来存储用户属性数据,该13位二进制数中的每一位代表该用户的属性状态,以用户A的用户属性数据在数据库之中所存储的原始数据“0010000101000”为例,即数据库中所呈现的用户A的用户属性数据所对应的二进制数为0010000101000,为例方便描述,此示例中仅示例出该二进制数中第一位、第二位和第三位分别所代表的属性状态含义,假设第一位属性是:是否是主播,1代表是,0代表不是;第二位属性是:是否有充值过,1代表是,0代表不是;第3位属性代表用户是否加入组织机构,1表示加入,0表示未加入。例如,当用户状态信息发生变化,假设用户加入主播,进行了充值,且退出了组织结构,可确定需对用户属性数据所对应的二进制数中的第一位、第二位和第三位进行更新,待更新的第一位的目标值为1,待更新的第二位的目标值为1,待更新的第三位的目标值为0,由于待更新的第一位和第二位所对应的属性类别的变更类型为第一类型,待更新的第三位所对应的属性类别的变更类型为第二类型,此时,可先根据属于第一类型的第一位、第二位及其目标值对该用户属性数据的位数据进行一次按位更新,以使该用户属性数据之中属于第一类型的待更新位从原值更新位目标值,之后,再根据属于第二类型的第三位及其目标值对当前数据库之中该用户属性数据的位数据进行一次按位更新,从而实现了针对该用户属性数据的全部更新,保证了数据更新的准确性。由此,通过利用数据库的按位更新,实现了用户属性数据的更新。
图4是根据一示例性实施例示出的一种用户属性数据的更新装置框图。参照图4,该装置400包括第一获取模块410、第一确定模块420、第一生成模块430和更新模块440。
第一获取模块410被配置为在用户状态信息变化时,获取数据库之中用以存储用户属性数据的位数据,并确定位数据之中每一位所对应的属性类别和状态含义。
第一确定模块420被配置为根据位数据之中每一位所对应的属性类别和状态含义,确定位数据之中的待更新位以及待更新位所对应的目标值,其中,所述目标值为用户属性随着用户状态信息变化而发生变化后所对应的值。在本公开的一些实施例中,第一确定模块420被配置为:获取用户属性数据之中的属性变化值以及属性变化值所属的属性类别,并根据属性变化值所属的属性类别和位数据之中每一位所对应的属性类别,确定位数据之中的待更新位,以及根据属性变化值和位数据之中每一位所对应的状态含义,确定待更新位所对应的目标值。
第一生成模块430被配置为根据目标值和待更新位的原值生成针对用户属性数据的数据库运算操作序列,其中,数据库运算操作序列包括至少一个数据库运算操作。
更新模块440被配置为根据数据库运算操作序列之中的数据库运算操作,对数据库之中用户属性数据的位数据进行运算,以使该位数据之中的待更新位从原值更新为目标值。
在本公开的一些实施例中,如图5所示,第一生成模块430可包括确定单元431和生成单元432。其中,确定单元431被配置为根据待更新位的目标值和原值,确定待更新位所对应的属性类别的变更类型;生成单元432被配置为根据变更类型生成针对用户属性数据的数据库运算操作序列。
在本公开实施例中,当变更类型为第一类型时,数据库运算操作序列包括逻辑或运算操作;当变更类型为第二类型时,数据库运算操作序列包括依次进行的逻辑取反运算操作和逻辑与运算操作;其中,第一类型表示待更新位从无属性状态切换为有属性状态,第二类型表示待更新位从有属性状态切换为无属性状态。
在本公开的实施例中,当变更类型为第一类型时,如图6所示,更新模块440包括第一生成单元441和第一更新单元442。其中,第一生成单元441被配置为基于待更新位,生成用户属性数据的位数据所对应的第一中间数值;第一更新单元442被配置为将用户属性数据的位数据所对应的原始数值和该位数据所对应的第一中间数值进行逻辑或运算操作。作为一种示例,第一更新单元442将原始数值之中和第一中间数值之中相同位置上的数值进行比较;在原始数值之中和第一中间数值之中相同位置上的数值不一致时,将原始数据之中相同位置上的数值更新为1;在原始数值之中和第一中间数值之中相同位置上的数值一致时,将原始数值之中相同位置上的数值保持不变。
在本公开的实施例中,当变更类型为第二类型时,如图7所示,更新模块440包括第二生成单元443和第二更新单元444。其中,第二生成单元443被配置为基于待更新位,生成用户属性数据的位数据所对应的第一中间数值;第二更新单元444被配置为将用户属性数据的位数据所对应的第一中间数值进行逻辑取反运算操作,得到第二中间数值,并将第二中间数值和该位数据所对应的原始数值进行逻辑与运算操作。作为一种示例,第二更新单元444将原始数值之中和第二中间数值之中相同位置上的数值进行比较;在原始数值之中和第二中间数值之中相同位置上的数值不一致时,将原始数值之中相同位置上的数值更新为0;在原始数值之中和第二中间数值之中相同位置上的数值一致时,将原始数值之中相同位置上的数值保持不变。
在本公开的一些实施例中,如图8所示,该更新装置400还可包括:第二生成模块450。第二生成模块450被配置为在数据库之中不存在针对用户的用户属性数据的存储记录时,根据待更新位以及待更新位所对应的目标值生成针对用户的用户属性数据的待存储数据。其中,在本公开实施例中,更新模块440还被配置为将待存储数据插入至数据库之中,以使数据库之中存在针对用户的用户属性数据;第一生成模块430还被配置为在数据库之中存在针对用户的用户属性数据的存储记录时,根据目标值和待更新位的原值生成针对用户属性数据的数据库运算操作序列。
在本公开的一些实施例中,如图9所示,该更新装置400还可包括:加锁模块460。加锁模块460被配置为在更新模块440根据数据库运算操作序列之中的数据库运算操作,对数据库之中用户属性数据的位数据进行运算之前,基于数据库的行级锁,对数据库之中用户属性数据的位数据所在行进行加锁。
在本公开的一些实施例中,如图10所示,该更新装置400还可包括:第二获取模块470和检测模块480。第二获取模块470被配置为获取用户针对目标应用的使用行为数据;检测模块480被配置为根据使用行为数据,检测用户状态信息是否发生变化。
关于上述实施例中的装置,其中各个模块执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不做详细阐述说明。
根据本公开实施例的用户属性数据的更新装置,在确定需要对数据库之中用以存储用户属性数据的位数据进行更新时,可确定该位数据之中的待更新位以及待更新位所对应的目标值,并根据待更新位所对应的目标值和待更新位在数据库之中的原值,选取数据库运算操作,利用选取的数据库运算操作对数据库之中用户属性数据的位数据进行按位运算,从而将该位数据之中的待更新位从原值更新为目标值,充分利用了数据库的数据类型存储功能以及按位更新方式,实现了用户属性数据的更新。另外,本公开实施例通过在数据库层实现用户属性数据的更新,充分利用数据库进行数据更新时所具有的原子性特性,可以实现对同一个用户的用户属性数据进行多次并发修改的同时,还可以保证数据修改的完整性。
图11是根据一示例性实施例示出的一种用于更新用户属性数据的服务器200的框图。如图11所示,上述服务器200可以包括:
存储器210及处理器220,连接不同组件(包括存储器210和处理器220)的总线230,存储器210存储有处理器220可执行指令;其中,处理器220被配置为执行所述指令,以实现本公开实施例所述的用户属性数据的更新方法。
总线230表示几类总线结构中的一种或多种,包括存储器总线或者存储器控制器,外围总线,图形加速端口,处理器或者使用多种总线结构中的任意总线结构的局域总线。举例来说,这些体系结构包括但不限于工业标准体系结构(ISA)总线,微通道体系结构(MAC)总线,增强型ISA总线、视频电子标准协会(VESA)局域总线以及外围组件互连(PCI)总线。
服务器200典型地包括多种电子设备可读介质。这些介质可以是任何能够被服务器200访问的可用介质,包括易失性和非易失性介质,可移动的和不可移动的介质。存储器210还可以包括易失性存储器形式的计算机系统可读介质,例如随机存取存储器(RAM)240和/或高速缓存存储器250。服务器200可以进一步包括其它可移动/不可移动的、易失性/非易失性计算机系统存储介质。仅作为举例,存储系统260可以用于读写不可移动的、非易失性磁介质(图11未显示,通常称为“硬盘驱动器”)。尽管图11中未示出,可以提供用于对可移动非易失性磁盘(例如“软盘”)读写的磁盘驱动器,以及对可移动非易失性光盘(例如CD-ROM,DVD-ROM或者其它光介质)读写的光盘驱动器。在这些情况下,每个驱动器可以通过一个或者多个数据介质接口与总线230相连。存储器210可以包括至少一个程序产品,该程序产品具有一组(例如至少一个)程序模块,这些程序模块被配置以执行本公开各实施例的功能。
具有一组(至少一个)程序模块270的程序/实用工具280,可以存储在例如存储器210中,这样的程序模块270包括——但不限于——操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。程序模块270通常执行本公开所描述的实施例中的功能和/或方法。
服务器200也可以与一个或多个外部设备290(例如键盘、指向设备、显示器291等)通信,还可与一个或者多个使得用户能与该服务器200交互的设备通信,和/或与使得该服务器200能与一个或多个其它计算设备进行通信的任何设备(例如网卡,调制解调器等等)通信。这种通信可以通过输入/输出(I/O)接口292进行。并且,服务器200还可以通过网络适配器293与一个或者多个网络(例如局域网(LAN),广域网(WAN)和/或公共网络,例如因特网)通信。如图所示,网络适配器293通过总线230与服务器200的其它模块通信。应当明白,尽管图中未示出,可以结合服务器200使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、RAID系统、磁带驱动器以及数据备份存储系统等。
处理器220通过运行存储在存储器210中的程序,从而执行各种功能应用以及数据处理。
需要说明的是,本实施例的服务器的实施过程和技术原理参见前述对本公开实施例的用户属性数据的更新方法的解释说明,此处不再赘述。
本公开实施例提供的服务器,
为了实现上述实施例,本公开还提出一种存储介质。
其中,该存储介质中的指令由服务器的处理器执行时,使得服务器能够执行如前所述的用户属性数据的更新方法。
为了实现上述实施例,本公开还提供一种计算机程序产品,当所述计算机程序产品中的指令由处理器执行时,使得服务器能够执行如前所述的用户属性数据的更新方法。
本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本公开的其它实施方案。本申请旨在涵盖本公开的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本公开的一般性原理并包括本公开未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本公开的真正范围和精神由下面的权利要求指出。
应当理解的是,本公开并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本公开的范围仅由所附的权利要求来限制。
Claims (10)
1.一种用户属性数据的更新方法,其特征在于,包括:
当用户状态信息变化时,获取数据库之中用以存储用户属性数据的位数据,并确定所述位数据之中每一位所对应的属性类别和状态含义;
根据所述位数据之中每一位所对应的属性类别和状态含义,确定所述位数据之中的待更新位以及所述待更新位所对应的目标值,其中,所述目标值为用户属性随着用户状态信息变化而发生变化后所对应的值;
根据所述目标值和所述待更新位的原值生成针对所述用户属性数据的数据库运算操作序列,其中,所述数据库运算操作序列包括至少一个数据库运算操作;以及
根据所述数据库运算操作序列之中的数据库运算操作,对所述数据库之中所述用户属性数据的位数据进行运算,以使所述位数据之中的待更新位从所述原值更新为所述目标值。
2.根据权利要求1所述的用户属性数据的更新方法,其特征在于,所述根据所述位数据之中每一位所对应的属性类别和状态含义,确定所述位数据之中的待更新位以及所述待更新位所对应的目标值,包括:
获取所述用户属性数据之中的属性变化值以及所述属性变化值所属的属性类别;
根据所述属性变化值所属的属性类别和所述位数据之中每一位所对应的属性类别,确定所述位数据之中的待更新位;
根据所述属性变化值和所述位数据之中每一位所对应的状态含义,确定所述待更新位所对应的目标值。
3.根据权利要求1所述的用户属性数据的更新方法,其特征在于,所述根据所述目标值和所述待更新位的原值生成针对所述用户属性数据的数据库运算操作序列,包括:
根据所述待更新位的目标值和所述原值,确定所述待更新位所对应的属性类别的变更类型;
根据所述变更类型生成针对所述用户属性数据的数据库运算操作序列。
4.根据权利要求3所述的用户属性数据的更新方法,其特征在于,
当所述变更类型为第一类型时,所述数据库运算操作序列包括逻辑或运算操作;
当所述变更类型为第二类型时,所述数据库运算操作序列包括依次进行的逻辑取反运算操作和逻辑与运算操作;
其中,所述第一类型表示所述待更新位从无属性状态切换为有属性状态,所述第二类型表示所述待更新位从所述有属性状态切换为所述无属性状态。
5.根据权利要求4所述的用户属性数据的更新方法,其特征在于,当所述变更类型为所述第一类型时,根据所述数据库运算操作序列之中的数据库运算操作,对所述数据库之中所述用户属性数据的位数据进行运算,包括:
基于所述待更新位,生成所述用户属性数据的位数据所对应的第一中间数值;
将所述位数据所对应的原始数值和所述位数据所对应的第一中间数值进行逻辑或运算操作。
6.根据权利要求4所述的用户属性数据的更新方法,其特征在于,当所述变更类型为所述第二类型时,根据所述数据库运算操作序列之中的数据库运算操作,对所述数据库之中所述用户属性数据的位数据进行运算,包括:
基于所述待更新位,生成所述用户属性数据的位数据所对应的第一中间数值;
将所述位数据所对应的第一中间数值进行逻辑取反运算操作,得到第二中间数值;
将所述第二中间数值和所述位数据所对应的原始数值进行逻辑与运算操作。
7.根据权利要求1所述的用户属性数据的更新方法,其特征在于,在根据所述目标值和所述待更新位的原值生成针对所述用户属性数据的数据库运算操作序列之前,所述方法还包括:
在所述数据库之中不存在针对所述用户的用户属性数据的存储记录时,根据所述待更新位以及所述待更新位所对应的目标值生成针对所述用户的用户属性数据的待存储数据;
将所述待存储数据插入至所述数据库之中,以使所述数据库之中存在针对所述用户的用户属性数据;
在所述数据库之中存在针对所述用户的用户属性数据的存储记录时,执行所述根据所述目标值和所述待更新位的原值生成针对所述用户属性数据的数据库运算操作序列的步骤。
8.一种用户属性数据的更新装置,其特征在于,包括:
第一获取模块,被配置为在用户状态信息变化时,获取数据库之中用以存储用户属性数据的位数据,并确定所述位数据之中每一位所对应的属性类别和状态含义;
第一确定模块,被配置为根据所述位数据之中每一位所对应的属性类别和状态含义,确定所述位数据之中的待更新位以及所述待更新位所对应的目标值,其中,所述目标值为用户属性随着用户状态信息变化而发生变化后所对应的值;
第一生成模块,被配置为根据所述目标值和所述待更新位的原值生成针对所述用户属性数据的数据库运算操作序列,其中,所述数据库运算操作序列包括至少一个数据库运算操作;以及
更新模块,被配置为根据所述数据库运算操作序列之中的数据库运算操作,对所述数据库之中所述用户属性数据的位数据进行运算,以使所述位数据之中的待更新位从所述原值更新为所述目标值。
9.一种服务器,其特征在于,包括:
处理器;
用于存储所述处理器可执行指令的存储器;
其中,所述处理器被配置为执行所述指令,以实现如权利要求1至7中任一项所述的用户属性数据的更新方法。
10.一种存储介质,当所述存储介质中的指令由服务器的处理器执行时,使得所述服务器能够执行如权利要求1至7中任一项所述的用户属性数据的更新方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010716307.7A CN112035493A (zh) | 2020-07-23 | 2020-07-23 | 用户属性数据的更新方法、装置、服务器和存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010716307.7A CN112035493A (zh) | 2020-07-23 | 2020-07-23 | 用户属性数据的更新方法、装置、服务器和存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN112035493A true CN112035493A (zh) | 2020-12-04 |
Family
ID=73582967
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010716307.7A Pending CN112035493A (zh) | 2020-07-23 | 2020-07-23 | 用户属性数据的更新方法、装置、服务器和存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112035493A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113051280A (zh) * | 2021-03-16 | 2021-06-29 | 广东核电合营有限公司 | 标牌信息更新方法、装置、计算机设备和存储介质 |
CN114021198A (zh) * | 2021-12-29 | 2022-02-08 | 支付宝(杭州)信息技术有限公司 | 一种保护数据隐私的确定共有数据的方法及装置 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110334156A (zh) * | 2019-07-10 | 2019-10-15 | 北京启迪区块链科技发展有限公司 | 一种数据库同步方法、装置、服务器和存储介质 |
CN110597865A (zh) * | 2019-09-02 | 2019-12-20 | 深圳前海微众银行股份有限公司 | 一种处理用户标签的方法、装置、计算设备及存储介质 |
CN110688544A (zh) * | 2019-10-17 | 2020-01-14 | 北京锐安科技有限公司 | 一种查询数据库的方法、设备及存储介质 |
CN111177170A (zh) * | 2019-12-31 | 2020-05-19 | 杭州当虹科技股份有限公司 | 一种关于多维有限枚举数据的压缩更新方法 |
CN111309704A (zh) * | 2018-12-12 | 2020-06-19 | 北京沃东天骏信息技术有限公司 | 数据库操作方法和数据库操作系统 |
-
2020
- 2020-07-23 CN CN202010716307.7A patent/CN112035493A/zh active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111309704A (zh) * | 2018-12-12 | 2020-06-19 | 北京沃东天骏信息技术有限公司 | 数据库操作方法和数据库操作系统 |
CN110334156A (zh) * | 2019-07-10 | 2019-10-15 | 北京启迪区块链科技发展有限公司 | 一种数据库同步方法、装置、服务器和存储介质 |
CN110597865A (zh) * | 2019-09-02 | 2019-12-20 | 深圳前海微众银行股份有限公司 | 一种处理用户标签的方法、装置、计算设备及存储介质 |
CN110688544A (zh) * | 2019-10-17 | 2020-01-14 | 北京锐安科技有限公司 | 一种查询数据库的方法、设备及存储介质 |
CN111177170A (zh) * | 2019-12-31 | 2020-05-19 | 杭州当虹科技股份有限公司 | 一种关于多维有限枚举数据的压缩更新方法 |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113051280A (zh) * | 2021-03-16 | 2021-06-29 | 广东核电合营有限公司 | 标牌信息更新方法、装置、计算机设备和存储介质 |
CN114021198A (zh) * | 2021-12-29 | 2022-02-08 | 支付宝(杭州)信息技术有限公司 | 一种保护数据隐私的确定共有数据的方法及装置 |
CN114021198B (zh) * | 2021-12-29 | 2022-04-08 | 支付宝(杭州)信息技术有限公司 | 一种保护数据隐私的确定共有数据的方法及装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11163744B2 (en) | Test data generation and scale up for database testing using unique common factor sequencing | |
US7801846B2 (en) | Generating log sequence identifiers to apply a transaction to a storage system | |
US8285677B2 (en) | Method and apparatus for propagating tables while preserving cyclic foreign key relationships | |
US7757015B2 (en) | Device, method and computer program product readable medium for determining the identity of a component | |
US20170351746A1 (en) | Test data management | |
US8484108B2 (en) | Tracking entities during identity resolution | |
US20090006070A1 (en) | Simulation of Installation and Configuration of Distributed Software | |
US20110106776A1 (en) | Incremental implementation of undo/redo support in legacy applications | |
CN112035493A (zh) | 用户属性数据的更新方法、装置、服务器和存储介质 | |
CN110737682A (zh) | 一种缓存操作方法、装置、存储介质和电子设备 | |
US7113951B2 (en) | Method and system for detecting tables to be modified | |
US10540360B2 (en) | Identifying relationship instances between entities | |
US20100030992A1 (en) | Initializing of a memory area | |
JP2018538634A (ja) | データベース動作方法及び装置 | |
CN115237444A (zh) | 基于版本号的并发控制方法、装置、设备及存储介质 | |
US8321868B2 (en) | Method for counting events in a computer system | |
CN116467975B (zh) | 数据处理方法、装置、电子设备及存储介质 | |
CN108959454B (zh) | 一种提示子句指定方法、装置、设备及存储介质 | |
CN111897837B (zh) | 数据查询方法、装置、设备和介质 | |
CN112286909B (zh) | 执行状态确定方法、装置、服务器及存储介质 | |
CN109791541B (zh) | 日志序列号生成方法、装置及可读存储介质 | |
CN113723436A (zh) | 数据的处理方法、装置、计算机设备和存储介质 | |
US6854102B1 (en) | System and method of acquiring delay, setup and hold values for integrated circuit cells | |
US20230099901A1 (en) | Dynamic query resource control | |
CN112000664B (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 |