CN114064810A - 处理事务的方法和装置 - Google Patents
处理事务的方法和装置 Download PDFInfo
- Publication number
- CN114064810A CN114064810A CN202210049251.3A CN202210049251A CN114064810A CN 114064810 A CN114064810 A CN 114064810A CN 202210049251 A CN202210049251 A CN 202210049251A CN 114064810 A CN114064810 A CN 114064810A
- Authority
- CN
- China
- Prior art keywords
- database
- transaction
- statement
- node
- connection
- 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
Images
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/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
-
- 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/24—Querying
- G06F16/242—Query formulation
- G06F16/2433—Query languages
-
- 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/25—Integrating or interfacing systems involving database management systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/466—Transaction processing
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Software Systems (AREA)
- Mathematical Physics (AREA)
- Computational Linguistics (AREA)
- Computing Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本公开披露了一种处理事务的方法和装置。该方法包括:接收第一事务,第一事务为非只读事务,第一事务包括第一数据库语句和第二数据库语句,第一数据库语句和第二数据库语句分别用于对分布式数据库中的第一数据库节点和第二数据库节点进行操作;与第一数据库节点建立第一数据库连接;通过第一数据库连接向第一数据库节点发送第一数据库语句;与第二数据库节点建立第二数据库连接;通过第二数据库连接向第二数据库节点发送第二数据库语句;接收第一数据库针对第一数据库语句的反馈信息,反馈信息包括第一事务的控制信息;向第二数据库语句对应的数据库节点发送控制信息。
Description
技术领域
本公开涉及分布式数据库领域,并且更为具体地,涉及一种处理事务的方法和装置。
背景技术
分布式数据包括多个数据库节点。在处理涉及多个数据库节点的非只读事务时,现有技术会先与其中一个数据库节点建立数据库连接,然后由该数据库节点在数据库内部将该事务转发至其他数据库节点,从而在其他数据库节点进行远程事务执行。过多的远程事务执行会降低非只读事务的处理效率。
发明内容
本公开提供一种事务处理方法和装置,以提高分布式数据库中的非只读事务的处理效率。
第一方面,提供一种处理事务的方法,包括:接收第一事务,所述第一事务为非只读事务,所述第一事务包括第一数据库语句和第二数据库语句,所述第一数据库语句和所述第二数据库语句分别用于对分布式数据库中的第一数据库节点和第二数据库节点进行操作;与所述第一数据库节点建立第一数据库连接;通过所述第一数据库连接向所述第一数据库节点发送所述第一数据库语句;与所述第二数据库节点建立第二数据库连接;通过所述第二数据库连接向所述第二数据库节点发送所述第二数据库语句。
可选地,所述方法还包括:接收所述第一数据库针对所述第一数据库语句的反馈信息,所述反馈信息包括所述第一事务的控制信息;向所述第二数据库语句对应的数据库节点发送所述控制信息。
可选地,所述第一事务的控制信息包括所述第一数据库语句的执行结果和/或所述第一事务的状态。
可选地,在所述与所述第二数据库节点建立第二数据库连接之前,所述方法还包括:断开所述第一数据库连接。
可选地,所述第一事务中的数据库语句为SQL语句。
第二方面,提供一种处理事务的装置,包括:接收单元,被配置为接收第一事务,所述第一事务为非只读事务,所述第一事务包括第一数据库语句和第二数据库语句,所述第一数据库语句和所述第二数据库语句分别用于对分布式数据库中的第一数据库节点和第二数据库节点进行操作;第一连接单元,被配置为与所述第一数据库节点建立第一数据库连接;第一发送单元,被配置为通过所述第一数据库连接向所述第一数据库节点发送所述第一数据库语句;第二连接单元,被配置为与所述第二数据库节点建立第二数据库连接;第二发送单元,被配置为通过所述第二数据库连接向所述第二数据库节点发送所述第二数据库语句。
可选地,所述接收单元还被配置为:接收所述第一数据库针对所述第一数据库语句的反馈信息,所述反馈信息包括所述第一事务的控制信息;所述第二发送单元还被配置为:向所述第二数据库语句对应的数据库节点发送所述控制信息。
可选地,所述第一事务的控制信息包括所述第一数据库语句的执行结果和/或所述第一事务的状态。
可选地,在所述与所述第二数据库节点建立第二数据库连接之前,所述第一连接单元还被配置为:断开所述第一数据库连接。
可选地,所述第一事务中的数据库语句为SQL语句。
第三方面,提供一种处理事务的装置,包括存储器和处理器,所述存储器中存储有可执行代码,所述处理器被配置为执行所述可执行代码,以实现如第一方面所述的方法。
第四方面,提供一种计算机可读存储介质,其上存储有可执行代码,当所述可执行代码被执行时,能够实现如第一方面所述的方法。
第五方面,提供一种计算机程序产品,包括可执行代码,当所述可执行代码被执行时,能够实现如第一方面所述的方法。
相关技术中,如果非只读事务涉及多个数据库节点,往往只会与其中一个数据库节点建立连接。不同于相关技术,本公开实施例在处理非只读事务时,可以与多个数据库节点建立多个数据库连接,并通过该多个数据库连接将事务相关的数据库语句直接传输至该多个数据库节点。这样可以避免仅建立一个数据库连接而引起大量的远程事务执行,从而提高了非只读事务的处理效率。
另外,在本公开中可以接收第一数据库返回的第一事务的控制信息,并将该控制信息转发至第二数据库语句对应的数据库节点,以便第二数据库语句对应的数据库节点可以获知第一事务的控制信息,避免了传统的方案中,第二数据库语句对应的数据库节点需要通过远程执行的方式来获得第一事务的控制信息,有利于降低数据库中远程执行占用的开销。
附图说明
图1是相关技术提供的处理事务的流程示意图。
图2是本公开一实施例提供的处理事务的方法的流程示意图。
图3是本公开又一实施例提供的处理事务的方法的流程示意图。
图4是本公开又一实施例提供的处理事务的方法的流程示意图。
图5是本公开一实施例提供的处理事务的装置的结构示意图。
图6是本公开又一实施例提供的处理事务的装置的结构示意图。
具体实施方式
下面将结合附图,对本公开中的技术方案进行描述。为了便于理解本公开,下文先介绍本公开实施例涉及的术语。
分布式数据库
数据库是按照数据结构来组织、存储和管理数据的仓库。数据库是一个长期存储在计算机内的、有组织的、可共享的、统一管理的大量数据的集合。分布式数据库是一种结合了数据库与分布式的技术。分布式数据库将地理意义上分散,但计算机系统逻辑上属于同一个系统的各个数据库节点结合起来。
结构化查询语言
结构化查询语言(structured query language,SQL)是一种特殊的的编程语言。结构化查询语言用于存取数据以及查询、更新和管理数据库系统。
结构化查询语言是高级的非过程化编程语言,允许用户在高层数据结构上工作。它不要求用户指定对数据的存放方法,也不需要用户了解具体的数据存放方式。因此,具有完全不同底层结构的不同数据库系统,可以使用相同的结构化查询语言作为数据输入与管理的接口。结构化查询语言的语句可以嵌套,这使它具有极大的灵活性和强大的功能。
事务
事务(transaction)是针对数据库的一组操作。一个事务可以由一条或多条数据库语句组成。事务是数据库中一个不可分割的执行单元。和事务相关的语句包括开启事务(start transaction)、结束事务(end transaction)、提交事务(commit transaction)、回滚事务(rollback transaction)等。
事务需要具备ACID,即原子性(Atomicity)、一致性(consistency)、隔离性(isolation)和持久性(durability)。
原子性指一个事务中的语句需要一起提交或回滚。例如,一个用户A向用户B转账100元的事务,包括用户A的账户余额扣除100元和用户B的账户余额增加100元两个操作。上述两个操作需要都成功执行或者都不执行。
一致性指一个事务开始之前和结束之后,数据库的完整性约束没有被破坏。例如,上述转账的事务,在转账开始前用户A和用户B的账户总余额为2000元。一致性指,当该转账事务结束后,用户A和用户B的账户总余额仍然为2000元。
隔离性指多个事务并发执行的时候不会互相干扰,即一个事务内部的数据对于其他事务来说是隔离的。
持久性指一个事务完成(例如提交)后,该事务对数据库所做的操作持久地保存在数据库中,不会被回滚。
当事务需要在分布式数据库系统中完成时,该事务也可以称为分布式事务。分布式事务在处理过程中,可能需要操作位于不同数据库节点中的数据。
对于只读事务,由于事务执行过程中无需修改数据库的状态,因此,数据库的管理系统(例如数据库客户端或数据库代理)可以把只读事务的请求直接发送给对应的数据库节点。
然而,非只读事务在执行过程中,存在对数据库的数据或状态等的修改。因此,非只读事务有其特殊性。下面结合图1对非只读事务的处理过程进行简单的介绍。
图1是相关技术提供的处理事务的流程示意图。图1包括数据库管理系统110和分布式数据库120。分布式数据库120中包括3个数据库节点(数据库节点121、数据库节点122和数据库节点123)。图1示例性地示出具有三个数据库节点的分布式数据库120。实际中一个分布式数据库可以包括任意数量的数据库节点。
如图1所示,数据库管理系统110接收到事务1后,需要首先与分布式数据库120中的数据库节点建立数据库连接(或称session)。数据库连接也可以称为数据库会话。事务执行过程中,所有生成的信息都可以记录在数据库连接中。
事务1可以包括3条数据库语句(第一数据库语句、第二数据库语句和第三数据库语句)。
数据库管理系统110分析第一数据库语句的执行节点为数据库节点122。因此,在步骤S101,数据库管理系统110可以与数据库节点122建立第一数据库连接,并将事务1中的数据库语句经过第一数据库连接发送给数据库节点122。数据库管理系统110可以将事务1中的所有数据库语句(例如,第一数据库语句至第三数据库语句)同时发送给数据库节点122。也可以每执行完一条数据库语句后,再将下一条数据库语句发送给数据库节点122。
数据库节点122执行完第一数据库语句后,确定第二数据库语句应该在数据库节点121上执行。因此,在步骤S102,数据库节点122通过远程执行将第二数据库语句发送到数据库节点121上。数据库节点121执行完第二数据库语句后,还可以执行步骤S103,将第二数据库语句的执行结果,通过远程执行发送到数据库节点122上。
远程执行指待执行的数据库语句不能在当前数据库节点执行,需要转发到其他数据库节点执行的操作。例如,数据库节点122向数据库节点121转发第二数据库语句的操作,即为一次远程执行。
数据库节点122接收到第二数据库语句的执行结果后,可以执行步骤S104,通过第一数据库连接将该执行结果发送给数据库管理系统110。数据库管理系统110可以根据数据库语句的执行结果,决定下一条数据库语句的执行节点。
数据库节点122接收到第二数据库语句的执行结果后,分析第三数据库语句的执行节点为数据库节点123。在步骤S105,数据库节点122通过远程执行,将第三数据库语句发送给数据库节点123。
在步骤S106,数据库节点123通过远程执行,将第三数据库语句的执行结果发送给数据库节点122。
在步骤S107,数据库节点122将第三数据库语句的执行结果通过第一数据库连接发送给数据库管理系统110。
根据上述介绍可以看出,数据库管理系统110在管理非只读事务时,一个事务中的所有数据库语句,都需要经由与数据库管理系统110建立连接的数据库节点(例如,数据库节点122)发送给对应的执行节点(执行节点包括数据库节点122自身)。
当一个非只读事务中包含大量的数据库语句时,与管理系统110建立数据库连接的数据库节点(例如数据库节点122)需要接收所有的数据库语句,并且需要将所有非本节点执行的数据库语句通过远程执行发送给对应的执行节点。
因此,可能导致该数据库节点(例如数据库节点122)的压力过大。数据库节点承受的压力过大,可能引起数据库节点性能下降或异常,从而影响数据库系统的稳定性。即,承受压力的数据库节点(例如数据库节点122)可能由于中心化现象而成为数据库系统的性能瓶颈。
此外,分布式事务通常涉及多个数据库节点,所有需要在数据库节点122之外的节点上执行的数据库语句,都需要经过数据库节点122转发,导致远程执行。远程执行会加大数据库的开销,增加事务执行耗时,降低数据库性能。
综上所述,分布式数据库处理非只读事务时,处理效率较低。
有鉴于此,本公开实施例提供一种处理事务的方法,以提高对非只读事务的处理效率。
下面结合附图2,对本公开实施例提供的处理事务的方法进行详细描述。
图2的方法可以用于数据库的管理系统。数据库的管理系统用于管理数据库。数据库的管理系统例如可以指数据库的应用程序(例如数据库客户端)或数据库代理。图2的方法可以包括步骤S210至步骤S250。
在步骤S210,接收第一事务。第一事务可以是非只读事务。所谓非只读事务,指的是该事务的执行会导致数据库中的某个或某些数据被修改。第一事务可以包括多个数据库语句。例如,第一事务可以包括第一数据库语句和第二数据库语句。可以理解,第一事务可以包括更多数量的数据库语句,后文主要以第一数据库语句和第二数据库语句为例进行举例说明。
数据库语句是用于对数据库进行操作的一种程序语言,一般具有存取数据以及查询、更新和管理数据库的功能。每条数据库语句可以是简单语句,也可以是复合语句。
数据库语句使用的具体语言类型可以根据业务需要确定。例如,数据库语句可以使用结构化查询语言(SQL)实现。
分布式数据库中,不同的数据可能存储在不同的数据库节点上。例如,第一事务指在淘宝商城上购买一个皮包。第一事务可以包括两个操作:订单数量加一的操作和库存数量减一的操作。两个操作可以分别对应第一数据库语句和第二数据库语句。第一数据库语句可以用于执行订单数量加一的操作,第二数据库语句可以用于执行库存数量减一的操作。
对于淘宝商城,订单数据可能存储在第一数据库节点(例如,订单数据库)上,库存数据可能存储在第二数据库节点(例如,库存数据库)上。
第一数据库语句和第二数据语句可以分别对第一数据库节点和第二数据库节点进行操作。例如,分别操作第一数据库节点和第二数据库节点上的数据。
数据库管理系统接收到第一事务后,可以确定用于执行第一数据库语句和第二数据库语句的数据库节点,并分别与对应的数据库节点建立数据库连接。
数据库连接可以指物理数据库连接,也可以指数据库的会话连接。数据库管理系统对数据库的操作,都需要通过数据库连接完成。
数据库管理系统确定第一数据库语句应该在第一数据库节点上执行。因此,在步骤S220和步骤S230,与第一数据库节点建立第一数据库连接,并通过第一数据库连接向第一数据库节点发送第一数据库语句。
第一数据库节点可以存储第一数据。第一数据库语句可以用于对第一数据进行操作。例如,第一数据库语句可以删除第一数据中的记录。又如,第一数据库语句可以查询第一数据中的记录。又如,第一数据库语句可以在第一数据中增加记录。
在一些实施例中,当第一数据库节点确定接收到的第一数据库语句需要在其他数据库节点执行时,第一数据库节点可以将第一数据库语句转发给对应的数据库节点。
由于分布式数据库的数据可能产生搬迁,数据库节点内部进行数据库语句的转发,可以提升数据库的容错能力,保证数据库语句正确执行,进一步保证事务的正确执行。
例如,第一数据原本存储在第一数据库节点上,但是,数据库管理系统向第一数据库节点发送第一数据库语句时,第一数据正好被搬迁到第二数据库节点中。此时,第一数据库节点可以将第一数据库语句转发给第二数据库节点,保证第一数据库语句的执行。
在另一些实施例中,第一数据库语句可以是复合句。第一数据库语句需要在多个数据库节点中执行,第一数据库节点是多个执行第一数据库语句的数据库节点中的一个。第一数据库节点在接收到第一数据库语句后,可以将第一数据库语句转发给所有需要执行第一数据库的节点,使第一数据库语句可以正确执行。
在步骤S240至步骤S250,与第二数据库节点建立第二数据库连接,并通过第二数据库连接向第二数据库节点发送第二数据库语句。
数据库管理系统与第二数据库节点的交互,与数据库管理系统与第一数据库节点的交互相似,具体描述参见步骤S220指步骤S230部分,此处不再详述。
应理解,本实施例中使用第一数据库节点和第二数据库节点,仅为了使方案更加清楚。分布式数据库中可以包含任意数量的数据库节点。第一数据库节点和第二数据库节点可以指分布式数据库中的任意节点。第一数据库节点和第二数据库节点可以是两个不同的数据库节点,也可以是同一个数据库节点。
本公开提供的处理事务的方法,在处理非只读事务时,可以与多个数据库节点建立连接。事务的数据库语句在执行过程中,无需全部发送给同一个数据库节点。因此,该方法减少了数据库内部远程执行的次数,有效地提升了对非只读事务的处理效率。
此外,由于数据库语句无需经过某一个特定的数据库节点(例如,与数据库管理系统建立连接的数据库节点)转发,因此,缓解了由于某个数据库节点压力过大,使整个数据库产生性能瓶颈的问题。
在一些实施例中,在步骤S240之前,如图3所示,本公开实施例提供的处理事务的方法还可以包括步骤S310和步骤S320。
在步骤S310和步骤S320,接收第一数据库针对第一数据库语句的反馈信息,反馈信息包括所述第一事务的控制信息。向第二数据库语句对应的数据库节点发送控制信息。
反馈信息可以包括第一事务的控制信息。第一事务的控制信息用于控制第一事务的执行过程。第一事务的控制信息可以包括第一事务的状态。
事务的状态可以指事务当前的执行状态,例如活动状态、部分提交状态、失败状态、提交状态或中止状态。
活动状态指事务在执行时的状态。部分提交状态指事务中最后一条数据库语句执行完成后的状态。失败状态指事务不能正常执行的状态。提交状态指事务在部分提交后,最后一条信息写入到数据库中后的状态。提交状态完成后,一个事务即成功完成。中止状态指事务回滚,并且数据库已经恢复到事务开始执行前的状态。
事务的状态信息还可以指事务中的数据库语句在执行过程中产生的状态信息。数据库语句在执行过程中可能产生很多的状态信息。状态信息可以包括时区信息、编码信息等。状态信息还可以包括数据库语句在执行过程中定义的变量。
一条数据库语句执行产生的状态信息可能会影响下一条数据库语句的执行。例如,第一数据库语句执行后,生成的状态信息包括时区信息。该时区信息用于确定第一事务执行过程中使用的具体时区(例如使用中国标准时间(china standard time,CST)作为执行时区)。第一事务中后续的数据库语句,在执行的过程中,都需要根据前面的数据库语句执行后确定的时区(例如CST)作为执行时区,完成数据库语句的对应操作。
又如,第一数据库语句执行完成后,产生的状态信息包括编码信息,该编码信息确定第一事务使用UTF-8编码。第一事务后续的数据库语句(例如第二数据库语句)都需要使用UTF-8编码。
第一事务的控制信息还可以包括第一数据库语句的执行结果。数据库管理系统可以根据第一数据库语句的执行结果确定第一事务的当前状态,并根据第一事务的当前状态确定下一步应执行的操作。
例如,当第一数据库语句执行失败后,第一事务需要进入中止状态。第一事务进入中止状态后,可以执行中止相关的操作,例如回滚。
又如,当第一数据库语句执行成功后,第一事务继续正常执行。数据库管理系统可以正常分析下一条待执行的数据库语句(例如第二数据库语句),确定执行该数据库语句的数据库节点,并将该语句直接发送给该数据库节点。
第一事务的控制信息还可以包括第一事务的连接信息。第一事务的连接信息可以指第一事务执行过程中,所有建立过的连接的信息。
例如,第一事务执行过程中,分别与第一数据库节点建立了第一数据库连接,与第二数据库节点建立了第二数据库连接。此时,连接信息中可以记录上述第一数据库连接和第二数据库连接的信息。
记录事务的连接信息,可以帮助事务在进行状态更改时,快速定位到需要执行的所有数据库节点。
例如,当第一事务需要回滚或提交时,第一事务的连接信息中记录了第一事务执行过程中建立的所有连接信息。数据库管理系统根据第一事务的连接信息,可以快速定位到所有执行过第一事务的数据库节点,使所有执行过第一事务的数据库节点可以执行相同的操作(例如,提交或回滚),以保证第一事务的原子性。
在本公开实施例中,数据库的管理系统可以接收第一数据库返回的第一事务的控制信息,并将该控制信息转发至第二数据库语句对应的数据库节点,以便第二数据库语句对应的数据库节点可以获知第一事务的控制信息,避免了传统的方案中,第二数据库语句对应的数据库节点需要通过远程执行的方式来获得第一事务的控制信息,有利于降低数据库中远程执行占用的开销。
在一些实施例中,可以将第一事务的控制信息存储在第一数据库节点本地或临时表中。当数据库管理系统或其他数据库节点需要第一事务的控制信息时,可以通过远程访问的方式从第一数据库节点中获取第一事务的控制信息。
当第一事务的控制信息的数据量非常大(例如,第一事务的控制信息有1G)时,将第一事务的控制信息保存在数据库节点或临时表中,可以有效节约传输第一事务的控制信息所需的时间,从而进一步提升处理事务的效率。
本实施例中的第一数据库节点和第一数据库语句仅为了描述方便。第一数据库节点可以是数据库中任意一个节点。第一数据库语句可以指第一事务中的任意一条数据库语句。
在一些实施例中,在与第二数据库节点建立第二数据库连接之前,可以先断开第一数据库连接。
在数据库中,由于数据库管理系统与数据库进行交互,都需要经过数据库连接完成。因此,数据库连接是非常重要的资源。
本公开实施例在第一事务执行的过程中,数据库管理系统与据库节点完成交互后,即断开与该数据库节点的连接,可以提高数据库连接资源的利用率。
图4是本公开一实施例提供的处理事务的方法示意图。下面结合图4,以一个具体的实施例介绍本公开提供的处理事务的方法。
图4包括数据库管理系统410和分布式数据库420。分布式数据库420包括n个数据库节点(数据库节点421至数据库节点42n)。
在本实施例中,数据库管理系统410可以接收第一事务,第一事务可以用于处理分布式数据库420中存储的数据。
第一事务可以包括n个数据库语句,例如,第一数据库语句至第n数据库语句。数据库语句可以使用SQL语言。为了便于描述,本实施例中,将第一数据库语句至第n数据库语句称为sql1至sqln。
每条数据库语句的具体执行节点可以根据实际需要选择。例如,sql1至sqln都可以在同一个数据库节点(例如数据库节点421)上执行。又如,sql1至sqln可以分别在不同的数据库节点上执行。又如,sql1和sql3在同一个数据库节点上执行,剩下的数据库语句在不同的数据库节点上执行。
数据库管理系统410接收到第一事务后,分析第一事务中的数据库语句应该执行的数据库节点。例如,数据库管理系统410分析到sql1应该在数据库节点422上执行。
在步骤S401,数据库管理系统410与数据库节点422建立第一数据库连接,并将sql1发送给数据库节点422。
在一些实施例中,数据库节点422在执行sql1时,可能需要第一事务的控制信息。数据库节点422可以通过多种方式获取当前第一事务的控制信息。
例如,数据库管理系统410在向数据库节点422发送sql1时,可以同时将第一事务的控制信息发送给数据库节点422。
又如,第一事务的控制信息可以存储在某个数据库节点(例如数据库节点421)或临时表中。数据库节点422需要第一事务的控制信息时,可以远程获取。
在步骤S402,数据库节点422执行完sql1后,可以向数据库管理系统410发送第一反馈信息。第一反馈信息可以包括第一事务的控制信息。第一事务的控制信息可以包括sql1的执行结果和第一事务的状态。
第一反馈信息中第一事务的控制信息,可以是在数据库节点422执行sql1前获取的第一事务的控制信息的基础上的增量或全量控制信息。
在步骤S403,数据库管理系统410收到数据库节点422的第一反馈信息后,可以断开第一数据库连接,以提高数据库连接的利用效率。
数据库管理系统410根据第一反馈信息,判断sql2对应的数据库节点为数据库节点421。
在步骤S404,数据库管理系统410与数据库节点421建立第二数据库连接,并将sql2发送给数据库节点421。
在步骤S405,数据库节点421向数据库管理系统410发送第二反馈信息。
数据库节点421执行sql2后,可以对本地生成的第一事务的状态数据量的数据量进行判断。当判断出第一事务的状态数据的数据量较大(例如大于某一阈值)时,第二反馈信息中可以不再发送第一事务的状态,而仅发送sql2的执行结果。此时,数据库节点421将第一事务的状态保存在本地。
在步骤S406,数据库管理系统410收到第二反馈信息后,断开第二数据库连接。
第一事务的其余数据库语句的执行过程与前述步骤相似,不再赘述。
前面结合图1至图4介绍了本公开的方法实施例。下面结合图5至图6介绍本公开的装置实施例。应理解,方法实施例的描述与装置实施例的描述相互对应。因此,装置实施例中未详述的部分,可以参见前文中方法实施例中的介绍。
图5是本公开一实施例提供的处理事务的装置的示意性结构图。图5所示的处理事务的装置可以包括接收单元510、第一连接单元520、第一发送单元530、第二连接单元540和第二发送单元550。
接收单元510可以被配置为接收第一事务,所述第一事务为非只读事务,所述第一事务包括第一数据库语句和第二数据库语句,所述第一数据库语句和所述第二数据库语句分别用于对分布式数据库中的第一数据库节点和第二数据库节点进行操作;
第一连接单元520可以被配置为与所述第一数据库节点建立第一数据库连接;
第一发送单元530可以被配置为通过所述第一数据库连接向所述第一数据库节点发送所述第一数据库语句;
第二连接单元540可以被配置为与所述第二数据库节点建立第二数据库连接;
第二发送单元550可以被配置为通过所述第二数据库连接向所述第二数据库节点发送所述第二数据库语句。
可选地,所述接收单元510还被配置为:接收所述第一数据库针对所述第一数据库语句的反馈信息,所述反馈信息包括所述第一事务的控制信息;所述第二发送单元550:还被配置为向所述第二数据库语句对应的数据库节点发送所述控制信息。
可选地,所述第一事务的控制信息包括所述第一数据库语句的执行结果和/或所述第一事务的状态。
可选地,在所述与所述第二数据库节点建立第二数据库连接之前,所述第一连接单元还被配置为:断开所述第一数据库连接。
可选地,所述第一事务中的数据库语句为SQL语句。
图6是本公开又一实施例提供的处理事务的装置的结构示意图。该处理事务的装置600可以是用户终端或数据库代理服务器。装置600可以包括存储器610和处理器620。存储器610可用于存储可执行代码。处理器620可用于执行所述存储器610中存储的可执行代码,以实现前文描述的各个方法中的步骤。在一些实施例中,该装置600还可以包括网络接口630,处理器620与外部设备的数据交换可以通过该网络接口630实现。
应理解,在本公开的各种实施例中,上述各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本公开实施例的实施过程构成任何限定。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其他任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本公开实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(digital subscriber line,DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质(例如,软盘、硬盘、磁带)、光介质(例如数字视频光盘(digital video disc,DVD))、或者半导体介质(例如固态硬盘(solid state disk,SSD))等。
在本公开所提供的几个实施例中,应该理解到,所揭露的系统和装置,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本公开各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
以上所述,仅为本公开的具体实施方式,但本公开的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本公开揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本公开的保护范围之内。因此,本公开的保护范围应以所述权利要求的保护范围为准。
Claims (9)
1.一种处理事务的方法,包括:
接收第一事务,所述第一事务为非只读事务,所述第一事务包括第一数据库语句和第二数据库语句,所述第一数据库语句和所述第二数据库语句分别用于对分布式数据库中的第一数据库节点和第二数据库节点进行操作;
与所述第一数据库节点建立第一数据库连接;
通过所述第一数据库连接向所述第一数据库节点发送所述第一数据库语句;
与所述第二数据库节点建立第二数据库连接;
通过所述第二数据库连接向所述第二数据库节点发送所述第二数据库语句;
接收所述第一数据库针对所述第一数据库语句的反馈信息,所述反馈信息包括所述第一事务的控制信息;
向所述第二数据库语句对应的数据库节点发送所述控制信息。
2.根据权利要求1所述的方法,所述第一事务的控制信息包括所述第一数据库语句的执行结果和/或所述第一事务的状态。
3.根据权利要求1所述的方法,在所述与所述第二数据库节点建立第二数据库连接之前,所述方法还包括:
断开所述第一数据库连接。
4.根据权利要求1所述的方法,所述第一事务中的数据库语句为结构化查询语言SQL语句。
5.一种处理事务的装置,包括:
接收单元,被配置为接收第一事务,所述第一事务为非只读事务,所述第一事务包括第一数据库语句和第二数据库语句,所述第一数据库语句和所述第二数据库语句分别用于对分布式数据库中的第一数据库节点和第二数据库节点进行操作;
第一连接单元,被配置为与所述第一数据库节点建立第一数据库连接;
第一发送单元,被配置为通过所述第一数据库连接向所述第一数据库节点发送所述第一数据库语句;
第二连接单元,被配置为与所述第二数据库节点建立第二数据库连接;
第二发送单元,被配置为通过所述第二数据库连接向所述第二数据库节点发送所述第二数据库语句;
所述接收单元,还被配置为接收所述第一数据库针对所述第一数据库语句的反馈信息,所述反馈信息包括所述第一事务的控制信息;
所述第二发送单元,还被配置为向所述第二数据库语句对应的数据库节点发送所述控制信息。
6.根据权利要求5所述的装置,所述第一事务的控制信息包括所述第一数据库语句的执行结果和/或所述第一事务的状态。
7.根据权利要求5所述的装置,在所述与所述第二数据库节点建立第二数据库连接之前,所述第一连接单元还被配置为:
断开所述第一数据库连接。
8.根据权利要求5所述的装置,所述第一事务中的数据库语句为结构化查询语言SQL语句。
9.一种处理事务的装置,包括存储器和处理器,所述存储器中存储有可执行代码,所述处理器被配置为执行所述可执行代码,以实现权利要求1-4中任一项所述的方法。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210049251.3A CN114064810B (zh) | 2022-01-17 | 2022-01-17 | 处理事务的方法和装置 |
CN202210575633.XA CN114880401B (zh) | 2022-01-17 | 2022-01-17 | 处理事务的方法和装置 |
PCT/CN2023/071213 WO2023134614A1 (zh) | 2022-01-17 | 2023-01-09 | 事务的处理 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210049251.3A CN114064810B (zh) | 2022-01-17 | 2022-01-17 | 处理事务的方法和装置 |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210575633.XA Division CN114880401B (zh) | 2022-01-17 | 2022-01-17 | 处理事务的方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114064810A true CN114064810A (zh) | 2022-02-18 |
CN114064810B CN114064810B (zh) | 2022-05-03 |
Family
ID=80231165
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210049251.3A Active CN114064810B (zh) | 2022-01-17 | 2022-01-17 | 处理事务的方法和装置 |
CN202210575633.XA Active CN114880401B (zh) | 2022-01-17 | 2022-01-17 | 处理事务的方法和装置 |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210575633.XA Active CN114880401B (zh) | 2022-01-17 | 2022-01-17 | 处理事务的方法和装置 |
Country Status (2)
Country | Link |
---|---|
CN (2) | CN114064810B (zh) |
WO (1) | WO2023134614A1 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2023134614A1 (zh) * | 2022-01-17 | 2023-07-20 | 北京奥星贝斯科技有限公司 | 事务的处理 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103377236A (zh) * | 2012-04-26 | 2013-10-30 | 中兴通讯股份有限公司 | 一种用于分布式数据库的连接查询方法及系统 |
US20140172833A1 (en) * | 2012-12-19 | 2014-06-19 | James Taylor | Querying a not only structured query language (nosql) database using structured query language (sql) commands |
CN104657483A (zh) * | 2015-02-28 | 2015-05-27 | 华为技术有限公司 | 处理事务的方法、处理节点、中心节点和集群 |
CN106021544A (zh) * | 2016-05-27 | 2016-10-12 | 北京京东尚科信息技术有限公司 | 数据库分布式连接池管理方法和系统 |
CN106325978A (zh) * | 2015-06-19 | 2017-01-11 | 阿里巴巴集团控股有限公司 | 分布式事务的处理方法及装置 |
CN106547781A (zh) * | 2015-09-21 | 2017-03-29 | 南京中兴新软件有限责任公司 | 一种实现分布式事务的方法、装置及数据库服务器 |
US11115212B1 (en) * | 2016-11-15 | 2021-09-07 | Teradata Us, Inc. | Multi-processing node connection in a data store system via encrypted password |
CN113420041A (zh) * | 2020-07-27 | 2021-09-21 | 阿里巴巴集团控股有限公司 | 分布式数据库中的数据处理方法、装置、设备及介质 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20140214886A1 (en) * | 2013-01-29 | 2014-07-31 | ParElastic Corporation | Adaptive multi-client saas database |
EA027808B1 (ru) * | 2015-01-22 | 2017-09-29 | Кирилл Андреевич Сурков | Система управления базой данных |
US10235440B2 (en) * | 2015-12-21 | 2019-03-19 | Sap Se | Decentralized transaction commit protocol |
CN113220710B (zh) * | 2021-05-11 | 2024-06-04 | 北京百度网讯科技有限公司 | 数据查询方法、装置、电子设备以及存储介质 |
CN114064810B (zh) * | 2022-01-17 | 2022-05-03 | 北京奥星贝斯科技有限公司 | 处理事务的方法和装置 |
-
2022
- 2022-01-17 CN CN202210049251.3A patent/CN114064810B/zh active Active
- 2022-01-17 CN CN202210575633.XA patent/CN114880401B/zh active Active
-
2023
- 2023-01-09 WO PCT/CN2023/071213 patent/WO2023134614A1/zh unknown
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103377236A (zh) * | 2012-04-26 | 2013-10-30 | 中兴通讯股份有限公司 | 一种用于分布式数据库的连接查询方法及系统 |
US20140172833A1 (en) * | 2012-12-19 | 2014-06-19 | James Taylor | Querying a not only structured query language (nosql) database using structured query language (sql) commands |
CN104657483A (zh) * | 2015-02-28 | 2015-05-27 | 华为技术有限公司 | 处理事务的方法、处理节点、中心节点和集群 |
CN106325978A (zh) * | 2015-06-19 | 2017-01-11 | 阿里巴巴集团控股有限公司 | 分布式事务的处理方法及装置 |
CN106547781A (zh) * | 2015-09-21 | 2017-03-29 | 南京中兴新软件有限责任公司 | 一种实现分布式事务的方法、装置及数据库服务器 |
CN106021544A (zh) * | 2016-05-27 | 2016-10-12 | 北京京东尚科信息技术有限公司 | 数据库分布式连接池管理方法和系统 |
US11115212B1 (en) * | 2016-11-15 | 2021-09-07 | Teradata Us, Inc. | Multi-processing node connection in a data store system via encrypted password |
CN113420041A (zh) * | 2020-07-27 | 2021-09-21 | 阿里巴巴集团控股有限公司 | 分布式数据库中的数据处理方法、装置、设备及介质 |
Non-Patent Citations (2)
Title |
---|
RASHA S. GARGEE 等: "Multi-Stage Distributed Computing for Big Data: Evaluating Connective Topologies", 《2020 10TH ANNUAL COMPUTING AND COMMUNICATION WORKSHOP AND CONFERENCE (CCWC)》 * |
王菲菲: "基于多连接属性划分的分布式数据库查询优化算法", 《现代计算机(专业版)》 * |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2023134614A1 (zh) * | 2022-01-17 | 2023-07-20 | 北京奥星贝斯科技有限公司 | 事务的处理 |
Also Published As
Publication number | Publication date |
---|---|
WO2023134614A1 (zh) | 2023-07-20 |
CN114880401A (zh) | 2022-08-09 |
CN114880401B (zh) | 2024-08-27 |
CN114064810B (zh) | 2022-05-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7334004B2 (en) | Consistent read in a distributed database environment | |
JP4340226B2 (ja) | データ項目の使用可能バージョンの提供 | |
CN111277639B (zh) | 一种保持数据一致性的方法和装置 | |
CN106445644A (zh) | 基于改进的一阶段提交的分布式事务的处理方法和装置 | |
CN113438275B (zh) | 数据迁移方法、装置、存储介质及数据迁移设备 | |
CN110196759B (zh) | 分布式事务处理方法和装置、存储介质及电子装置 | |
CN111522631A (zh) | 分布式事务处理方法、装置、服务器及介质 | |
US20070288934A1 (en) | Apparatus, system, and method for asynchronous complex inbound transactions from sap applications using service oriented architecture | |
US7636873B2 (en) | Enhancement of assured event delivery mechanism to eliminate external XA store requirement | |
CN114064810B (zh) | 处理事务的方法和装置 | |
CN112671827A (zh) | 一种分布式事务最终一致性方法 | |
WO2021109777A1 (zh) | 一种数据文件的导入方法及装置 | |
CN112650812A (zh) | 一种数据分片存储方法、装置、计算机设备和存储介质 | |
CN112417042A (zh) | 一种处理业务请求的方法和装置 | |
CN115712670A (zh) | 一种数据源管理系统 | |
CN112068973A (zh) | 策略模式的异步信息处理方法、装置、服务器和存储介质 | |
WO2022127866A1 (zh) | 数据处理方法、装置、电子设备、存储介质 | |
CN114730314A (zh) | 一种事务提交系统、方法及相关设备 | |
CN114020368A (zh) | 基于状态机的信息处理方法、装置和存储介质 | |
US20020184198A1 (en) | Distributed-processing database-management system | |
KR20170130911A (ko) | Dds-dbms 연동 도구의 실시간 변경 데이터 발간 서비스 수행 방법 | |
US20050188380A1 (en) | Cache control device, and method and computer program for the same | |
CN113077241B (zh) | 审批处理方法、装置、设备及存储介质 | |
CN114116732B (zh) | 处理事务的方法、装置、存储装置以及服务器 | |
CN111984648A (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |