CN105069019A - 数据库无间断更新方法及系统 - Google Patents
数据库无间断更新方法及系统 Download PDFInfo
- Publication number
- CN105069019A CN105069019A CN201510412893.5A CN201510412893A CN105069019A CN 105069019 A CN105069019 A CN 105069019A CN 201510412893 A CN201510412893 A CN 201510412893A CN 105069019 A CN105069019 A CN 105069019A
- Authority
- CN
- China
- Prior art keywords
- management device
- lock
- node
- lock management
- spot
- 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.)
- Granted
Links
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/28—Databases characterised by their database models, e.g. relational or object models
- G06F16/284—Relational databases
-
- 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
-
- 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/2282—Tablespace storage structures; Management thereof
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提出了一种数据库无间断更新方法,包括:根据业务关系数据图中包含的业务数据节点的数量、所有业务数据节点上系统实例的数目和运行进程的总数、以及各个业务数据节点到业务关系数据图的中心节点的访问延迟,为每张表中的每个业务数据节点设置索引关系,形成一定的索引关系层级;分别根据业务数据节点对应的某一字段对索引关系进行分区,形成每个业务数据节点至少分配到一个索引集群中,对每一个索引集群中的业务数据节点分配至少一个锁管理装置;为每一个锁管理装置分配对应的锁关系上下文,其中锁关系上下文用于确定一个锁管理装置相邻的锁管理装置;需要更新的业务数据节点向上级请求锁,更新每个索引集群中需要更新的业务数据节点。
Description
技术领域
本发明申请涉及计算机领域,尤其涉及一种数据库无间断更新方法及系统。
背景技术
在关系数据库中,数据库会在同一时刻处理来自不同请求的事务处理,当处理不同查询操作的子事务时,会涉及该数据及其关联的一系列数据,数据改变同时则会导致数据在一个单位时间处理间隔内被多次修改,使得事务处理出现混乱,应对该数据和它的关系数据进行加锁以保证系统数据的完整性和一致性,然而加锁和放锁通常也是数据库系统里耗费时间最长的操作之一,数据库中的锁子系统的设计会很大程度影响整个数据库系统的性能,如果按照事务处理的先后顺序对数据进行处理及加锁、放锁,也就是采取一个数据一个数据进行更新,频繁操作将严重制约系统的更新速度。
现有技术主要通过处理节点向中心协调节点请求消息,若是加锁请求消息,则该请求消息包含请求加共享锁的请求消息或请求加排它锁的请求消息;如果是放锁请求消息,则对目标锁进行放锁,若该目标锁的等待队列有其它处理节点,则从这其它处理节点中选择一个处理节点发送通知消息实现目标锁转移。而在实际应用中,处理节点对锁的加锁或放锁的操作的数量是很庞大的,中心协调节点就需要处理大量的锁消息,导致中心协调节点很容易达到性能瓶颈,从而造成数据库系统的性能很低。
现有技术为解决锁操作而导致的系统性能低下,采取了根据分布式系统包含的业务执行节点的数量,分别根据每个业务执行节点对应的锁管理系统的层级为每个业务执行节点至少分配一个锁管理器,为每个锁管理器配置锁级别上下文以此来减少锁访问延迟。然而,使用所管理器进行分级管理节点,对于各节点的管理仍然是孤立的,一般节点被锁后,后续连续的操作相关节点也会被陆续加锁,割裂流程上的联系也使得系统性能受到限制。
发明内容
本发明的实施例提供一种数据库无间断更新方法及系统,其能够在数据库事务处理中,在保持查询更新中数据的一致性与完整性的同时,有效减少由于大量的加锁、放锁操作而导致数据库性能低下问题。
为达到上述目的,本发明的实施例采用如下技术方案:
本发明第一方面提供一种数据库无间断更新方法,包括:
根据业务关系数据图中包含的业务数据节点的数量、所有业务数据节点上系统实例的数目和运行线程的总数、以及各个业务数据节点到业务关系数据图的中心节点的访问延迟,为每张表中的每个业务数据节点设置索引关系,形成一定的索引关系层级;
分别根据业务数据节点对应的某一字段对索引关系进行分区,形成每个业务数据节点至少分配到一个索引集群中,对每一个索引集群中的业务数据节点分配至少一个锁管理装置;
为每一个锁管理装置分配对应的锁关系上下文,其中锁关系上下文用于确定一个锁管理装置相邻的锁管理装置;
需要更新的业务数据节点向上级请求锁,更新每个索引集群中需要更新的业务数据节点。
根据第一方面,所述分别根据每个业务数据节点对应的所述索引关系层级为每一个索引集群中的业务数据节点分配至少一个锁管理装置具体包括:
当为所述索引集群中所述业务数据节点设置的索引关系层级为两个时,为所述索引集群的中间业务数据节点分配一个中间节点锁管理装置及为所述索引集群中的根业务数据节点分配一个根节点锁管理装置,所述中间节点锁管理装置的上级锁管理装置为根节点锁管理装置;
当为所述索引集群中所述业务数据节点设置的索引关系层级大于两层时,为所述索引集群中的叶子业务节点分配一个叶子节点锁管理装置,为所述索引集群中的根业务节点分配一个根节点锁管理装置,以及为所述索引集群中的中间业务节点分配至少一个设置于所述叶子节点锁管理装置和根节点锁管理装置的中间节点锁管理装置,并根据所述锁关系上下文确定每个中间节点锁管理装置上级的锁管理装置和下级的锁管理装置,其中位于下级的锁管理装置向位于上级的锁管理装置请求锁。
根据第一方面,所述分别根据每个业务数据节点对应的所述索引关系层级为每一个索引集群中的业务数据节点分配至少一个锁管理装置还包括:
当所述根节点锁管理装置对应的业务数据节点和多个系统实例所在业务数据节点不存在并发运行时,为所述系统实例对应的业务数据节点设置锁管理装置。
根据第一方面的上述可能实现方式,还有一种可能的实现方式中,所述锁关系上下文主要包括:上级的锁管理装置、下级的锁管理装置、锁层级数量、锁管理装置所在关系层、锁管理装置对应的业务数据节点。
第二方面,提供一种数据库无间断更新方法,还包括:
对需要更新的业务数据节点为叶子业务节点时,所述叶子节点锁管理装置接收所述叶子业务节点发送的锁请求,根据所述叶子节点锁管理装置的状态向上级的锁管理装置发送锁请求,或者返回所述锁请求对应的锁给所述叶子业务节点;
通过所述中间节点锁管理装置的上级的中间节点锁管理装置接收所述锁请求,根据持有锁的状态向更上级的中间节点锁管理装置发送所述锁请求,或者返回所述锁请求对应的锁给所述中间节点锁管理装置;
按照设置的索引关系层级,通过所述中间节点锁管理装置以上各级锁管理装置依次按照本层级持有锁的状态对所述锁请求进行处理,直到所述锁请求发送至所述根节点锁管理装置,通过所述根节点锁管理装置返回所述锁请求对应的锁给所述根节点锁管理装置的下级的节点锁管理装置直到返回所述锁请求对应的锁至所述业务数据节点。
根据第二方面,第一种可能的是实现方式中,所述需要更新的业务数据节点向上级请求锁,更新每个索引集群中需要更新的业务数据节点,具体包括:
每个索引集群都有独特的键值与之对应,对需要更新的业务数据节点根据键值首先映射到相应的索引集群中,层级锁请求进行加锁或者放锁进行批量数据更新,有更好的效益。
根据第二方面,第二种可能的实现方式中,所述叶子节点锁管理装置的状态向上级的锁管理装置发送锁请求,或者返回所述锁请求对应的锁给所述叶子业务节点,具体包括:
当所述叶子节点锁管理装置具有所述锁请求对应的锁时,通过所述叶子节点锁管理装置返回所述锁请求对应的锁至所述叶子业务节点;
当所述叶子节点锁管理装置没有所述锁请求对应的锁时,通过所述叶子节点锁管理装置向所述叶子节点锁管理装置的上级的锁管理器发送所述锁请求。
根据第二方面,在第三种可能的实现方式中,所述按照设置的索引关系层级,通过所述根节点锁管理装置返回所述锁请求对应的锁给所述根节点锁管理装置的下级的节点锁管理装置直到返回所述锁请求对应的锁至所述业务数据节点,具体包括:
当所述中间节点锁管理装置的上级的锁管理装置具备所述锁请求对应的锁时,通过所述根节点锁管理装置返回所述锁请求对应的锁至所述中间节点锁管理装置;
当所述中间节点锁管理装置的上级的锁管理装置没有所述锁请求对应的锁时,通过所述根节点所管理装置对所述锁请求处理。
结合第二方面、第一种、第二种或者第三种可能的实现方式,其他可能的实现方式中,所述方法还包括:
任一个索引集群同一层级的索引关系中,需要加锁的业务数据节点对应的节点管理装置把需要发给上级的所有锁请求合并为同一个锁请求后,发送给所述锁管理装置的上级锁管理装置。
返回所述锁请求对应的锁时,通过所述锁管理装置设置所述锁请求对应的锁的持有的最大时间,所述锁管理装置等待下级的锁管理装置判断是否已经加锁;当等待时间大于或者等于设置的最大时间时,所述上级锁管理装置发送无效锁请求至所述锁管理装置的下级的锁管理装置,所述锁管理装置的下级的锁管理装置在收到所述无效锁请求后,释放所述锁请求对应的锁。
第三方面,提供一种数据库无间断更新系统,包括:设置单元、调度单元以及执行单元;
所述设置单元用于根据业务关系数据图中包含的业务数据节点的数量、所有业务数据节点上系统实例的数目和运行线程的总数、以及各个业务数据节点到业务关系数据图的中心节点的访问延迟,为每张表中的每个业务数据节点设置索引关系,形成一定的索引关系层级;
所述调度单元用于分别根据业务数据节点对应的某一字段对索引关系进行分区,形成每个业务数据节点至少分配到一个索引集群中,对每一个索引集群中的业务数据节点分配至少一个锁管理装置;
所述执行单元用于为每一个锁管理装置分配对应的锁关系上下文,其中锁关系上下文用于确定一个锁管理装置相邻的锁管理装置;需要更新的业务数据节点向上级请求锁,更新每个索引集群中需要更新的业务数据节点。
结合第三方面,在第一种可能的实现方式中:
当为所述索引集群中所述业务数据节点设置的索引关系层级为两个时,为所述索引集群的中间业务数据节点分配一个中间节点锁管理装置及为所述索引集群中的根业务数据节点分配一个根节点锁管理装置,所述中间节点锁管理装置的上级锁管理装置为根节点锁管理装置;
或者;
当为所述索引集群中所述业务数据节点设置的索引关系层级大于两层时,为所述索引集群中的叶子业务节点分配一个叶子节点锁管理装置,为所述索引集群中的根业务节点分配一个根节点锁管理装置,以及为所述索引集群中的中间业务节点分配至少一个设置于所述叶子节点锁管理装置和根节点锁管理装置的中间节点锁管理装置,并根据所述锁关系上下文确定每个中间节点锁管理装置上级的锁管理装置和下级的锁管理装置,其中位于下级的锁管理装置向位于上级的锁管理装置请求锁。
结合第三方面第一种可能的实现方式,在第二种可能的实现方式中:
所述调度单元还用于当所述根节点锁管理装置对应的业务数据节点和多个系统实例所在业务数据节点不存在并发运行时,为所述系统实例对应的业务数据节点设置锁管理装置。
结合第三方面或者第三方面第一或第二种可能的实现方式,在第三种可能的实现方式中,
所述锁关系上下文主要包括:上级的锁管理装置、下级的锁管理装置、锁层级数量、锁管理装置所在关系层、锁管理装置对应的业务数据节点。
结合第三方面,在第四种可能实现方式中:
包括至少一个叶子节点锁管理装置、中间节点锁管理装置和一个根节点锁管理装置,其中,每个业务数据节点对应设置的数据库无间断更新系统索引关系层级数量的锁管理装置;
所述叶子节点锁管理装置用于接收叶子业务节点发送的锁请求,根据持有锁的状态向上级的锁管理装置发送所述锁请求,或者返回所述锁请求对应的锁给所述叶子业务节点;
所述中间节点锁管理装置用于接收所述中间节点锁管理装置的下级的锁管理装置发送的锁请求,根据持有锁的状态向所述中间节点锁管理装置的上级的锁管理装置发送所述锁请求,或者返回所述锁请求对应的锁给所述中间节点锁管理装置的下级的锁管理装置;
所述根节点锁管理装置用于接收所述根节点锁管理装置的下级的锁管理装置发送的锁请求,返回所述锁请求对应的锁给所述根节点锁管理装置的下级的锁管理装置。
结合第三方面,在其他可能实现方式中:
按照不同的键值构建索引集群,得到的索引集群是不同的,某些业务数据节点需要进行更新,就要对所述业务数据节点进行加锁和放锁,当所述业务数据节点分布在不同的所述索引集群时,更新效益是不同的。
附图说明
为了更清楚地说明本发明的实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,下面描述中的附图仅仅是本发明的一些实施例。
图1为本发明的实施例提供的一种数据库无间断更新的方法的流程示意图;
图2为本发明的实施例提供的一种数据库无间断更新的系统流程示意图;
图3为本发明的实施例提供的一种数据库无间断更新的系统的结构示意图;
图4为本发明的另一实施例提供的一种数据库无间断更新系统的结构示意图;
图5为本发明的另一实施例提供的一种数据库无间断更新方法流程示意图。
具体实施方式
为使本发明要解决的技术问题、技术方案和优点更加清楚,下面将结合附图及具体实施例。
本发明的实施例提供一种数据库无间断更新方法和系统。本发明可用于批量数据的无间断更新,首先是对数据库中的数据根据索引进行分组,形成不少于二个的索引集群,把需要更新的数据映射到集群中,对每个集群进行批数据更新。每个索引集群包括至少两个业务数据节点,一个中心数据节点,所述中心数据节点可以对数据资源进行管理和控制,每个所述业务数据节点上至少有一个正在运行的进程,所述业务数据节点可以是具体的物理节点,业务数据节点上运行的进程可以是一般的软件。具体的,本发明的实施例提供一种数据库无间断更新的方法,参照图1所示,包括以下步骤:
01、根据业务关系数据图中包含的业务数据节点的数量、所有业务数据节点上系统实例的数目和运行进程的总数、以及各个业务数据节点到业务关系数据图的中心节点的访问延迟,为每张表中的每个业务数据节点设置索引关系,形成一定的索引关系层级。
每张表中的索引关系层级是不同的,构成的索引集群就不同,在本发明中索引关系层级主要是通过人工根据不同的键值和关键字抽取得到的,因此在处理每个业务数据节点对应的运行进程时不能改变业务数据节点的索引关系层级,在锁请求更大的情况下,索引关系层级中的锁管理装置就可对索引集群分批更新数据,不至于有很多锁请求并发访问,减轻了系统的压力。
根据实际情况,索引关系层级对不同的业务数据节点不一定是相同的,所以同一个业务数据节点上的运行进程对应同等层级的索引关系层级和使用同等层级的锁管理装置。所以可以通脱业务数据节点的数量、所有业务数据节点上系统实例的数目和运行进程的总数、以及各个业务数据节点到业务关系数据图的中心节点的访问延迟来分配合理的索引关系层级,以增加系统的整体效益和减少延迟的时间。如何分配索引关系层级可以参考每一层级锁管理装置与相邻锁管理装置之间的时间延迟差,当延迟时间大于设置的时间值时,可以在相应的两个锁管理装置之间增加若干个层级的锁管理装置,直到所述锁管理装置与相邻锁管理装置之间的时间延迟差小于设置的时间值。
102、分别根据业务数据节点对应的某一字段对索引关系进行分区,形成每个业务数据节点至少分配到一个索引集群中,对每一个索引集群中的业务数据节点分配至少一个锁管理装置。
当步骤101中获取的索引关系层级只有一层时,为业务数据节点分配锁管理装置为根节点锁管理装置,也就是说业务数据节点的所有运行进程只由根节点锁管理装置进行控制,业务数据节点也只向根节点锁管理装置请求锁。
当步骤101中获取的索引关系的层级为二层时,为业务数据节点分配一个叶子节点锁管理装置和一个根节点锁管理装置,业务数据节点不直接由根节点锁管理装置进行控制,叶子节点锁管理装置由所述根节点锁管理装置直接控制,业务数据节点只向其上一级中间节点锁管理装置请求锁,在叶子节点锁管理装置没有所述业务数据节点请求的锁时,则再向其更高一级请求。
当步骤101中获取的索引关系层级大于两层时,则系统为业务数据节点分配一个叶子节点锁管理装置、一个根节点锁管理装置和至少一个中间节点锁管理装置,所述中间节点锁管理装置的个数有索引关系层级决定,其个数最少为索引关系层级数减2。根节点锁管理装置直接控制中间节点锁管理装置,所述中间节点锁管理装置直接控制叶子节点锁管理装置,叶子节点锁管理装置直接控制业务数据节点上运行的进程。
对本发明来说,叶子节点锁管理装置,中间节点锁管理装置以及根节点锁管理装置均是锁管理的一种为了显示层级关系的名称,所以在本发明中所述的锁管理可能代表叶子节点锁管理装置,中间节点锁管理装置以及根节点锁管理装置中任意一个,显然,锁管理装置需要通过一个统一的锁管理服务器管理。
103、为每一个锁管理装置分配对应的锁关系上下文,其中锁关系上下文用于确定一个锁管理装置相邻的锁管理装置。
锁关系上下文一般包括锁管理装置所在的层数、上层的锁管理装置、下层的锁管理装置和锁请求延迟时间以及批量处理锁请求等消息,所述锁关系上下文主要用来确认每个锁管理装置相邻的锁管理装置,如上层的锁管理装置和下层的锁管理装置。
104、需要更新的业务数据节点向上级请求锁,更新每个索引集群中需要更新的业务数据节点。
业务数据节点向上一层请求锁,锁的类型分为两种:共享锁和排它锁;共享锁是指允许并发事务读取(SELECT)一个资源,排它锁是指可以防止并发事务对资源进行访问,其它事务不能读取或修改排它(X)锁锁定的数据,若业务数据持有共享锁未释放,此时可以向上一层请求共享锁而请求其他类型的锁会被拒绝或者若业务数据持有排它锁未释放,此时向上级请求任何一种锁都会被拒绝。
请求锁成功后,系统对索引集群中需要更新的业务数据进行更新。
本发明的实施例还提供一种数据库无间断更新的系统,包括:设置单元21、调度单元22及执行单元23。
设置单元21用于根据业务关系数据图中包含的业务数据节点的数量、所有业务数据节点上系统实例的数目和运行进程的总数、以及各个业务数据节点到业务关系数据图的中心节点的访问延迟,为每张表中的每个业务数据节点设置索引关系,形成一定的索引关系层级。
所述调度单元22用于分别根据设置单元21的业务数据节点对应的某一字段对索引关系进行分区,形成每个业务数据节点至少分配到一个索引集群中,对每一个索引集群中的业务数据节点分配至少一个锁管理装置。
所述执行单元23用于为所述调度单元22分配每一个锁管理装置分配对应的锁关系上下文,其中锁关系上下文用于确定一个锁管理装置相邻的锁管理装置。
具体来说,当为业务数据节点获取的索引关系的层级为二层时,调度单元22主要为业务数据节点分配一个叶子节点锁管理装置和一个根节点锁管理装置,业务数据节点不直接由根节点锁管理装置进行控制,叶子节点锁管理装置由所述根节点锁管理装置直接控制,业务数据节点只向其上一级中间节点锁管理装置请求锁,在叶子节点锁管理装置没有所述业务数据节点请求的锁时,则再向其更高一级请求。
当为业务数据节点获取的索引关系的层级大于二层时,调度单元22主要为业务数据节点分配一个叶子节点锁管理装置、一个根节点锁管理装置和至少一个中间节点锁管理装置,所述中间节点锁管理装置的个数有索引关系层级决定,其个数最少为索引关系层级数减2。根节点锁管理装置直接控制中间节点锁管理装置,所述中间节点锁管理装置直接控制叶子节点锁管理装置,叶子节点锁管理装置直接控制业务数据节点上运行的进程。
其中,所述锁关系上下文一般包括锁管理装置所在的层数、上层的锁管理装置、下层的锁管理装置和锁请求延迟时间以及批量处理锁请求等消息。
本发明的实施例还提供一种数据库无间断更新系统如图3所示,使用上述方法实施例提供的数据库无间断更新方法,在任一个索引集群中,索引关系层级包括至少一个叶子节点锁管理装置42、中间节点锁管理装置43和一个根节点锁管理装置44,其中,根节点锁管理装置的直接控制的下层是中间节点锁管理装置,所述中间节点锁管理装置可能是一个也可能是多个,或者中间节点锁管理装置的下层是叶子节点管理装置或者是中间节点锁管理装置,具体的,中间节点锁管理装置的直接控制下层可能是一个也可能是多个锁管理装置。
叶子节点锁管理装置42的作用是接收业务数据节点发送的锁请求,其中业务数据节点是所有运行进程的包围体系,运行进程41把锁请求命令赋予业务数据节点,通过所述业务数据节点向上层发送锁请求;
当叶子节点锁管理装置42具有锁请求对应的锁时,所述42返回锁请求对应的锁给业务数据节点,所述业务数据节点通过命令告知运行进程所述42具备对应的锁,这时数据可以进行更新;
当叶子节点锁管理装置42没有所述对应的锁时,所述42向中间节点锁管理装置请求对应的锁,此时数据无法更新,还需要上更上层请求锁。
同理,中间节点锁管理装置43主要是用来接收中间节点锁管理装置下层的锁管理装置的锁请求,当中间节点锁管理装置43具有锁请求对应的锁时,中间节点锁管理装置43返回对应的锁到所述42的下一层的锁管理装置,数据可以更新;
或者当所述中间锁管理装置43没有所述对应的锁时,所述43需要向其上一层发送锁请求,此时数据不能顺利更新。
同理,根节点锁管理装置44主要是用来接收所述44的下一层的锁管理装置发送的锁请求,然后返回对应的锁给其下一层的锁管理装置,可以是中间节点锁管理装置也可以是叶子节点锁管理装置;请求锁时,当系统等待时间小于设定的时间时,说明锁请求成功,数据可进行更新,否则锁管理装置发送锁请求失败命令,这时下层的所管理装置不得不先释放请求的锁,等待上层的锁管理装置释放锁后,再尝试请求相应的锁。
本发明实施例采用将所有同种类的锁请求合并成一个锁向上级发送锁请求操作,当一些锁请求成功,就先对所述锁请求对应的数据进行批量更新,超过设定时间请求失败的锁请求,释放对应锁后再次尝试。本发明的做法不仅减少了锁请求的次数,缩短了加锁和放锁的时间,提高了更新效率,而且在大批量的更新的数据的情况下,有效改善了数据库的性能问题。
为了更具体的说明,加锁和数据更新的过程,本发明提供了又一种数据库无间断更新系统的实施例,如图4所示,该索引关系层级中的业务数据节点A的上一层为叶子节点锁管理装置42,所述叶子节点锁管理装置的上一层为中间节点锁管理装置43,所述中间节点锁管理装置43的上一层为根节点锁管理装置44;其中有一个叶子节点管理装置42C直接由根节点44控制。
具体的,下面对一个索引集群中的需要更新的数据如何进行加锁和何时放锁做出详细阐述,以排它锁为例,业务数据节点A代替运行进程向叶子节点锁管理装置42A进行排它锁类型的锁请求,如果叶子节点锁管理装置有该类型的排它锁,此时返回所述锁请求给业务数据节点A,数据可进行下一步的操作;如果所述叶子节点锁管理装置42A有这种类型的排它锁但另外一个进程也有所述排它锁,则此时所述业务数据节点A需要等待所述另外的进程释放所述排它锁后所述业务数据节点A对应的运行进程才可以加锁;如果所述叶子节点锁管理装置42A没有这种排它锁只有共享锁时,则所述锁请求需要排队等待,等待所述叶子节点锁管理装置42A持有的共享锁释放后,继续向中间节点锁管理装置发送所述排它锁的请求;
同理中间节点锁管理装置如果已经有这种类型的所述排它锁且没有被别的进程占用,此时返回给所述锁请求给叶子节点锁管理装置42A,所述42A继续返回给业务数据节点A,数据可进行下一步的操作;如果中间节点锁管理装置有这种类型的排它锁,但已经被其他进程占用,此时等待占用锁的进程释放所述排它锁后所述请求锁的进程可以进行加锁操作,如果中间节点锁管理装置有共享锁,在该所述锁请求需要排队等待,等中间节点锁管理装置持有的锁述共享锁释放,再向上一层的根节点锁管理装置发送所述排它锁的请求;
或者如果根节点锁管理装置有这种类型的排它锁且没有被其他进程占用,则把所述排它锁返回给中间节点锁管理装置,数据可以进行下一步操作;如果根节点锁管理装置具有共享锁,所述排它锁的请求需要排队等待,等所述根节点锁管理装置的共享锁释放后,把所述排它锁返回给中间节点锁管理装置,所述中间节点锁管理装置将所述排它锁返回给叶子节点锁管理装置42A,所述42A把所述排它锁返回给业务数据节点A,数据可以进行下一步的更新操作。
申请共享锁的方法也可使用类似的步骤,但共享锁和排它锁在规则上有所不同。
本发明的实施例中,把数据库分成多个索引集群,每个集群中的数据都被分成类似的索引关系层级,其他集群中的加锁和更新操作是类似的,具体方法就不在详述。
本发明的实施例还提供一种数据库无间断更新方法如图3所示,包括以下步骤:
501、将数据库中数据根据一定的索引关系,形成关系数据的图,即所述索引关系层级,逻辑上,节点为业务数据,指向箭头为索引关系。
当运行的进程需要对数据做出加锁操作时,当所述运行进程没有所述锁请求的锁时,则运行进程通过业务数据节点向该运行进程的锁管理装置提出锁请求。
502、索引关系层级通过系统为业务数据节点配置的锁管理装置接收业务数据节点发送的锁请求。
503、索引关系层级根据所述锁管理装置是否持有锁,向更上一层的锁管理装置发送所述锁请求或者将该锁请求返回给所述的业务数据节点。
504、需要加锁的业务数据节点对应的节点管理装置把需要发给上级的所有锁请求合并为同一个锁请求后,发送给所述锁管理装置的上级锁管理装置。
505、叶子节点锁管理装置的上一层锁管理装置对所述叶子节点锁管理装置做出回应,由上一级的锁管理装置判断是将所述锁请求继续发送给更上一层还是返回给叶子节点锁管理装置。
506、同理叶子节点锁管理装置以上各层的锁管理装置都按照同级时候有锁对所述锁请求做出对应的回应,直到锁请求到达根节点锁管理装置,之后所述根节点锁管理装置将锁请求依次返回给所述根节点锁管理装置的下面的层级的锁管理装置直到将锁所述锁请求返回到业务数据节点。
507、对所述索引集群中需要更新的所述数据库中的数据进行批量更新。这种批数据更新的发明方法能够实现精确预估用户查询时间、停留时间、查询内容等。使得目前的系统处理效率大大提升,提升了用户体验。
以上所述是本发明的优选实施方式,应当指出,对于本技术领域的中高级技术用户来说,在不脱离本发明所述原理的前提下,还可以作出若干改进和润饰,这些改进和润饰是在我们发明上的必然前展结果,也应视为本发明的保护范围。
Claims (24)
1.一种数据库无间断更新方法,其特征在于,包括:
根据业务关系数据图中包含的业务数据节点的数量、所有业务数据节点上系统实例的数目和运行进程的总数、以及各个业务数据节点到业务关系数据图的中心节点的访问延迟,为每张表中的每个业务数据节点设置索引关系,形成一定的索引关系层级;
分别根据业务数据节点对应的某一字段对索引关系进行分区,形成每个业务数据节点至少分配到一个索引集群中,对每一个索引集群中的业务数据节点分配至少一个锁管理装置;
为每一个锁管理装置分配对应的锁关系上下文,其中锁关系上下文用于确定一个锁管理装置相邻的锁管理装置;
需要更新的业务数据节点向上级请求锁,更新每个索引集群中需要更新的业务数据节点。
2.根据权利要求1所述的方法,其特征在于,所述业务关系数据图、业务数据节点和设置索引关系,具体包括:
数据库中的数据存在于每张表空间中,数据之间存在一定的层级关系,所述数据就可以通过一定的层级组织关系连接起来,形成索引关系,使用所述索引关系可以提高表空间的查询速度。
3.根据权利要求1所述的方法,其特征在于,所述分别根据所述业务数据节点对应的某一字段对所述索引关系进行分区,形成所述每个业务数据节点至少分配到一个索引集群中,对每一个所述索引集群中的所述业务数据节点分配至少一个锁管理装置,具体包括:
当为所述索引集群中所述业务数据节点设置的索引关系层级为两层时,为所述索引集群的中间业务数据节点分配一个中间节点锁管理装置及为所述索引集群中的根业务数据节点分配一个根节点锁管理装置,所述中间节点锁管理装置的上一级锁管理装置为根节点锁管理装置;
当为所述索引集群中所述业务数据节点设置的索引关系层级大于两层时,为所述索引集群中的叶子业务节点分配一个叶子节点锁管理装置,为所述索引集群中的根业务节点分配一个根节点锁管理装置,以及为所述索引集群中的中间业务节点分配至少一个设置于所述叶子节点锁管理装置和根节点锁管理装置的中间节点锁管理装置,并根据所述锁关系上下文确定每个中间节点锁管理装置上级的锁管理装置和下级的锁管理装置,其中位于下级的锁管理装置向位于上级的锁管理装置请求锁。
4.根据权利要求3的方法,其特征在于,分别根据业务数据节点对应的某一字段对索引关系进行分区,形成每个业务数据节点至少分配到一个索引集群中,对每一个索引集群中的业务数据节点分配至少一个锁管理装置后,还包括:
当所述根节点锁管理装置对应的业务数据节点和多个系统实例所在业务数据节点不存在并发运行时,为所述系统实例对应的业务数据节点设置锁管理装置。
5.根据权利要求2-4任一个所述的方法,其特征在于,所述锁关系上下文主要包括:上级的锁管理装置、下级的锁管理装置、锁层级数量、锁管理装置所在关系层、锁管理装置对应的业务数据节点。
6.根据权利要求1所述的方法,其特征在于,所述索引集群主要包括:
对数据量巨大的大表根据某一字段进行分区,构成大表的一个个的子集称为分区表;索引是对数据库表中一列或多列的值进行排序的一种结构,根据键值对索引进行分区,将分区设置为一个个的索引集群,根据表中的数据来划分索引集群,所述索引集群的数量为一个或多个;每个索引集群中的所述业务数据节点也不尽相同。
7.根据权利要求1所述的方法,其特征在于,所述需要更新的业务数据节点向上级请求锁,更新每个索引集群中需要更新的业务数据节点包括:
对需要更新的业务数据节点为叶子业务节点时,所述叶子节点锁管理装置接收所述叶子业务节点发送的锁请求,根据所述叶子节点锁管理装置的状态向上级的锁管理装置发送锁请求,或者返回所述锁请求对应的锁给所述叶子业务节点;
通过所述中间节点锁管理装置的上级的中间节点锁管理装置接收所述锁请求,根据持有锁的状态向更上级的中间节点锁管理装置发送所述锁请求,或者返回所述锁请求对应的锁给所述中间节点锁管理装置;
按照设置的索引关系层级,通过所述中间节点锁管理装置以上各级锁管理装置依次按照本层级持有锁的状态对所述锁请求进行处理,直到所述锁请求发送至所述根节点锁管理装置,通过所述根节点锁管理装置返回所述锁请求对应的锁给所述根节点锁管理装置的下级的节点锁管理装置直到返回所述锁请求对应的锁至所述业务数据节点。
8.根据权利要求7所述的方法,其特征在于,所述需要更新的业务数据节点向上级请求锁,更新每个索引集群中需要更新的业务数据节点还包括:
每个索引集群都有特有的键值与之对应,对需要更新的业务数据节点根据键值首先映射到相应的索引集群中,根据层级锁请求进行加锁或者放锁从而进行批量数据更新。
9.根据权利要求7所述的方法,其特征在于,所述根据所述叶子节点锁管理装置的状态向上级的锁管理装置发送锁请求,或者返回所述锁请求对应的锁给所述叶子业务节点,具体包括:
当所述叶子节点锁管理装置具有所述锁请求对应的锁时,通过所述叶子节点锁管理装置返回所述锁请求对应的锁至所述叶子业务节点;
当所述叶子节点锁管理装置没有所述锁请求对应的锁时,通过所述叶子节点锁管理装置向所述叶子节点锁管理装置的上级的锁管理器发送所述锁请求。
10.根据权利要求7所述的方法,其特征在于,所述通过所述中间节点锁管理装置的上级的中间节点锁管理装置接收所述锁请求,根据持有锁的状态向更上级的中间节点锁管理装置发送所述锁请求,或者返回所述锁请求对应的锁给所述中间节点锁管理装置,具体包括:
当所述中间节点锁管理装置的上级的锁管理装置具备所述锁请求对应的锁时,通过所述中间节点锁管理装置的上级的锁管理装置返回所述锁请求对应的锁至所述中间节点锁管理装置;
当所述中间节点锁管理装置的上级的锁管理装置没有所述锁请求对应的锁时,通过所述中间节点锁管理装置的上级的锁管理装置向更上级的中间节点锁管理装置发送所述锁请求。
11.根据权利要求7所述的方法,其特征在于,所述按照设置的索引关系层级,通过所述根节点锁管理装置返回所述锁请求对应的锁给所述根节点锁管理装置的下级的节点锁管理装置直到返回所述锁请求对应的锁至所述业务数据节点,具体包括:
当所述中间节点锁管理装置的上级的锁管理装置具备所述锁请求对应的锁时,通过所述根节点锁管理装置返回所述锁请求对应的锁至所述中间节点锁管理装置;
当所述中间节点锁管理装置的上级的锁管理装置没有所述锁请求对应的锁时,通过所述根节点所管理装置对所述锁请求处理。
12.根据权利要求9-11任一项所述的方法,其特征在于,所述方法还包括:
任一个索引集群同一层级的索引关系中,需要加锁的业务数据节点对应的节点管理装置把需要发给上级的所有锁请求合并为同一个锁请求后,发送给所述锁管理装置的上级锁管理装置。
13.根据权利要求9-11任一项所述的方法,其特征在于,所述方法还包括:
返回所述锁请求对应的锁时,通过所述锁管理装置设置所述锁请求对应的锁的持有的最大时间,所述锁管理装置等待下级的锁管理装置判断是否已经加锁;当等待时间大于或者等于设定的最大时间时,所述上级锁管理装置发送失败锁请求至所述锁管理装置的下级的锁管理装置,所述锁管理装置的下一级的锁管理装置在收到所述失败锁请求后,释放所述锁请求对应的锁。
14.根据权利要求1所述的方法,其特征在于,还包括:
按照不同的键值构建索引集群,得到的索引集群是不同的,某些业务数据节点需要进行更新,就要对这些业务数据节点进行加锁和放锁,当这些业务数据节点分布在不同的所述索引集群时,更新效率是不同的。
15.一种数据库无间断更新系统,其特征在于,包括:设置单元、调度单元以及执行单元;
所述设置单元用于根据业务关系数据图中包含的业务数据节点的数量、所有业务数据节点上系统实例的数目和运行进程的总数、以及各个业务数据节点到业务关系数据图的中心节点的访问延迟,为每张表中的每个业务数据节点设置索引关系,形成一定的索引关系层级;
所述调度单元用于分别根据业务数据节点对应的某一字段对索引关系进行分区,形成每个业务数据节点至少分配到一个索引集群中,对每一个索引集群中的业务数据节点分配至少一个锁管理装置;
所述执行单元用于为每一个锁管理装置分配对应的锁关系上下文,其中锁关系上下文用于确定一个锁管理装置相邻的锁管理装置;需要更新的业务数据节点向上级请求锁,更新每个索引集群中需要更新的业务数据节点。
16.根据权利要求15所述的系统,其特征在于:
当为所述索引集群中所述业务数据节点设置的索引关系层级为两层时,为所述索引集群的中间业务数据节点分配一个中间节点锁管理装置及为所述索引集群中的根业务数据节点分配一个根节点锁管理装置,所述中间节点锁管理装置的上级锁管理装置为根节点锁管理装置;
或者;
当为所述索引集群中所述业务数据节点设置的索引关系层级大于两层时,为所述索引集群中的叶子业务节点分配一个叶子节点锁管理装置,为所述索引集群中的根业务节点分配一个根节点锁管理装置,以及为所述索引集群中的中间业务节点分配至少一个设置于所述叶子节点锁管理装置和根节点锁管理装置的中间节点锁管理装置,并根据所述锁关系上下文确定每个中间节点锁管理装置上级的锁管理装置和下级的锁管理装置,其中位于下级的锁管理装置向位于上级的锁管理装置请求锁。
17.根据权利要求16所述的系统,其特征在于:
所述调度单元还用于当所述根节点锁管理装置对应的业务数据节点和多个系统实例所在业务数据节点不存在并发运行时,为所述系统实例对应的业务数据节点设置锁管理装置。
18.根据权利要求15-17任一项所述的系统,其特征在于,所述锁关系上下文主要包括:上级的锁管理装置、下级的锁管理装置、锁层级数量、锁管理装置所在关系层、锁管理装置对应的业务数据节点。
19.根据权利要求15所述的系统,其特征在于,包括至少一个叶子节点锁管理装置、中间节点锁管理装置和一个根节点锁管理装置;
所述叶子节点锁管理装置用于接收叶子业务节点发送的锁请求,根据持有锁的状态向上级的锁管理装置发送所述锁请求,或者返回所述锁请求对应的锁给所述叶子业务节点;
所述中间节点锁管理装置用于接收所述中间节点锁管理装置的下级的锁管理装置发送的锁请求,根据持有锁的状态向所述中间节点锁管理装置的上级的锁管理装置发送所述锁请求,或者返回所述锁请求对应的锁给所述中间节点锁管理装置的下级的锁管理装置;
所述根节点锁管理装置用于接收所述根节点锁管理装置的下级的锁管理装置发送的锁请求,返回所述锁请求对应的锁给所述根节点锁管理装置的下级的锁管理装置。
20.根据权利要求19所述的数据库无间断更新系统,其特征在于:
当所述叶子节点锁管理装置具有所述锁请求对应的锁时,通过所述叶子节点锁管理装置返回所述锁请求对应的锁至所述叶子业务节点;
当所述叶子节点锁管理装置没有所述锁请求对应的锁时,通过所述叶子节点锁管理装置向所述叶子节点锁管理装置的上级的锁管理器发送所述锁请求。
21.据权利要求19所述的数据库无间断更新系统,其特征在于:
当所述中间节点锁管理装置的上级的锁管理装置具备所述锁请求对应的锁时,通过所述中间节点锁管理装置的上级的锁管理装置返回所述锁请求对应的锁至所述中间节点锁管理装置;
当所述中间节点锁管理装置的上级的锁管理装置没有所述锁请求对应的锁时,通过所述中间节点锁管理装置的上级的锁管理装置向根锁管理装置发送所述锁请求。
22.根据权利要求19-21任一项所述的数据库无间断更新系统,其特征在于,所述锁管理装置还用于:
任一个索引集群同一层级的索引关系中,需要加锁的业务数据节点对应的节点管理装置把需要发给上级的所有锁请求合并为同一个锁请求后,发送给所述锁管理装置的上级锁管理装置。
23.根据权利要求19-21任一项所述的数据库无间断更新系统,其特征在于,所述锁管理器还用于:
返回所述锁请求对应的锁时,通过所述锁管理装置设置所述锁请求对应的锁的持有的最大时间,所述锁管理装置等待下级的锁管理装置判断是否已经加锁;当等待时间大于或者等于设置的最大时间时,所述上级锁管理装置发送无效锁请求至所述锁管理装置的下级的锁管理装置,所述锁管理装置的下级的锁管理装置在收到所述无效锁请求后,释放所述锁请求对应的锁。
24.根据权利要求15所述的数据库无间断更新系统,其特征在于,还包括:
按照不同的键值构建索引集群,得到的索引集群是不同的,某些业务数据节点需要进行更新,就要对所述业务数据节点进行加锁和放锁,当所述业务数据节点分布在不同的所述索引集群时,更新效率是不同的。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510412893.5A CN105069019B (zh) | 2015-07-14 | 2015-07-14 | 数据库无间断更新方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510412893.5A CN105069019B (zh) | 2015-07-14 | 2015-07-14 | 数据库无间断更新方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105069019A true CN105069019A (zh) | 2015-11-18 |
CN105069019B CN105069019B (zh) | 2018-07-06 |
Family
ID=54498392
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510412893.5A Active CN105069019B (zh) | 2015-07-14 | 2015-07-14 | 数据库无间断更新方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105069019B (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105550362A (zh) * | 2015-12-31 | 2016-05-04 | 浙江大华技术股份有限公司 | 一种存储系统的索引数据修复方法和存储系统 |
CN109271398A (zh) * | 2018-10-29 | 2019-01-25 | 东软集团股份有限公司 | 数据库事务处理方法、装置、设备和计算机可读存储介质 |
CN111459521A (zh) * | 2020-03-31 | 2020-07-28 | 上海依图网络科技有限公司 | 集群升级方法及装置 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1522409A (zh) * | 2001-06-09 | 2004-08-18 | 存储交易株式会社 | 用于数据库系统的考虑了高速缓存的并行控制方案 |
US20040220931A1 (en) * | 2003-04-29 | 2004-11-04 | Guthridge D. Scott | Discipline for lock reassertion in a distributed file system |
CN101252603A (zh) * | 2008-04-11 | 2008-08-27 | 清华大学 | 基于存储区域网络san的集群分布式锁管理方法 |
CN102355473A (zh) * | 2011-06-28 | 2012-02-15 | 用友软件股份有限公司 | 分布式计算环境下的锁定控制系统和方法 |
-
2015
- 2015-07-14 CN CN201510412893.5A patent/CN105069019B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1522409A (zh) * | 2001-06-09 | 2004-08-18 | 存储交易株式会社 | 用于数据库系统的考虑了高速缓存的并行控制方案 |
US20040220931A1 (en) * | 2003-04-29 | 2004-11-04 | Guthridge D. Scott | Discipline for lock reassertion in a distributed file system |
CN101252603A (zh) * | 2008-04-11 | 2008-08-27 | 清华大学 | 基于存储区域网络san的集群分布式锁管理方法 |
CN102355473A (zh) * | 2011-06-28 | 2012-02-15 | 用友软件股份有限公司 | 分布式计算环境下的锁定控制系统和方法 |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105550362A (zh) * | 2015-12-31 | 2016-05-04 | 浙江大华技术股份有限公司 | 一种存储系统的索引数据修复方法和存储系统 |
CN105550362B (zh) * | 2015-12-31 | 2019-11-19 | 浙江大华技术股份有限公司 | 一种存储系统的索引数据修复方法和存储系统 |
CN109271398A (zh) * | 2018-10-29 | 2019-01-25 | 东软集团股份有限公司 | 数据库事务处理方法、装置、设备和计算机可读存储介质 |
CN109271398B (zh) * | 2018-10-29 | 2020-06-23 | 东软集团股份有限公司 | 数据库事务处理方法、装置、设备和计算机可读存储介质 |
CN111459521A (zh) * | 2020-03-31 | 2020-07-28 | 上海依图网络科技有限公司 | 集群升级方法及装置 |
CN111459521B (zh) * | 2020-03-31 | 2024-03-22 | 上海依图网络科技有限公司 | 集群升级方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN105069019B (zh) | 2018-07-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8108352B1 (en) | Data store replication for entity based partition | |
US9460185B2 (en) | Storage device selection for database partition replicas | |
JP4722973B2 (ja) | リクエスト処理方法及び計算機システム | |
US8484417B2 (en) | Location updates for a distributed data store | |
CN106936899B (zh) | 分布式统计分析系统的配置方法及分布式统计分析系统 | |
CN102253869A (zh) | 可缩放的容错元数据服务 | |
US9652346B2 (en) | Data consistency control method and software for a distributed replicated database system | |
US20050251538A1 (en) | Unique ID management in disconnected database replication | |
US20130117307A1 (en) | Snapshot isolation support for distributed query processing in a shared disk database cluster | |
KR20140122240A (ko) | 확장 가능한 환경에서의 파티션 관리 기법 | |
KR20140119090A (ko) | 확장 가능한 환경에서의 동적 로드 밸런싱 기법 | |
US9774676B2 (en) | Storing and moving data in a distributed storage system | |
US9047019B2 (en) | Shared temporary storage management in a shared disk database cluster | |
US6968382B2 (en) | Activating a volume group without a quorum of disks in the volume group being active | |
CN112199427A (zh) | 一种数据处理方法和系统 | |
CN110825704A (zh) | 一种读数据方法、写数据方法及服务器 | |
CN105069019A (zh) | 数据库无间断更新方法及系统 | |
JP2017138895A (ja) | 仮想化環境管理システムおよび仮想化環境管理方法 | |
US8707318B2 (en) | Partitioning system including a generic partitioning manager for partitioning resources | |
CN109067903B (zh) | 一种云平台级联系统 | |
EP3377970B1 (en) | Multi-version removal manager | |
CN110659303A (zh) | 一种数据库节点的读写控制方法及装置 | |
CN115964444A (zh) | 一种云原生分布式多租户数据库实现方法及系统 | |
US20150169236A1 (en) | System and method for supporting memory allocation control with push-back in a distributed data grid | |
US9021506B2 (en) | Resource ejectability in multiprocessor systems |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
PE01 | Entry into force of the registration of the contract for pledge of patent right |
Denomination of invention: A Method and System for Continuously Updating Databases Effective date of registration: 20230919 Granted publication date: 20180706 Pledgee: China Construction Bank Corporation Zhenjiang Runzhou Sub branch Pledgor: ZHENJIANG HUILONG YANGTZE RIVER PORT CO.,LTD. Registration number: Y2023980057171 |
|
PE01 | Entry into force of the registration of the contract for pledge of patent right |