CN105574026A - 非关系型数据库支持事务的方法及装置 - Google Patents

非关系型数据库支持事务的方法及装置 Download PDF

Info

Publication number
CN105574026A
CN105574026A CN201410544896.XA CN201410544896A CN105574026A CN 105574026 A CN105574026 A CN 105574026A CN 201410544896 A CN201410544896 A CN 201410544896A CN 105574026 A CN105574026 A CN 105574026A
Authority
CN
China
Prior art keywords
relational database
data
write
affairs
database
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
Application number
CN201410544896.XA
Other languages
English (en)
Other versions
CN105574026B (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.)
Tencent Technology Shenzhen Co Ltd
Tencent Cloud Computing Beijing Co Ltd
Original Assignee
Tencent Technology Shenzhen 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 Tencent Technology Shenzhen Co Ltd filed Critical Tencent Technology Shenzhen Co Ltd
Priority to CN201410544896.XA priority Critical patent/CN105574026B/zh
Publication of CN105574026A publication Critical patent/CN105574026A/zh
Application granted granted Critical
Publication of CN105574026B publication Critical patent/CN105574026B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明提供一种非关系型数据库支持事务的方法及装置,该方法包括:获取事务开始请求,事务开始请求用于指示数据写入;将数据写入第一非关系型数据库中,并将与数据对应的键值存储到事务实例中,其中,第一非关系型数据库在事务实例中的状态为备数据库;在数据写入完成后,获取事务结束请求,事务结束请求用于指示第一非关系型数据库与第二非关系型数据库的数据同步,其中,第二非关系型数据库在事务实例中的状态为主数据库;根据事务实例中存储的键值,将写入第一非关系型数据库中与键值对应的数据同步到第二非关系型数据库中;其中,备数据库用于写入数据,主数据库用于读出数据,本实施例使得非关系型数据库可以良好的支持事务。

Description

非关系型数据库支持事务的方法及装置
技术领域
本发明涉及数据库技术,尤其涉及一种非关系型数据库支持事务的方法及装置。
背景技术
随着互联网的快速发展,互联网中数据的种类和规模都在以惊人的速度增长,“大数据”时代的来临已经成为现实。目前,由于传统的关系型数据库在应对大数据的存储、查询和分析等需求时,出现了性能和规模上的瓶颈,因此各种非关系型数据库(NOSQL数据库)应用而生,成为数据存储和分析领域的重要处理手段。
非关系型数据库的数据存储不需要固定的表结构,通常也不存在连接操作,具有很强的可扩展性。非关系型数据库以不同的存储结构为分类依据,可分为键-值对数据库、列族数据库、文档型数据库和图数据库等。
然而,现有技术中只有部分非关系型数据库能够支持事务,包括事务提交、事务回滚、事务提交过程中数据依然可读等,但还有一些非关系型数据库无法提供对事务的良好支持。
发明内容
本发明提供一种非关系型数据库支持事务的方法及装置,以使得非关系型数据库实现对事务的良好支持。
第一方面,本发明实施例提供一种非关系型数据库支持事务的方法,包括:
获取事务开始请求,所述事务开始请求用于指示数据写入;
将数据写入第一非关系型数据库中,并将与所述数据对应的键值存储到所述事务实例中,其中,所述第一非关系型数据库在所述事务实例中的状态为备数据库;
在所述数据写入完成后,获取事务结束请求,所述事务结束请求用于指示所述第一非关系型数据库与第二非关系型数据库的数据同步,其中,所述第二非关系型数据库在所述事务实例中的状态为主数据库;
根据所述事务实例中存储的键值,将写入所述第一非关系型数据库中与所述键值对应的数据同步到所述第二非关系型数据库中;
其中,所述备数据库用于写入数据,所述主数据库用于读出数据。
第二方面,本发明实施例提供一种非关系型数据库支持事务的装置,包括:
第一获取模块,用于获取事务开始请求,所述事务开始请求用于指示数据写入;
写入模块,用于将数据写入第一非关系型数据库中,并将与所述数据对应的键值存储到所述事务实例中,其中,所述第一非关系型数据库在所述事务实例中的状态为备数据库;
第二获取模块,用于在所述数据写入完成后,获取事务结束请求,所述事务结束请求用于指示所述第一非关系型数据库与第二非关系型数据库的数据同步,其中,所述第二非关系型数据库在所述事务实例中的状态为主数据库;
第一同步模块,用于根据所述事务实例中存储的键值,将写入所述第一非关系型数据库中与所述键值对应的数据同步到所述第二非关系型数据库中;
其中,所述备数据库用于写入数据,所述主数据库用于读出数据。
本发明实施例提供的非关系型数据库支持事务的方法及装置,该方法通过获取事务开始请求,将数据写入第一非关系型数据库中,并将与数据对应的键值存储到事务实例中,其中,第一非关系型数据库在事务实例中的状态为备数据库;在数据写入完成后,获取事务结束请求,事务结束请求用于指示第一非关系型数据库与第二非关系型数据库的数据同步,其中,第二非关系型数据库在事务实例中的状态为主数据库;根据事务实例中存储的键值,将写入第一非关系型数据库中与键值对应的数据同步到第二非关系型数据库中,本实施例通过主备数据库双库的实现方式,使得非关系型数据库能够良好的支持事物开始,事物结束,同时在事务的提交过程中,数据可读,为非关系型数据库支持事务的通用方法。
附图说明
图1为本发明事务组件结构示意图;
图2为本发明非关系型数据库支持事务的方法实施例一的流程示意图;
图3为本发明非关系型数据库支持事务的方法实施例二的流程示意图;
图4为本发明非关系型数据库支持事务的方法实施例三的流程示意图;
图5为本发明非关系型数据库支持事务的方法应用流程示意图;
图6为本发明非关系型数据库支持事务的装置实施例一的结构示意图;
图7为本发明非关系型数据库支持事务的装置实施例二的结构示意图;
图8为本发明服务器实施例一的结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
图1为本发明事务组件结构示意图。如图1所示,本发明实施例提供的事务组件中配置了第一非关系型数据库和第二非关系型数据库。为了便于说明,本实施例中的第一非关系型数据库与第二非关系型数据库的配置相同,其中一个数据库为主数据库,另一个数据库为备数据库。本实施例采用主数据库和备数据库来存储一模一样的数据,在同一时间,用户只能够读主数据库,写操作只能写入备数据库,当写入完全成功后,主备数据库互换,并由程序自动同步直到主备数据库中的数据一致。事务实例为可以存储事务相关信息的实例(例如非关系型数据库、关系型数据库或者文件等),保证断电后数据不丢失,主要用于记录谁是主数据库、当前事务状态,以及与数据对应的键值。
本发明实施例通过主数据库和备数据库双库的方式保证非关系型数据库对事务的实施,包括事务提交,事务回滚,事务结束以及在事务运行过程中数据可读等,不仅可以应用在独立数据库中,也可以应用在分布式数据库中。为使本发明能够描述清楚,现将涉及的技术术语进行详细说明。
事务:在计算机术语中是指访问并可能更新数据库中各种数据项的一个程序执行单元。
事务提交:对数据进行修改、删除等操作。
事务回滚:当事务中任何一条数据项修改失败后,之前的修改均不生效,即数据状态跟事务执行前的状态一模一样。
主数据库:本实施例采用了双库的方式保证事务,主数据库是当前完整有效的数据,可以直接给用户提供读操作。
备数据库:本实施例采用了双库的方式保证事务,备数据库主要用来做写操作的库,并不提供读数据操作。
事务状态:包括“没有事务”、“事务已开始”、“事务同步”三种状态。
图2为本发明非关系型数据库支持事务的方法实施例一的流程示意图,本实施例的执行主体为非关系型数据库中的数据处理装置,该装置可以通过软件和/或硬件实现,该装置可以为图1实施例中的事务组件。本实施例将对非关系型数据库如何实现对事务的良好支持进行详细说明,如图2所示,该方法包括:
步骤201、获取事务开始请求,所述事务开始请求用于指示数据写入;
步骤202、将数据写入第一非关系型数据库中,并将与所述数据对应的键值存储到所述事务实例中,其中,所述第一非关系型数据库在所述事务实例中的状态为备数据库;
步骤203、在所述数据写入完成后,获取事务结束请求,所述事务结束请求用于指示所述第一非关系型数据库与第二非关系型数据库的数据同步,其中,所述第二非关系型数据库在所述事务实例中的状态为主数据库;
步骤204、根据所述事务实例中存储的键值,将写入所述第一非关系型数据库中与所述键值对应的数据同步到所述第二非关系型数据库中。
其中,所述备数据库用于写入数据,所述主数据库用于读出数据。
在步骤201中,用户请求开始事务时,用户向该装置发送事务开始请求,该装置获取事务开始请求,该事务开始请求用于指示数据写入。
在步骤202中,确定事务实例中状态为备数据库的第一非关系型数据库,将数据写入第一非关系型数据库中。在本实施例中,非关系型数据库中存储的数据都是键-值(K-V)对的形式,因此,在将数据写入第一非关系型数据库中时,还将与写入数据对应的键值存储到事务实例中,本实施例中的数据写入过程,即数据提交的过程。
在步骤203中,在数据写入完成后,用户向该装置请求完成事务,此时,该装置获取事务结束请求,该事务结束请求用于指示作为备数据库的第一非关系型数据库与事务实例中状态为主数据库的第二非关系型数据库的数据同步。
在步骤204中,该装置从事务实例中获取存储的键值,将第一非关系型数据库中与该键值对应的数据复制到第二非关系型数据库中,以实现第一非关系型数据库与第二非关系型数据库的数据同步。
在上述实施例中,备数据库用于写入数据,主数据库用于读出数据。在具体使用过程中,可根据事务实例中数据库的状态,确定主数据库和备数据库,然后进行读取。本实施例在数据写入的事务过程中,不影响数据的读取,同时还良好的支持了事务提交的过程。
可选地,在步骤204之前,还可将第一非关系型数据库在事务实例中的状态由备数据库修改为主数据库,将第二非关系型数据库在事务实例中的状态由主数据库修改为备数据库,即主数据库和备数据库互换。此时,第一非关系型数据库中保存的数据为最新的数据,用户可以从主数据库中获取最新的数据。
若本发明实施例应用在分布式非关系型数据库中,则可在每一个子节点上设置第一非关系型数据库和第二非关系型数据库,从而保证分布式非关系型数据库可以对事物提供良好的支持。
本发明实施例通过获取事务开始请求,将数据写入第一非关系型数据库中,并将与数据对应的键值存储到事务实例中,其中,第一非关系型数据库在事务实例中的状态为备数据库;在数据写入完成后,获取事务结束请求,事务结束请求用于指示第一非关系型数据库与第二非关系型数据库的数据同步,其中,第二非关系型数据库在事务实例中的状态为主数据库;根据事务实例中存储的键值,将写入第一非关系型数据库中与键值对应的数据同步到第二非关系型数据库中,本实施例通过主备数据库双库的实现方式,使得非关系型数据库能够良好的支持事物开始,事物结束,同时在事务的提交过程中,数据可读,为非关系型数据库支持事务的通用方法。
下面采用图3和图4具体的实施例,对图2实施例进行详细说明。
图3为本发明非关系型数据库支持事务的方法实施例二的流程示意图。如图3所示,该方法包括:
步骤301、获取事务开始请求,所述事务开始请求用于指示数据写入;
步骤302、根据所述事务实例中存储的所述第一非关系型数据库的事务状态,判断当前所述事务状态为没有事务状态;
步骤303、将所述事务实例中存储的所述第一非关系型数据库的事务状态由所述没有事务状态修改为事务已开始状态;
步骤304、将数据写入第一非关系型数据库中,并将与所述数据对应的键值存储到所述事务实例中,其中,所述第一非关系型数据库在所述事务实例中的状态为备数据库;
步骤305、在所述数据写入完成后,获取事务结束请求,所述事务结束请求用于指示所述第一非关系型数据库与第二非关系型数据库的数据同步,其中,所述第二非关系型数据库在所述事务实例中的状态为主数据库;
步骤306、将所述第一非关系型数据库在所述事务实例中的状态由备数据库修改为主数据库,将所述第二非关系型数据库在所述事务实例中的状态由主数据库修改为备数据库;
步骤307、将所述事务实例中存储的所述第一非关系型数据库的事务状态由所述已开始状态修改为事务同步状态;
步骤308、根据所述事务实例中存储的键值,将写入所述第一非关系型数据库中与所述键值对应的数据同步到所述第二非关系型数据库中;
步骤309、将所述事务实例中存储的所述第一非关系型数据库的事务状态由所述事务同步状态修改为没有事务状态。
本实施例中的步骤301与图2实施例中的步骤201类似,步骤304至步骤306与图2实施例的步骤202至步骤203类似,步骤308与图2实施例的步骤204类似,本实施例此处不再赘述。
在步骤301之后,判断事务实例中存储的第一非关系型数据库的事务状态是否为没有事务状态,若为无事务状态,则继续执行步骤303,将没有事务状态修改为事务已开始状态,若非无事务状态,则结束该流程。
在步骤307中,为了保证主数据库和备数据库的数据同步,此时将事务实例中存储的第一非关系型数据库的事务状态由已开始状态修改为事务同步状态,在步骤308中,在数据同步完成之后,将事务实例中存储的第一非关系型数据库的事务状态由事务同步状态修改为没有事务状态。
本实施例详细说明了在事务处理过程中,对事务实例中存储的事务状态进行及时性修改,只有在判断事务状态为没有事务状态时,才会开始事务,保证了非关系型数据库具有良好的事务处理能力。
图4为本发明非关系型数据库支持事务的方法实施例三的流程示意图。如图4所示,该方法包括:
步骤401、获取事务开始请求,所述事务开始请求用于指示数据写入;
步骤402、根据所述事务实例中存储的所述第一非关系型数据库的事务状态,判断当前所述事务状态为没有事务状态;
步骤403、将数据写入第一非关系型数据库中,并将与所述数据对应的键值存储到所述事务实例中,当数据写入第一非关系型数据库中出现异常,触发事务回滚操作,所述第一非关系型数据库在所述事务实例中的状态为备数据库;
步骤404、根据所述事务实例中存储的键值,将所述第二非关系型数据库中与所述键值对应的数据同步到所述第一非关系型数据库中,所述第二非关系型数据库在所述事务实例中的状态为主数据库;
步骤405、将所述事务实例中存储的所述第一非关系型数据库的事务状态由所述事务已开始状态修改为没有事务状态。
本实施例中的步骤401与步骤402与图3实施例中的步骤301和步骤302类似,本实施例此处不再赘述。
本实施例详细说明非关系型数据库如何支持事务回滚。
在步骤403中,在将数据写入第一非关系型数据库中,并将与数据对应的键值存储到事务实例后,若数据写入第一非关系型数据库出现异常,则触发事务回滚操作,触发事务回滚操作,可以包括两种可能的实现方式,具体如下:
一种可能的实现方式为:用户主动触发,在写操作返回失败后,此时事务已经不可能成功,用户调用回滚命令触发事务回滚操作。
另一种可能的实现方式为:自动触发,在用户调用异常,只开始了事务,但是未能够正常结束事务时,此时该装置检测异常,并触发事务回滚操作。
在触发事务回滚操作之后,在步骤404中,根据事务实例中存储的键值,将第二非关系型数据库(主数据库)中与该键值对应的数据复制到第一非关系型数据库(备数据库),以完成事务回滚操作。
在完成事务回滚操作之后,在步骤405中,将事务实例中存储的第一非关系型数据库的事务状态由事务已开始状态修改为没有事务状态。
本实施例实现了在数据写入第一非关系型数据库中出现异常时,非关系型数据库对事务回滚的支持。
图5为本发明非关系型数据库支持事务的方法应用流程示意图。如图5所示,该应用流程包括:
步骤501、获取事务开始请求;
步骤502、判断当前事务状态是否为没有事务状态,若是执行步骤503,若否,流程结束;
步骤503、将事务实例中存储的第一非关系型数据库的事务状态由没有事务状态修改为事务已开始状态;
步骤504、将数据写入第一非关系型数据库(备数据库)中,并将与数据对应的键值存储到事务实例中;
步骤505、判断写数据是否出现异常,若是,执行步骤512,若否,执行步骤506;
步骤506、判断数据是否写入完成,若是,执行步骤507,若否,返回执行步骤504;
步骤507、获取事务结束请求;
步骤508、将第一非关系型数据库在事务实例中的状态由备数据库修改为主数据库,将第二非关系型数据库在事务实例中的状态由主数据库修改为备数据库;
步骤509、将事务实例中存储的第一非关系型数据库的事务状态由已开始状态修改为事务同步状态;
步骤510、根据事务实例中存储的键值,将写入第一非关系型数据库中与键值对应的数据同步到第二非关系型数据库中;
步骤511、将事务实例中存储的第一非关系型数据库的事务状态由事务同步状态修改为没有事务状态,流程结束;
步骤512、触发事务回滚操作;
步骤513、根据事务实例中存储的键值,将第二非关系型数据库中与键值对应的数据同步到第一非关系型数据库中;
步骤514、将事务实例中存储的第一非关系型数据库的事务状态由事务已开始状态修改为没有事务状态,流程结束。
本实施例对非关系型数据库支持事务进行了详细说明,本实施例提供的方法,可以使任意的非关系型数据库支持事务提交、事务回滚以及事务提交过程中数据依然可读。
图6为本发明非关系型数据库支持事务的装置实施例一的结构示意图。如图6所示,本实施例提供的装置包括:第一获取模块601,写入模块602,第二获取模块603,第一同步模块604。
第一获取模块601,用于获取事务开始请求,所述事务开始请求用于指示数据写入;
写入模块602,用于将数据写入第一非关系型数据库中,并将与所述数据对应的键值存储到所述事务实例中,其中,所述第一非关系型数据库在所述事务实例中的状态为备数据库;
第二获取模块603,用于在所述数据写入完成后,获取事务结束请求,所述事务结束请求用于指示所述第一非关系型数据库与第二非关系型数据库的数据同步,其中,所述第二非关系型数据库在所述事务实例中的状态为主数据库;
第一同步模块604,用于根据所述事务实例中存储的键值,将写入所述第一非关系型数据库中与所述键值对应的数据同步到所述第二非关系型数据库中;
其中,所述备数据库用于写入数据,所述主数据库用于读出数据。
图7为本发明非关系型数据库支持事务的装置实施例二的结构示意图,本实施例在图6实施例的基础上实现,具体如下:
可选地,所述装置还包括:状态修改模块605,用于在所述写入模块602根据所述事务实例中存储的键值,将写入所述第一非关系型数据库中与所述键值对应的数据同步到所述第二非关系型数据库中之前,
将所述第一非关系型数据库在所述事务实例中的状态由备数据库修改为主数据库,将所述第二非关系型数据库在所述事务实例中的状态由主数据库修改为备数据库。
可选地,所述装置还包括:
事务回滚操作模块606,用于若数据写入第一非关系型数据库中出现异常,触发事务回滚操作;
第二同步模块607,用于根据所述事务实例中存储的键值,将所述第二非关系型数据库中与所述键值对应的数据同步到所述第一非关系型数据库中。
可选地,所述状态修改模块605还用于,在所述写入模块602将数据写入第一非关系型数据库中之前,根据所述事务实例中存储的所述第一非关系型数据库的事务状态,判断当前所述事务状态为没有事务状态;
将所述事务实例中存储的所述第一非关系型数据库的事务状态由所述没有事务状态修改为事务已开始状态。
可选地,所述状态修改模块605还用于,在所述第二同步模块607根据所述事务实例中存储的键值,将所述第二非关系型数据库中与所述键值对应的数据同步到所述第一非关系型数据库中之后,将所述事务实例中存储的所述第一非关系型数据库的事务状态由所述事务已开始状态修改为没有事务状态。
可选地,所述状态修改模块605还用于,在所述第一同步模块604根据所述事务实例中存储的键值,将写入所述第一非关系型数据备库中的数据同步到所述第二非关系型数据主库中之前,
将所述事务实例中存储的所述第一非关系型数据库的事务状态由所述已开始状态修改为事务同步状态;
所述根据所述事务实例中存储的键值,将写入所述第一非关系型数据备库中的数据同步到所述第二非关系型数据主库中之后,还包括:
将所述事务实例中存储的所述第一非关系型数据库的事务状态由所述事务同步状态修改为没有事务状态。
本发明实施例提供的装置,可用于执行上述方法实施例的技术方案,其实现原理和技术效果类似,本实施例此处不再赘述。
图8为本发明服务器实施例一的结构示意图。本发明实施例的非关系型数据库支持事务的装置可以内置在服务器80中实现。本发明实施例服务器80包括网络接口801、处理器802、总线803以及存储器804,第一非关系型数据库、第二非关系型数据库以及事务实例可以存储在存储器804中,存储器804以及处理器802分别与总线803连接,处理器802通过总线803调用存储器804中存储的程序。可以执行以下操作:
处理器802通过网络接口801获取事务开始请求,所述事务开始请求用于指示数据写入;
处理器802将数据写入第一非关系型数据库中,并将与所述数据对应的键值存储到所述事务实例中,其中,所述第一非关系型数据库在所述事务实例中的状态为备数据库;
在所述数据写入完成后,处理器802通过网络接口801获取事务结束请求,所述事务结束请求用于指示所述第一非关系型数据库与第二非关系型数据库的数据同步,其中,所述第二非关系型数据库在所述事务实例中的状态为主数据库;
处理器802根据所述事务实例中存储的键值,将写入所述第一非关系型数据库中与所述键值对应的数据同步到所述第二非关系型数据库中;
其中,所述备数据库用于写入数据,所述主数据库用于读出数据。
可选地,在处理器802根据所述事务实例中存储的键值,将写入所述第一非关系型数据库中与所述键值对应的数据同步到所述第二非关系型数据库中之前,
处理器802还将所述第一非关系型数据库在所述事务实例中的状态由备数据库修改为主数据库,将所述第二非关系型数据库在所述事务实例中的状态由主数据库修改为备数据库。
可选地,若数据写入第一非关系型数据库中出现异常,触发事务回滚操作;处理器802根据所述事务实例中存储的键值,将所述第二非关系型数据库中与所述键值对应的数据同步到所述第一非关系型数据库中。
可选地,在处理器802将数据写入第一非关系型数据库中之前,处理器802还根据所述事务实例中存储的所述第一非关系型数据库的事务状态,判断当前所述事务状态为没有事务状态;将所述事务实例中存储的所述第一非关系型数据库的事务状态由所述没有事务状态修改为事务已开始状态。
可选地,处理器802根据所述事务实例中存储的键值,将所述第二非关系型数据库中与所述键值对应的数据同步到所述第一非关系型数据库中之后,处理器802还将所述事务实例中存储的所述第一非关系型数据库的事务状态由所述事务已开始状态修改为没有事务状态。
可选地,处理器802根据所述事务实例中存储的键值,将写入所述第一非关系型数据备库中的数据同步到所述第二非关系型数据主库中之前,处理器802还将所述事务实例中存储的所述第一非关系型数据库的事务状态由所述已开始状态修改为事务同步状态;
处理器802根据所述事务实例中存储的键值,将写入所述第一非关系型数据备库中的数据同步到所述第二非关系型数据主库中之后,处理器802还将所述事务实例中存储的所述第一非关系型数据库的事务状态由所述事务同步状态修改为没有事务状态。
本发明实施例提供的服务器,可用于执行上述方法实施例的技术方案,其实现原理和技术效果类似,本实施例此处不再赘述。
本领域普通技术人员可以理解:实现上述各方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成。前述的程序可以存储于一计算机可读取存储介质中。该程序在执行时,执行包括上述各方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。

Claims (12)

1.一种非关系型数据库支持事务的方法,其特征在于,包括:
获取事务开始请求,所述事务开始请求用于指示数据写入;
将数据写入第一非关系型数据库中,并将与所述数据对应的键值存储到所述事务实例中,其中,所述第一非关系型数据库在所述事务实例中的状态为备数据库;
在所述数据写入完成后,获取事务结束请求,所述事务结束请求用于指示所述第一非关系型数据库与第二非关系型数据库的数据同步,其中,所述第二非关系型数据库在所述事务实例中的状态为主数据库;
根据所述事务实例中存储的键值,将写入所述第一非关系型数据库中与所述键值对应的数据同步到所述第二非关系型数据库中;
其中,所述备数据库用于写入数据,所述主数据库用于读出数据。
2.根据权利要求1所述的方法,其特征在于,所述根据所述事务实例中存储的键值,将写入所述第一非关系型数据库中与所述键值对应的数据同步到所述第二非关系型数据库中之前,还包括:
将所述第一非关系型数据库在所述事务实例中的状态由备数据库修改为主数据库,将所述第二非关系型数据库在所述事务实例中的状态由主数据库修改为备数据库。
3.根据权利要求2所述的方法,其特征在于,所述方法还包括:
若数据写入第一非关系型数据库中出现异常,触发事务回滚操作;
根据所述事务实例中存储的键值,将所述第二非关系型数据库中与所述键值对应的数据同步到所述第一非关系型数据库中。
4.根据权利要求2或3所述的方法,其特征在于,所述将数据写入第一非关系型数据库中之前,还包括:
根据所述事务实例中存储的所述第一非关系型数据库的事务状态,判断当前所述事务状态为没有事务状态;
将所述事务实例中存储的所述第一非关系型数据库的事务状态由所述没有事务状态修改为事务已开始状态。
5.根据权利要求3所述的方法,其特征在于,所述根据所述事务实例中存储的键值,将所述第二非关系型数据库中与所述键值对应的数据同步到所述第一非关系型数据库中之后,还包括:
将所述事务实例中存储的所述第一非关系型数据库的事务状态由所述事务已开始状态修改为没有事务状态。
6.根据权利要求4所述的方法,其特征在于,所述根据所述事务实例中存储的键值,将写入所述第一非关系型数据备库中的数据同步到所述第二非关系型数据主库中之前,还包括:
将所述事务实例中存储的所述第一非关系型数据库的事务状态由所述已开始状态修改为事务同步状态;
所述根据所述事务实例中存储的键值,将写入所述第一非关系型数据备库中的数据同步到所述第二非关系型数据主库中之后,还包括:
将所述事务实例中存储的所述第一非关系型数据库的事务状态由所述事务同步状态修改为没有事务状态。
7.一种非关系型数据库支持事务的装置,其特征在于,包括:
第一获取模块,用于获取事务开始请求,所述事务开始请求用于指示数据写入;
写入模块,用于将数据写入第一非关系型数据库中,并将与所述数据对应的键值存储到所述事务实例中,其中,所述第一非关系型数据库在所述事务实例中的状态为备数据库;
第二获取模块,用于在所述数据写入完成后,获取事务结束请求,所述事务结束请求用于指示所述第一非关系型数据库与第二非关系型数据库的数据同步,其中,所述第二非关系型数据库在所述事务实例中的状态为主数据库;
第一同步模块,用于根据所述事务实例中存储的键值,将写入所述第一非关系型数据库中与所述键值对应的数据同步到所述第二非关系型数据库中;
其中,所述备数据库用于写入数据,所述主数据库用于读出数据。
8.根据权利要求7所述的装置,其特征在于,所述装置还包括:状态修改模块,用于在所述写入模块根据所述事务实例中存储的键值,将写入所述第一非关系型数据库中与所述键值对应的数据同步到所述第二非关系型数据库中之前,
将所述第一非关系型数据库在所述事务实例中的状态由备数据库修改为主数据库,将所述第二非关系型数据库在所述事务实例中的状态由主数据库修改为备数据库。
9.根据权利要求8所述的装置,其特征在于,所述装置还包括:
事务回滚操作模块,用于若数据写入第一非关系型数据库中出现异常,触发事务回滚操作;
第二同步模块,用于根据所述事务实例中存储的键值,将所述第二非关系型数据库中与所述键值对应的数据同步到所述第一非关系型数据库中。
10.根据权利要求8或9所述的装置,其特征在于,所述状态修改模块还用于,在所述写入模块将数据写入第一非关系型数据库中之前,根据所述事务实例中存储的所述第一非关系型数据库的事务状态,判断当前所述事务状态为没有事务状态;
将所述事务实例中存储的所述第一非关系型数据库的事务状态由所述没有事务状态修改为事务已开始状态。
11.根据权利要求9所述的装置,其特征在于,所述状态修改模块还用于,在所述第二同步模块根据所述事务实例中存储的键值,将所述第二非关系型数据库中与所述键值对应的数据同步到所述第一非关系型数据库中之后,将所述事务实例中存储的所述第一非关系型数据库的事务状态由所述事务已开始状态修改为没有事务状态。
12.根据权利要求10所述的装置,其特征在于,所述状态修改模块还用于,在所述第一同步模块根据所述事务实例中存储的键值,将写入所述第一非关系型数据备库中的数据同步到所述第二非关系型数据主库中之前,
将所述事务实例中存储的所述第一非关系型数据库的事务状态由所述已开始状态修改为事务同步状态;
所述根据所述事务实例中存储的键值,将写入所述第一非关系型数据备库中的数据同步到所述第二非关系型数据主库中之后,还包括:
将所述事务实例中存储的所述第一非关系型数据库的事务状态由所述事务同步状态修改为没有事务状态。
CN201410544896.XA 2014-10-15 2014-10-15 非关系型数据库支持事务的方法及装置 Active CN105574026B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201410544896.XA CN105574026B (zh) 2014-10-15 2014-10-15 非关系型数据库支持事务的方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201410544896.XA CN105574026B (zh) 2014-10-15 2014-10-15 非关系型数据库支持事务的方法及装置

Publications (2)

Publication Number Publication Date
CN105574026A true CN105574026A (zh) 2016-05-11
CN105574026B CN105574026B (zh) 2019-12-13

Family

ID=55884171

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201410544896.XA Active CN105574026B (zh) 2014-10-15 2014-10-15 非关系型数据库支持事务的方法及装置

Country Status (1)

Country Link
CN (1) CN105574026B (zh)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108121718A (zh) * 2016-11-28 2018-06-05 北京国双科技有限公司 一种数据处理方法及同步设备
CN108427772A (zh) * 2018-04-10 2018-08-21 携程商旅信息服务(上海)有限公司 在线报表生成方法、系统、设备及存储介质
CN109446258A (zh) * 2018-10-22 2019-03-08 郑州云海信息技术有限公司 一种分布式数据存储方法及系统
WO2019218400A1 (zh) * 2018-05-17 2019-11-21 北京全路通信信号研究设计院集团有限公司 一种对关键逻辑状态进行处理的方法及系统
CN113778632A (zh) * 2021-09-14 2021-12-10 杭州沃趣科技股份有限公司 一种基于cassandra数据库的分布式事务管理方法

Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102043838A (zh) * 2009-10-09 2011-05-04 软件股份公司 主数据库系统、复制其数据的方法以及复制数据库系统
US20120317073A1 (en) * 2011-06-07 2012-12-13 Sybase, Inc. Replication Support for Procedures with Arguments of Unsupported Types
CN102831156A (zh) * 2012-06-29 2012-12-19 浙江大学 一种云计算平台上的分布式事务处理方法
CN102955851A (zh) * 2012-10-30 2013-03-06 北京奇虎科技有限公司 一种数据库的切换方法和装置
US20130226971A1 (en) * 2010-09-28 2013-08-29 Yiftach Shoolman Systems, methods, and media for managing an in-memory nosql database
CN103345502A (zh) * 2013-07-01 2013-10-09 曙光信息产业(北京)有限公司 分布式数据库的事务处理方法和系统
CN103885986A (zh) * 2012-12-21 2014-06-25 阿里巴巴集团控股有限公司 主备数据库同步的方法和装置
US20140250061A1 (en) * 2001-10-19 2014-09-04 Hti Ip, Llc System and method for accessing information in a replicated database
US20140279987A1 (en) * 2013-03-13 2014-09-18 Pablo Chico de Guzman Huerta Workflow design for long-running distributed operations using no sql databases

Patent Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20140250061A1 (en) * 2001-10-19 2014-09-04 Hti Ip, Llc System and method for accessing information in a replicated database
CN102043838A (zh) * 2009-10-09 2011-05-04 软件股份公司 主数据库系统、复制其数据的方法以及复制数据库系统
US20130226971A1 (en) * 2010-09-28 2013-08-29 Yiftach Shoolman Systems, methods, and media for managing an in-memory nosql database
US20120317073A1 (en) * 2011-06-07 2012-12-13 Sybase, Inc. Replication Support for Procedures with Arguments of Unsupported Types
CN102831156A (zh) * 2012-06-29 2012-12-19 浙江大学 一种云计算平台上的分布式事务处理方法
CN102955851A (zh) * 2012-10-30 2013-03-06 北京奇虎科技有限公司 一种数据库的切换方法和装置
CN103885986A (zh) * 2012-12-21 2014-06-25 阿里巴巴集团控股有限公司 主备数据库同步的方法和装置
US20140279987A1 (en) * 2013-03-13 2014-09-18 Pablo Chico de Guzman Huerta Workflow design for long-running distributed operations using no sql databases
CN103345502A (zh) * 2013-07-01 2013-10-09 曙光信息产业(北京)有限公司 分布式数据库的事务处理方法和系统

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108121718A (zh) * 2016-11-28 2018-06-05 北京国双科技有限公司 一种数据处理方法及同步设备
CN108121718B (zh) * 2016-11-28 2021-12-24 北京国双科技有限公司 一种数据处理方法及同步设备
CN108427772A (zh) * 2018-04-10 2018-08-21 携程商旅信息服务(上海)有限公司 在线报表生成方法、系统、设备及存储介质
CN108427772B (zh) * 2018-04-10 2020-07-28 携程商旅信息服务(上海)有限公司 在线报表生成方法、系统、设备及存储介质
WO2019218400A1 (zh) * 2018-05-17 2019-11-21 北京全路通信信号研究设计院集团有限公司 一种对关键逻辑状态进行处理的方法及系统
CN109446258A (zh) * 2018-10-22 2019-03-08 郑州云海信息技术有限公司 一种分布式数据存储方法及系统
CN113778632A (zh) * 2021-09-14 2021-12-10 杭州沃趣科技股份有限公司 一种基于cassandra数据库的分布式事务管理方法

Also Published As

Publication number Publication date
CN105574026B (zh) 2019-12-13

Similar Documents

Publication Publication Date Title
EP3477914B1 (en) Data recovery method and device, and cloud storage system
CN110309218B (zh) 一种数据交换系统和数据写入方法
US9367598B2 (en) Merging an out of synchronization indicator and a change recording indicator in response to a failure in consistency group formation
US20150213100A1 (en) Data synchronization method and system
CN111177165B (zh) 数据一致性检测的方法、装置及设备
EP3200096A1 (en) Remote replication method and apparatus based on duplicated data deletion
CN105574026A (zh) 非关系型数据库支持事务的方法及装置
US10379977B2 (en) Data management method, node, and system for database cluster
EP2380090B1 (en) Data integrity in a database environment through background synchronization
CN104967658A (zh) 一种多终端设备上的数据同步方法
CN110196759B (zh) 分布式事务处理方法和装置、存储介质及电子装置
CN106156231A (zh) 一种网站容灾方法、装置及系统
CN111666266A (zh) 一种数据迁移方法及相关设备
US20180121531A1 (en) Data Updating Method, Device, and Related System
CN106874343B (zh) 一种时序数据库的数据删除方法及系统
CN106959989A (zh) 主备数据库的同步方法及装置
CN105938446A (zh) 基于rdma和htm支持的数据复制容错方法
CN111753141B (zh) 一种数据管理方法及相关设备
EP3082050A1 (en) Mass data fusion storage method and system
CN111176827A (zh) 一种数据预热的方法及相关装置
CN115774754A (zh) 基于分布式事务的元数据管理方法、装置、设备及介质
CN106375354B (zh) 数据处理方法及装置
CN104834724A (zh) 一种数据库同步方法和装置
US11755425B1 (en) Methods and systems for synchronous distributed data backup and metadata aggregation
CN117171266B (zh) 一种数据同步方法、装置、设备和存储介质

Legal Events

Date Code Title Description
C06 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
TR01 Transfer of patent right

Effective date of registration: 20210917

Address after: 518057 Tencent Building, No. 1 High-tech Zone, Nanshan District, Shenzhen City, Guangdong Province, 35 floors

Patentee after: TENCENT TECHNOLOGY (SHENZHEN) Co.,Ltd.

Patentee after: TENCENT CLOUD COMPUTING (BEIJING) Co.,Ltd.

Address before: 2, 518000, East 403 room, SEG science and Technology Park, Zhenxing Road, Shenzhen, Guangdong, Futian District

Patentee before: TENCENT TECHNOLOGY (SHENZHEN) Co.,Ltd.

TR01 Transfer of patent right