CN111400053B - 数据库访问系统、方法、装置和计算机可读存储介质 - Google Patents

数据库访问系统、方法、装置和计算机可读存储介质 Download PDF

Info

Publication number
CN111400053B
CN111400053B CN202010186971.5A CN202010186971A CN111400053B CN 111400053 B CN111400053 B CN 111400053B CN 202010186971 A CN202010186971 A CN 202010186971A CN 111400053 B CN111400053 B CN 111400053B
Authority
CN
China
Prior art keywords
list
unit
overtime
message
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.)
Active
Application number
CN202010186971.5A
Other languages
English (en)
Other versions
CN111400053A (zh
Inventor
谷宇
卢凡
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
CHANJET INFORMATION TECHNOLOGY CO LTD
Original Assignee
CHANJET INFORMATION TECHNOLOGY CO LTD
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by CHANJET INFORMATION TECHNOLOGY CO LTD filed Critical CHANJET INFORMATION TECHNOLOGY CO LTD
Priority to CN202010186971.5A priority Critical patent/CN111400053B/zh
Publication of CN111400053A publication Critical patent/CN111400053A/zh
Application granted granted Critical
Publication of CN111400053B publication Critical patent/CN111400053B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores
    • G06F9/524Deadlock detection or avoidance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2458Special types of queries, e.g. statistical queries, fuzzy queries or distributed queries
    • G06F16/2471Distributed queries
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/546Message passing systems or structures, e.g. queues
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q10/00Administration; Management
    • G06Q10/08Logistics, e.g. warehousing, loading or distribution; Inventory or stock management
    • G06Q10/087Inventory or stock management, e.g. order filling, procurement or balancing against orders

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • Business, Economics & Management (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Economics (AREA)
  • Fuzzy Systems (AREA)
  • Entrepreneurship & Innovation (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Probability & Statistics with Applications (AREA)
  • Accounting & Taxation (AREA)
  • Finance (AREA)
  • Development Economics (AREA)
  • Mathematical Physics (AREA)
  • Computational Linguistics (AREA)
  • Human Resources & Organizations (AREA)
  • Marketing (AREA)
  • Operations Research (AREA)
  • Quality & Reliability (AREA)
  • Strategic Management (AREA)
  • Tourism & Hospitality (AREA)
  • General Business, Economics & Management (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明涉及一种数据库访问系统、方法、装置和计算机可读存储介质,用于访问数据库。数据库访问系统包括:列表获取模块,适于对数据库中的列表进行排队加锁,并发布队列变动消息;处理模块,与列表获取模块信号连接,适于订阅列表获取模块发布的队列变动消息;检测模块,与处理模块和列表获取模块分别信号连接;其中,检测模块根据列表获取模块发布的队列变动消息,使列表获取模块为列表加锁或使列表返回处理模块。本发明通过加锁性能同步控制了多个库存领域微服务的分布式并发处理,提高了效率。

Description

数据库访问系统、方法、装置和计算机可读存储介质
技术领域
本发明涉及数据处理技术领域,具体而言,涉及数据库访问系统、方法、装置和计算机可读存储介质。
背景技术
企业进行库存管理和存货核算时,都需要高效地保证商品可用量、现存量、成本核算、毛利计算等库存相关账目的顺序记账,以及准确控制负库存出库。因此,需要将商品库存数量账和成本账的账本作为临界资源管理,各记账线程应对其互斥地进行访问。
发明内容
本发明旨在解决上述技术问题的至少之一。
为此,本发明的第一目的在于提供一种数据库访问系统。
本发明的第二目的在于提供一种数据库访问方法。
本发明的第三目的在于提供一种数据库访问处理装置。
本发明的第四目的在于提供一种计算机可读存储介质。
为实现本发明的第一目的,本发明的实施例提供了一种数据库访问系统,用于访问数据库,数据库访问系统包括:列表获取模块,适于对数据库中的列表进行排队加锁,并发布队列变动消息;处理模块,与列表获取模块信号连接,适于订阅列表获取模块发布的队列变动消息;检测模块,与处理模块和列表获取模块分别信号连接;其中,检测模块根据列表获取模块发布的队列变动消息,使列表获取模块为列表加锁或使列表返回处理模块。
在该技术方案中,本实施例中,利用编程软件的程序块,就可以实现资源共享。例如,基于Wait/Notify的线程等待唤醒机制在效率上会高于轮询阻塞,只是需要将Wait/Notify能力由单机单进程扩展到分布式环境下的多线程。这样就要求集群中需要加锁的临界资源进行共享,并遵从统一的共识算法,从而达到提高访问效率的目的。具体地,通过列表获取模块对数据库中的列表进行排队加锁,所有的记账单据在分布式队列中排队取锁,队列会发生三种变化:取锁后排队入列;完成一个操作任务后释放出列;单据超时出列,这三种队列变动可通过列表获取模块发布消息,然后通过处理模块获取队列变动消息,也就是,多进程(微服务)+多线程(多请求)订阅队列变动通知,取锁线程等待不超时的情况下进行碰撞检测。检测模块在进行完检测之后,使单据列表加锁,或使单据出列继续等待,从而提高了访问效率。
另外,本发明提供的技术方案还可以具有如下附加技术特征:
上述技术方案中,列表获取模块包括:加锁单元,适于对列表排队加锁,并使加锁后的列表排队入列;获取单元,与加锁单元信号连接,适于获取未进入排队的列表;发布单元,与获取单元信号连接,适于发布获取单元获取的未进入排队的列表的消息;其中,处理模块订阅发布单元发布的通知消息,发布单元发布排队入列的列表的消息、释放锁出列的列表的消息。
在该技术方案中,通过加锁单元为进入排队的列表加锁,并入列,发布单元发布入列消息,可以节省后续对此列表的访问时间。获取单元获取未进入排队的列表,并通过发布单元发布入列消息和出列消息,其中出列消息包括超时出列和释放锁出列。可以使出列的列表重新进入排队,不至于发生访问拥堵,以提高访问效率。
上述任一技术方案中,处理模块包括:订阅单元,与发布单元信号连接,适于订阅发布单元发布的通知消息;第一超时判断单元,与订阅单元信号连接,适于判断订阅单元订阅的通知消息中的列表是否超时;其中,检测模块获取未超时的列表,发布单元获取并发布超时出列的列表的消息。
在该技术方案中,通过订阅单元订阅入列消息和出列消息,并通过第一超时判断单元判断出列消息中包含的列表是否存在超时出列的列表,如果是,则重新等待,如果不是,则进入排队,从而区分处理,可以进一步提高访问效率。
上述任一技术方案中,检测模块包括:遍历单元,与第一超时判断单元信号连接,适于遍历当前列表之前不超时的全部列表;第二超时判断单元,与遍历单元信号连接,适于判断遍历到的每个列表是否超时;删除单元,与第二超时判断单元和发布单元分别信号连接,适于删除超时的列表,使超时的列表出列,且发布单元获取并发布删除单元删除的超时出列的列表的消息;交叉判断单元,与第二超时判断单元和加锁单元分别信号连接,适于判断当前不超时的列表与遍历到的每个列表的产品是否交叉重叠,并输出判断结果;其中,加锁单元对交叉判断单元输出为否的判断结果的列表加锁,交叉判断单元输出为否的判断结果的列表返回处理模块。
在该技术方案中,通过遍历单元遍历排在当前列表前方的单据列表,若当前列表与前面的所有单据列表的产品不交叉,则可直接给锁,否则等待直至被唤醒重复进出处理模块进行处理。具体地,遍历单元对不超时的列表进行遍历操作,并通过第二超时判断单元再次判断遍历到的每个列表是否超时,若判定超时,则通过删除单元将该列表删除,并使删除的列表进入发布单元发布超时出列消息。若判定不超时,则通过交叉判断单元继续判断是否有产品交叉,若判断没有交叉,则直接通过加锁单元给列表加锁,若判断有产品交叉,则判定是否线程超时,若判定有线程超时,则不加锁,并使该列表进入排队状态,若判定线程不超时,则进入处理模块继续等待,减少了拥堵,提高了效率。
为实现本发明的第二目的,本发明的实施例提供了一种数据库访问方法,采用任一实施例中的数据库访问系统,数据库访问方法包括如下步骤:多个列表排队取锁,并发布队列变动消息;获取队列变动消息,并判断队列变动消息中的列表是否超时;当判定列表不超时,则对当前列表与当前列表之前的全部列表进行碰撞检测,以使当前列表加锁或进入排队等待状态。
在该技术方案中,通过排队获得锁,能够避免在一定时间内发生多个访问请求而发生拥堵,因此能够节省访问时间,集群中需要加锁的临界资源进行共享,并遵从统一的共识算法,从而达到提高访问效率的目的。
上述任一技术方案中,多个列表排队取锁,并发布队列变动消息的步骤包括:对列表排队加锁,并使加锁后的列表排队入列;获取未进入排队的列表;发布未进入排队的列表的消息。
在该技术方案中,进入排队的列表加锁,并入列,并发布入列消息,可以节省后续对此列表的访问时间。然后获取未进入排队的列表,并发布入列消息和出列消息,其中出列消息包括超时出列和释放锁出列。可以使出列的列表重新进入排队,不至于发生访问拥堵,以提高访问效率。
上述任一技术方案中,当判定列表不超时,则对当前列表与当前列表之前的全部列表进行碰撞检测,以使当前列表加锁或进入排队等待状态的步骤包括:获取列表队列;遍历当前列表之前不超时的全部列表;判断遍历到的每个列表是否超时;删除超时的列表,使超时的列表出列,且发布超时出列的列表的消息;判断不超时的列表与遍历到的每个列表的产品是否交叉重叠,并输出判断结果;根据判断结果使当前列表加锁或进入排队等待状态。
在该技术方案中,通过在获取列表队列之后再遍历之前不超时的全部列表,不会发生遗漏,能够准确定位,且通过使超时的列表出列,重新排队,减少了拥堵的发生。通过判断列表中所含的产品是否交叉重叠,能够提高效率,减少等待时间。
上述任一技术方案中,根据判断结果使当前列表加锁或进入排队等待状态的步骤包括:若判定产品没有交叉重叠,则列表得到锁;若判定产品交叉重叠,则判断线程是否超时;若判定线程未超时,则继续等待;若判定线程超时,则列表未得到锁。
在该技术方案中,通过排在当前列表前方的单据列表,若当前列表与前面的所有单据列表的产品不交叉,则可直接给锁,否则等待直至被唤醒。具体地,对不超时的列表进行遍历操作,并再次判断遍历到的每个列表是否超时,若判定超时,则将该列表删除,并发布超时出列消息。若判定不超时,则继续判断是否有产品交叉,若判断没有交叉,则直接给列表加锁,若判断有产品交叉,则判定是否线程超时,若判定有线程超时,则不加锁,并使该列表进入排队状态,若判定线程不超时,则继续等待,进一步提高了对数据库进行访问的效率,节省了访问时间。
为实现本发明的第三目的,本发明的实施例提供了一种数据库访问装置,包括:存储器,存储有计算机程序;处理器,执行计算机程序;其中,处理器在执行计算机程序时,实现任一实施例中的数据库访问方法的步骤。
本发明的实施例提供的数据库访问装置实现如本发明任一实施例的数据库访问方法的步骤,因此其具有本发明任一实施例的数据库访问方法的有益效果。
为实现本发明的第四目的,本发明的实施例提供了一种可读存储介质,包括:计算机可读存储介质存储有计算机程序,计算机程序被执行时,实现如本发明任一实施例的数据库访问方法的步骤。
本发明的实施例提供的可读存储介质实现如本发明任一实施例的数据库访问方法的步骤,因此其具有本发明任一实施例的数据库访问方法的有益效果。
本发明的附加方面和优点将在下面的描述部分中变得明显,或通过本发明的实践了解到。
附图说明
图1为相关技术中数据库访问流程示意图;
图2为本发明一个实施例中数据库访问系统的组成示意图;
图3为本发明一个实施例中数据库访问系统的列表获取模块的组成示意图;
图4为本发明一个实施例中数据库访问系统的处理模块的组成示意图;
图5为本发明一个实施例中数据库访问系统的检测模块的组成示意图;
图6为本发明一个实施例中数据库访问方法的流程图之一;
图7为本发明一个实施例中数据库访问方法的流程图之二;
图8为本发明一个实施例中数据库访问方法的流程图之二;
图9为本发明一个实施例中数据库访问方法的流程图之二;
图10为本发明一个实施例中数据库访问方法的流程图之五;
图11为本发明一个实施例中数据库访问装置的组成示意图;
图12为本发明一个实施例中数据库访问方法的应用结果的示意图之一;
图13为本发明一个实施例中数据库访问方法的应用结果的示意图之二。
其中,附图中的图2至图11中的附图标记与部件名称之间的对应关系为:
100:数据库访问系统,110:列表获取模块,112:加锁单元,114:获取单元,116:发布单元,120:处理模块,122:订阅单元,124:第一超时判断单元,130:检测模块,132:遍历单元,134:第二超时判断单元,136:删除单元,138:交叉判断单元,200:数据库访问装置,210:存储器,220:处理器。
具体实施方式
为了能够更清楚地理解本发明的上述目的、特征和优点,下面结合附图和具体实施方式对本发明进行进一步的详细描述。需要说明的是,在不冲突的情况下,本申请的实施例及实施例中的特征可以相互组合。
在下面的描述中阐述了很多具体细节以便于充分理解本发明,但是,本发明还可以采用其他不同于在此描述的其他方式来实施,因此,本发明的保护范围并不受下面公开的具体实施例的限制。
如图1所示,在相关技术中,对数据库的访问,多数现有的技术实现是利用数据库(Not Only SQL,简称Nosql)的排他行锁来控制,当把单据或订单作为一个整体来记账时,需要同时获取多个商品的行锁才能完成记账,各记账线程靠轮询(失败重试)的方式取多锁,导致性能和吞吐量不高。更有甚者,是对每一次库存操作都加整体排他锁则更为低效。
可见,相关技术中存在以下技术问题:
1.同时获取多个商品锁,任一商品锁获取超时或失败,都会造成整体请求的失败,失败几率增大。
2.失败后等待一个较短间隔后重试会加剧对商品锁的争用,整体请求的时间间隔也变得更长。
3.由于单个请求的加锁性能不高,也会影响到吞吐率的提升。
下面参照图2至图13中的附图描述本发明一些实施例的数据库访问系统、方法、装置和计算机可读存储介质。
实施例1
如图2所示,本实施例提供了一种数据库访问系统100,用于访问数据库,数据库访问系统100包括:列表获取模块110、处理模块120和检测模块130,列表获取模块110适于对数据库中的列表进行排队加锁,并发布队列变动消息;处理模块120与列表获取模块110信号连接,适于订阅列表获取模块110发布的队列变动消息;检测模块130,与处理模块120和列表获取模块110分别信号连接;其中,检测模块130根据列表获取模块110发布的队列变动消息,使列表获取模块110为列表加锁或使列表返回处理模块120。
本实施例中,利用编程软件的程序块,通过在特定的程序块执行wait()与notify/notifyAll(),就可以实现资源共享。wait()与notify/notifyAll()是Object类的方法,在执行两个方法时,要先获得锁。基于Wait/Notify的线程等待唤醒机制在效率上会高于轮询阻塞,只是需要将Wait/Notify能力由单机单进程扩展到分布式环境下的多线程。这样就要求集群中需要加锁的临界资源进行共享,并遵从统一的共识算法,从而达到提高访问效率的目的。具体地,通过列表获取模块110对数据库中的列表进行排队加锁,所有的记账单据在分布式队列中排队取锁,队列会发生三种变化:取锁后排队入列;完成一个操作任务后释放出列;单据超时出列,这三种队列变动可通过列表获取模块110发布消息,然后通过处理模块120获取队列变动消息,也就是,多进程(微服务)+多线程(多请求)订阅队列变动通知,取锁线程等待不超时的情况下进行碰撞检测。检测模块130在进行完检测之后,使单据列表加锁,或使单据出列继续等待,从而提高了访问效率。
实施例2
如图2所示,本实施例提供了一种数据库访问系统100,除上述实施例的技术特征之外,本实施例还包括以下技术特征。
列表获取模块110包括:加锁单元112、获取单元114和发布单元116,加锁单元112适于对列表排队加锁,并使加锁后的列表排队入列;获取单元114,与加锁单元112信号连接,适于获取未进入排队的列表;发布单元116,与获取单元114信号连接,适于发布获取单元114获取的未进入排队的列表的消息;其中,处理模块120订阅发布单元116发布的通知消息,发布单元116发布排队入列的列表的消息、释放锁出列的列表的消息。
本实施例中,通过加锁单元112为进入排队的列表加锁,并入列,发布单元116发布入列消息,可以节省后续对此列表的访问时间。获取单元114获取未进入排队的列表,并通过发布单元116发布入列消息和出列消息,其中出列消息包括超时出列和释放锁出列。可以使出列的列表重新进入排队,不至于发生访问拥堵,以提高访问效率。
实施例3
如图3所示,本实施例提供了一种数据库访问系统100,除上述实施例的技术特征之外,本实施例还包括以下技术特征。
处理模块120包括:订阅单元122和第一超时判断单元124,订阅单元122与发布单元116信号连接,适于订阅发布单元116发布的通知消息;第一超时判断单元124,与订阅单元122信号连接,适于判断订阅单元122订阅的通知消息中的列表是否超时;其中,检测模块130获取未超时的列表,发布单元116获取并发布超时出列的列表的消息。
本实施例中,通过订阅单元122订阅入列消息和出列消息,并通过第一超时判断单元124判断出列消息中包含的列表是否存在超时出列的列表,如果是,则重新等待,如果不是,则进入排队,从而区分处理,可以进一步提高访问效率。
实施例4
如图4所示,本实施例提供了一种数据库访问系统100,除上述实施例的技术特征之外,本实施例还包括以下技术特征。
检测模块130包括:遍历单元132、第二超时判断单元134、删除单元136和交叉判断单元138,遍历单元132,与第一超时判断单元124信号连接,适于遍历当前列表之前不超时的全部列表;第二超时判断单元134与遍历单元132信号连接,适于判断遍历到的每个列表是否超时;删除单元136,与第二超时判断单元134和发布单元116分别信号连接,适于删除超时的列表,使超时的列表出列,且发布单元116获取并发布删除单元136删除的超时出列的列表的消息;交叉判断单元138,与第二超时判断单元134和加锁单元112分别信号连接,适于判断当前不超时的列表与遍历到的每个列表的产品是否交叉重叠,并输出判断结果;其中,加锁单元112对交叉判断单元138输出为否的判断结果的列表加锁,交叉判断单元138输出为否的判断结果的列表返回处理模块120。
本实施例中,通过遍历单元132遍历排在当前列表前方的单据列表,若当前列表与前面的所有单据列表的产品不交叉,则可直接给锁,否则等待直至被唤醒重复进出处理模块120进行处理。具体地,遍历单元132对不超时的列表进行遍历操作,并通过第二超时判断单元134再次判断遍历到的每个列表是否超时,若判定超时,则通过删除单元136将该列表删除,并使删除的列表进入发布单元116发布超时出列消息。若判定不超时,则通过交叉判断单元138继续判断是否有产品交叉,若判断没有交叉,则直接通过加锁单元112给列表加锁,若判断有产品交叉,则判定是否线程超时,若判定有线程超时,则不加锁,并使该列表进入排队状态,若判定线程不超时,则进入处理模块120继续等待。
实施例5
如图6所示,本实施例提供了一种数据库访问方法,采用数据库访问系统,数据库访问方法包括:
步骤S102,多个列表排队取锁,并发布队列变动消息。
步骤S104,获取队列变动消息,并判断队列变动消息中的列表是否超时。
步骤S106,当判定列表不超时,则对当前列表与当前列表之前的全部列表进行碰撞检测,以使当前列表加锁或进入排队等待状态。
本实施例中,通过排队获得锁,能够避免在一定时间内发生多个访问请求而发生拥堵,因此能够节省访问时间,集群中需要加锁的临界资源进行共享,并遵从统一的共识算法,从而达到提高访问效率的目的。
实施例6
如图7所示,本实施例提供了一种数据库访问方法,除上述实施例的技术特征之外,本实施例还包括以下技术特征。
多个列表排队取锁,并发布队列变动消息的步骤包括:
步骤S202,对列表排队加锁,并使加锁后的列表排队入列。
步骤S204,获取未进入排队的列表。
步骤S206,发布未进入排队的列表的消息。
本实施例中,进入排队的列表加锁,并入列,并发布入列消息,可以节省后续对此列表的访问时间。然后获取未进入排队的列表,并发布入列消息和出列消息,其中出列消息包括超时出列和释放锁出列。可以使出列的列表重新进入排队,不至于发生访问拥堵,以提高访问效率。
实施例7
如图8所示,本实施例提供了一种数据库访问方法,除上述实施例的技术特征之外,本实施例还包括以下技术特征。
当判定列表不超时,则对当前列表与当前列表之前的全部列表进行碰撞检测,以使当前列表加锁或进入排队等待状态的步骤包括:
步骤S302,获取列表队列。
步骤S304,遍历当前列表之前不超时的全部列表。
步骤S306,判断遍历到的每个列表是否超时。
步骤S308,若判定超时,则删除超时的列表,使超时的列表出列,且发布超时出列的列表的消息。
步骤S310,若判定不超时,则判断当前列表与遍历到的每个列表的产品是否交叉重叠,并输出判断结果。
步骤S320,根据判断结果使当前列表加锁或进入排队等待状态。
本实施例中,通过在获取列表队列之后再遍历之前不超时的全部列表,不会发生遗漏,能够准确定位,且通过使超时的列表出列,重新排队,减少了拥堵的发生。通过判断列表中所含的产品是否交叉重叠,能够提高效率,减少等待时间。
实施例8
如图9所示,本实施例提供了一种数据库访问方法,除上述实施例的技术特征之外,本实施例还包括以下技术特征。
根据判断结果使当前列表加锁或进入排队等待状态的步骤包括:
步骤S312,若判定产品没有交叉重叠,则列表得到锁。
步骤S314,若判定产品交叉重叠,则判断线程是否超时。
步骤S316,若判定线程未超时,则继续等待。
步骤S318,若判定线程超时,则列表未得到锁。
本实施例中,通过排在当前列表前方的单据列表,若当前列表与前面的所有单据列表的产品不交叉,则可直接给锁,否则等待直至被唤醒。具体地,对不超时的列表进行遍历操作,并再次判断遍历到的每个列表是否超时,若判定超时,则将该列表删除,并发布超时出列消息。若判定不超时,则继续判断是否有产品交叉,若判断没有交叉,则直接给列表加锁,若判断有产品交叉,则判定是否线程超时,若判定有线程超时,则不加锁,并使该列表进入排队状态,若判定线程不超时,则继续等待,进一步提高了对数据库进行访问的效率,节省了访问时间。
本发明可应用在面向小微企业进销存财务管理的产品中,或应用在库存量的预占、实占、存货成本的核算等场景中,以较高的加锁性能同步控制了多个库存领域微服务的分布式并发处理,最终达到为了提高访问效率的目的。
通过本发明提供的数据库访问方法对数据库进行访问,具体的操作方式可参考图12和图13,其中,图12和图13为操作方式显示结构的拆分图。
①单进程
②操作员并发下单的操作员:10
③每人每天下单量:200
④每单下单间隔:0秒
⑤单据行:随机1到200行
⑥商品总数:300
⑦每单处理时长:300毫秒
⑧取锁的超时时间:5秒
测试结果:
失败率:0
取锁平均等待时间:2.2秒
上述结果受网络时延,以及Redis响应时间的影响较大。早晚带宽和Redis占用率较为空闲时则会有较高的效率。
下单间隔改为:1秒
测试结果:
失败率:0
取锁平均等待时间:1.4秒
下单间隔改为:3秒,6秒
测试结果:
失败率:0
取锁平均等待时间:20毫秒左右。
实施例9
如图11所示,本实施例提供了一种数据库访问装置200,包括:存储器210和处理器220,存储器210存储有计算机程序;处理器220执行计算机程序;其中,处理器220在执行计算机程序时,实现任一实施例中数据库访问方法的步骤。
本发明的实施例提供的数据库访问装置实现如本发明任一实施例的数据库访问方法的步骤,因此其具有本发明任一实施例的数据库访问方法的有益效果。
实施例10
本实施例提供了一种计算机可读存储介质,包括:所述计算机可读存储介质存储有计算机程序,所述计算机程序被执行时,实现任一实施例中数据库访问方法的步骤。
本发明的实施例提供的可读存储介质实现如本发明任一实施例的数据库访问方法的步骤,因此其具有本发明任一实施例的数据库访问方法的有益效果。
综上,本发明实施例的有益效果为:以较高的加锁性能同步控制了多个库存领域微服务的分布式并发处理,提高了访问效率。
在本说明书的描述中,术语“一个实施例”、“一些实施例”、“具体实施例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不一定指的是相同的实施例或实例。而且,描述的具体特征、结构、材料或特点可以在任何的一个或多个实施例或示例中以合适的方式结合。
以上仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

Claims (7)

1.一种数据库访问系统,用于访问数据库,其特征在于,所述数据库访问系统包括:
列表获取模块,适于对所述数据库中的列表进行排队加锁,并发布队列变动消息;
处理模块,与所述列表获取模块信号连接,适于订阅所述列表获取模块发布的所述队列变动消息;
检测模块,与所述处理模块和列表获取模块分别信号连接;
其中,所述检测模块根据所述列表获取模块发布的所述队列变动消息,使所述列表获取模块为所述列表加锁或使所述列表返回所述处理模块;
所述列表获取模块包括:
加锁单元,适于对所述列表排队加锁,并使加锁后的所述列表排队入列;
获取单元,与所述加锁单元信号连接,适于获取未进入排队的所述列表;
发布单元,与所述获取单元信号连接,适于发布所述获取单元获取的所述未进入排队的所述列表的通知消息;
其中,所述处理模块订阅所述发布单元发布的所述通知消息,所述发布单元发布排队入列的所述列表的消息、释放锁出列的所述列表的消息;
所述处理模块包括:
订阅单元,与所述发布单元信号连接,适于订阅所述发布单元发布的所述通知消息;
第一超时判断单元,与所述订阅单元信号连接,适于判断所述订阅单元订阅的所述通知消息中的所述列表是否超时;
其中,所述检测模块获取未超时的所述列表,所述发布单元获取并发布超时出列的所述列表的消息;
当判定所述列表不超时,则对当前列表与所述当前列表之前的全部列表进行碰撞检测,以使所述当前列表加锁或进入排队等待状态。
2.根据权利要求1所述的数据库访问系统,其特征在于,所述检测模块包括:
遍历单元,与所述第一超时判断单元信号连接,适于遍历当前列表之前不超时的全部所述列表;
第二超时判断单元,与所述遍历单元信号连接,适于对遍历到的每个所述列表进行超时判断;
删除单元,与所述第二超时判断单元和发布单元分别信号连接,适于删除超时的所述列表,使超时的所述列表出列,且所述发布单元获取并发布所述删除单元删除的超时出列的所述列表的消息;
交叉判断单元,与所述第二超时判断单元和所述加锁单元分别信号连接,适于判断当前不超时的所述列表与遍历到的每个所述列表的产品是否交叉重叠,并输出判断结果;
其中,所述加锁单元对所述交叉判断单元输出为否的判断结果的所述列表加锁,所述交叉判断单元输出为否的判断结果的所述列表返回所述处理模块。
3.一种数据库访问方法,其特征在于,采用权利要求1或2所述的数据库访问系统,所述数据库访问方法包括如下步骤:
多个所述列表排队取锁,并发布队列变动消息;
获取所述队列变动消息,并判断所述队列变动消息中的所述列表是否超时;
当判定所述列表不超时,则对当前列表与所述当前列表之前的全部列表进行碰撞检测,以使所述当前列表加锁或进入排队等待状态;
所述多个所述列表排队取锁,并发布队列变动消息的步骤包括:
对列表排队加锁,并使加锁后的所述列表排队入列;获取未进入排队的所述列表;
发布所述未进入排队的所述列表的通知消息;
订阅所述通知消息,发布排队入列的所述列表的消息、释放锁出列的所述列表的消息;
获取未超时的所述列表;
获取并发布超时出列的所述列表的消息;
发布所述未进入排队的所述列表的消息。
4.根据权利要求3所述的数据库访问方法,其特征在于,所述当判定所述列表不超时,则对当前列表与所述当前列表之前的全部列表进行碰撞检测,以使所述当前列表加锁或进入排队等待状态的步骤包括:
获取列表队列;
遍历当前列表之前不超时的全部所述列表;
对遍历到的每个所述列表进行超时判断;
删除超时的所述列表,使超时的所述列表出列,且发布超时出列的所述列表的消息;
判断不超时的所述列表与遍历到的每个所述列表的产品是否交叉重叠,并输出判断结果;
根据所述判断结果使所述当前列表加锁或进入排队等待状态。
5.根据权利要求4所述的数据库访问方法,其特征在于,所述根据所述判断结果使所述当前列表加锁或进入排队等待状态的步骤包括:
若判定产品没有交叉重叠,则所述列表得到锁;
若判定产品交叉重叠,则判断线程是否超时;
若判定线程未超时,则继续等待;
若判定线程超时,则所述列表未得到锁。
6.一种数据库访问装置,其特征在于,包括:
存储器,存储有计算机程序;
处理器,执行所述计算机程序;
其中,所述处理器在执行所述计算机程序时,实现如权利要求3至5中任一项所述的数据库访问方法的步骤。
7.一种计算机可读存储介质,其特征在于,包括:
所述计算机可读存储介质存储有计算机程序,所述计算机程序被执行时,实现如权利要求3至5中任一项所述的数据库访问方法的步骤。
CN202010186971.5A 2020-03-17 2020-03-17 数据库访问系统、方法、装置和计算机可读存储介质 Active CN111400053B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010186971.5A CN111400053B (zh) 2020-03-17 2020-03-17 数据库访问系统、方法、装置和计算机可读存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010186971.5A CN111400053B (zh) 2020-03-17 2020-03-17 数据库访问系统、方法、装置和计算机可读存储介质

Publications (2)

Publication Number Publication Date
CN111400053A CN111400053A (zh) 2020-07-10
CN111400053B true CN111400053B (zh) 2023-12-15

Family

ID=71432605

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010186971.5A Active CN111400053B (zh) 2020-03-17 2020-03-17 数据库访问系统、方法、装置和计算机可读存储介质

Country Status (1)

Country Link
CN (1) CN111400053B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113535362B (zh) * 2021-07-26 2023-07-28 北京计算机技术及应用研究所 一种分布式调度系统架构和微服务工作流调度方法

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1534519A (zh) * 2003-03-28 2004-10-06 请求和接收数据库改变通知的系统和方法
CN102724304A (zh) * 2012-06-06 2012-10-10 哈尔滨工程大学 订阅/发布系统中信息仓库联邦及数据同步方法
CN105630588A (zh) * 2014-11-06 2016-06-01 卓望数码技术(深圳)有限公司 一种分布式作业调度方法和系统
CN110188110A (zh) * 2019-05-30 2019-08-30 深圳前海微众银行股份有限公司 一种构建分布式锁的方法及装置

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7181482B2 (en) * 2002-08-01 2007-02-20 Oracle International Corporation Buffered message queue architecture for database management systems
US20040024771A1 (en) * 2002-08-01 2004-02-05 Oracle International Corporation Buffered message queue architecture for database management systems with transactional enqueue support

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1534519A (zh) * 2003-03-28 2004-10-06 请求和接收数据库改变通知的系统和方法
CN102724304A (zh) * 2012-06-06 2012-10-10 哈尔滨工程大学 订阅/发布系统中信息仓库联邦及数据同步方法
CN105630588A (zh) * 2014-11-06 2016-06-01 卓望数码技术(深圳)有限公司 一种分布式作业调度方法和系统
CN110188110A (zh) * 2019-05-30 2019-08-30 深圳前海微众银行股份有限公司 一种构建分布式锁的方法及装置

Also Published As

Publication number Publication date
CN111400053A (zh) 2020-07-10

Similar Documents

Publication Publication Date Title
US5881315A (en) Queue management for distributed computing environment to deliver events to interested consumers even when events are generated faster than consumers can receive
US10013278B2 (en) Methods and systems for batch processing in an on-demand service environment
US5590334A (en) Object oriented message passing system and method
JP3927539B2 (ja) ソフトウェア・キューイング・アプリケーションを監視するためのシステムおよび方法
CN111078436B (zh) 数据处理的方法、装置、设备及存储介质
CN110188110B (zh) 一种构建分布式锁的方法及装置
US8832306B2 (en) Intelligent information dissemination
US11522976B1 (en) Method, apparatus and system for subscription management
CN110889754B (zh) 提高不可透支热点账户处理效率的方法
CN111597019A (zh) 调用请求处理方法、装置、终端和计算机可读存储介质
CN111400053B (zh) 数据库访问系统、方法、装置和计算机可读存储介质
CN110955857A (zh) 一种用于高并发环境的业务处理方法及装置
CN109379305A (zh) 一种数据下发方法、装置、服务器及存储介质
US8051433B1 (en) Partially ordered queue for efficient processing of assets
CN111282263A (zh) 事件消息的处理方法、装置、电子设备及可读存储介质
CN112860414B (zh) 一种分布式系统并发控制的方法、装置、设备及存储介质
CN110222016B (zh) 一种文件处理方法及装置
CN112910683B (zh) 一种获取重点数据状态的方法及终端
US7660888B2 (en) Indicating network resource availability methods, system and program product
US7380248B1 (en) Queue alerts
CN111258775A (zh) 消息处理方法、装置、设备和存储介质
CN112613912B (zh) 高并发场景下的优惠券领取系统设计
CN111210288A (zh) 基于税控服务器的发票批量开具作业优化调度方法及系统
CN112256208B (zh) 一种离线数据包存储分析方法及装置
KR102678368B1 (ko) 마이크로서비스 아키텍처 기반 시스템 상에서 캐싱 기반 공정한 상태 잠금관리 시스템 및 방법

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