矩阵式用户权限在PostgreSQL上的索引实现方法、系统及电子设备与流程

专利2023-08-15  101


矩阵式用户权限在postgresql上的索引实现方法、系统及电子设备
技术领域
1.本发明涉及postgresql、postgresql操作符、postgresql索引,具体为一种矩阵式用户权限在postgresql上的索引实现方法及系统。


背景技术:

2.postgresql是一个开源对象关系型数据库系统,当数据库中存储的数据量越来越大,数据类型越来越复杂时,想要按照条件查询某些数据就变得很繁琐,查询速度也会下降。
3.上述问题可利用postgresql中的索引来解决。索引其实就是一种数据结构,将数据库中的数据以一定的数据结构算法进行存储,建立合适的索引能够帮助我们快速的检索数据库中的数据,快速定位到可能满足条件的记录,而不需要遍历所有记录。
4.目前postgresql支持的索引类型有b-tree、hash、gist、sp-gist、gin和brin等。每种索引类型的可应用场景都不同。比如b-tree主要用在可排序数据上的处理等值和范围查询,在涉及《《==》=》这些操作符时可以考虑用b-tree索引进行数据查询。hash索引存储的是被索引字段value的哈希值,只支持等值查询。gin(generalized inverted index,通用倒排索引)是一个存储对(key,posting list)集合的索引结构,目前支持数组和全文检索等数据类型。
5.随着业务的不断发展,系统对于用户权限的控制越来越精细,就比如在自考业务,用户可以分为学生、教师以及管理员,其中管理员分为六个层级,分别是学校、站点、教学点、专业、年级、班级。对于学生来说要想知道某个学生是否对某个数据有操作权限就很简单,因为学生和数据的关系是一一对应的,学生只能操作与自己相关的数据,postgresql可以利用=操作符和b-tree索引来快速的查找相应数据。对于教师来说一个教师可以管理多个班级,一条数据也可以属于多个班级,用户和数据的关系是多对多的关系,数据的授权可以以数组的形式存储,postgresql可以利用&&操作符和gin索引来快速查找相应的数据。
6.学生和教师我们都可以根据postgresql提供的操作符和索引来完成对数据的快速查找,但是对于管理员来说,他具备多种角色身份,不同角色还具备层级关系,就比如说系统中有这样一个用户她即是1学校1站点的站点管理员又是2学校1站点1教学点的教学点管理员,用矩阵表示就是对于这么一个矩阵式用户,我们想要知道他对哪些数据有操作权限,postgresql中并没有合适的操作符和支持矩阵式数据类型的索引方法来处理用户和数据之间的关系。
7.因此,本发明提供自定义操作符和能够支持矩阵式数据类型的索引方法来解决上述问题。


技术实现要素:

8.为克服上述现有技术的不足,本发明提供一种矩阵式用户权限在postgresql上的索引实现方法及系统,用以解决上述至少一个技术问题。
9.根据本发明说明书的一方面,提供一种矩阵式用户权限在postgresql上的索引实现方法,包括:构建操作符实现矩阵数据的转换,以及在gin索引的基础上实现转换后矩阵数据的存储;
10.其中,构建操作符实现矩阵数据的转换进一步包括:
11.根据系统的组织架构以及用户和数据之间的关系,建立矩阵数据模型,所述矩阵数据模型包括用户权限矩阵和数据归属矩阵;
12.按照预设的提取规则,分别对用户权限矩阵和数据归属矩阵进行逐行提取,得到用户权限秘钥和数据归属单元;
13.按照预设的比对规则,将每一用户权限秘钥分别与所有的数据归属单元进行逐一比对,得到每一用户权限秘钥及与之相对应的用户数据列表;
14.根据所有的用户权限秘钥及与之相对应的用户数据列表,形成gin索引存储结构;
15.在gin索引的基础上实现转换后矩阵数据的存储,进一步包括:
16.在postgresql中添加矩阵数据类型,并构建与矩阵数据类型相对应的操作符;
17.定义gin索引所需要的五个支持函数,基于操作符和支持函数实现gin索引存储结构的索引。
18.上述技术方案通过构建操作符来处理矩阵数据之间的关系,并在gin索引的基础上扩展一种支持矩阵式数据类型的访问方法来实现对矩阵数据的存储,从而在gin框架下实现对矩阵数据的快速索引,解决了矩阵式用户难以确定对哪些数据具有操作权限的问题。
19.矩阵式用户指的是一个用户对应多个节点,在多个节点均具有权限,且每个节点均产生大量使用数据,将该用户权限数据及用户产生的使用数据采用矩阵进行表示。
20.由于每个节点在系统运行过程中均产生大量数据,导致存储空间需求大,且按照现有方法查询某个矩阵式用户的权限时,索引数量大,计算开销大,难以快速查询到用户对哪些数据具有操作权限。因此,本发明通过构建自定义操作符的方式,按照预设逻辑对系统数据进行提取和比对,得到适合于gin索引的存储结构;接着在gin框架下,通过添加矩阵数据类型并构建与之对应的操作符来实现对矩阵数据的导入,并定义gin索引所需的五个支持函数,对导入存储的矩阵数据进行语义解析,从而实现矩阵数据的gin索引存储。
21.作为进一步的技术方案,系统的组织架构包括学校、站点、教学点、专业、年级、班级六层组织节点,其中,用户权限矩阵的每一行对应该用户的一条权限数据,每一列对应一个组织节点;数据归属矩阵的每一行对应一条数据的归属,每一列对应一个组织节点。
22.对于数据归属矩阵而言,其数据可以是学生、教师或管理员产生的使用数据,也可以是学生、教师或管理员上传的资源数据,而不管是过程中产生的使用数据还是上传的资源数据,都存在一条数据属于多个节点的关系,比如说,一个学生在两个班级上课,那么该学生产生的使用数据就与该两个班级节点具有归属关系,它既属于a班级的数据又属于b班级的数据,因此,在数据归属矩阵中,将矩阵的每一行表示为一条数据的归属,表示其挂载在该归属关系下。
23.进一步来说,对于资源数据,如管理员上传的课程资源数据,其是多个学校或者站点都在共用的,是挂在多个组织节点下面的,所以这一条资源数据矩阵的每一行就代表挂载一个组织节点的归属数据。
24.由于现有教学管理系统中,组织架构下的组织节点分层较多,且管理员通常身兼多个组织节点的管理工作,因此在整个系统中,形成了多管理员对多组织节点的多对多关系,这种多对多关系更适用于采用矩阵结构表达。进一步而言,将用户权限数据和用户使用数据分开,构建不同的矩阵结构,便于用户权限管理。
25.作为进一步的技术方案,将学校、站点、教学点、专业、年级、班级六层组织节点分别抽象表示为a、b、c、d、e、f,将用户权限矩阵和用户数据矩阵中的每一行表示aabbccddeeff,其中a表示学校编号,b表示站点编号,c表示教学点编号,d表示专业编号,e表示年级编号,f表示班级编号;并依据用户在各组织节点的权限及用户在各组织节点产生的数据构建形成矩阵数据模型。
26.通过上述抽象表达方式,将矩阵数据转换形成一列列的抽象数据,降低了存储空间。并且,抽象后的数据格式相同,便于通过操作符进行逻辑运算,实现矩阵数据的快速转换。
27.作为进一步的技术方案,对于用户权限矩阵而言,提取规则为:若用户在某个组织节点具有权限,则将矩阵中对应的该组织节点提取为节点编号,并将该组织节点的下级节点提取为零;在完成提取后,得到用户权限矩阵每一行的权限数据。
28.作为进一步的技术方案,对于数据归属矩阵而言,提取规则为:若用户在某个组织节点产生了数据,则将矩阵中对应的该组织节点提取为节点编号,并将该组织节点的下级节点提取为零;在完成提取后,得到数据归属矩阵每一行的归属数据。
29.通过对矩阵数据进行逐行提取,使每个用户权限矩阵的一行对应一行权限数据,每个数据归属矩阵的一行对应一行归属数据,且权限数据与归属数据的格式相同,能够通过数据比对实现用户在每一节点上的用户权限的判断,从而以更少的计算开销、更好的索引数量实现用户权限的快速查询。
30.作为进一步的技术方案,将矩阵的每一行数据定义为遇零结束并用字母z表示,对提取得到的权限数据及归属数据进行遇零处理,得到简化后的用户权限秘钥和数据归属单元。通过该技术方案对提取的权限数据和用户使用数据进行进一步简化。
31.作为进一步的技术方案,对用户权限矩阵和数据归属矩阵分别按行提取,得到成行表示的用户权限秘钥和数据归属单元,将用户权限秘钥与数据归属单元进行两两比对,一旦比对结果为true时返回true,否则返回false。
32.具体地,比对规则包括三条,分别为:第一条,比对到不同即为false;第二条,用户权限秘钥与数据归属单元对比时,若有其中任意一个遇到结束符z,则停止比对,以结束前的结果做为最终结果;第三条,如果某一个用户权限秘钥和一个数据归属矩阵中的所有数据归属单元对比时,有多个结果,则这多个结果之间是或的关系。
33.按照上述三个比对规则,将用户权限数据与用户使用数据进行逐一比较,得到每一个用户权限数据所对应的权限数据,便于在索引时,通过输入用户权限数据,即可直接得到该权限对应的用户使用数据。
34.作为进一步的技术方案,gin索引存储结构为[key,postinglist],其中,key表示
用户权限秘钥,postinglist表示该用户权限秘钥所对应的用户数据列表。
[0035]
根据本发明说明书的一方面,提供一种矩阵式用户权限在postgresql上的索引实现系统,包括:
[0036]
矩阵数据模型构建模块,用于根据系统的组织架构以及用户和数据之间的关系,建立矩阵数据模型,所述矩阵数据模型包括用户权限矩阵和数据归属矩阵;
[0037]
数据提取模块,用于按照预设的提取规则,分别对用户权限矩阵和数据归属矩阵进行逐行提取,得到用户权限秘钥和数据归属单元;
[0038]
数据比对模块,用于按照预设的比对规则,将每一用户权限秘钥分别与所有的数据归属单元进行逐一比对,得到每一用户权限秘钥及与之相对应的用户数据列表;
[0039]
数据形成模块,用于根据所有的用户权限秘钥及与之相对应的用户数据列表,形成gin索引存储结构;
[0040]
gin扩展模块,用于在postgresql中添加矩阵数据类型,并构建与矩阵数据类型相对应的操作符;
[0041]
索引模块,用于定义gin索引所需要的五个支持函数,基于操作符和支持函数实现gin索引存储结构的索引。
[0042]
将构建的gin索引存储对按照gin索引进行存储,实现gin索引。
[0043]
根据本发明说明书的一方面,提供一种电子设备,所述电子设备包括处理器和存储器,所述存储器中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或指令集由所述处理器加载并执行以实现如权利要求1至8任一项所述的矩阵式用户权限在postgresql上的索引实现方法。
[0044]
与现有技术相比,本发明的有益效果在于:
[0045]
(1)本发明通过构建操作符来处理矩阵数据之间的关系,并在gin索引的基础上扩展一种支持矩阵式数据类型的访问方法来实现对矩阵数据的存储,从而在gin框架下实现对矩阵数据的快速索引,解决了矩阵式用户难以确定对哪些数据具有操作权限的问题。
[0046]
(2)本发明在postgresql原有操作符的基础上新增了一个操作符,补全了postgresql操作符没法比较矩阵数据类型的短板。
[0047]
(3)本发明在gin索引的基础上新增了矩阵数据类型,使得矩阵式数据类型的数据也能够按照gin索引进行存储。
[0048]
(4)本发明通过新的索引访问方法能够大大提高数据的查询速度,优化存储空间,减少索引数量,降低计算开销。
附图说明
[0049]
图1为根据本发明实施例的数据模型抽象示意图。
[0050]
图2为根据本发明实施例的数据posting list整合示意图。
[0051]
图3为根据本发明实施例的索引扩展流程图。
具体实施方式
[0052]
以下将结合附图对本发明各实施例的技术方案进行清楚、完整的描述,显然,所描述发实施例仅仅是本发明的一部分实施例,而不是全部的实施例。基于本发明的实施例,本
领域普通技术人员在没有做出创造性劳动的前提下所得到的所有其它实施例,都属于本发明所保护的范围。
[0053]
本发明公开了一种矩阵式用户权限在postgresql上的索引实现方法。该方法主要包含操作符内部算法的实现及索引的实现。
[0054]
操作符是sql语句查找与处理数据所必须的,为此,本发明自定义一个操作符来处理矩阵数据类型的关系。
[0055]
该操作符的构建具体包括:
[0056]
1、建立数据模型
[0057]
根据系统的组织架构(学校、站点、教学点、专业、年级、班级),以及用户和数据之间的关系,建立数据模型。数据模型是操作符内部算法逻辑的基石。
[0058]
根据业务需求,系统中的组织架构共分为六层,分别是学校、站点、教学点、专业、年级、班级。如图1所示,将六层组织架构抽象成字母a,b,c,d,e,f表示。系统中的每条数据都是挂载到这六层组织架构中。
[0059]
例如图1中的用户u2,其既是1学校2站点的站点管理员又是1学校1站点1教学点的教学点管理员,把u2用矩阵表示即为将数据挂载到组织架构中即可表示为a1b2c0d0e0f0和a1b1c1d0e0f0,而实际上数据a1b2c0d0e0f0就是挂载到1学校2站点上的,截止到站点就结束了,所以这里我们定义矩阵数据遇0即结束并用字母z表示,则用户u2最终可抽象成a1b2z和a1b1c1z。
[0060]
按照上述方式,我们把所有用户信息数据以及其它数据都按照这种形式表示出来。并且将抽象出的用户权限数据做为key(例如a1b2z),将属于此权限下的数据都归类到一起当做posting list(由于我们是基于gin倒排序索引扩展开发,gin是一个存储对(key,posting list)集合的索引结构)。至此我们就将数据都抽象成(key,posting list)的形式。
[0061]
2、自定义操作符内部逻辑算法
[0062]
根据数据模型实现操作符内部逻辑算法。例如数据模型中有和两个矩阵数据,我们定义操作符~来运算a和b之间的关系,则可表示为a~b,算法主要用来处理类似于a和b矩阵数据之间的关系。算法内部处理的关系类型有大于、小于和包含。
[0063]
如图2所示,以用户权限数据a1z做为key为例,示意了如何通过比对找到a1z所对应的posting list集合。这里主要根据三条规则进行比对的,第一条规则是比对到不同即为false例如a1z和数据d3(a2b1z),a1不等于a2则立即停止比对结果为false。第二条规则是进行对比的两个数据有其中任意一个遇到结束符z即停止比对,以结束前的结果做为最终结果例如a1z与数据d4(a1b1c1z),第一位a1等于a1为true,第二位遇到z则停止比对,最终结果为true,第三个规则是如果和一个数据对比有多个结果则它们之间是或的关系,例如数据d1,a1z与数据d1进行比对结果是t、f、t、t、t,则最终结果为true。根据这三条规则我
就就找到a1z所对应的posting list为d1,d2,d4。这三条规则也是操作符内部比对算法的基本依据。
[0064]
索引是为了加速对表中数据行的检索而创建的一种分散的存储结构。本发明扩展了一种基于gin倒排序索引的矩阵索引方法。
[0065]
如图3所示,基于gin倒排序索引的矩阵索引方法主要分为三步:
[0066]
1、添加新数据类型:添加一种新的数据类型矩阵数据类型。由于postgresql中暂时没有支持矩阵式数据类型的索引方法,但是已知gin索引具有很好的扩展性,允许在开发自定义数据类型时,通过设计适当的访问方法来实现gin索引的应用。所以我们根据gin索引提供的扩展方法扩展一种数据类型——矩阵数据类型。实现新数据类型的输入和输出函数并注册到数据库内部。
[0067]
2、创建新类型的操作符:根据数据库方法创建一个操作符,为新数据类型实现并注册各种操作符所需要的函数。
[0068]
3、定义gin访问方法:这里主要用到五个方法分别是compare、extractvalue、extractquery、consistent和comparepartial,这些方法定义了键值、键值与键值之间的关系、被索引值、能够使用索引的查询以及部分匹配。
[0069]
具体而言,compare方法:比较两个键值a和b,然后返回一个整数值,返回负值表示a《b,返回0表示a=b,返回正值表示a》b。其函数原型为:int compare(datum a,datum b)。
[0070]
extractvalue方法:根据参数inputvalue生成一个键值数组,并返回其指针,键值数组中元素的个数存放在另一个参数nkeys中。其函数原型为datum*extractvalue(datum inputvalue,int32*nkeys)。
[0071]
extractquery方法:根据参数query生成一个用于查询的键值数组,并返回其指针。其函数原型为datum*extractquery(datum query,int32*nkeys,strategynumber n,bool**pmatch,pointer**extra_data)。
[0072]
consistent方法:用于检查索引值是否满足查询。其函数原型为bool consistent(bool check[],strategynumber n,datum query,int32 nkeys,pointer extra_data[],bool*recheck)。
[0073]
comparepartial方法:将部分匹配的查询与索引值进行比较,返回值为负值表示两者不匹配,但继续索引扫描;返回值为0表示两者匹配;返回值为正值表示停止扫描。其函数原型为(int comparepartial(datum partial_key,datum key,strategynumber n,pointer extra_data))。
[0074]
通过以上三步实现了gin索引对矩阵数据类型的支持。
[0075]
由于每个节点在系统运行过程中均产生大量数据,导致存储空间需求大,且按照现有方法查询某个矩阵式用户的权限时,索引数量大,计算开销大,难以快速查询到用户对哪些数据具有操作权限。因此,上述方法通过构建自定义操作符的方式,按照预设逻辑对系统数据进行提取和比对,得到适合于gin索引的存储结构;接着在gin框架下,通过添加矩阵数据类型并构建与之对应的操作符来实现对矩阵数据的导入,并通过定义gin索引所需要的五个支持函数,对导入存储的矩阵数据进行语义解析,从而实现矩阵数据的gin索引存储。
[0076]
根据本发明说明书的一方面,提供一种矩阵式用户权限在postgresql上的索引实
现系统,包括:
[0077]
矩阵数据模型构建模块,用于根据系统的组织架构以及用户和数据之间的关系,建立矩阵数据模型,所述矩阵数据模型包括用户权限矩阵和数据归属矩阵;
[0078]
数据提取模块,用于按照预设的提取规则,分别对用户权限矩阵和数据归属矩阵进行逐行提取,得到用户权限秘钥和数据归属单元;
[0079]
数据比对模块,用于按照预设的比对规则,将每一用户权限秘钥分别与所有的数据归属单元进行逐一比对,得到每一用户权限秘钥及与之相对应的用户数据列表;
[0080]
数据形成模块,用于根据所有的用户权限秘钥及与之相对应的用户数据列表,形成gin索引存储结构;
[0081]
gin扩展模块,用于在postgresql中添加矩阵数据类型,并构建与矩阵数据类型相对应的操作符~;
[0082]
索引模块,用于定义gin索引所需要的五个支持函数,基于操作符和支持函数实现gin索引存储结构的索引。
[0083]
将构建的gin索引存储对按照gin索引进行存储,实现gin索引。
[0084]
根据本发明说明书的一方面,提供一种电子设备,所述电子设备包括处理器和存储器,所述存储器中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或指令集由所述处理器加载并执行以实现如权利要求1至8任一项所述的矩阵式用户权限在postgresql上的索引实现方法。
[0085]
在本说明书的描述中,参考术语“一个实施方式”、“某些实施方式”、“示意性实施方式”、“示例”、“具体示例”、或“一些示例”等的描述意指结合所述实施方式或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施方式或示例中。在本说明书中,对上述术语的示意性表述不一定指的是相同的实施方式或示例。而且,描述的具体特征、结构、材料或者特点可以在任何的一个或多个实施方式或示例中以合适的方式结合。
[0086]
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明实施例技术方案。

技术特征:
1.矩阵式用户权限在postgresql上的索引实现方法,其特征在于,包括构建操作符实现矩阵数据的转换,以及在gin索引的基础上实现转换后矩阵数据的存储;其中,构建操作符实现矩阵数据的转换进一步包括:根据系统的组织架构以及用户和数据之间的关系,建立矩阵数据模型,所述矩阵数据模型包括用户权限矩阵和数据归属矩阵;按照预设的提取规则,分别对用户权限矩阵和数据归属矩阵进行逐行提取,得到用户权限秘钥和数据归属单元;按照预设的比对规则,将每一用户权限秘钥分别与所有的数据归属单元进行逐一比对,得到每一用户权限秘钥及与之相对应的用户数据列表;根据所有的用户权限秘钥及与之相对应的用户数据列表,形成gin索引存储结构;在gin索引的基础上实现转换后矩阵数据的存储,进一步包括:在postgresql中添加矩阵数据类型,并构建与矩阵数据类型相对应的操作符;定义gin索引所需要的五个支持函数,基于操作符和支持函数实现gin索引存储结构的索引。2.根据权利要求1所述矩阵式用户权限在postgresql上的索引实现方法,其特征在于,系统的组织架构包括学校、站点、教学点、专业、年级、班级六层组织节点,其中,用户权限矩阵的每一行对应该用户的一条权限数据,每一列对应一个组织节点;数据归属矩阵的每一行对应一条数据的归属,每一列对应一个组织节点。3.根据权利要求2所述矩阵式用户权限在postgresql上的索引实现方法,其特征在于,将学校、站点、教学点、专业、年级、班级六层组织节点分别抽象表示为a、b、c、d、e、f,将用户权限矩阵和数据归属矩阵中的每一行表示aabbccddeeff,其中a表示学校编号,b表示站点编号,c表示教学点编号,d表示专业编号,e表示年级编号,f表示班级编号;并依据用户在各组织节点的权限及用户在各组织节点产生的数据构建形成矩阵数据模型。4.根据权利要求3所述矩阵式用户权限在postgresql上的索引实现方法,其特征在于,对于用户权限矩阵而言,提取规则为:若用户在某个组织节点具有权限,则将矩阵中对应的该组织节点提取为节点编号,并将该组织节点的下级节点提取为零;在完成提取后,得到用户权限矩阵每一行的权限数据。5.根据权利要求3所述矩阵式用户权限在postgresql上的索引实现方法,其特征在于,对于数据归属矩阵而言,提取规则为:若用户在某个组织节点产生了数据,则将矩阵中对应的该组织节点提取为节点编号,并将该组织节点的下级节点提取为零;在完成提取后,得到数据归属矩阵每一行的归属数据。6.根据权利要求4或5所述矩阵式用户权限在postgresql上的索引实现方法,其特征在于,将矩阵的每一行数据定义为遇零结束并用字母z表示,对提取得到的权限数据及归属数据进行遇零处理,得到简化后的用户权限秘钥和数据归属单元。7.根据权利要求6所述矩阵式用户权限在postgresql上的索引实现方法,其特征在于,对用户权限矩阵和数据归属矩阵分别按行提取,得到成行表示的用户权限秘钥和数据归属单元,将用户权限秘钥与数据归属单元进行两两比对,一旦比对结果为true时返回true,否则返回false。8.根据权利要求1所述矩阵式用户权限在postgresql上的索引实现方法,其特征在于,
gin索引存储结构为[key,postinglist],其中,key表示用户权限秘钥,postinglist表示该用户权限秘钥所对应的用户数据列表。9.矩阵式用户权限在postgresql上的索引实现系统,其特征在于,包括:矩阵数据模型构建模块,用于根据系统的组织架构以及用户和数据之间的关系,建立矩阵数据模型,所述矩阵数据模型包括用户权限矩阵和数据归属矩阵;数据提取模块,用于按照预设的提取规则,分别对用户权限矩阵和数据归属矩阵进行逐行提取,得到用户权限秘钥和数据归属单元;数据比对模块,用于按照预设的比对规则,将每一用户权限秘钥分别与所有的数据归属单元进行逐一比对,得到每一用户权限秘钥及与之相对应的用户数据列表;数据形成模块,用于根据所有的用户权限秘钥及与之相对应的用户数据列表,形成gin索引存储结构;gin扩展模块,用于在postgresql中添加矩阵数据类型,并构建与矩阵数据类型相对应的操作符;索引模块,用于定义gin索引所需要的五个支持函数,基于操作符和支持函数实现gin索引存储结构的索引。将构建的gin索引存储对按照gin索引进行存储,实现gin索引。10.一种电子设备,其特征在于,所述电子设备包括处理器和存储器,所述存储器中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或指令集由所述处理器加载并执行以实现如权利要求1至8任一项所述的矩阵式用户权限在postgresql上的索引实现方法。

技术总结
本发明公开一种矩阵式用户权限在PostgreSQL上的索引实现方法及系统,方法包括:根据系统的组织架构以及用户和数据之间的关系,建立矩阵数据模型,所述矩阵数据模型包括用户权限矩阵和数据归属矩阵;按照预设的提取规则,分别对用户权限矩阵和数据归属矩阵进行逐行提取,得到用户权限秘钥和数据归属单元;按照预设的比对规则,将每一用户权限秘钥分别与所有的数据归属单元进行逐一比对,得到每一用户权限秘钥及与之相对应的用户数据列表;根据所有的用户权限秘钥及与之相对应的用户数据列表,形成GIN索引存储结构;在PostgreSQL中添加矩阵数据类型,并构建与矩阵数据类型相对应的操作符;定义GIN索引所需要的支持函数,基于操作符和支持函数实现GIN索引。引。引。


技术研发人员:伍仪强 邓彬彬
受保护的技术使用者:武汉华莘科技有限公司
技术研发日:2022.07.05
技术公布日:2022/11/1
转载请注明原文地址: https://tieba.8miu.com/read-4571.html

最新回复(0)