非关系型数据库支持事务的方法及装置的制造方法
【技术领域】
[0001]本发明涉及数据库技术,尤其涉及一种非关系型数据库支持事务的方法及装置。
【背景技术】
[0002]随着互联网的快速发展,互联网中数据的种类和规模都在以惊人的速度增长,“大数据”时代的来临已经成为现实。目前,由于传统的关系型数据库在应对大数据的存储、查询和分析等需求时,出现了性能和规模上的瓶颈,因此各种非关系型数据库(N0SQL数据库)应用而生,成为数据存储和分析领域的重要处理手段。
[0003]非关系型数据库的数据存储不需要固定的表结构,通常也不存在连接操作,具有很强的可扩展性。非关系型数据库以不同的存储结构为分类依据,可分为键-值对数据库、列族数据库、文档型数据库和图数据库等。
[0004]然而,现有技术中只有部分非关系型数据库能够支持事务,包括事务提交、事务回滚、事务提交过程中数据依然可读等,但还有一些非关系型数据库无法提供对事务的良好支持。
【发明内容】
[0005]本发明提供一种非关系型数据库支持事务的方法及装置,以使得非关系型数据库实现对事务的良好支持。
[0006]第一方面,本发明实施例提供一种非关系型数据库支持事务的方法,包括:
[0007]获取事务开始请求,所述事务开始请求用于指示数据写入;
[0008]将数据写入第一非关系型数据库中,并将与所述数据对应的键值存储到所述事务实例中,其中,所述第一非关系型数据库在所述事务实例中的状态为备数据库;
[0009]在所述数据写入完成后,获取事务结束请求,所述事务结束请求用于指示所述第一非关系型数据库与第二非关系型数据库的数据同步,其中,所述第二非关系型数据库在所述事务实例中的状态为主数据库;
[0010]根据所述事务实例中存储的键值,将写入所述第一非关系型数据库中与所述键值对应的数据同步到所述第二非关系型数据库中;
[0011]其中,所述备数据库用于写入数据,所述主数据库用于读出数据。
[0012]第二方面,本发明实施例提供一种非关系型数据库支持事务的装置,包括:
[0013]第一获取模块,用于获取事务开始请求,所述事务开始请求用于指示数据写入;
[0014]写入模块,用于将数据写入第一非关系型数据库中,并将与所述数据对应的键值存储到所述事务实例中,其中,所述第一非关系型数据库在所述事务实例中的状态为备数据库;
[0015]第二获取模块,用于在所述数据写入完成后,获取事务结束请求,所述事务结束请求用于指示所述第一非关系型数据库与第二非关系型数据库的数据同步,其中,所述第二非关系型数据库在所述事务实例中的状态为主数据库;
[0016]第一同步模块,用于根据所述事务实例中存储的键值,将写入所述第一非关系型数据库中与所述键值对应的数据同步到所述第二非关系型数据库中;
[0017]其中,所述备数据库用于写入数据,所述主数据库用于读出数据。
[0018]本发明实施例提供的非关系型数据库支持事务的方法及装置,该方法通过获取事务开始请求,将数据写入第一非关系型数据库中,并将与数据对应的键值存储到事务实例中,其中,第一非关系型数据库在事务实例中的状态为备数据库;在数据写入完成后,获取事务结束请求,事务结束请求用于指示第一非关系型数据库与第二非关系型数据库的数据同步,其中,第二非关系型数据库在事务实例中的状态为主数据库;根据事务实例中存储的键值,将写入第一非关系型数据库中与键值对应的数据同步到第二非关系型数据库中,本实施例通过主备数据库双库的实现方式,使得非关系型数据库能够良好的支持事物开始,事物结束,同时在事务的提交过程中,数据可读,为非关系型数据库支持事务的通用方法。
【附图说明】
[0019]图1为本发明事务组件结构示意图;
[0020]图2为本发明非关系型数据库支持事务的方法实施例一的流程示意图;
[0021]图3为本发明非关系型数据库支持事务的方法实施例二的流程示意图;
[0022]图4为本发明非关系型数据库支持事务的方法实施例三的流程示意图;
[0023]图5为本发明非关系型数据库支持事务的方法应用流程示意图;
[0024]图6为本发明非关系型数据库支持事务的装置实施例一的结构示意图;
[0025]图7为本发明非关系型数据库支持事务的装置实施例二的结构示意图;
[0026]图8为本发明服务器实施例一的结构示意图。
【具体实施方式】
[0027]为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0028]图1为本发明事务组件结构示意图。如图1所示,本发明实施例提供的事务组件中配置了第一非关系型数据库和第二非关系型数据库。为了便于说明,本实施例中的第一非关系型数据库与第二非关系型数据库的配置相同,其中一个数据库为主数据库,另一个数据库为备数据库。本实施例采用主数据库和备数据库来存储一模一样的数据,在同一时间,用户只能够读主数据库,写操作只能写入备数据库,当写入完全成功后,主备数据库互换,并由程序自动同步直到主备数据库中的数据一致。事务实例为可以存储事务相关信息的实例(例如非关系型数据库、关系型数据库或者文件等),保证断电后数据不丢失,主要用于记录谁是主数据库、当前事务状态,以及与数据对应的键值。
[0029]本发明实施例通过主数据库和备数据库双库的方式保证非关系型数据库对事务的实施,包括事务提交,事务回滚,事务结束以及在事务运行过程中数据可读等,不仅可以应用在独立数据库中,也可以应用在分布式数据库中。为使本发明能够描述清楚,现将涉及的技术术语进行详细说明。
[0030]事务:在计算机术语中是指访问并可能更新数据库中各种数据项的一个程序执行单元。
[0031]事务提交:对数据进行修改、删除等操作。
[0032]事务回滚:当事务中任何一条数据项修改失败后,之前的修改均不生效,即数据状态跟事务执行前的状态一模一样。
[0033]主数据库:本实施例采用了双库的方式保证事务,主数据库是当前完整有效的数据,可以直接给用户提供读操作。
[0034]备数据库:本实施例采用了双库的方式保证事务,备数据库主要用来做写操作的库,并不提供读数据操作。
[0035]事务状态:包括“没有事务”、“事务已开始”、“事务同步”三种状态。
[0036]图2为本发明非关系型数据库支持事务的方法实施例一的流程示意图,本实施例的执行主体为非关系型数据库中的数据处理装置,该装置可以通过软件和/或硬件实现,该装置可以为图1实施例中的事务组件。本实施例将对非关系型数据库如何实现对事务的良好支持进行详细说明,如图2所示,该方法包括:
[0037]步骤201、获取事务开始请求,所述事务开始请求用于指示数据写入;
[0038]步骤202、将数据写入第一非关系型数据库中,并将与所述数据对应的键值存储到所述事务实例中,其中,所述第一非关系型数据库在所述事务实例中的状态为备数据库;
[0039]步骤203、在所述数据写入完成后,获取事务结束请求,所述事务结束请求用于指示所述第一非关系型数据库与第二非关系型数据库的数据同步,其中,所述第二非关系型数据库在所述事务实例中的状态为主数据库;
[0040]步骤204、根据所述事务实例中存储的键值,将写入所述第一非关系型数据库中与所述键值对应的数据同步到所述第二非关系型数据库中。
[0041]其中,所述备数据库用于写入数据,所述主数据库用于读出数据。
[0042]在步骤201中,用户请求开始事务时,用户向该装置发送事务开始请