CN109240738B - 数据库权限管理方法、装置以及计算机设备 - Google Patents
数据库权限管理方法、装置以及计算机设备 Download PDFInfo
- Publication number
- CN109240738B CN109240738B CN201811005579.5A CN201811005579A CN109240738B CN 109240738 B CN109240738 B CN 109240738B CN 201811005579 A CN201811005579 A CN 201811005579A CN 109240738 B CN109240738 B CN 109240738B
- Authority
- CN
- China
- Prior art keywords
- branch
- node
- pointer
- version
- development
- 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.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
- G06F8/71—Version control; Configuration management
Abstract
本申请提供一种数据库权限管理方法、装置以及计算机设备,所述数据库设置有三层结构,包括:个人分支、开发分支以及发布分支;所述的方法包括:第一个人分支将编辑的数据提交开发分支时,判断是否存在冲突,根据判断的结果对所述数据进行处理后提交至所述开发分支;所述开发分支对所述第一个人分支提交的数据进行审核,若审核通过,将所述第一个人分支提交的数据提交至发布分支;所述发布分支将所述开发分支提交的数据下发给终端。本申请实施例降低了数据出错的可能性。
Description
技术领域
本申请涉及数据库技术领域,具体而言,本申请涉及一种数据库权限管理方法、装置以及计算机设备。
背景技术
SRE(Site Reliability Engineering,网站可靠性工程化)业务支持系统,是一种服务于内部技术运维的管理系统,用于动态配置管理。目前的SRE业务支持系统中,一般是服务端动态数据,然后将数据下发给各个平台的终端,例如iOS(苹果公司的移动操作系统)终端,android(安卓)终端,androidTV(television,电视)终端,iPad(苹果平板电脑)终端,PC(personal computer,个人计算机)终端等等,通过下发的数据正确启动或正常运行在该终端上的某种指定功能。但是该种方式在数据有误时会影响终端相应配置的功能,造成不可估量的损失。
发明内容
本申请针对现有方式的缺点,提出一种数据库权限管理方法、装置以及计算机设备,以确保数据正确,降低数据出错的可能性,进而保证终端相应配置的功能。
本申请的实施例根据第一个方面,提供了一种数据库权限管理方法,所述数据库设置有三层结构,包括:个人分支、开发分支以及发布分支;所述方法包括:
第一个人分支将编辑的数据提交开发分支时,判断是否存在冲突,根据判断的结果对所述数据进行处理后提交至所述开发分支;
所述开发分支对所述第一个人分支提交的数据进行审核,若审核通过,将所述第一个人分支提交的数据提交至发布分支;
所述发布分支将所述开发分支提交的数据下发给终端。
在一个实施例中,所述判断是否存在冲突,包括:
根据构建的数据表模型,判断是否存在冲突;
其中,所述数据表模型用于记录每个个人分支的指针以及每个指针的内容;所述指针的内容包括指针地址、内容类型和内容;所述内容类型包括commit、tree和node;所述commit的内容包括tree的指针和当前commit的父节点指针,所述tree的内容包括当前tree下node的地址数组。
在一个实施例中,所述根据构建的数据表模型,判断是否存在冲突,包括:
根据所述数据表模型,获得所述第一个人分支的版本走向和开发分支的版本走向;所述第一个人分支的版本走向包括所述第一个人分支的指针及其父节点指针,所述开发分支的版本走向包括所述开发分支的指针及其父节点指针;
根据所述第一分支的版本走向和所述开发分支的版本走向,获得公共父节点;
若所述公共父节点等于当前开发版本,确定版本不冲突;
若所述公共父节点不等于当前开发版本,确定版本冲突,再判断内容是否存在冲突。
在一个实施例中,所述再判断内容是否存在冲突,包括:
如果公共父节点的node与开发分支的node相同且公共父节点的node与第二个人分支的node相同,确定内容无改变,内容不冲突;
如果公共父节点的node与开发分支的node相同且开发分支的node与所述第二个人分支的node不相同,确定内容有改变,内容不冲突;
如果公共父节点的node与开发分支的node不相同且开发分支的node与所述第二个人分支的node不相同,确定内容冲突。
在一个实施例中,所述根据判断的结果对所述数据进行处理后提交至所述开发分支,包括:
若版本不冲突,将所述数据直接提交至所述开发分支;
若版本冲突,且内容无改变,内容不冲突,不执行将所述数据提交至所述开发分支的操作;
若版本冲突,且内容有改变,内容不冲突,将所述数据直接提交至所述开发分支;
若版本冲突,且内容冲突,将所述第一个人分支和所述第二个人分支进行合并,将合并后得到的数据提交至所述开发分支。
在一个实施例中,所述根据所述第一分支的版本走向和所述开发分支的版本走向,获得公共父节点,包括:
建立空数组;
从所述第一分支的版本走向中选取最新的指针并存入所述空数组;
若所述空数组当前不存在重复指针,从所述开发分支的版本走向中选取最新的指针并存入所述空数组;
若所述空数组当前不存在重复指针,从所述第一分支的版本走向中选取最新的指针的父节点指针并存入所述空数组;
如果所述空数组当前不存在重复指针,从所述开发分支的版本走向中选取最新的指针的父节点指针并存入所述空数组;
如果所述空数组当前不存在重复指针,将最新的指针的上一个指针作为最新的指针,返回从所述第一分支的版本走向中选取最新的指针并存入所述空数组的步骤,直至所述空数组出现重复指针,将所述重复指针作为公共父节点。
在一个实施例中,所述数据库权限管理方法还包括:
第三个人分支在进行数据更新时,根据所述数据表模型,获得所述第三个人分支的版本走向和开发分支的版本走向;所述第三个人分支的版本走向包括所述第三个人分支的指针及其父节点指针,所述开发分支的版本走向包括所述开发分支的指针及其父节点指针;
所述第三个人分支根据所述第三个人分支的版本走向和所述开发分支的版本走向,获得公共父节点;
如果公共父节点的node与开发分支的node相同且公共父节点的node与第三个人分支的node相同,所述第三个人分支确定内容无改变,内容不冲突,不执行与所述开发分支的数据同步的操作;
如果公共父节点的node与开发分支的node相同且开发分支的node与所述第三个人分支的node不相同,所述第三个人分支确定内容有改变,内容不冲突,与所述开发分支的数据进行同步;
如果公共父节点的node与开发分支的node不相同且开发分支的node与所述第三个人分支的node不相同,所述第三个人分支确定内容冲突,根据选择的数据进行更新。
本申请的实施例根据第二个方面,还提供了一种数据库权限管理装置,所述数据库设置有三层结构,包括:个人分支、开发分支以及发布分支;所述装置包括:
第一个人分支,用于将编辑的数据提交开发分支时,判断是否存在冲突,根据判断的结果对所述数据进行处理后提交至所述开发分支;
所述开发分支,用于对所述第一个人分支提交的数据进行审核,若审核通过,将所述第一个人分支提交的数据提交至发布分支;
所述发布分支,用于将所述开发分支提交的数据下发给终端。
本申请的实施例根据第三个方面,还提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现上述任意一项所述的数据库权限管理方法。
本申请的实施例根据第四个方面,还提供了一种计算机设备,所述计算机设备包括:
一个或多个处理器;
存储装置,用于存储一个或多个程序,
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现上述任意一项所述的数据库权限管理方法。
上述的数据库权限管理方法、装置以及计算机设备,数据库设置有三层结构,分别为发布分支、开发分支以及个人分支,每个分支做自己的事情,当个人分支需要将修改的数据发布时,判断是否存在冲突,根据判断的结果对修改的数据进行处理后再提交至开发分支,开发分支对修改的数据进行审核,审核通过时再做最终的提交,最终下发给终端的数据由master控制,由此可达到权限管理,平台分离,独立测试,确保了数据正确,降低了错误数据出现的可能性,进而保证终端相应配置的功能,避免造成不可估量的损失。
本申请附加的方面和优点将在下面的描述中部分给出,这些将从下面的描述中变得明显,或通过本申请的实践了解到。
附图说明
本申请上述的和/或附加的方面和优点从下面结合附图对实施例的描述中将变得明显和容易理解,其中:
图1为本申请一个实施例的数据库权限管理方法所应用硬件环境的示意图;
图2为本申请一个实施例的数据库权限管理方法的示意图;
图3为本申请一个具体实施例的数据库权限管理方法的示意图;
图4为本申请一实施例的个人分支之间数据的提交和拉取方法的示意图;
图5为本申请一个实施例的node表的示意图;
图6为本申请一个实施例的个人分支提交数据方式的示意图;
图7为本申请一个实施例的个人分支更新数据方式的示意图;
图8为本申请一个实施例的数据库权限管理装置的示意图;
图9为本申请一个实施例的计算机设备的示意图。
具体实施方式
下面详细描述本申请的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,仅用于解释本申请,而不能解释为对本申请的限制。
本技术领域技术人员可以理解,除非特意声明,这里使用的单数形式“一”、“一个”、“所述”和“该”也可包括复数形式。应该进一步理解的是,本申请的说明书中使用的措辞“包括”是指存在所述特征、整数、步骤、操作、元件和/或组件,但是并不排除存在或添加一个或多个其他特征、整数、步骤、操作、元件、组件和/或它们的组。
本技术领域技术人员可以理解,除非另外定义,这里使用的所有术语(包括技术术语和科学术语),具有与本申请所属领域中的普通技术人员的一般理解相同的意义。还应该理解的是,诸如通用字典中定义的那些术语,应该被理解为具有与现有技术的上下文中的意义一致的意义,并且除非像这里一样被特定定义,否则不会用理想化或过于正式的含义来解释。
本申请实施例提供的数据库权限管理方法可以应用于如图1所示的由终端11和服务器12所构成的硬件环境中。如图1所示,终端11和服务器12通过网络进行连接,本申请实施例提供的数据库权限管理方法可以在服务器12中执行。服务器12用于通过个人分支、开发分支和发布分支对数据进行审核提交,确保最终下发给终端11的数据的正确性,终端11用于接收服务器12下发的数据,根据该数据正确启动或正常运行某种指定功能。
所述数据库设置有三层结构,包括:个人分支、开发分支以及发布分支。个人分支用于对数据进行编辑,例如,在数据中增加记录,在数据中删除记录,修改数据中的某个记录等等,每个参与配置的个人都可申请个人分支,后续方案涉及三种类型的个人分支,分别为第一个人分支、第二个人分支和第三个人分支,其中,第一个人分支为个人分支中待提交数据的个人分支,第二个人分支为个人分支中与第一个人分支版本冲突的个人分支,第三个人分支为个人分支中需要和开发分支的内容同步的个人分支。开发分支,又称之为dev分支,是功能最新最全的分支。发布分支,又称之为master分支或者主分支,所有提供给用户使用的正式版本,都在这个主分支上发布,也即是正式环境使用发布分支上的数据,最终确定下发的配置由master控制。
如图2所示,为一实施例的数据库权限管理方法的示意图,所述方法包括:
S100、第一个人分支将编辑的数据提交开发分支时,判断是否存在冲突,根据判断的结果对所述数据进行处理后提交至所述开发分支。
数据可以为配置数据等等。个人分支通过编辑、冲突判断等操作,将最终结果提交到开发分支。
S200、所述开发分支对所述第一个人分支提交的数据进行审核,若审核通过,将所述第一个人分支提交的数据提交至发布分支。
个人分支将数据提交至开发分支后,开发分支对提交的数据进行审核,确保数据的正确。开发分支的审核可以由管理员人工完成,也可以设置相关的程序,自动校验数据是否有误。开发分支审核通过后再提交给发布分支,由此可达到权限管理。
S300、所述发布分支将所述开发分支提交的数据下发给终端。
在具体下发数据时,可以由终端向发布分支发送配置下发请求,发布分支根据该配置下发请求向该终端下发对应的数据,或者发布分支向终端主动下发数据。
上述数据库权限管理方法通过设置三层结构(发布分支,开发分支以及个人分支)实现分支管理,每个分支做自己的事情,最终版本由master控制,实现数据库的权限管理,可以应用在各种多人操作,数据敏感的环境下,能够确保数据正确,降低数据错误的可能性。
如图3所示,为一具体实施例的数据库权限管理方法的示意图,从该图可以看出,本申请设置了三层结构:master分支(即图中的MASTER),dev(即图中的DEV)分支以及个人分支,个人分支仅示意出5支,即个人A、个人B、个人C、个人D和个人E,每个个人分支均可以实现对数据进行编辑、合并(后续冲突部分会介绍)以及提交,dev分支用于对个人分支提交的数据进行审核,如果审核通过,则将数据提交给master分支,终端向master分支请求数据,master分支即可以将终端请求的数据下发给终端。
如图4所示,为一实施例的个人分支之间数据的提交和拉取方法的示意图。初始有一个节点“First Version(版本1)”,所有个人均为拉取的时候,只有dev分支和master分支,当A分支也拉取的时候,这时候存在3个指针指向“First Version”这个节点。A分支的负责者在自己的分支上进行开发配置,每次操作,都会生成一个代表该次操作的节点地址(例如增加记录生成A1节点地址,删除记录生成A2节点地址,修改记录生成A3节点地址等等),生成操作节点地址之后,原本指向A(First Version)节点的指针会移动到A1节点,代表A的当前版本是A1,而dev分支和master分支的版本还在原来的位置上。这时A分支确认操作完成,希望把内容提交给管理员,则将当前A1版本提交给dev分支,则原始指向dev的指针,移动到dev1上面(此时A2版本和dev1版本一样)。A分支继续进行操作,产生A3版本,A4版本,直到A4版本再进行提交,dev指针指向dev2(此时A5版本和dev2版本一样)。此时dev分支审核通过,决定发布到正式版本,提交,生成master1版本,原来指向master的指针修改到master1上面。另外一个开发者加入,开B分支,此时生成B分支的引用,来自当前dev的版本,即dev2。B分支进行开发,直到B1版本的时候,准备提交,与此同时,A分支也在开发,已经进行到A6版本,B分支提交dev,dev版本(开发版本)指向dev3(此时B2版本和dev3版本一样),A分支此时提交A6版本,则可能存在与B节点的冲突。
Git是一个免费开源的分布式版本管理系统,旨在快速,高效地处理从小型到大型项目的所有事务,本申请借鉴Git,通过建立数据表模型进行冲突判断,因此,在一个实施例中,所述判断是否存在冲突,包括:根据构建的数据表模型,判断是否存在冲突;其中,所述数据表模型用于记录每个个人分支的指针以及每个指针的内容;所述指针的内容包括指针地址、内容类型和内容;所述内容类型包括commit、tree和node;所述commit的内容包括tree的指针和当前commit的父节点指针,所述tree的内容包括当前tree下node的地址数组。相较于用于进行文件管理的Git,本申请通过两个表(一张表用于记录每个个人分支的指针,另一张表用于记录每个指针的内容)即可以实现数据库的管理,简单快捷。
约定一共有2种节点,一种是tree类型的节点,一种是commit类型的节点,每一次操作,均会生成一个tree类型的节点和一个commit类型的节点,而commit类型的节点如图4所示,每个个人分支提交dev分支的时候,都需要判断是否有冲突,若没有冲突,则生成一个节点,指针指过去,通过指针直接寻找内容,若有冲突,则需要做合并处理。
数据表模型包括两部分的内容:每个个人分支的指针以及每个指针的内容。为了方便管理,可以设置两张表,一张是node(节点)表,一张是node_ref表。node_ref记录的是每个个人分支的指针,即是如图4中A1,A2,A3,B2等等(这些都是指针),而node表,记录的则是指针的内容。根据这两张表,就可以先从node_ref表中找到指定指针,再到node表找指定指针的内容。应当理解的是,本申请并不限制于通过两张表的方式构建数据表模型。
node表记录的指针的内容包括指针地址、内容类型以及具体内容,内容类型决定如何解析具体内容。内容类型有三种,commit、tree和node,其中,commit的内容,记录的是tree的指针和当前commit的父节点指针(一个节点可能有2个以上的父节点),而tree的内容,记录的是当前tree下node节点的地址数组,如图5所示。
本申请在进行冲突判定时,使用的是寻找公共父节点的算法。即,在一个实施例中,所述根据构建的数据表模型,判断是否存在冲突,包括:
S101、根据所述数据表模型,获得所述第一个人分支的版本走向和开发分支的版本走向;所述第一个人分支的版本走向包括所述第一个人分支的指针及其父节点指针,所述开发分支的版本走向包括所述开发分支的指针及其父节点指针。
第一个人分支的版本走向包括第一个人分支中各个指针的走向,以及每个指针的父节点指针。开发分支的版本走向包括开发分支中各个指针的走向,以及各个指针的父节点指针。数据表模型记录了指针(也即是节点)信息,根据数据表模型即可以获得第一个人分支的版本走向以及开发分支的版本走向。
以一个例子进行说明,假设第一个人分支为A分支,则根据数据表模型以及图4,可以得到:
A分支版本走向如下(中括号内是父节点指针数组):
A6[A5,dev2],A5[A4],A4[A3],A3[A2,dev1],A2[A1],A1[A]
dev分支版本走向如下(中括号内是父节点指针数组):
dev3[dev2,B1],dev2[dev1,A4],dev1[dev,A1]
S102、根据所述第一分支的版本走向和所述开发分支的版本走向,获得公共父节点。
父节点为当前节点的上一级节点,公共父节点为多个节点公共的上级节点。寻找公共父节点的方式有很多,例如,在一个实施例中,所述根据所述第一分支的版本走向和所述开发分支的版本走向,获得公共父节点,包括:
S1021、建立空数组;
S1022、从所述第一分支的版本走向中选取最新的指针并存入所述空数组;
S1023、若所述空数组当前不存在重复指针,从所述开发分支的版本走向中选取最新的指针并存入所述空数组;
S1024、若所述空数组当前不存在重复指针,从所述第一分支的版本走向中选取最新的指针的父节点指针并存入所述空数组;
S1025、如果所述空数组当前不存在重复指针,从所述开发分支的版本走向中选取最新的指针的父节点指针并存入所述空数组;
S1026、如果所述空数组当前不存在重复指针,将最新的指针的上一个指针作为最新的指针,返回从所述第一分支的版本走向中选取最新的指针并存入所述空数组的步骤,直至所述空数组出现重复指针,将所述重复指针作为公共父节点。
为了更好的理解上述寻找公共父节点的过程,以一个例子进行说明。如上所述:
A分支版本走向如下(中括号内是父节点指针数组):
A6[A5,dev2],A5[A4],A4[A3],A3[A2,dev1],A2[A1],A1[A]
dev分支版本走向如下(中括号内是父节点指针数组):
dev3[dev2,B1],dev2[dev1,A4],dev1[dev,A1]
寻找公共父节点,首先建立一个空数组,单数从A分支取一个节点(即A分支中的一个指针或者父节点指针)放入数组,双数从dev分支取一个节点(即dev分支中的一个指针或者父节点指针),选取节点时按照版本走向从前到后的顺序依次进行选取,直到这个数组中出现重复节点时停止,并且判定那个重复节点即是公共父节点。如下:[A6,dev3,[A5,dev2],[dev2,B1]],则可以得到dev2为公共父节点。
S103、若所述公共父节点等于当前开发版本,确定版本不冲突。
如果公共父节点等于当前开发版本(也即是当前dev版本),则版本上无冲突,无需做冲突处理。
S104、若所述公共父节点不等于当前开发版本,确定版本冲突,再判断内容是否存在冲突。
如果公共父节点不等于当前开发版本,则判定版本冲突,可能需要做冲突处理,需要进一步判断内容是否存在冲突。
在一个实施例中,所述再判断内容是否存在冲突,包括:
S1041、如果公共父节点的node与开发分支的node相同且公共父节点的node与第二个人分支的node相同,确定内容无改变,内容不冲突。
公共父节点的node、开发分支的node(也即是dev分支的node)以及第二个人分支的node可以根据数据表模型获得。该过程用公式可以表示为:
公共父节点.node==dev.node1&&公共父节点.node==第二个人分支.node1。
如果该公式满足,则确定内容无改变,内容不冲突。
S1042、如果公共父节点的node与开发分支的node相同且开发分支的node与所述第二个人分支的node不相同,确定内容有改变,内容不冲突。
该过程用公式可以表示为:
公共父节点.node1==dev.node1&&dev.node1!=第二个人分支.node1
如果该公式满足,则确定内容有改变,内容不冲突。
S1043、如果公共父节点的node与开发分支的node不相同且开发分支的node与所述第二个人分支的node不相同,确定内容冲突。
该过程用公式可以表示为:
公共父节点.node1!=dev.node1&&dev.node1!=第二个人分支.node1。
如果该公式满足,则确定内容冲突,内容冲突则需要做冲突处理。
在一个实施例中,所述根据判断的结果对所述数据进行处理后提交至所述开发分支,包括:
S105、若版本不冲突,将所述数据直接提交至所述开发分支;
S106、若版本冲突,且内容无改变,内容不冲突,不执行将所述数据提交至所述开发分支的操作;
S107、若版本冲突,且内容有改变,内容不冲突,将所述数据直接提交至所述开发分支;
S108、若版本冲突,且内容冲突,将所述第一个人分支和所述第二个人分支进行合并,将合并后得到的数据提交至所述开发分支。内容冲突处理需要把冲突双方内容列出来,由操作者决定要哪些内容,根据选定的内容,生成新的tree和commit,提交覆盖当前开发版本。
以图4为例,当A6需要提交时,通过寻找公共父节点的方式,找到公共父节点为dev2,而当前dev的版本是dev3,公共父节点和dev版本不一致,版本冲突。再判断内容上是否冲突,如果冲突,则从当前dev版本的内容和A6版本的内容上筛选(或者保留原始内容,两边都不选,原始内容则为公共父节点的内容),生成新的节点,提交之后A分支版本指向A7,dev版本指向dev4,A7版本与dev4一致,也就是A分支和dev分支此时在同一个版本上,如图6所示。A6提交dev的过程,实质上为A分支和B分支内容的合并的过程。
更新操作也存在内容冲突的情况,也需要做取舍。因此,在一个实施例中,数据库权限管理方法还包括:
S400、第三个人分支在进行数据更新时,根据所述数据表模型,获得所述第三个人分支的版本走向和开发分支的版本走向;所述第三个人分支的版本走向包括所述第三个人分支的指针及其父节点指针,所述开发分支的版本走向包括所述开发分支的指针及其父节点指针。
第三个人分支在进行数据更新时,需要根据数据表模型判断是否存在内容冲突,根据判断的结果确定数据更新的方式,根据所述数据的更新方式对数据进行更新。
第三个人分支的版本走向包括第三个人分支中各个指针的走向,以及每个指针的父节点指针。开发分支的版本走向包括开发分支中各个指针的走向,以及各个指针的父节点指针。数据表模型记录了指针(也即是节点)信息,根据数据表模型即可以获得第三个人分支的版本走向以及开发分支的版本走向。
以一个例子进行说明,如图6所示,当前dev的版本已经在dev4,此时分支B同步dev的内容,也即是第三个人分支为分支B,则仍然需要通过寻找公共父节点的方法,判断内容差异,并进行取舍。则根据数据表模型以及图6,可以得到:
B分支的版本走向(中括号内是父节点指针数组):
B2/dev3[B1],B1[B],B
dev分支版本走向如下(中括号内是父节点指针数组):
dev4[dev3,A6],dev3[dev2,B1],dev2[dev1,A4],dev1[dev,A1]
S500、所述第三个人分支根据所述第三个人分支的版本走向和所述开发分支的版本走向,获得公共父节点。
父节点为当前节点的上一级节点,公共父节点为多个节点公共的上级节点。寻找公共父节点的方式有很多,例如,在一个实施例中,所述根据所述第三个人分支的版本走向和所述开发分支的版本走向,获得公共父节点,包括:
S501、建立空数组;
S502、从所述第三分支的版本走向中选取最新的指针并存入所述空数组;
S503、若所述空数组当前不存在重复指针,从所述开发分支的版本走向中选取最新的指针并存入所述空数组;
S504、若所述空数组当前不存在重复指针,从所述第三分支的版本走向中选取最新的指针的父节点指针并存入所述空数组;
S505、如果所述空数组当前不存在重复指针,从所述开发分支的版本走向中选取最新的指针的父节点指针并存入所述空数组;
S506、如果所述空数组当前不存在重复指针,将最新的指针的上一个指针作为最新的指针,返回从所述第三分支的版本走向中选取最新的指针并存入所述空数组的步骤,直至所述空数组出现重复指针,将所述重复指针作为公共父节点。
为了更好的理解上述寻找公共父节点的过程,以一个例子进行说明。如上所述:
B分支的版本走向(中括号内是父节点指针数组):
B2/dev3[B1],B1[B],B
dev分支版本走向如下(中括号内是父节点指针数组):
dev4[dev3,A6],dev3[dev2,B1],dev2[dev1,A4],dev1[dev,A1]
寻找公共父节点,首先建立一个空数组,单数从B分支取一个节点(即A分支中的一个指针或者父节点指针)放入数组,双数从dev分支取一个节点(即dev分支中的一个指针或者父节点指针),选取节点时按照版本走向从前到后的顺序依次进行选取,直到这个数组中出现重复节点时停止,并且判定那个重复节点即是公共父节点。如下:[B2/dev3,dev4,[B1],[dev3,A6]],则可以得到dev3为公共父节点。
S600、如果公共父节点的node与开发分支的node相同且公共父节点的node与第三个人分支的node相同,所述第三个人分支确定内容无改变,内容不冲突,不执行与所述开发分支的数据同步的操作。
公共父节点的node、开发分支的node以及第三个人分支的node可以根据数据表模型获得。该过程用公式可以表示为:
公共父节点.node==dev.node1&&公共父节点.node==第三个人分支.node1。
如果该公式满足,则确定内容无改变,内容不冲突。不执行同步操作即第三个人分支无需根据开发分支的内容进行更新。
S700、如果公共父节点的node与开发分支的node相同且开发分支的node与所述第三个人分支的node不相同,所述第三个人分支确定内容有改变,内容不冲突,与所述开发分支的数据进行同步。
该过程用公式可以表示为:
公共父节点.node1==dev.node1&&dev.node1!=第三个人分支.node1
如果该公式满足,则确定内容有改变,内容不冲突。第三个人分支根据开发分支的内容进行更新。
S800、如果公共父节点的node与开发分支的node不相同且开发分支的node与所述第三个人分支的node不相同,所述第三个人分支确定内容冲突,根据选择的数据进行更新。
该过程用公式可以表示为:
公共父节点.node1!=dev.node1&&dev.node1!=第三个人分支.node1。
如果该公式满足,则确定内容冲突,内容冲突则需要做冲突处理。内容冲突处理为把冲突双方内容列出来,由操作者决定要哪些内容,第三个人分支根据选定的内容进行更新。
以图6为例,当B分支需要更新时,通过寻找公共父节点的方式,找到公共父节点为dev3,然后根据下述公式判断是否存在内容冲突:
内容无改变的,无需更新的判定公式:
dev3.node1==dev.node1&&dev3.node1==B.node1
内容无冲突,可更新的判定公式:
dev3.node1==dev.node1&&dev.node1!=B.node1
内容冲突,需根据选择内容更新的判定公式:
dev3.node1!=dev.node1&&dev.node1!=B.node1
通过判断,选择,生成B4版本,移动分支B的指针到B4,dev版本不变,如图7所示。
基于同一发明构思,本申请还提供一种数据库权限管理装置,下面结合附图对本申请装置的具体实施方式进行详细介绍。
如图8所示,为一实施例的数据库权限管理装置的示意图,所述数据库设置有三层结构,包括:个人分支、开发分支以及发布分支;所述装置包括:
第一个人分支110,用于将编辑的数据提交开发分支时,判断是否存在冲突,根据判断的结果对所述数据进行处理后提交至所述开发分支;
所述开发分支120,用于对所述第一个人分支提交的数据进行审核,若审核通过,将所述第一个人分支提交的数据提交至发布分支;
所述发布分支130,用于将所述开发分支提交的数据下发给终端。
在一个实施例中,所述第一个人分支110根据构建的数据表模型,判断是否存在冲突;
其中,所述数据表模型用于记录每个个人分支的指针以及每个指针的内容;所述指针的内容包括指针地址、内容类型和内容;所述内容类型包括commit、tree和node;所述commit的内容包括tree的指针和当前commit的父节点指针,所述tree的内容包括当前tree下node的地址数组。
在一个实施例中,所述第一个人分支110根据以下操作判断是否存在冲突:
根据所述数据表模型,获得所述第一个人分支的版本走向和开发分支的版本走向;所述第一个人分支的版本走向包括所述第一个人分支的指针及其父节点指针,所述开发分支的版本走向包括所述开发分支的指针及其父节点指针;
根据所述第一分支的版本走向和所述开发分支的版本走向,获得公共父节点;
若所述公共父节点等于当前开发版本,确定版本不冲突;
若所述公共父节点不等于当前开发版本,确定版本冲突,再判断内容是否存在冲突。
在一个实施例中,所述第一个人分支110根据以下操作判断内容是否存在冲突:
如果公共父节点的node与开发分支的node相同且公共父节点的node与第二个人分支的node相同,确定内容无改变,内容不冲突;
如果公共父节点的node与开发分支的node相同且开发分支的node与所述第二个人分支的node不相同,确定内容有改变,内容不冲突;
如果公共父节点的node与开发分支的node不相同且开发分支的node与所述第二个人分支的node不相同,确定内容冲突。
在一个实施例中,所述第一个人分支110在版本不冲突时,将所述数据直接提交至所述开发分支;在版本冲突,且内容无改变,内容不冲突时,不执行将所述数据提交至所述开发分支的操作;在版本冲突,且内容有改变,内容不冲突时,将所述数据直接提交至所述开发分支;在版本冲突,且内容冲突时,将所述第一个人分支和所述第二个人分支进行合并,将合并后得到的数据提交至所述开发分支。
在一个实施例中,所述第一个人分支110通过以下操作获得公共父节点:
建立空数组;
从所述第一分支的版本走向中选取最新的指针并存入所述空数组;
若所述空数组当前不存在重复指针,从所述开发分支的版本走向中选取最新的指针并存入所述空数组;
若所述空数组当前不存在重复指针,从所述第一分支的版本走向中选取最新的指针的父节点指针并存入所述空数组;
如果所述空数组当前不存在重复指针,从所述开发分支的版本走向中选取最新的指针的父节点指针并存入所述空数组;
如果所述空数组当前不存在重复指针,将最新的指针的上一个指针作为最新的指针,返回从所述第一分支的版本走向中选取最新的指针并存入所述空数组的步骤,直至所述空数组出现重复指针,将所述重复指针作为公共父节点。
在一个实施例中,所述装置还包括第三个人分支140,所述第三个人分支140用于执行以下操作:
在进行数据更新时,根据所述数据表模型,获得所述第三个人分支的版本走向和开发分支的版本走向;所述第三个人分支的版本走向包括所述第三个人分支的指针及其父节点指针,所述开发分支的版本走向包括所述开发分支的指针及其父节点指针;
根据所述第三个人分支的版本走向和所述开发分支的版本走向,获得公共父节点;
如果公共父节点的node与开发分支的node相同且公共父节点的node与第三个人分支的node相同,确定内容无改变,内容不冲突,不执行与所述开发分支的数据同步的操作;
如果公共父节点的node与开发分支的node相同且开发分支的node与所述第三个人分支的node不相同,确定内容有改变,内容不冲突,与所述开发分支的数据进行同步;
如果公共父节点的node与开发分支的node不相同且开发分支的node与所述第三个人分支的node不相同,确定内容冲突,根据选择的数据进行更新。
本申请实施例还提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现上述任意一项所述的数据库权限管理方法。其中,所述存储介质包括但不限于任何类型的盘(包括软盘、硬盘、光盘、CD-ROM、和磁光盘)、ROM(Read-OnlyMemory,只读存储器)、RAM(Random AcceSS Memory,随即存储器)、EPROM(EraSableProgrammable Read-Only Memory,可擦写可编程只读存储器)、EEPROM(ElectricallyEraSable Programmable Read-Only Memory,电可擦可编程只读存储器)、闪存、磁性卡片或光线卡片。也就是,存储介质包括由设备(例如,计算机)以能够读的形式存储或传输信息的任何介质。可以是只读存储器,磁盘或光盘等。
本申请实施例还提供一种计算机设备,所述计算机设备包括:
一个或多个处理器;
存储装置,用于存储一个或多个程序,
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现上述任意一项所述的数据库权限管理方法。
图9为本申请计算机设备的结构示意图,包括处理器220、存储装置230、输入单元240以及显示单元250等器件。本领域技术人员可以理解,图9示出的结构器件并不构成对所有计算机设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件。存储装置230可用于存储应用程序210以及各功能模块,处理器220运行存储在存储装置230的应用程序210,从而执行设备的各种功能应用以及数据处理。存储装置230可以是内存储器或外存储器,或者包括内存储器和外存储器两者。内存储器可以包括只读存储器、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦写可编程ROM(EEPROM)、快闪存储器、或者随机存储器。外存储器可以包括硬盘、软盘、ZIP盘、U盘、磁带等。本申请所公开的存储装置包括但不限于这些类型的存储装置。本申请所公开的存储装置230只作为例子而非作为限定。
输入单元240用于接收信号的输入,以及接收用户输入的数据。输入单元240可包括触控面板以及其它输入设备。触控面板可收集用户在其上或附近的触摸操作(比如用户使用手指、触笔等任何适合的物体或附件在触控面板上或在触控面板附近的操作),并根据预先设定的程序驱动相应的连接装置;其它输入设备可以包括但不限于物理键盘、功能键(比如播放控制按键、开关按键等)、轨迹球、鼠标、操作杆等中的一种或多种。显示单元250可用于显示用户输入的信息或提供给用户的信息以及计算机设备的各种菜单。显示单元250可采用液晶显示器、有机发光二极管等形式。处理器220是计算机设备的控制中心,利用各种接口和线路连接整个电脑的各个部分,通过运行或执行存储在存储装置230内的软件程序和/或模块,以及调用存储在存储装置内的数据,执行各种功能和处理数据。
在一实施方式中,计算机设备包括一个或多个处理器220,以及一个或多个存储装置230,一个或多个应用程序210,其中所述一个或多个应用程序210被存储在存储装置230中并被配置为由所述一个或多个处理器220执行,所述一个或多个应用程序210配置用于执行以上实施例所述的数据库权限管理方法。
应该理解的是,虽然附图的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,其可以以其他的顺序执行。而且,附图的流程图中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,其执行顺序也不必然是依次进行,而是可以与其他步骤或者其他步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。
应该理解的是,在本申请各实施例中的各功能单元可集成在一个处理模块中,也可以各个单元单独物理存在,也可以两个或两个以上单元集成于一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。
以上所述仅是本申请的部分实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本申请原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本申请的保护范围。
Claims (10)
1.一种数据库权限管理方法,其特征在于,所述数据库设置有三层结构,包括:个人分支、开发分支以及发布分支;所述方法包括:
第一个人分支将编辑的数据提交开发分支时,判断是否存在冲突,根据判断的结果对所述数据进行处理后提交至所述开发分支;其中,所述判断是否存在冲突,包括:获取所述第一个人分支的版本走向和开发分支的版本走向;所述第一个人分支的版本走向包括所述第一个人分支的指针及其父节点指针,所述开发分支的版本走向包括所述开发分支的指针及其父节点指针;根据所述第一个人分支的版本走向和所述开发分支的版本走向,获得公共父节点;若所述公共父节点等于当前开发版本,确定版本不冲突;若所述公共父节点不等于当前开发版本,确定版本冲突,再判断内容是否存在冲突;
所述开发分支对所述第一个人分支提交的数据进行审核,若审核通过,将所述第一个人分支提交的数据提交至发布分支;
所述发布分支将所述开发分支提交的数据下发给终端。
2.根据权利要求1所述的数据库权限管理方法,其特征在于,所述判断是否存在冲突,包括:
根据构建的数据表模型,判断是否存在冲突;
其中,所述数据表模型用于记录每个个人分支的指针以及每个指针的内容;所述指针的内容包括指针地址、内容类型和内容;所述内容类型包括commit、tree和node;所述commit的内容包括tree的指针和当前commit的父节点指针,所述tree的内容包括当前tree下node的地址数组。
3.根据权利要求2所述的数据库权限管理方法,其特征在于,所述获取所述第一个人分支的版本走向和开发分支的版本走向,包括:
根据所述数据表模型,获得所述第一个人分支的版本走向和开发分支的版本走向。
4.根据权利要求3所述的数据库权限管理方法,其特征在于,所述再判断内容是否存在冲突,包括:
如果公共父节点的node与开发分支的node相同且公共父节点的node与第二个人分支的node相同,确定内容无改变,内容不冲突;
如果公共父节点的node与开发分支的node相同且开发分支的node与所述第二个人分支的node不相同,确定内容有改变,内容不冲突;
如果公共父节点的node与开发分支的node不相同且开发分支的node与所述第二个人分支的node不相同,确定内容冲突。
5.根据权利要求4所述的数据库权限管理方法,其特征在于,所述根据判断的结果对所述数据进行处理后提交至所述开发分支,包括:
若版本不冲突,将所述数据直接提交至所述开发分支;
若版本冲突,且内容无改变,内容不冲突,不执行将所述数据提交至所述开发分支的操作;
若版本冲突,且内容有改变,内容不冲突,将所述数据直接提交至所述开发分支;
若版本冲突,且内容冲突,将所述第一个人分支和所述第二个人分支进行合并,将合并后得到的数据提交至所述开发分支。
6.根据权利要求3所述的数据库权限管理方法,其特征在于,所述根据所述第一个人分支的版本走向和所述开发分支的版本走向,获得公共父节点,包括:
建立空数组;
从所述第一个人分支的版本走向中选取最新的指针并存入所述空数组;
若所述空数组当前不存在重复指针,从所述开发分支的版本走向中选取最新的指针并存入所述空数组;
若所述空数组当前不存在重复指针,从所述第一个人分支的版本走向中选取最新的指针的父节点指针并存入所述空数组;
如果所述空数组当前不存在重复指针,从所述开发分支的版本走向中选取最新的指针的父节点指针并存入所述空数组;
如果所述空数组当前不存在重复指针,将最新的指针的上一个指针作为最新的指针,返回从所述第一个人分支的版本走向中选取最新的指针并存入所述空数组的步骤,直至所述空数组出现重复指针,将所述重复指针作为公共父节点。
7.根据权利要求2至6任意一项所述的数据库权限管理方法,其特征在于,还包括:
第三个人分支在进行数据更新时,根据所述数据表模型,获得所述第三个人分支的版本走向和开发分支的版本走向;所述第三个人分支的版本走向包括所述第三个人分支的指针及其父节点指针,所述开发分支的版本走向包括所述开发分支的指针及其父节点指针;
所述第三个人分支根据所述第三个人分支的版本走向和所述开发分支的版本走向,获得公共父节点;
如果公共父节点的node与开发分支的node相同且公共父节点的node与第三个人分支的node相同,所述第三个人分支确定内容无改变,内容不冲突,不执行与所述开发分支的数据同步的操作;
如果公共父节点的node与开发分支的node相同且开发分支的node与所述第三个人分支的node不相同,所述第三个人分支确定内容有改变,内容不冲突,与所述开发分支的数据进行同步;
如果公共父节点的node与开发分支的node不相同且开发分支的node与所述第三个人分支的node不相同,所述第三个人分支确定内容冲突,根据选择的数据进行更新。
8.一种数据库权限管理装置,其特征在于,所述数据库设置有三层结构,包括:个人分支、开发分支以及发布分支;所述装置包括:
第一个人分支模块,用于将编辑的数据提交开发分支时,判断是否存在冲突,根据判断的结果对所述数据进行处理后提交至所述开发分支;其中,所述判断是否存在冲突,包括:获取所述第一个人分支的版本走向和开发分支的版本走向;所述第一个人分支的版本走向包括所述第一个人分支的指针及其父节点指针,所述开发分支的版本走向包括所述开发分支的指针及其父节点指针;根据所述第一个人分支的版本走向和所述开发分支的版本走向,获得公共父节点;若所述公共父节点等于当前开发版本,确定版本不冲突;若所述公共父节点不等于当前开发版本,确定版本冲突,再判断内容是否存在冲突;
开发分支模块,用于对所述第一个人分支提交的数据进行审核,若审核通过,将所述第一个人分支提交的数据提交至发布分支;
发布分支模块,用于将所述开发分支提交的数据下发给终端。
9.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现如权利要求1至7中任意一项所述的数据库权限管理方法。
10.一种计算机设备,其特征在于,所述计算机设备包括:
一个或多个处理器;
存储装置,用于存储一个或多个程序,
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如权利要求1至7中任意一项所述的数据库权限管理方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811005579.5A CN109240738B (zh) | 2018-08-30 | 2018-08-30 | 数据库权限管理方法、装置以及计算机设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811005579.5A CN109240738B (zh) | 2018-08-30 | 2018-08-30 | 数据库权限管理方法、装置以及计算机设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109240738A CN109240738A (zh) | 2019-01-18 |
CN109240738B true CN109240738B (zh) | 2022-03-01 |
Family
ID=65067931
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811005579.5A Active CN109240738B (zh) | 2018-08-30 | 2018-08-30 | 数据库权限管理方法、装置以及计算机设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109240738B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113296897B (zh) * | 2020-07-21 | 2023-12-26 | 阿里巴巴集团控股有限公司 | 一种分布式事务的处理方法、装置、设备和机器可读介质 |
CN113485913B (zh) * | 2021-06-10 | 2023-04-07 | 上海百胜软件股份有限公司 | 一种分支管理方法、系统、设备和存储介质 |
CN113741948A (zh) * | 2021-08-31 | 2021-12-03 | 上海浦东发展银行股份有限公司 | 一种代码分支管理方法、装置、设备及存储介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101419680A (zh) * | 2008-12-04 | 2009-04-29 | 复旦大学 | 增量迭代的领域本体协同构建方法 |
CN102855290A (zh) * | 2012-08-09 | 2013-01-02 | 江苏飞象科技有限公司 | 一种移动互联网知识管理方法 |
CN103220163A (zh) * | 2012-01-19 | 2013-07-24 | 阿里巴巴集团控股有限公司 | 配置信息的更新方法和系统 |
CN105094851A (zh) * | 2015-09-06 | 2015-11-25 | 浪潮软件股份有限公司 | 一种基于Git随时发布代码的实现方法 |
CN108280137A (zh) * | 2017-12-27 | 2018-07-13 | 武汉众智鸿图科技有限公司 | 一种基于任务的管网数据的编辑方法和装置 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8959477B2 (en) * | 2011-10-21 | 2015-02-17 | Sap Se | Scripting language for business applications |
-
2018
- 2018-08-30 CN CN201811005579.5A patent/CN109240738B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101419680A (zh) * | 2008-12-04 | 2009-04-29 | 复旦大学 | 增量迭代的领域本体协同构建方法 |
CN103220163A (zh) * | 2012-01-19 | 2013-07-24 | 阿里巴巴集团控股有限公司 | 配置信息的更新方法和系统 |
CN102855290A (zh) * | 2012-08-09 | 2013-01-02 | 江苏飞象科技有限公司 | 一种移动互联网知识管理方法 |
CN105094851A (zh) * | 2015-09-06 | 2015-11-25 | 浪潮软件股份有限公司 | 一种基于Git随时发布代码的实现方法 |
CN108280137A (zh) * | 2017-12-27 | 2018-07-13 | 武汉众智鸿图科技有限公司 | 一种基于任务的管网数据的编辑方法和装置 |
Non-Patent Citations (1)
Title |
---|
支持多群体同步协同的工作流若干关键技术研究;王海洋;《系统仿真学报 》;20030420;1-3页 * |
Also Published As
Publication number | Publication date |
---|---|
CN109240738A (zh) | 2019-01-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11797479B2 (en) | Integrating object-based data integration tool with a version control system in centralized and decentralized environments | |
US10754761B2 (en) | Systems and methods for testing source code | |
US8683430B2 (en) | Synchronizing development code and deployed executable versioning within distributed systems | |
US10540368B2 (en) | System and method for resolving synchronization conflicts | |
CN109947767A (zh) | 多重租赁数据库系统中的系统共享类型 | |
US10185549B2 (en) | Updating live system with static changes | |
CN110147369A (zh) | 多重租赁数据库系统中的数据分离和写入重新定向 | |
CN109240738B (zh) | 数据库权限管理方法、装置以及计算机设备 | |
US20210328864A1 (en) | Generating configuration files for configuring an information technology infrastructure | |
CN103019718A (zh) | 在集中式源控制环境中使用分布式源控制 | |
US20230018854A1 (en) | Systems and methods for automated and distributed configuration of computing devices | |
CN111782235A (zh) | 一种数据升级、查询方法和装置 | |
CN111857806A (zh) | 权限配置文件更新方法、装置、电子设备及存储介质 | |
CN111144837A (zh) | 流程编排的方法、装置、存储介质及电子设备 | |
US7739232B2 (en) | Programming system for occasionally-connected mobile business applications | |
US11640304B2 (en) | System and method for the administration of imaging devices | |
JP2020509792A (ja) | 仮想環境のための動的設計データを管理するためのシステムおよび方法 | |
US10872063B2 (en) | Local terminal and synchronization system including the same | |
CN109828870A (zh) | 接口测试环境管理方法、装置、电子设备及存储介质 | |
US11681682B2 (en) | Data processing system and cache update control method | |
CN114237576A (zh) | 基于平面设计的代码生成方法、装置、设备及存储介质 | |
CN113761075A (zh) | 切换数据库的方法、装置、设备和计算机可读介质 | |
CN113806327A (zh) | 一种数据库设计方法、装置及相关设备 | |
CN112055057B (zh) | 一种Web系统动态扩展的方法及系统和设备 | |
JP2004078535A (ja) | 排他制御装置、方法及びプログラム |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |