一种数据读写方法及装置与流程

文档序号:14860672发布日期:2018-07-04 07:08阅读:126来源:国知局
一种数据读写方法及装置与流程

本发明涉及互联网领域,尤其涉及一种数据读写方法及装置。



背景技术:

随着网络的发展,信息呈现爆炸性增长,人类的数据达到前所未有的规模,因此实现对这些超大规模数据的成功读写成为一大挑战。

目前,在各种应用系统进行数据读写业务时,通常访问一个数据中心中的数据读写设备,该读写设备一般为关系数据库,所述关系数据库可借助于集合代数等概念和方法来处理数据。

但是随着数据量的增加和用户数的增多,只依靠单一的关系数据库为各种应用系统提供数据读写服务的可靠性会降低,例如,如果该关系数据库出现故障,可能出现数据丢失或服务中断等问题,导致数据读写失败。



技术实现要素:

本发明的目的是提供一种数据读写方法及装置,以实现读写分离,提高数据读写效率。

第一方面,本发明实施例提供一种数据读写方法,所述方法包括:

接收应用系统的数据写入请求;

确定为所述数据写入请求提供数据写入服务的第一数据库,并依据所述数据写入请求向所述第一数据库写入数据,再将写入所述第一数据库中的数据,同步到第二数据库中;

在接收到应用系统的数据读取请求的情况下,通过所述第二数据库为所述数据读取请求提供数据读取服务。

本发明实施例中,通过第一数据库为数据写入请求提供数据写入服务,并将写入第一数据库中的数据同步到第二数据库中,再通过第二数据库为数据读取请求提供数据读取服务,实现了写数据和读数据的分离,可提高数据读写效率。

可选的,确定为所述数据写入请求提供数据写入服务的第一数据库之后,在接收到应用系统的数据读取请求的情况下,可通过所述第一数据库为所述数据读取请求提供数据读取服务。

可选的,上述实施例中的第二数据库的数量为至少一个。

进一步的,确定出为所述数据写入请求提供数据写入服务的第一数据库之后,再确定所述第一数据库的备份数据库,并将所述第一数据库中的数据同步到所述备份数据库中,其中,所述备份数据库用于在所述第一数据库故障情况下,为所述数据写入请求提供数据写入服务。

进一步的,确定为所述数据写入请求提供数据写入服务的第一数据库之后,在所述第一数据库未发生故障的情况下,可通过所述备份数据库为所述数据读取请求提供数据读取服务。

本发明实施例中,通过在第一数据库所在的数据库服务集群中设置第一数据库的备份数据库,保证在第一数据库发生故障的情况下,备份数据库可以继续提供数据写入服务,提高了待写入数据被成功写入的可靠性。进一步的,所述备份数据库在第一数据库未发生故障的情况下,为数据读取请求提供数据读取服务,提高了数据读取的效率。

具体的,首先解析所述数据写入请求中携带的数据标识信息,其次根据数据库服务集群与数据标识信息之间的对应关系,在至少两组数据库服务集群中确定与所述数据写入请求中携带的数据标识信息对应的数据库服务集群,再在确定的所述数据库服务集群中,确定为所述数据写入请求提供数据写入服务的所述第一数据库。

同样的,根据所述数据读取请求中携带的数据标识信息,从代理服务器中预先配置的对应关系中查找能够匹配所述标识信息的数据库服务集群;在所述匹配出的数据库服务集群中确定所述第二数据库,并通过所述第二数据库为所述数据读取请求提供数据读取服务。

本发明实施例中,通过在代理服务器中预先配置一种对应关系表,使得代理服务器可以根据该对应关系表,在多组数据库服务集群中确定出提供数据写入服务的第一数据库和提供数据读取服务的第二数据库,实现了对数据中心的分库分表和负载均衡,提高了数据读写的效率。

第二方面,本发明实施例提供一种数据读写装置,该装置包括接收单元和处理单元,其中:

所述接收单元,用于接收应用系统的数据写入请求;

所述处理单元,用于确定为所述接收单元接收的数据写入请求提供数据写入服务的第一数据库,并依据所述数据写入请求向所述第一数据库写入数据;

将写入所述第一数据库中的数据,同步到第二数据库中;

在接收到应用系统的数据读取请求的情况下,通过所述第二数据库为所述数据读取请求提供数据读取服务。

可选的,所述第二数据库的数量为至少一个。

可选的,所述处理单元确定为所述接收单元接收的数据写入请求提供数据写入服务的第一数据库之后,所述处理单元还用于:在接收到应用系统的数据读取请求的情况下,通过所述第一数据库为所述数据读取请求提供数据读取服务。

进一步的,所述处理单元确定为所述接收单元接收的数据写入请求提供数据写入服务的第一数据库之后,所述处理单元还用于:

确定所述第一数据库的备份数据库,并将所述第一数据库中的数据同步到所述备份数据库中;

其中,所述备份数据库用于在所述第一数据库故障情况下,为所述数据写入请求提供数据写入服务。

进一步的,所述处理单元确定为所述接收单元接收的数据写入请求提供数据写入服务的第一数据库之后,所述处理单元还用于:在所述第一数据库未发生故障的情况下,通过所述备份数据库为所述数据读取请求提供数据读取服务。

具体的,所述处理单元具体用于:解析所述数据写入请求中携带的数据标识信息;根据数据库服务集群与数据标识信息之间的对应关系,在至少两组数据库服务集群中确定与所述数据写入请求中携带的数据标识信息对应的数据库服务集群;在确定的所述数据库服务集群中,确定为所述数据写入请求提供数据写入服务的所述第一数据库;

所述处理单元具体用于:解析所述数据读取请求中携带的数据标识信息;

根据数据库服务集群与数据标识信息之间的对应关系,在至少两组数据库服务集群中确定与所述数据读取请求中携带的数据标识信息对应的数据库服务集群;

在所述确定的数据库服务集群中确定所述第二数据库,并通过所述第二数据库为所述数据读取请求提供数据读取服务。

附图说明

图1为本发明实施例提供的一种数据读写方法;

图2为本发明实施例提供的另一种数据读写方法;

图3为本发明实施例提供的一种数据库的确定方法;

图4为本发明实施例提供的一种划分资源单元的方法;

图5为本发明实施例提供的另一种划分资源单元的方法;

图6为本发明实施例提供的另一种数据库的确定方法;

图7为本发明实施例提供的一种数据读写过程示意图;

图8为本发明实施例提供的一种数据读写装置的结构示意图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,并不是全部的实施例。

本发明实施例提供一种数据读写方法,以实现读写分离。

本发明实施例提供一种数据读写方法,该方法中,接收到应用系统的数据写入请求时,确定出为所述数据写入请求提供数据写入服务的第一数据库,并依据所述数据写入请求将待写入数据写入第一数据库,再将写入第一数据库中的数据同步到第二数据库中,进而在接收到应用系统的数据读取请求的情况下,通过第二数据库为数据读取请求提供数据读取服务。

需要说明的是,本发明实施例的说明书和权利要求书及附图中涉及的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序,例如本发明实施例中上述涉及的第一数据库和第二数据库仅是用于方便描述以及区分不同的数据库,并不构成对数据库的限定。应该理解这样使用的术语在适当情况下可以互换,以便这里描述的本发明的实施例能够以除了在这里图示或描述的那些以外的顺序实施。

本发明实施例中,接收到应用系统的数据写入请求时,通过第一数据库为所述数据写入请求提供数据写入服务,并将写入第一数据库中的数据同步到第二数据库中,保证第一数据库和第二数据库中的数据完全一致。当接收到应用系统的数据读取请求时,通过第二数据库为所述数据读取请求提供数据读取服务。本发明实施例,通过不同的数据库分别提供数据写入服务和数据读取服务,实现了写数据和读数据的分离,进而提高数据读写效率。

图1为本发明实施例提供的一种数据读写方法,可以包括以下步骤:

s11、接收应用系统的数据写入请求。

具体的,当应用系统下发数据写入请求时,通过全局负载均衡服务(globalserverloadbalance,gslb)服务器进行数据写入请求的分发,当gslb服务器将数据写入请求下发给代理服务器(proxy)后,proxy可代替应用系统向数据中心写入数据。

s12、确定为数据写入请求提供数据写入服务的第一数据库,并依据数据写入请求向第一数据库写入数据。

具体的,可将每个数据中心划分为至少两个资源单元,每个资源单元中保存有不同的数据,不同结构的数据可提供不同的数据服务。进一步的,可将每个资源单元中的数据划分到至少两组数据库服务集群中,且每组数据库服务集群中保存的数据不同。当接收到数据写入请求时,proxy可确定出提供数据写入服务的数据库服务集群,并在数据库服务集群中确定出提供数据写入服务的第一数据库,再将待写入数据写入到第一数据库。

s13、将写入第一数据库中的数据,同步到第二数据库中。

具体的,可在每组数据库服务集群中设置第二数据库,在将待写入数据写入到第一数据库后,再将第一数据库中写入的数据同步到第二数据库中。

s14、在接收到应用系统的数据读取请求的情况下,通过第二数据库为所述数据读取请求提供数据读取服务。

具体的,由于第二数据中的数据与第一数据库中的数据完全一致,所以在在接收到应用系统的数据读取请求的情况下,可以通过第二数据库为所述数据读取请求提供数据读取服务。

本发明实施例中,通过第一数据库为数据写入请求提供数据写入服务,并将写入第一数据库中的数据同步到第二数据库中,再通过第二数据库为数据读取请求提供数据读取服务,实现了写数据和读数据的分离,可提高数据读写效率。

可选的,在上述实施例中,为了提高数据的读取效率,可设置多个提供数据读取服务的第二数据库,其中,所述多个第二数据库中的数据与第一数据库中的数据完全一致,进而当接收到数据读取请求时,可通过多个第二数据库为应用系统提供数据读取服务。

本发明实施例中,通过设置多个第二数据库为应用系统提供数据读取服务,使得应用系统能够从多个第二数据库读取数据,减轻了依靠单一数据库提供数据读取服务的压力,可提高数据中心提供数据读取服务的性能。

进一步的,本发明实施例中,为了提高第一数据库提供数据写入服务的可靠性,在确定出为数据写入请求提供数据写入服务的第一数据库之后,还包括以下步骤,如图2所示:

s15、确定所述第一数据库的备份数据库,并将所述第一数据库中的数据同步到所述备份数据库中。

具体的,可在第一数据库所在的数据库服务集群中设置第一数据库的备份数据库,并将写入第一数据库中的数据全部同步到所述备份数据库中,使得第一数据库与备份数据库中的数据完全一致。由于所述备份数据库为提供写入服务的第一数据库的备份数据库,因此当第一数据库发生故障的情况下,备份数据库可代替故障的第一数据库,继续为应用系统发起的数据写入请求提供数据写入服务。

进一步的,为了提高应用系统读取数据的效率,在所述第一数据库未发生故障的情况下,上述实施例中设置的备份数据库还可以为应用系统提供数据读取服务。其中,提供数据读取服务的备份数据库可以是上述实施例提到的提供数据读取服务的第二数据库,也可以是独立存在的数据库。

本发明实施例中,通过在第一数据库所在的数据库服务集群中设置第一数据库的备份数据库,保证在第一数据库发生故障的情况下,备份数据库可以继续提供数据写入服务,提高了待写入数据被成功写入的可靠性。进一步的,所述备份数据库在第一数据库未发生故障的情况下,为数据读取请求提供数据读取服务,提高了数据读取的效率。

可选的,在上述实施例中,为数据写入请求提供数据写入服务的第一数据库的确定方法,可通过如下步骤实现,如图3所示:

s121、解析数据写入请求中携带的数据标识信息。

具体的,由于提供数据服务的数据中心已经被划分为多个数据库服务集群,每个数据库服务集群用于存储不同标识信息的数据,所以当代理服务器收到数据写入请求后,为了找到相应的提供写入服务的数据库服务集群,该代理服务器会对所述数据写入请求进行解析,解析出所述数据写入请求中携带的数据标识信息,再根据该标识信息找到对应的数据库服务集群。

s122、根据数据库服务集群与数据标识信息之间的对应关系,在至少两组数据库服务集群中确定与数据写入请求中携带的数据标识信息对应的数据库服务集群。

具体的,在进行数据写入或数据读取之前,为应用系统提供数据读取或数据服务的数据中心,已经被划分为至少两个资源单元,不同的资源单元中保存不同的数据,不同的数据为应用系统提供的是不同的数据服务。进而,再对每个资源单元进行分库分表,所述分库分表可以是指对每个资源单元进行垂直切分或水平切分。下面以划分为两个数据库服务集群为例,如图4所示,若在y方向对每个资源单元进行垂直切分,得到的是两组数据库服务集群,分别是数据库服务集群a和数据库服务集群b,不同组的数据库服务集群可存储不同属性信息的数据,该属性信息可以是数据的标题,例如有标题为1的数据和标题为2的数据;如图5所示,若在x轴方向对每个资源单元进行水平切分,得到的是两组数据库服务集群,分别是数据库服务集群c和数据库服务集群d,不同组的数据库服务集群可存储不同身份标识(identification,id)段的数据,例如可分别存储id编号为1-10000的数据和10001-20000的数据。无论是水平切分还是垂直切分,得到的存储不同数据的数据库服务集群,同时,在代理服务器中保存一种对应关系,该对应关系可配置在代理服务器的配置文件中,用于保存至少不同的数据库服务集群中各个数据库服务集群与待写入数据的关键字段之间的对应关系。

其中,所述代理服务器可以是proxy,当proxy接收到数据写入请求时,对待写入数据进行分析,再根据配置文件中保存的对应关系,确定出能够匹配该待写入数据的数据库服务集群。

s123、在确定的数据库服务集群中确定第一数据库。

具体的,当代理服务器从至少两个数据库服务集群中确定出为待写入数据提供数据服务的数据库集群之后,由于该数据库集群中存在代理服务器默认的写入数据库,因此可直接确定出提供写入服务的写入数据库。

同样,在接收到应用系统的数据读取请求的情况下,可以采用类似的方法确定为数据读取请求提供数据读取服务的第二数据库,如图6所示,可以包括以下步骤:

s141、解析数据读取请求中携带的数据标识信息。

s142、根据数据库服务集群与数据标识信息之间的对应关系,在至少两组数据库服务集群中确定与数据读取请求中携带的数据标识信息对应的数据库服务集群。

具体的,当代理服务器接收到应用系统的数据读取请求时,可以从预先配置的对应关系中查找需要读取的数据的标识,该标识可以是待读取数据的属性信息或者id,进而确定出对应的数据库集群,其中,所述对应关系可以以对应关系表的形式存储。

s143、在确定的数据库服务集群中确定第二数据库,并通过第二数据库为数据读取请求提供数据读取服务。

具体的,当确定出数据库服务集群后,从该数据库服务集群中选择出提供数据读取服务的第二数据库。若该数据库服务集群中存在至少两个第二数据库时,则当代理服务器接收到数据读取请求时,可通过多个第二数据库为应用系统提供数据读取服务,减轻了单一数据库提供读取服务的压力。

本发明实施例中,通过在代理服务器中预先配置一种对应关系,使得代理服务器可以根据该对应关系,在多组数据库服务集群中确定出提供数据写入服务的第一数据库和提供数据读取服务的第二数据库,实现了对数据中心的分库分表和负载均衡,提高了数据读写的效率。

可选的,本发明实施例中为数据写入请求提供数据写入服务的第一数据库,也可以为数据读取请求提供数据读取服务。换言之,在接收到应用系统的数据读取请求的情况下,可通过为数据写入请求提供数据写入服务的第一数据库为所述数据读取请求提供数据读取服务。

基于上述实施例提供的数据读写方法,本发明实施例中数据读写的过程示意图可如图7所示。

基于上述实施例提供的数据读写方法,本发明实施例提供一种数据读写装置,图8所示为本发明实施例提供的一种数据读写装置的结构示意图,如图8所示,该装置包括接收单元51和处理单元52,其中:

所述接收单元51,用于接收应用系统的数据写入请求;

所述处理单元52,用于确定为所述接收单元51接收的数据写入请求提供数据写入服务的第一数据库,并依据所述数据写入请求向所述第一数据库写入数据;

将写入所述第一数据库中的数据,同步到第二数据库中;

在接收到应用系统的数据读取请求的情况下,通过所述第二数据库为所述数据读取请求提供数据读取服务。

可选的,所述第二数据库的数量为至少一个。

进一步的,所述处理单元52确定为所述接收单元接收的数据写入请求提供数据写入服务的第一数据库之后,所述处理单元52还用于:

确定所述第一数据库的备份数据库,并将所述第一数据库中的数据同步到所述备份数据库中;其中,所述备份数据库用于在所述第一数据库故障情况下,为所述数据写入请求提供数据写入服务。

进一步的,所述处理单元52确定的备份数据库还用于:

在所述第一数据库未发生故障的情况下,为所述数据读取请求提供数据读取服务。

具体的,所述处理单元52具体用于:首先解析所述数据写入请求中携带的数据标识信息,其次,根据数据库服务集群与数据标识信息之间的对应关系,在至少两组数据库服务集群中确定与所述数据写入请求中携带的数据标识信息对应的数据库服务集群,再在确定的所述数据库服务集群中,确定为所述数据写入请求提供数据写入服务的所述第一数据库。

所述处理单元52具体用于:解析所述数据读取请求中携带的数据标识信息;

根据数据库服务集群与数据标识信息之间的对应关系,在至少两组数据库服务集群中确定与所述数据读取请求中携带的数据标识信息对应的数据库服务集群;

在所述确定的数据库服务集群中确定所述第二数据库,并通过所述第二数据库为所述数据读取请求提供数据读取服务。

显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1