一种数据库的实现方法和设备的制造方法

文档序号:8473082阅读:227来源:国知局
一种数据库的实现方法和设备的制造方法
【技术领域】
[0001]本发明的实施方式涉及数据库技术领域,更具体地,本发明的实施方式涉及一种数据库的实现方法和设备。
【背景技术】
[0002]本部分旨在为权利要求书中陈述的本发明的实施方式提供背景或上下文。此处的描述不因为包括在本部分中就承认是现有技术。
[0003]许多应用系统在为用户提供服务时,其功能需要通过对数据库进行查询、更新等数据操作来实现。对于一些应用系统来说,随着用户数量的急剧增长以及各用户对应用系统提供的各种服务越来越频繁地使用,数据库中增加数据、删除数据、更改数据及查询数据等数据操作的开销越来越大,这使得单一数据库的性能难以满足这样巨大的数据操作开销。因此,为了提高应用系统的性能而满足大量用户对大量服务的使用需求,需要将应用系统的单一数据库进行分库分表(sharding),使得应用系统涉及的数据分配到多个数据库中记录,从而使得应用系统承担的大量数据操作能够分摊到多个数据库执行,减小每个数据库的数据操作开销。
[0004]目前,已经出现了一些对数据库进行分库分表的实现方式。例如,一种现有的数据库分库分表方式是散列方式(即hash算法),具体地,对于应用系统来说,对当前可用于记录数据的多个可用数据库进行编号,根据各用户的用户标识利用散列算法计算各用户的散列值,再分别将各用户的散列值对可用数据库的数量取余数,并以各用户的散列值相对于可用数据库数量的余数作为各用户对应的编号,将各用户的数据映射到各用户对应编号的可用数据库中。这样,各用户的数据可以根据其用户标识映射到不同的数据库中,从而降低数据库的访问压力。

【发明内容】

[0005]需要说明的是,在应用系统的运行过程中,随着新用户不断地注册到应用系统以及已注册用户对应用系统的使用,应用系统需要记录的数据会不断增加,在当前可用于记录数据的数据库数量不能满足当前记录的数据数量对应的数据操作开销时,就需要增加数据库去分担数据的记录,从而保证各个数据库能够承担其记录的数据数量对应的数据操作开销。可见,在应用系统的运行过程中,通常需要动态地增加数据库去分担数据的记录。此夕卜,在应用系统的运行过程中,有时一些数据库所在设备也会宕机,宕机设备的数据库则不能再用于记录数据和响应数据操作,从而使得用于记录数据的数据库减少。由此可见,在应用系统的运行过程中,用于记录数据的数据库的数量是动态变化的。
[0006]而在现有技术中,由于数据库分库分表时各用户的数据是映射到以各用户的散列值相对于数据库数量的余数作为编号的数据库,当数据库的数量增加或者减少时,大部分用户的散列值相对于数据库数量的余数都会发生变化,这导致了大部分用户的数据在数据库数量发生变化时需要从一个数据库迀移到另一个数据库中记录。因此,在应用系统的运行过程中,由于用于记录数据的数据库数量是动态变化的,每次数据库数量发生变化都会导致大部分用户的数据需要在数据库之间进行数据迀移,而大量数据的数据迀移则导致数据库需要为大量数据重新构建索引和缓存,从而大大降低了应用系统的数据库性能。
[0007]由此可见,在现有技术中,应用系统运行过程中,随着用于记录数据的数据库数量的动态变化,经常发生大量数据在数据库之间进行数据迀移,从而大幅度降低了数据库的性能,这是非常令人烦恼的过程。
[0008]为此,非常需要一种改进的数据库的实现方法和设备,以在数据库数量发生改变时避免大量数据在数据库之间进行数据迀移,从而提升数据库的性能。
[0009]在本上下文中,本发明的实施方式期望提供一种数据库的实现方法和设备。
[0010]在本发明实施方式的第一方面中,提供了一种数据库的实现方法,包括:
[0011]根据目标用户的注册时间,从可用于记录用户数据的可用数据库中,确定用于记录所述目标用户的数据的目标数据库;其中,各个可用数据库各对应于一个时间段,所述目标数据库对应的时间段包含所述目标用户的注册时间;
[0012]建立所述目标用户与所述目标数据库之间的第一对应关系,以便根据所述第一对应关系而在所述目标数据库中查询和/或记录所述目标用户的数据。
[0013]在本发明实施方式的第二方面中,提供了一种数据库的实现设备,包括:
[0014]第一确定模块,用于根据目标用户的注册时间,从可用于记录用户数据的可用数据库中,确定用于记录所述目标用户的数据的目标数据库;其中,各个可用数据库各对应于一个时间段,所述目标数据库对应的时间段包含所述目标用户的注册时间;
[0015]第一建立模块,用于建立所述目标用户与所述目标数据库之间的第一对应关系,以便根据所述第一对应关系而在所述目标数据库中查询和/或记录所述目标用户的数据。
[0016]根据本发明实施方式的用于数据库实现的方法和设备,应用系统可以按照用户注册时间来为各用户分配用于记录用户数据的数据库,以实现对应用系统记录的用户数据进行分库分表,具体地,以应用系统中的任意一个用户作为目标用户,根据该目标用户的注册时间,可以从可用数据库中确定用于记录目标用户的数据的目标数据库,并建立目标用户与目标数据库之间的第一对应关系,以便根据该第一对应关系在目标数据库中查询和/或记录目标用户的数据,其中,各个可用数据库各对应于一个时间段,该目标数据库对应的时间段包含该目标用户的注册时间。由此可见,对于应用系统的各个用户及各个可用数据库来说,由于各个可用数据库中记录的数据均是用户注册时间位于其对应时间段内的用户的数据,也即,各个可用数据库记录的是在各自对应时间段内注册用户的数据,因此,对于应用系统的运行过程中可用数据库数量增加或减少的动态变化,大部分或全部可用数据库依然可以是用于记录其自身时间段内注册用户的数据,这使得大部分用户的数据依然可以记录在其原本所在的可用数据库中而无需从一个可用数据库迀移到另一个数据库中,从而避免了大量数据频繁的数据迀移所导致的重新为大量数据构建索引和缓存,大大提升了应用系统的数据库性能,为用户带来了更好的体验。
【附图说明】
[0017]通过参考附图阅读下文的详细描述,本发明示例性实施方式的上述以及其他目的、特征和优点将变得易于理解。在附图中,以示例性而非限制性的方式示出了本发明的若干实施方式,其中:
[0018]图1示意性地示出了本发明实施方式的一个示例性应用场景的框架示意图;
[0019]图2示意性地示出了本发明中数据库的实现方法一实施例的流程图;
[0020]图3示意性地示出了本发明中数据库的实现方法另一实施例的流程图;
[0021]图4示意性地示出了本发明实施例中一种应用系统数据库分库分表示例的示意图;
[0022]图5示意性地示出了本发明实施例中一种应用系统可用数据库扩容示例的示意图;
[0023]图6示意性地示出了本发明实施例中另一种应用系统可用数据库扩容示例的示意图;
[0024]图7示意性地示出了本发明中数据库的实现设备一实施例的结构图;
[0025]在附图中,相同或对应的标号表不相同或对应的部分。
【具体实施方式】
[0026]下面将参考若干示例性实施方式来描述本发明的原理和精神。应当理解,给出这些实施方式仅仅是为了使本领域技术人员能够更好地理解进而实现本发明,而并非以任何方式限制本发明的范围。相反,提供这些实施方式是为了使本公开更加透彻和完整,并且能够将本公开的范围完整地传达给本领域的技术人员。
[0027]本领域技术人员知道,本发明的实施方式可以实现为一种系统、装置、设备、方法或计算机程序产品。因此,本公开可以具体实现为以下形式,即:完全的硬件、完全的软件(包括固件、驻留软件、微代码等),或者硬件和软件结合的形式。
[0028]根据本发明的实施方式,提出了一种数据库的实现方法和设备。
[0029]在本文中,需要理解的是,所涉及的术语“应用系统”表示的是能够为用户提供服务或功能的系统,所涉及的术语“数据”表示的是用户在应用系统中使用各种服务或功能时在应用系统中产生的操作数据。例如,在一种可能的应用场景示例中,“应用系统”可以是一种网络社交应用,相应地,“数据”可以是网络社交用户在网络社交应用平台中发布的日志消息、聊天信息、添加好友的操作记录、查询消息的操作记录等任何网络社交用户操作产生的数据。又如,在另一种可能的应用场景示例中,“应用系统”可以是一种电商应用,相应地,“数据”可以是电商用户在电商平台中购买商品的订单记录、查询商品的操作记录、收藏商品的信息等任何电商用户操作产生的数据。可以理解的是,本发明实施方式的“应用系统”及“数据”不限于上述两个应用场景示例,本发明实施方式的“应用系统”可以是任何一种能够为用户提供服务的应用系统,本发明实施方式的“数据”可以是用户使用应用系统提供的服务时在应用系统中产生的任何一种操作数据。
[0030]此外,附图中的任何元素数量均用于示例而非限制,以及任何命名都仅用于区分,而不具有任何限制含义。
[0031]下面参考本发明的若干代表性实施方式,详细阐释本发明的原理和精神。
[0032]发曰月概沐
[0033]本发明人发现,在应用系统的运行过程中,一方面,随着新用户不断地注册到应用系统以及已注册用户对应用系统的使用,应用系统需要记录的数据在不断增加,这就使得应用系统需要不断地增加数据库去分担不断增加的数据记录,另一方面,有时一些数据库所在的设备会出现宕机的情况,宕机设备的数据库无法继续用于记录数据和响应数据操作,这就使得应用系统需要将由宕机设备的数据库所处理的数据记录及数据操作响应分配到其他数据库处理,从而使得应用系统中用户记录数据的数据库减少,因此,在应用程序的运行过程中,用于记录数据的数据库数量是动态变化的。但是,现有的数据库实现方式中,数据库性能无法适应应用系统运行过程中的数据库数量动态变化,原因在于,现有的数据库实现方式中是以散列方式来对数据库进行分库分表的,这导致了数据库数量变化时为大部分用户记录数据的数据库都会发生变化,从而在数据库数量动态变化的应用系统中造成了大量数据频繁的数据迀移,数据库就需要为大量数据频繁地构建索引和缓存,从而大大降低了应用系统的数据库性能。进一步而言,现有数据库实现方式对数据库的分库分表之所以会在数据库数量动态变化的应用系统运行过程中造成大量数据频繁的数据迀移,原因在于,现有数据库实现方式对数据库进行分库分表时,各用户的数据映射到的数据库是以该用户的散列值相对于数据库数量的余数作为编号的数据库,因此,在应用系统运行过程中,每次出现数据库数量变化的情况,大部分用户的散列值相对于数据库数量的余数都会发生变化,这就导致了每次数据库数量变化时大部分用户的数据都需要从一个数据库迀移到另一个数据库中记录。
[0034]基于上述研宄,本发明实施方式的基本思想在于:为了尽量避免在数据库数量变化的应用系统运行过程中大量数据频繁的数据迀移,以提升应用系统的数据库性能,在对数据库进行分库分表时,可以按照用户注册时间来为各用户分配用于记录用户数据的数据库,具体地,应用系统的各个可用数据库可以对应着一个时间段,各个可用数据库中记录的数据可以均是用户注册时间位于其对应时间段内的用户的数据,也即,各个可用数据库对应记录的是在各自对应时间段内注册用户的数据,因此,对于应用系统运行过程中动态出现的可用数据库数量变化,大部分或全部可用数据库依然可以是用于记录其对应时间段内注册用户的数据,这使得大部分用户的数据依然可以记录在其原本所在的可用数据库中而无需从一个可用数据库迀移到另一个数据库中。
[0035]在介绍了本发明的基本原理之后,下面具体介绍本发明的各种非限制性实施方式。
[0036]应用场景总览
[0037]首先参考图1,图1是本发明的实施方式的一个示例性应用场景的框架示意图。其中,用户通过用户设备上的客户端102与应用系统的服务器101进行交互。本领域技术人员可以理解,图1所示的框架示意图仅是本发明的实施方式可以在其中得以实现的一个示例。本发明实施方式的适用范围不受到该框架任何方面的限制。
[0038]需要注意的是,此处的用户设备可以是现有的、正在研发的或将来研发的、能够通过任何形式的有线和/或无线连接(例如,W1-Fi, LAN、蜂窝、同轴电缆等)实现其上客户端102与服务器101交互的任何用户设备,包括但不限于:现有的、正在研发的或将来研发的智能手机、非智能手机、平板电脑、膝上型个人计算机、桌面型个人计算机、小型计算机、中型计算机、大型计算机等。
[0039]还需要注意的是,此处的服务器101仅是现有的、正在研发的或将来研发的、能够配置应用系统的设备的一个示例。本发明的实施方式在此方面不受任何限制。
[0040]基于图1所示的框架,服务器101根据所述目标用户的注册时间,从可用于记录用户数据的可用数据库中,确定用于记录所述目标用户的数据的目标数据库;其中,各个可用数据库各对应于一个时间段,所述目标数据库对应的时间段包含所述目标用户的注册时间。然后,服务器101可以建立所述目标用户与所述目标数据库之间的第一对应关系,以便服务器101根据所述第一对应关系而在所述目标数据库中查询和/或记录所述目标用户的数据。
[0041]可以理解的是,本发明的应用场景中,虽然此处和下面将本发明实施方式的动作描述为由服务器101执行,但是这些动作也可以部分由客户端102执行、部分由服务器101执行。本发明在执行主体方面不受限制,只要执行了本发明实施方式所公开的动作即可。
[0042]示例件方法
[0043]下面结合图1的应
当前第1页1 2 3 4 5 6 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1