CN111382139A - 对数据库中同一账户的并行访问方法 - Google Patents
对数据库中同一账户的并行访问方法 Download PDFInfo
- Publication number
- CN111382139A CN111382139A CN201811624432.4A CN201811624432A CN111382139A CN 111382139 A CN111382139 A CN 111382139A CN 201811624432 A CN201811624432 A CN 201811624432A CN 111382139 A CN111382139 A CN 111382139A
- Authority
- CN
- China
- Prior art keywords
- account
- sub
- access requests
- database
- access
- 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
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明涉及一种对数据库中同一账户的并行访问方法,包括:接收对数据库中同一账户的多个访问请求;将多个访问请求分配到账户的多个不同的子账户上,其中至少包括第一子账户和第二子账户;其中,第一子账户配置成:基于多个访问请求来生成对数据库的操作指令;数据库配置成响应操作指令而执行:新设或注销子账户;和/或更改子账户的信息。其能够有效地应对外部的大量访问请求,避免访问请求的堆积,提高数据库及交易处理***的处理性能。
Description
技术领域
本发明涉及数据库技术领域,更具体地说,涉及一种对数据库中同一账户的并行访问方法。
背景技术
现有技术中,对用户账户的管理通常是通过数据库来进行。即,将单条账户信息保存在数据库中,当数据库收到对账户的修改请求后,首先对这条账户记录加锁,然后再进行修改,修改完成后释放锁。然而,如果加锁后又收到这个账户的其他访问请求,那么新访问请求会被暂时阻塞,直到前一个修改操作执行完成并释放锁之后,新访问请求才能继续处理。
虽然数据库的性能日渐提升,但是,根据上述解决方案,如果对同一账户访问量持续升高至超过某个阈值时,对于该热点账户的访问请求会出现堆积,导致应用***处理交易的时延明显升高,甚至影响涉及其他账户的正常交易处理。
发明内容
本发明的目的在于提供一种对数据库中同一账户执行多重并行访问的方法。
为实现上述目的,本发明提供一种技术方案如下:
一种对数据库中同一账户的并行访问方法,包括:接收对数据库中同一账户的多个访问请求;将多个访问请求分配到账户的多个不同的子账户上,其中至少包括第一子账户和第二子账户;其中,第一子账户配置成:基于多个访问请求来生成对数据库的操作指令;数据库配置成响应操作指令而执行:新设或注销子账户;和/或更改子账户的信息。
可选地,操作指令包括:当第二子账户管理的资源量少于第一阈值时,从第一子账户向第二子账户调拨资源;当第二子账户管理的资源量多于第二阈值时,指示第二子账户向第一子账户调拨资源;其中,第一子账户管理的资源量多于第二子账户管理的资源量。
为实现上述目的,本发明又提供一种数据库管理***,用于提供对同一账户的并行访问,***包括:访问请求路由模块,用于接收对数据库中同一账户的多个访问请求,并将多个访问请求分配到账户的多个不同的子账户上;账户信息维护模块,用于基于多个访问请求来生成对数据库的操作指令;其中,操作指令包括:新设或注销子账户;和/或更改子账户的信息。
可选地,该***还包括:资源调拨模块,用于在多个子账户之间调拨资源。
可选地,账户信息维护模块进一步配置成:指示访问请求路由模块变更对多个访问请求的分配。
本发明的实施例提供对数据库中同一账户的并行访问方法,通过动态地设置子账户或变更子账户的资源,能够有效地应对外部的大量访问请求,避免访问请求的堆积,提高数据库及交易处理***的处理性能。此外,由于子账户及资源的动态配置,这种方式有利于在访问请求数降低的情况下,注销子账户并回收资源,从而促进资源的高效使用。另外,由于第一子账户可以分配或调度其他子账户的资源,当某个子账户异常时,对其相应的访问请求可以被迅速转交其他子账户处理,从而提高交易处理的可靠性。
附图说明
图1示出根据本发明第一实施例对数据库中同一账户的并行访问方法的流程示意图。
图2示出根据本发明第二实施例的数据库管理***的模块结构示意图。
具体实施方式
在以下描述中提出具体细节,以便提供对本发明的透彻理解。然而,本领域的技术人员将清楚地知道,即使没有这些具体细节也可实施本发明的实施例。在本发明中,可进行具体的数字引用,例如“第一元件”、“第二装置”等。但是,具体数字引用不应当被理解为必须服从于其字面顺序,而是应被理解为“第一元件”与“第二元件”不同。
本发明所提出的具体细节只是示范性的,具体细节可以变化,但仍然落入本发明的精神和范围之内。术语“耦合”定义为表示直接连接到组件或者经由另一个组件而间接连接到组件。
以下通过参照附图来描述适于实现本发明的方法、***和装置的优选实施例。虽然各实施例是针对元件的单个组合来描述,但是应理解,本发明包括所公开元件的所有可能组合。因此,如果一个实施例包括元件A、B和C,而第二实施例包括元件B和D,则本发明也应被认为包括A、B、C或D的其他剩余组合,即使没有明确公开。
如图1所示,本发明第一实施例提供一种对数据库中同一账户的并行访问方法,包括如下步骤S10-S12-S14,其中步骤S14可以不作为独立步骤,而成为步骤S12的子步骤。
步骤S10、接收对数据库中同一账户的多个访问请求。
在交易/消费的高峰时间段,对某个账户(例如,集体账户)可能具有超出预期的访问需求,数据库管理***将接收来自不同访问方对数据库中同一账户的多个访问请求。
步骤S12、将多个访问请求分配到账户的多个不同的子账户上。
为了应对所接收的访问请求,尽量避免访问请求出现堆积从而影响对后续访问请求的及时处理,在该步骤中,将多个访问请求分配到该账户(即,多个访问方都希望访问的那个账户)的多个不同的子账户上,其中至少包括第一子账户和第二子账户。
随后,第一子账户可以应对第一批一个或多个访问请求,而第二子账户也可以应对第二批一个或多个访问请求。依此类推,理论上只要具有足够数量的子账户,即可以应对大量并发的访问请求。
为了使得每个子账户都可以应对一个或多个访问请求,需要为每个子账户分配一定数量的资源,所分配的资源从原始账户中调拨。在本文中,“资源”可以包括货币金额、抢购中的商品、期货等。
为了使得多个子账户可以分别应对具有不同优先级或不同资源需求的多个访问请求,可以将每个子账户配置成相应的等级。
作为一种示例,第一子账户管理的资源量明显多于第二子账户管理的资源量(例如,货币金额),从而第一子账户可以应对高额交易,而第二子账户更适合应对小额交易。作为另一示例,第一子账户具有更高的处理优先级,其优先获得资源的分配,并且能够从其他子账户主动调取资源。
步骤S14、将第一子账户配置成基于多个访问请求来生成对数据库的操作指令。
在该步骤中,即使在已经具有多个子账户的情况下,第一子账户仍然可以进一步配置成:基于在步骤S10中所接收的多个访问请求而生成对数据库的操作指令,以便新设或注销其他子账户,或者,更改其他子账户的信息。换言之,第一子账户能够控制其他子账户的资源及生命周期。
同时,作为对上述操作指令的响应,数据库配置成执行:新设或注销子账户;和/或,更改子账户的信息。
应理解,上述步骤S14可以作为步骤S12的一个子步骤来执行,也可以在步骤S12之后独立地执行。另外,步骤S14是动态执行的。举例来说,当所接收的访问请求超出访问阈值时,即使已经存在三个子账户(第一、第二、第三)子账户,第一子账户仍然可以新设第四子账户并向其调拨一定数量的资源,进而由第四子账户应对超出访问阈值的那些访问请求。
根据本发明一些实施例,为了保证第二子账户有能力应对一个或多个访问请求,当第二子账户管理的资源量少于第一阈值时,从第一子账户向第二子账户调拨资源。另一方面,当第二子账户管理的资源量多于第二阈值时,也可以指示第二子账户向第一子账户调拨资源。这些操作都可以基于第一子账户所生成的操作指令而由数据库执行。
作为一种改进,当第二子账户管理的资源不足以满足访问请求时,通过操作指令可以指示第二子账户将相应的访问请求转交第一子账户处理。作为另一种改进,当第二子账户空闲时,第一子账户可以通过操作指令来将一个访问请求转交第二子账户处理。除此之外,当第二子账户发生异常时,通过操作指令还可以将分配或转交给第二子账户的访问请求转交给第三子账户处理。
这些改进方式是出于以下考虑:第一子账户可以对外部访问请求进行再分配或调度,从而动态地变更子账户及其中的资源,以更好地满足外部访问请求的变化情况。
由于子账户及资源的动态配置,一方面,在外部访问请求数量过大或迅速增加的情况下,***可以动态地追加设立新的子账户并分配相应的资源,来及时应对这些大量访问请求;另一方面,在访问请求数量降低的情况下,***可以动态地注销子账户并回收资源,从而促进资源的高效使用。
根据本发明的一些实施例,在步骤S12中,将多个访问请求划分为第一批(一个或多个)访问请求和第二批(一个或多个)访问请求,其中第一批访问请求的优先级大于第二批访问请求的优先级;随后,将第一批访问请求、第二批访问请求分别分配给第一子账户和第二子账户。
本发明第二实施例提供一种数据库管理***,用于提供对同一账户的并行访问,如图2所示,该***20包括访问请求路由模块201、账户信息维护模块202以及可选的资源调拨模块203。
其中,访问请求路由模块201接收对数据库中同一账户的多个访问请求,并将多个访问请求分配到账户的多个不同的子账户上。这多个子账户可以事先设置好,并且还可以根据外部访问请求的变化情况而动态地增加或减少。
账户信息维护模块202基于多个访问请求来生成对数据库的操作指令。操作指令包括:新设或注销子账户;以及,更改子账户的信息。具体来说,账户信息维护模块202可以关联于第一子账户,从而第一子账户通过操作指令可以控制其他子账户的资源及生命周期。账户信息维护模块202也关联于其他子账户,以管理这些子账户的资源。
资源调拨模块203可在多个子账户之间调拨资源,例如,在第二子账户的资源不足的情况下,从第一子账户向第二子账户调度资源,或者,在第二子账户的资源过多的情况下,第一子账户从第二子账户调取过多的资源。
优选情况下,在第一时间段,访问请求路由模块201可以将接收到的对同一账户的多个访问请求初始地分配到多个子账户上,在随后的第二时间段,访问请求路由模块201可以接收账户信息维护模块202的指示,来对之前初始确定的访问请求分配方案进行变更或调整,以适应外部访问请求的变化情况,这也能够促进更合理地调度资源。
以下给出本发明的技术方案的一种具体应用场景。
账户信息维护模块202负责维护所有(子)账户的相关配置信息,配置信息需要通过界面UI的方式在***上线前配置完成,其中(子)账户信息主要包括:
a)某个账户的当前总余额;
b)某个账户拆分子账户的个数(记为参数C);
c)某个账户大额子账户和小额子账户的金额占比(记为参数P1);
d)某个账户大额交易金额的阈值(记为参数T1);
e)小额子账户启动调配开关的最小金额阈值(记为参数T2);
f)小额子账户启动调配开关的最大金额阈值(记为参数T3);
g)小额子账户每次调配金额的比例(记为参数P2)。
账户信息维护模块通过插件或者***间接口调用的方式接收外部***的调用请求,可以动态的调整各个账户的相关配置信息,比如某个账户的交易量较大,则可以增加该账户的子账户个数,从而提升该账户的处理性能。
账户信息装载模块负责将某个账户的金额信息进行拆分,该模块首先获取账户的配置参数C(假设C=4),然后将账户拆分为4个子账户(其中包含1个大额子账户和3个小额子账户),其次获取账户的配置参数P1(假设P1为8:2),然后将账户金额按照8:2的比例分别装载到不同的子账户存储节点上。
账户金额调拨模块根据账户的配置信息,将账户金额从大额子账户中调配到小额子账户中,流程如下:
a)获取账户配置信息T2(假设T2=20%)、T3(假设T3=120%)、P2(假设P2=1%)。
b)定时检查各个小额子账户的剩余金额,当某个小额子账户的剩余金额小于该账户小额子账户总金额的20%时,开始从大额子账户中调配金额到该小额子账户,直到该小额子账户的剩余金额等于该账户小额子账户的总金额,每次调拨的金额为该账户小额子账户总金额的1%。
c)定时检查各个小额子账户的剩余金额,当某个小额子账户的剩余金额大于该账户小额子账户总金额的120%时,开始从该小额子账户中调配金额到大额子账户,直到该小额子账户的剩余金额等于该账户小额子账户的总金额,每次调拨的金额为该账户小额子账户总金额的1%。
交易请求路由模块接收外部***的交易请求,并根据请求中的金额判断该笔交易请求交给大额子账户还是小额子账户。该模块的处理流程如下:
a)获取账户配置信息T1(假设T1=100)
b)获取交易请求中的交易金额,如果交易金额小于等于100,则将交易请求随机发到某个小额子账户中。如果交易金额大于100,则将交易请求直接发到大额子账户中。
c)如果某个小额子账户中的金额不足以处理当前交易请求,则将交易请求重发到大额子账户中处理。
对于更复杂的情况(如交易金额为扣减100,大额账户余额为90,小额子账户余额分别为10、20),此时大额子账户也会处理失败,交易请求路由模块收到大额子账户的失败应答后,按照以下流程进行处理:
a)向大额子账户发起金额为90的扣减请求;
b)向某个小额子账户发起金额为10的扣减请求;
c)如果a步处理成功,b步处理失败,则回滚大额子账户;
d)如果a步处理失败,则直接给客户端返回失败应答;
e)如果a、b均处理成功,则给客户端返回成功应答。
另外,当某个小额子账户余额小于注销阈值时,将该小额子账户的资源消耗情况反馈到大额子账户中以便进行统计,之后,可以将该小额子账户注销并由大额子账户收回其账户余额。
本发明进一步提供一种计算机可读存储介质,其上存储有一批机器可执行指令,这些机器可执行指令在由处理器执行时,可实现上述第一实施例提供的方法。
本领域的技术人员将会理解,结合本文中所公开的方面所描述的各种说明性逻辑块、模块、电路和算法步骤可以被实现为电子硬件、计算机软件或两者的组合。为了表明硬件和软件间的可互换性,各种说明性部件、块、模块、电路和步骤在上文根据其功能性总体地进行了描述。这样的功能性是实现为硬件还是软件将取决于特定应用以及对总体***所施加的设计限制。技术人员可以针对具体的特定应用、按照变化的方式来实现所描述的功能性,但是,这样的实现方式决策不应当被理解为引起与本发明范围的背离。
上述说明仅针对于本发明的优选实施例,并不在于限制本发明的保护范围。本领域技术人员可能作出各种变形设计,而不脱离本发明的思想及附随的权利要求。
Claims (10)
1.一种对数据库中同一账户的并行访问方法,包括:
a)、接收对所述数据库中同一账户的多个访问请求;
b)、将所述多个访问请求分配到所述账户的多个不同的子账户上,其中至少包括第一子账户和第二子账户;
其中,所述第一子账户配置成:
基于所述多个访问请求来生成对所述数据库的操作指令;
所述数据库配置成响应所述操作指令而执行:
新设或注销所述子账户;和/或
更改所述子账户的信息。
2.根据权利要求1所述的方法,其特征在于,所述操作指令包括:
当所述第二子账户管理的资源量少于第一阈值时,从所述第一子账户向所述第二子账户调拨资源;
当所述第二子账户管理的资源量多于第二阈值时,指示所述第二子账户向所述第一子账户调拨资源;
其中,所述第一子账户管理的资源量多于所述第二子账户管理的资源量。
3.根据权利要求2所述的方法,其特征在于,所述操作指令还包括:
当所述第二子账户管理的资源不足以满足访问请求时,指示所述第二子账户将相应的访问请求转交所述第一子账户处理。
4.根据权利要求1所述的方法,其特征在于,步骤b)具体包括:
将所述多个访问请求划分为第一批访问请求和第二批访问请求,其中所述第一批访问请求的优先级大于所述第二批访问请求的优先级;
将所述第一批访问请求、第二批访问请求分别分配给所述第一子账户和所述第二子账户。
5.根据权利要求2所述的方法,其特征在于,所述操作指令还包括:
当所述第二子账户空闲时,将一个访问请求转交所述第二子账户处理。
6.根据权利要求1至5中任一项所述的方法,其特征在于,所述操作指令还包括:
当所述第二子账户发生异常时,将分配或转交给所述第二子账户的访问请求转交给第三子账户处理。
7.一种数据库管理***,用于提供对同一账户的并行访问,所述***包括:
访问请求路由模块,用于接收对所述数据库中同一账户的多个访问请求,并将所述多个访问请求分配到所述账户的多个不同的子账户上;
账户信息维护模块,用于基于所述多个访问请求来生成对所述数据库的操作指令;
其中,所述操作指令包括:
新设或注销所述子账户;和/或
更改所述子账户的信息。
8.根据权利要求7所述的***,其特征在于,所述***还包括:
资源调拨模块,用于在所述多个子账户之间调拨资源。
9.根据权利要求7所述的***,其特征在于,所述账户信息维护模块进一步配置成:
指示所述访问请求路由模块变更对所述多个访问请求的分配。
10.一种计算机可读存储介质,其上存储有一批机器可执行指令,所述机器可执行指令在由处理器执行时,实现权利要求1-6中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811624432.4A CN111382139A (zh) | 2018-12-28 | 2018-12-28 | 对数据库中同一账户的并行访问方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811624432.4A CN111382139A (zh) | 2018-12-28 | 2018-12-28 | 对数据库中同一账户的并行访问方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN111382139A true CN111382139A (zh) | 2020-07-07 |
Family
ID=71217998
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811624432.4A Pending CN111382139A (zh) | 2018-12-28 | 2018-12-28 | 对数据库中同一账户的并行访问方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111382139A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112634024A (zh) * | 2020-12-29 | 2021-04-09 | 吉林亿联银行股份有限公司 | 一种热点账户的余额处理方法及装置 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101884051A (zh) * | 2007-11-29 | 2010-11-10 | 美国银行公司 | 子账户机制 |
CN104615916A (zh) * | 2014-12-12 | 2015-05-13 | 腾讯科技(深圳)有限公司 | 账号管理方法和装置、账号权限控制方法和装置 |
CN105447604A (zh) * | 2014-08-04 | 2016-03-30 | 阿里巴巴集团控股有限公司 | 一种账户处理方法及装置 |
-
2018
- 2018-12-28 CN CN201811624432.4A patent/CN111382139A/zh active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101884051A (zh) * | 2007-11-29 | 2010-11-10 | 美国银行公司 | 子账户机制 |
CN105447604A (zh) * | 2014-08-04 | 2016-03-30 | 阿里巴巴集团控股有限公司 | 一种账户处理方法及装置 |
CN104615916A (zh) * | 2014-12-12 | 2015-05-13 | 腾讯科技(深圳)有限公司 | 账号管理方法和装置、账号权限控制方法和装置 |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112634024A (zh) * | 2020-12-29 | 2021-04-09 | 吉林亿联银行股份有限公司 | 一种热点账户的余额处理方法及装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109582447B (zh) | 计算资源分配方法、任务处理方法及装置 | |
CN112269641B (zh) | 一种调度方法、装置、电子设备及存储介质 | |
CN111209110B (zh) | 一种实现负载均衡的任务调度管理方法、***和存储介质 | |
CN108681481B (zh) | 业务请求的处理方法及装置 | |
US11201824B2 (en) | Method, electronic device and computer program product of load balancing for resource usage management | |
CN111414241A (zh) | 批量数据处理方法、装置、***、计算机设备及计算机可读存储介质 | |
US20040133680A1 (en) | System and method for processing hardware or service usage data | |
CN104268007A (zh) | 一种事件请求分布式调度方法和*** | |
CN111586140A (zh) | 一种数据交互的方法及服务器 | |
CN113760549B (zh) | 一种pod部署方法及装置 | |
CN109597674B (zh) | 一种共享虚拟资源池份额调度方法及*** | |
JP2007310749A (ja) | サーバリソース提供システム及びサーバリソース提供方法 | |
CN111382139A (zh) | 对数据库中同一账户的并行访问方法 | |
CN111240824A (zh) | 一种cpu资源调度方法及电子设备 | |
CN111143063B (zh) | 任务的资源预约方法及装置 | |
JP2007328413A (ja) | 負荷分散方法 | |
CN116360922A (zh) | 集群资源调度方法、装置、计算机设备和存储介质 | |
CN115629854A (zh) | 分布式任务调度方法、***、电子设备和存储介质 | |
CN111176848B (zh) | 集群任务的处理方法、装置、设备和存储介质 | |
CN115878309A (zh) | 资源分配方法、装置、处理核、设备和计算机可读介质 | |
CN109298944B (zh) | 服务器压力调节方法及装置、计算机装置及存储介质 | |
CN112395063A (zh) | 一种动态多线程调度方法及*** | |
CN111858060A (zh) | 一种高性能计算集群的资源动态调整方法和装置 | |
CN111597037B (zh) | 作业分配方法、装置、电子设备及可读存储介质 | |
CN110955522A (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 |