掌桥专利:专业的专利平台
掌桥专利
首页

一种按位存储和计算数据权限的方法及设备

文献发布时间:2024-04-18 19:58:53


一种按位存储和计算数据权限的方法及设备

技术领域

本申请涉及计算机领域,尤其涉及一种按位存储和计算数据权限的方法及设备。

背景技术

权限本质是用户和资源的关联关系,那么m个用户和n个资源理论上最多会产生m*n个关联关系,如果用传统的关联表去存储两者关联关系,关联关系数据量太大,数据量为资源数量和用户数量的乘积。传统解决方式是将用户和资源进行分组,将权限类似的用户放到同一个角色或用户组中,将相近的资源放到同一个资源分组中,然后记录角色(用户组)和资源分组之间的关系,如图1所示。该方式基于角色和资源分组的数据模型可以减少关联关系的数据量,但是存在一定的限制:

1、必须找到具有共同性质的资源分组和角色,不利于权限精细化管理;

2、如果资源分组数量和角色数量仍然很大,那么关联表数据量仍然会很大;

3、存储结构变得更加复杂,影响查询效率。

发明内容

本申请的一个目的是提供一种按位存储和计算数据权限的方法及设备,解决现有技术中存在大数据量的关联表、无法精确化管理权限、存储结构复杂的问题。

根据本申请的一个方面,提供了一种按位存储和计算数据权限的方法,该方法包括:

确定数据库类型对应的存储位数,根据业务信息确定权限等级;

根据所述存储位数及所述权限等级在资源表上动态扩展用户的权限字段;

在用户表上增加两个字段,分别用于记录该用户的权限在资源表的扩展列信息以及该扩展列上的位置顺序;

基于增加的字段将用户的权限进行按位存储,得到权限存储结构;

基于用户对权限的需求计算数据权限,更新所述权限存储结构。

可选地,根据所述存储位数及所述权限等级在资源表上动态扩展用户的权限字段,包括:

根据所述存储位数及所述权限等级确定存储用户的权限的数量n;

在资源表上动态扩展用户的权限字段,其中,每个权限字段存储m个用户的权限,其中,所述m=存储位数/n。

可选地,所述用户对权限的需求包括权限维护和权限应用,所述权限维护包括新增用户和授权操作,所述权限应用包括校验权限和带权限查询。

可选地,当进行新增用户时,基于用户对权限的需求计算数据权限,更新所述权限存储结构,包括:

判断权限存储结构中用户表是否存在空间存储新增用户的权限,基于判断结果设置用户表中新用户的列和位索引;

在权限存在结构中的资源表上动态扩展一列;

插入所述新增用户的权限。

可选地,判断权限存储结构中用户表是否存在空间存储新增用户的权限,包括:

获取权限存储结构中最新用户对应的列索引x,以及位索引y;

若y+p≤(存储位数-p),则设置新增用户的列为最大列x,设置索引为y+p,其中,所述p为权限等级;

若y+p>(存储位数-p),则设置新增用户的列为最大列x+1,设置索引为0。

可选地,当进行修改权限时,基于用户对权限的需求计算数据权限,更新所述权限存储结构,包括:

读取所述权限存储结构中授权用户记录,确定对应的列x和对应的列y;

读取所述权限存储结构中被授权资源记录,确定资源列中x列的值L;

将L的第y到y+(p-1)位替换为授权信息,将更新后的值写回资源列中的x列中,其中,所述p为权限等级。

可选地,当进行校验权限时,基于用户对权限的需求计算数据权限,包括:

读取所述权限存储结构中授权用户记录,确定对应的列x和对应的列y;

读取所述权限存储结构中被授权资源记录,确定资源列中x列的值L;

读取值L的第y至y+(p-1)位,根据对应位数值判断权限校验是否成功,其中,所述p为权限等级。

可选地,当p=4时,读取值L的第y至y+(p-1)位,包括:

将值L进行转换为数组,校验列表权限读取数组的第y位,校验读取权限读取数组的第y+1位,校验写入权限读取数组的第y+2位,校验删除权限读取数组的第y+3位。

可选地,当进行带权限查询数据时,基于用户对权限的需求计算数据权限,更新所述权限存储结构,包括:

按照原始查询语句的查询条件查询所述权限存储结构中授权用户记录,确定对应的列x和对应的列y;

在所述原始查询语句的查询条件上拼接上权限查询语句;

执行拼接后的查询语句,返回记录当前对象具备列表权限的资源数据。根据本申请又一个方面,还提供了一种按位存储和计算数据权限的设备,所述设备包括:

一个或多个处理器;以及

存储有计算机可读指令的存储器,所述计算机可读指令在被执行时使所述处理器执行如前述所述方法的操作。

根据本申请再一个方面,还提供了一种计算机可读介质,其上存储有计算机可读指令,所述计算机可读指令可被处理器执行以实现如前述所述的方法。

与现有技术相比,本申请通过确定数据库类型对应的存储位数,根据业务信息确定权限等级;根据所述存储位数及所述权限等级在资源表上动态扩展用户的权限字段;在用户表上增加两个字段,分别用于记录该用户的权限在资源表的扩展列信息以及该扩展列上的位置顺序;基于增加的字段将用户的权限进行按位存储,得到权限存储结构;基于用户对权限的需求计算数据权限,更新所述权限存储结构。从而可以将字段按位存储权限,避免了大数据量的关联表,同时可以绕开角色和资源分组针对每个用户进行精细化的授权,实现了大规模数据量下权限精细化管理。

附图说明

通过阅读参照以下附图所作的对非限制性实施例所作的详细描述,本申请的其它特征、目的和优点将会变得更明显:

图1示出现有技术中权限存储的关联关系表的示意图;

图2示出根据本申请的一个方面提供的一种按位存储和计算数据权限的方法流程示意图;

图3示出本申请一实施例中在权限存储结构中新增用户的流程示意图;

图4示出本申请一实施例中在权限存储结构中修改权限的流程示意图;

图5示出本申请一实施例中在权限存储结构中带权限查询数据的流程示意图;

图6示出本申请一实施例中采用数据库存储权限数据的系统框架图;

图7示出本申请一实施例中权限数据的数据存储结构的示意图。

附图中相同或相似的附图标记代表相同或相似的部件。

具体实施方式

下面结合附图对本申请作进一步详细描述。

在本申请一个典型的配置中,终端、服务网络的设备和可信方均包括一个或多个处理器(例如中央处理器(Central Processing Unit,CPU))、输入/输出接口、网络接口和内存。

内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RandomAccess Memory,RAM)和/或非易失性内存等形式,如只读存储器(Read Only Memory,ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。

计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(Phase-Change RAM,PRAM)、静态随机存取存储器(Static Random Access Memory,SRAM)、动态随机存取存储器(Dynamic RandomAccess Memory,DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(Electrically Erasable Programmable Read-Only Memory,EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(Compact Disc Read-Only Memory,CD-ROM)、数字多功能光盘(Digital Versatile Disk,DVD)或其他光学存储、磁盒式磁带,磁带磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括非暂存电脑可读媒体(transitorymedia),如调制的数据信号和载波。

图2示出根据本申请的一个方面提供的一种按位存储和计算数据权限的方法流程示意图,该方法包括:步骤S11~步骤S15,其中,

步骤S11,确定数据库类型对应的存储位数,根据业务信息确定权限等级;在此,数据库的字段类型包括长整型、字符串等,本申请中以无符号长整型进行说明,在以下实施例中简称为长整型,数据库长整型的位数可以为32位、64位和128位等,在本申请优选实施例中以长整型32位为例进行说明。根据实际业务情况设定权限等级,根据业务需求可以设定从1到p个权限等级,p不超过长整型的位数。比如权限等级分为4个等级:列表、读取内容、写入、删除;又如针对摄像头的视频权限,可以分为:列表、实时视频、录像视频、摄像头控制四个等级。

在本申请一实施例中,在步骤S11中,根据所述存储位数及所述权限等级确定存储用户的权限的数量n;在资源表上动态扩展用户的权限字段,其中,每个权限字段存储m个用户的权限,所述m=存储位数/n。在此,在资源表上动态扩展权限字段时,每个字段可以存储m个用户的权限,m=存储位数/n,n由存储位数与权限等级的比值确定,比如动态扩展长整型的权限字段时,存储位数为32位,权限等级为4个,则每个长整型的权限字段可以存储32/4=8个用户的权限。

步骤S12,根据所述存储位数及所述权限等级在资源表上动态扩展用户的权限字段;在此,在资源表上动态扩展用户的权限字段时,根据上述的存储位数(比如32位)、权限等级(4个)进行确定每个权限字段可以存储的用户权限的数量。

步骤S13,在用户表上增加两个字段,分别用于记录该用户的权限在资源表的扩展列信息以及该扩展列上的位置顺序;在此,对资源表进行动态扩展权限字段后,对关联的用户表进行增加两个字段,分别记录该用户的权限记录在资源表的第几个扩展列,以及扩展列上的位置顺序。

步骤S14,基于增加的字段将用户的权限进行按位存储,得到权限存储结构;在此,按照用户表上增加的字段进行按位存储,当数据库类型为长整型时,基于长整型按位存储,例如用户7对应的列索引为0、位置顺序为0,则代表资源表上第0个权限字段的0至3位存储该用户的权限,其中,第0位代表列表权限,第1位代表读取权限,第2位代表修改权限,第3位代表删除权限,其中,0至3每一位代表的业务意义为预先约定。本申请的权限存储结构在用户表中添加了两列记录动态扩展的字段,该权限存储结构中资源表扩展字段的方式替代了关联存储权限数据,权限按位存储,多个用户共享一列存储权限数据。

步骤S15,基于用户对权限的需求计算数据权限,更新所述权限存储结构。其中,所述用户对权限的需求包括权限维护和权限应用,所述权限维护包括新增用户和修改权限(即授权操作),所述权限应用包括校验权限和带权限查询。在此,用户对权限的需求可以拆分为两类,权限维护和权限应用,根据实际业务中的权限维护和权限应用对权限存储结构进行更新,比如增加进新的用户、权限校验、资源维护、权限校验、带权限查询等,新增用户、新增资源以及授权操作为权限维护,权限校验和带权限查询为权限应用,对每一需求进行计算对应的数据权限后,更新权限存储结构,从而可以绕开角色和资源分组针对每个用户进行精细化的授权,实现大规模数据量下权限精细化管理。

在本申请一实施例中,当进行新增用户时,在步骤S15中,判断权限存储结构中用户表是否存在空间存储新增用户的权限,基于判断结果设置用户表中新用户的列和位索引;在权限存在结构中的资源表上动态扩展一列;插入所述新增用户的权限。在此,新增用户时需要判断已有权限列表中是否存在空间来存储当前用户的权限,如果没有则需要动态扩展一列,即需要判断结果设置新用户的列和位索引,设置后插入新用户的权限记录。

具体地,获取权限存储结构中用户表的最大的列索引x,以及最大列的最大位顺序索引位y;若y+p≤(存储位数-p),则设置新增用户的列为最大列x,设置索引为y+p,其中,所述p为权限等级;若y+p>(存储位数-p),则设置新增用户的列为最大列x+1,设置索引为0。在此,如图3所示,新增用户为当前用户,获取新用户需要插入的用户表中最大的列索引x以及该列的最大位索引y,判断是否满足y+p≤(存储位数-p),比如当存储位数为32位,权限等级为p=4个等级时,判断是否满足y+4≤28,若是,则设置新增用户的列为最大列x,位索引为y+4,若否,则设置当前用户的列为最大列x+1,索引为0,在资源表动态扩展一列取名为C(x+1),该列默认值为0;插入新用户的记录。以32位长整型,4个权限等级为例,具体步骤如下:

S1:获取用户表中最新用户对应的列索引x,以及位索引y,比如从0开始,第一个用户为x=0,y=0,权限位为0至3,第二个用户为x=0,y=4,权限位为4至7……第八个用户为x=0,y=28,权限位为28至31,第九个用户为x=1,y=0,以此类推。如果最大位索引y+4≤28,说明存储空间仍有空余,执行S2B步骤;否则,说明存储空间已用完,需要动态扩充一列,执行S2A步骤。

S2A:设置新增用户的最大的列x+1,同时设置索引为最大索引0;

S2B:设置新增用户的最大的列x,同时设置索引为当前最小索引y+4;

S3:在资源表动态扩展一列,取名C(x+1),其中该列的0至3位用于存储新增用户的权限数据,其余位预留,比如第一个用户使用0-3,之后的位都给后续用户使用。默认该列数据为0,表示当前用户以及后续增加的用户默认对所有资源不具备任何权限。

S4:插入新增用户的权限记录。

在本申请一实施例中,当进行修改权限时,在步骤S15中,读取所述权限存储结构中授权用户记录,确定对应的列x和对应的列y;读取所述权限存储结构中被授权资源记录,确定资源列中x列的值L;将L的第y到y+(p-1)位替换为授权信息,将更新后的值写回资源列中的x列中,其中,所述p为权限等级。在此,由于数据库不支持按位写入数据,因此修改权限时需要读取一列的数据,修改其中属于当前用户的位数据,保留其他用户的位数据,然后写回数据库中。具体地,如图4所示,以权限等级p=4进行说明,S101:读取授权用户记录并获取对应的列索引x和对应的位索引y;S102:读取被授权资源记录,并获取对应的资源列C(x)列的值L;S103:将L的第y到y+3位替换为授权信息,该步骤的具体操作可使用转换方式,比如将长整型L转换为bit数组b[],根据当前用户对该资源的权限数据修改b[y]到b[y+3],将bit数组b[]转换回长整型L;S104:将更新后的值写回值当前记录的C(x)列,即将修改后的长整型L写回对应行和列。对S102到S104中对修改记录加行锁,以避免多个管理员同时修改同一条资源的授权数据,导致数据被覆盖。

在本申请一实施例中,当进行校验权限时,在步骤S15中,读取所述权限存储结构中授权用户记录,确定对应的列x和对应的列y;读取所述权限存储结构中授权资源记录,确定资源列中x列的值L;读取值L的第y至y+(p-1)位,根据对应位数值判断权限校验是否成功。在此,权限校验只验证某个用户对某个资源是否具备指定的权限,比如列表、读、写、删除。以p=4为例,具体步骤如下,Step1:读取授权用户记录并获取对应的列索引x和对应的位索引y;Step2:读取被授权资源记录,并获取对应的资源列C(x)列的值L;Step3:根据权限类型读取L的第y到y+3位;Step4:根据对应位数值为1或者0,返回成功或者失败。

其中,在Step3中,当p=4时,将值L进行转换为数组,校验列表权限读取数组的第y位,校验读取权限读取数组的第y+1位,校验写入权限读取数组的第y+2位,校验删除权限读取数组的第y+3位。在此,可将长整型L转换为bit数组b[],根据实际业务权限等级为4种时(比如分为列表、读取、写入、删除),预先定义第0位表示列表,第1位表示读取,第2位表示写入,第3位表示删除,则校验列表权限读取b[y],校验读取权限读取b[y+1],校验写入权限读取b[y+2],校验删除权限读取b[y+3]。

在本申请一实施例中,当进行带权限查询数据时,在步骤S15中,按照原始查询语句的查询条件查询所述权限存储结构中授权用户记录,确定对应的列x和对应的列y;在所述原始查询语句的查询条件上拼接上权限查询语句;执行拼接后的查询语句,返回记录当前对象具备列表权限的资源数据。在此,用户对某个资源按照一定过滤条件进行查询,查询返回的记录应满足用户对该资源具备列表权限,在本申请实施例中,通过拼接查询语句的方式实现带权限查询,如图5所示,S201:读取授权用户记录并获取对应的列索引x和对应的位索引y;S202:在原始查询语句的查询条件上拼上权限查询语句,比如原始查询语句有查询条件,则拼接的字符串为And(c(x)/2^y)%2>0;如果原始查询语句没有查询条件,则拼接字符串为Where(c(x)/2^y)%2>0;其中,m%n表示m对n取模,比如3对2取模为1,8对3取模为2,假设y=0,则拼接的字符串为c(x)%2>0,假设y=4,则拼接的字符串为(c(x)/16)%2>0,从而可以检查第y位上的值是否等于1;S203:执行拼接后的查询语句,返回记录当前对象具备列表权限的资源数据。通过在资源表上扩展出长整型按位存储权限,可以避免大数据量的关联表,同时可以在带权限检索时减少表关联操作。

在本申请一具体实施例中,如图6所示,采用数据库存储权限数据的系统框架图,权限数据的数据存储结构如图7所示,为长整型按位存储权限的方式,用户维护模块是对用户进行查询、新增、修改和删除,当新增用户时需要对权限数据进行相应操作,当删除一个用户时删除用户记录,资源数据中相应的列和字段也会失去意义,但系统并不回收;其余操作不影响权限数据。资源维护模块是对资源数据进行查询、新增、修改和删除,当新增一条资源记录时,默认该记录所有权限字段均为0,表示所有人对其没有任何权限,后续根据预制规则或授权操作修改其权限字段,当删除一条资源记录时,对应权限字段同时删除,其余操作对权限没有任何影响。授权模块主要功能是针对某个用户设置其对某个资源或某些资源的权限(是否允许列表/读/写/删除)。权限校验模块是只验证某个用户对某个资源是否具备指定的权限(比如列表/读/写/删除)。权限查询模块是用户对某个资源按照一定过滤条件进行查询,查询返回的记录应满足用户对该资源具备列表权限,在本申请中是通过拼接查询语句的方式实现带权限查询。

此外,本申请实施例还提供了一种计算机可读介质,其上存储有计算机可读指令,所述计算机可读指令可被处理器执行以实现前述一种按位存储和计算数据权限的方法。

在本申请一实施例中,还提供了一种按位存储和计算数据权限的设备,所述设备包括:

一个或多个处理器;以及

存储有计算机可读指令的存储器,所述计算机可读指令在被执行时使所述处理器执行如前述所述方法的操作。

例如,计算机可读指令在被执行时使所述一个或多个处理器:

确定数据库类型对应的存储位数,根据业务信息确定权限等级;

根据所述存储位数及所述权限等级在资源表上动态扩展用户的权限字段;

在用户表上增加两个字段,分别用于记录该用户的权限在资源表的扩展列信息以及该扩展列上的位置顺序;

基于增加的字段将用户的权限进行按位存储,得到权限存储结构;

基于用户对权限的需求计算数据权限,更新所述权限存储结构。

显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的精神和范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。

需要注意的是,本申请可在软件和/或软件与硬件的组合体中被实施,例如,可采用专用集成电路(ASIC)、通用目的计算机或任何其他类似硬件设备来实现。在一个实施例中,本申请的软件程序可以通过处理器执行以实现上文所述步骤或功能。同样地,本申请的软件程序(包括相关的数据结构)可以被存储到计算机可读记录介质中,例如,RAM存储器,磁或光驱动器或软磁盘及类似设备。另外,本申请的一些步骤或功能可采用硬件来实现,例如,作为与处理器配合从而执行各个步骤或功能的电路。

另外,本申请的一部分可被应用为计算机程序产品,例如计算机程序指令,当其被计算机执行时,通过该计算机的操作,可以调用或提供根据本申请的方法和/或技术方案。而调用本申请的方法的程序指令,可能被存储在固定的或可移动的记录介质中,和/或通过广播或其他信号承载媒体中的数据流而被传输,和/或被存储在根据所述程序指令运行的计算机设备的工作存储器中。在此,根据本申请的一个实施例包括一个装置,该装置包括用于存储计算机程序指令的存储器和用于执行程序指令的处理器,其中,当该计算机程序指令被该处理器执行时,触发该装置运行基于前述根据本申请的多个实施例的方法和/或技术方案。

对于本领域技术人员而言,显然本申请不限于上述示范性实施例的细节,而且在不背离本申请的精神或基本特征的情况下,能够以其他的具体形式实现本申请。因此,无论从哪一点来看,均应将实施例看作是示范性的,而且是非限制性的,本申请的范围由所附权利要求而不是上述说明限定,因此旨在将落在权利要求的等同要件的含义和范围内的所有变化涵括在本申请内。不应将权利要求中的任何附图标记视为限制所涉及的权利要求。此外,显然“包括”一词不排除其他单元或步骤,单数不排除复数。第一,第二等词语用来表示名称,而并不表示任何特定的顺序。

相关技术
  • 一种液位检测装置和包含其的设备以及液位检测方法、电子设备及计算机可读存储介质
  • 一种数据库权限管理方法、装置、设备及存储介质
  • 一种数据存储方法及装置、一种计算设备及存储介质
  • 一种数据存储方法及装置、一种计算设备及存储介质
  • 一种元数据存储方法、装置、设备及计算机可读存储介质
  • 报表应用中数据权限的处理方法、装置、计算机设备及计算机存储介质
  • 一种数据权限控制方法、计算机设备及存储介质
技术分类

06120116514337