一种数据存储方法及终端的制作方法

xiaoxiao2021-2-23  126

一种数据存储方法及终端的制作方法
【技术领域】
[0001 ]本发明设及计算机技术领域,具体设及一种数据存储方法及终端。
【背景技术】
[0002] 分布式数据库系统是逻辑上属于同一系统,物理上分布在用计算机网络连接的多 个节点(Node)上的数据集合。节点在计算机网络中连接在一起,每个节点都是一个独立的 数据库系统。在分布式数据库系统中,用户数据按照一定的分布规则分布在不同的存储节 点中,用户每次访问或修改用户数据时需要先定位用户数据所在的存储节点,然后再从该 存储节点中存取用户数据。
[0003] 目前,常见的分布规则有按记录标识分布、按用户活跃度分布等。其中,按记录标 识分布需要业务服务器维护一张映射表,在映射表中记录有记录标识和存储节点的对应关 系,当用户数据量很大时,映射表也将变的很大,导致业务服务器在映射表中查询目标用户 所对应的存储节点的效率降低;按用户活跃度分布也需要业务服务器维护一张映射表,在 映射表中记录有用户活跃度和存储节点的对应关系,当用户数据量很大时,映射表也将变 的很大,并且并非所有数据库系统均支持用户活跃度的统计测量,导致此种分布规则的应 用受限。

【发明内容】

[0004] 本发明实施例提供了一种数据存储方法及终端,可W避免在进行大量用户数据的 分布式存储时产生记录条数过多的映射表,提高查询目标用户所对应的目标存储节点的效 率,从而提高用户数据的存储效率。
[0005] 第一方面,本发明实施例提供了一种数据存储方法,包括:
[0006] 接收数据存储请求,所述数据存储请求携带目标用户标识和用户数据;
[0007] 将所述目标用户标识按照预设的映射算法进行运算,并根据运算结果查询所述目 标用户标识对应的目标转存节点,其中,所述目标转存节点对应多个用户标识;
[000引在存储映射表中查询所述目标转存节点对应的目标存储节点,所述存储映射表中 记录有转存节点与存储所述转存节点对应用户数据的存储节点之间的一一对应关系或多 对一对应关系;
[0009] 将所述数据存储请求携带的所述用户数据存储至所述目标存储节点中对应所述 目标用户标识的存储位置。
[0010] 第二方面,本发明实施例提供了一种终端,包括:
[0011] 接收单元,用于接收数据存储请求,所述数据存储请求携带目标用户标识和用户 数据;
[0012] 第一查询单元,用于将所述目标用户标识按照预设的映射算法进行运算,并根据 运算结果查询所述目标用户标识对应的目标转存节点,其中,所述目标转存节点对应多个 用户标识;
[0013] 第二查询单元,用于在存储映射表中查询所述目标转存节点对应的目标存储节 点,所述存储映射表中记录有转存节点与存储所述转存节点对应用户数据的存储节点之间 的一一对应关系或多对一对应关系;
[0014] 存储单元,用于将所述数据存储请求携带的所述用户数据存储至所述目标存储节 点中对应所述目标用户标识的存储位置。
[0015] 通过实施本发明实施例,终端接收数据存储请求,将数据存储请求中携带的目标 用户标识按照预设的映射算法进行运算,并根据运算结果查询目标用户标识对应的目标转 存节点,并在存储映射表中查询目标转存节点对应的目标存储节点,进而将数据存储请求 中携带的用户数据存储至目标存储节点中对应目标用户标识的存储位置。因此在终端将大 量用户数据按照分布式数据存储方式存储到多个存储节点时,可W避免映射表中用户标识 与存储节点的对应关系过多,提高终端在映射表中查询目标用户所对应的目标存储节点的 效率,从而提高用户数据的存储效率。
【附图说明】
[0016] 为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使 用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领 域普通技术人员来讲,在不付出创造性劳动的前提下,还可W根据运些附图获得其他的附 图。
[0017] 图1是本发明实施例提供的一种数据存储方法的流程示意图;
[0018] 图2是本发明实施例提供的另一种数据存储方法的流程示意图;
[0019] 图3是本发明实施例提供的一种终端的结构示意图;
[0020] 图4是本发明实施例提供的另一种终端的结构示意图;
[0021] 图5是本发明实施例提供的一种分布式数据库系统的结构示意图;
[0022] 图6是本发明实施例提供的另一种分布式数据库系统的结构示意图;
[0023] 图7是本发明实施例提供的另一种终端的结构示意图。
【具体实施方式】
[0024] 下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完 整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发 明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施 例,都属于本发明保护的范围。
[0025] 请参见图1,图1是本发明实施例提供的一种数据存储方法的流程示意图。如图1所 示,该数据存储方法可W包括但不限于W下步骤。
[0026] S101、接收数据存储请求,数据存储请求携带目标用户标识和用户数据。
[0027] 本发明实施例中,终端接收用户输入的数据存储请求,该数据存储请求携带目标 用户标识和用户数据,终端提取数据存储请求中携带的目标用户标识和用户数据,具体的, 该目标用户标识可为QQ号码、微信号码等,该目标用户标识还可W为QQ号码、微信号码等各 种号码转换后的二进制值。具体的,用户可W通过终端中安装的数据库APP(Application, 应用程序)中的选项触发该数据存储请求。
[00%] S103、将目标用户标识按照预设的映射算法进行运算,并根据运算结果查询目标 用户标识对应的目标转存节点,其中,目标转存节点对应多个用户标识。
[0029] 本发明实施例中,终端提取出数据存储请求中携带的目标用户标识后,将目标用 户标识按照预设的映射算法进行运算,其中,该预设的映射算法可包括但不限于哈希算法, 例如:MD5算法(Message-Digest Algorithm 5,信息-摘要算法5)、除留取余算法、平方取中 算法等。终端采用哈希算法将目标用户标识对应的任意长度的二进制值映射为较短的固定 长度的二进制值,得到哈希值,并根据运算结果(即哈希值)查询目标用户标识对应的目标 转存节点,其中,若终端所对应的分布式数据库系统包括多个转存节点,则每个转存节点对 应一个或多个用户标识,且多个转存节点中至少有一个转存节点对应多个用户标识,且多 个转存节点各自对应的用户标识的个数可W相同,也可W不同。例如,第一转存节点对应一 个用户标识,第二转存节点对应两个用户标识,第Ξ转存节点对应Ξ个用户标识;或者,第 一转存节点、第二转存节点和第Ξ转存节点各自对应两个用户标识,等等。需要说明的是, 若终端采用的映射算法为MD5算法,则多个转存节点各自对应的用户标识的个数相同。因此 将用户标识进行哈希运算之后,可将多个用户标识分别映射到不同的转存节点上,也可W 将不同用户标识映射到同一个转存节点上,因此,一个转存节点可对应多个用户标识,转存 节点的数量小于用户标识的数量,从而避免了将用户标识直接映射到存储节点时产生的大 映射表,缩减了映射条数。
[0030] 举例来说,若终端所对应的分布式数据库系统中存储有12个用户对应的用户数 据,该12个用户的用户标识分别为1、3、5、6、8、9、12、14、16、17、19和20,终端所采用的预设 的哈希算法为除留取余法,且运算的参数为%11,则将上述12个用户的用户标识分别进行 哈希运算,即1 % 11 = 1,3% 11 = 3,5% 11 = 5,6% 11 =6,8% 11 =8,9% 11 = 9,12% 11 = 1, 14% 11 = 3,16% 11 = 5,17% 11 = 6,19% 11 = 8,20% 11 = 9,因此进行哈希运算之后得到的 12个哈希值分别为1、3、5、6、8、9、1、3、5、6、8和9,则可知哈希值为1的用户标识1和用户标识 12对应的目标转存节点为哈希值1指示的转存节点L1,哈希值为3的用户标识3和用户标识 14对应的目标转存节点为哈希值3指示的转存节点L3,哈希值为5的用户标识5和用户标识 16对应的目标转存节点为哈希值5指示的转存节点L5,哈希值为6的用户标识6和用户标识 17对应的目标转存节点为哈希值6指示的转存节点L6,哈希值为8的用户标识8和用户标识 19对应的目标转存节点为哈希值8指示的转存节点L8,哈希值为9的用户标识9和用户标识 20对应的目标转存节点为哈希值9指示的转存节点L9。
[0 031 ] S105、在存储映射表中查询目标转存节点对应的目标存储节点,存储映射表中记 录有转存节点与存储转存节点对应用户数据的存储节点之间的一一对应关系或多对一对 应关系。
[0032] 本发明实施例中,终端读取存储映射表,在存储映射表中查询目标转存节点对应 的目标存储节点,该存储映射表中记录有转存节点标识与存储该转存节点对应用户数据的 存储节点的标识之间的一一对应关系或多对一对应关系,其中,每个存储节点对应一个或 多个转存节点。为了提高终端读取存储映射表的效率,可W将存储映射表缓存在分布式数 据库系统的内存中,终端直接从分布式数据库系统的内存中读取存储映射表,不再通过分 布式数据库系统的磁盘读取存储映射表,大大提高了终端读取存储映射表的效率。
[0033] 具体来说,存储映射表可采用例如但不限于如下表1结构:
[0034] 表 1
[0035]
[0036] 由表1可知,转存节点标识为L1和L3的转存节点对应存储节点502,转存节点标识 为L5和L6的转存节点对应存储节点504,转存节点标识为L8和L9的转存节点对应存储节点 506,由此可知,用户标识为1、3、12和14的用户对应存储节点502,用户标识为5、6、16和17的 用户对应存储节点504,用户标识为8、9、19和20的用户对应存储节点506。其中,存储节点的 数量小于转存节点的数量,因此存储节点的数量更加小于用户标识的数量,从而避免了将 用户标识直接映射到存储节点时产生的映射条数过多的映射表,缩减了映射表中的映射条 数。
[0037] S107、将数据存储请求携带的用户数据存储至目标存储节点中对应目标用户标识 的存储位置。
[0038] 本发明实施例中,存储节点502-506中的每一个存储节点都存储有多个用户数据, 每一个用户数据由该用户数据的数据标识唯一标识,该数据标识可W包括但不限于用户标 识和数据项标识。例如,存储节点502中存储有用户1的年龄"18岁",则"18岁"即为存储节点 502中存储的用户数据,该用户数据由用户标识"Γ和数据项标识"年龄"唯一标识。
[0039] 具体来说,每一存储节点都维护一张数据映射表,数据映射表中记录有每个用户 数据的数据标识与该用户数据在存储节点中的存储位置之间的对应关系,其中数据标识可 唯一标识该数据标识对应的用户数据。在具体实现过程中,当存储节点502采用数据表来存 储用户数据时,数据映射表可采用例如但不限于如下表2所示结构:
[0040] 表 2
[0041]
[0042] 由表2可知,数据标识为"用户1、年龄"的用户数据保存在存储节点502中存储的数 据表1中,数据标识为"用户3、身高"的用户数据保存在存储节点502中存储的数据表2中。
[0043] 终端通过上述映射算法和存储映射表查询到目标用户标识对应的目标存储节点 后,将数据存储请求中携带的用户数据存储至目标存储节点中对应目标用户标识的存储位 置,例如,若终端查询到目标存储节点为存储节点502,且具体为存储节点502中的数据表1, 且数据存储请求中携带的用户数据为用户1的身高"180cm",则终端将用户数据"180cm"存 储到存储节点502中的数据表1中。
[0044] 需要说明的是,本发明实施例描述的为数据存储时的应用场景,用户通过终端从 存储节点中读取用户数据时,终端根据用户标识查询用户标识对应的存储节点的执行操作 同上,此处不再寶述。
[0045] 可见,在图1所描述的方法中,终端接收数据存储请求,将数据存储请求中携带的 目标用户标识按照预设的映射算法进行运算,并根据运算结果查询目标用户标识对应的目 标转存节点,并在存储映射表中查询目标转存节点对应的目标存储节点,进而将数据存储 请求中携带的用户数据存储至目标存储节点中对应目标用户标识的存储位置。因此在终端 将大量用户数据按照分布式数据存储方式存储到多个存储节点时,可W避免映射表中用户 标识与存储节点的对应关系过多,提高终端在映射表中查询目标用户所对应的目标存储节 点的效率,从而提高用户数据的存储效率。
[0046] 请参见图2,图2是本发明实施例提供的另一种数据存储方法的流程示意图。如图2 所示,该数据存储方法可W包括但不限于W下步骤。
[0047] S201、接收数据存储请求,数据存储请求携带目标用户标识和用户数据。
[0048] S203、将目标用户标识按照预设的映射算法进行运算,并根据运算结果查询目标 用户标识对应的目标转存节点,其中,目标转存节点对应多个用户标识。
[0049] S205、在存储映射表中查询目标转存节点对应的目标存储节点,存储映射表中记 录有转存节点与存储转存节点对应用户数据的存储节点之间的一一对应关系或多对一对 应关系。
[0050] S207、将数据存储请求携带的用户数据存储至目标存储节点中对应目标用户标识 的存储位置。
[0化1] 本发明实施例中的S201-S207可参见图1所示实施例的S101-S107,此处不再寶述。
[0052] S209、根据目标存储节点中存储的用户数据判断目标存储节点是否过负荷,若是, 执行步骤S211;若否,结束本流程。
[0053] 本发明实施例中,终端根据目标存储节点中存储的用户数据判断目标存储节点是 否过负荷,若判断出目标存储节点过负荷,则执行步骤S211;若否,结束本流程。
[0054] 作为一种可选的实施方式,根据目标存储节点中存储的用户数据判断目标存储节 点是否过负荷,包括:
[0055] 持续统计目标存储节点在每一时间周期内的用户数据增长速度,在用户数据增长 速度超过预设增长速度阔值时判定目标存储节点过负荷。
[0056] 具体的,终端持续统计目标存储节点在每一时间周期内的用户数据增长速度,在 用户数据增长速度超过预设增长速度阔值时判定目标存储节点过负荷。其中,该时间周期 可根据终端的具体应用环境进行设置。不难理解,周期时长越短,算得的用户数据增长速度 越准确。预设增长速度阔值也可根据终端的具体应用环境进行设置。
[0057] 在具体实现过程中,可采用例如但不限于下列公式来计算目标存储节点的用户数 据增长速度:用户数据增长速度=(当前周期统计的用户数据的数据量前一周期统计的用 户数据的数据量)/周期时长。上述周期时长可根据终端的具体应用环境进行设置。用户数 据增长速度为正值,表明目标存储节点中用户数据在增长,且值越大表明目标存储节点中 用户数据的增长速度越快,为负表明目标存储节点中用户数据在减少。
[0058] 作为另一种可选的实施方式,根据目标存储节点中存储的用户数据判断目标存储 节点是否过负荷,包括:
[0059] 统计目标存储节点中存储的用户数据的数量,在目标存储节点中用户数据的数量 超过预设容量阔值时判定目标存储节点过负荷。
[0060] 具体的,终端统计目标存储节点中存储的用户数据的数量,在目标存储节点中用 户数据的数量超过预设容量阔值时判定目标存储节点过负荷。其中,预设容量阔值可根据 目标存储节点的具体存储容量进行设置,例如,若目标存储节点的存储容量为200GB,则将 目标存储节点对应的预设容量阔值设置为180GB等。
[0061 ] S211、从目标存储节点所存储的多个转存节点对应的用户数据中选择部分转存节 点对应的用户数据作为待迁移用户数据,并从尚未过负荷的存储节点中选择至少一个存储 节点作为待迁移存储节点,或从新增的存储节点中选择至少一个存储节点作为待迁移存储 节点,其中,待迁移存储节点的剩余总存储容量大于待迁移用户数据的数据量。
[0062] 本发明实施例中,若终端判断出目标存储节点过负荷,则终端从目标存储节点所 存储的多个转存节点对应的用户数据中选择部分转存节点对应的用户数据作为待迁移用 户数据,并从尚未过负荷的存储节点中选择至少一个存储节点作为待迁移存储节点,或从 新增的存储节点中选择至少一个存储节点作为待迁移存储节点,其中,待迁移存储节点的 剩余总存储容量大于待迁移用户数据的数据量。其中,待迁移存储节点的数量可W为一个, 也可W为多个,本发明实施例W待迁移存储节点为一个为例进行说明。
[0063] 具体的,若终端判断出目标存储节点过负荷,则需要将目标存储节点中的部分用 户数据进行数据迁移,即需要对分布式数据库系统进行扩容,或对分布式数据库系统的负 载进行均衡,W使目标存储节点中的用户数据不再过负荷,从而影响系统性能。终端从尚未 过负荷的存储节点中选择至少一个存储节点,或从系统新增加的存储节点中选择至少一 个,或从尚未过负荷的存储节点W及新增加的存储节点中选择至少一个尚未过负荷的存储 节点W及至少一个新增加的存储节点作为待迁移存储节点,若 待迁移存储节点为一个,贝U 该待迁移存储节点的剩余总存储容量需大于待迁移用户数据的数据量,若待迁移存储节点 为多个,则多个待迁移存储节点的剩余总存储容量需大于待迁移用户数据的数据量。
[0064] S213、将待迁移用户数据迁移到待迁移存储节点中,并更新存储映射表。
[0065] 本发明实施例中,终端将待迁移用户数据迁移到待迁移存储节点中,并更新存储 映射表。
[0066] 例如,若目标存储节点为存储节点502,终端从存储节点502中存储的转存节点L1 和L3对应的用户数据中选择转存节点L1对应的用户1和用户12对应的所有用户数据作为待 迁移用户数据,用户1和用户12对应的所有用户数据的数据量为50GB(Gigabyte,吉字节), 终端从新增加的存储节点中选择一个标识为512的存储节点作为待迁移存储节点,该待迁 移存储节点的存储容量为200GB,可容纳待迁移用户数据。因此,终端将待迁移用户数据迁 移至待迁移存储节点512上,即实现了多个用户的用户数据的批量迁移,不再针对每一个用 户数据进行单独迁移,提高了用户数据的迁移效率。终端将待迁移用户数据迁移至待迁移 存储节点后,更新存储映射表,将存储映射表中转存节点L1对应存储节点标识修改为待迁 移存储节点的标识512,后续若需对用户1和用户12对应的用户数据进行存取,则需从存储 节点512中存取用户1和用户12对应的用户数据。
[0067] 可见,在图2所描述的方法中,当终端判断出目标存储节点过负荷时,从目标存储 节点中存储的多个转存节点对应的用户数据中选择部分转存节点对应的用户数据作为待 迁移用户数据,并从尚未过负荷的存储节点中选择至少一个存储节点作为待迁移存储节 点,或从新增的存储节点中选择至少一个存储节点作为待迁移存储节点,进而将待迁移用 户数据迁移至待迁移存储节点中,因此可W针对多个用户标识对应的用户数据进行批量迁 移,无需针对单独用户的用户数据进行逐次迁移,减少了用户数据迁移的次数和时间,提高 了用户数据的迁移效率。
[0068] 上述详细阐述了本发明实施例的方法,下面为了便于更好地实施本发明实施例的 上述方案,相应地,下面还提供用于配合实施上述方案的相关终端。
[0069] 请参见图3,图3是本发明实施例提供的一种终端的结构示意图。如图3所示,该终 端30包括:接收单元301、第一查询单元303、第二查询单元305和存储单元307,其中,
[0070] 接收单元301,用于接收数据存储请求,数据存储请求携带目标用户标识和用户数 据;
[0071] 第一查询单元303,用于将目标用户标识按照预设的映射算法进行运算,并根据运 算结果查询目标用户标识对应的目标转存节点,其中,目标转存节点对应多个用户标识;
[0072] 第二查询单元305,用于在存储映射表中查询目标转存节点对应的目标存储节点, 存储映射表中记录有转存节点与存储转存节点对应用户数据的存储节点之间的一一对应 关系或多对一对应关系;
[0073] 存储单元307,用于将数据存储请求携带的用户数据存储至目标存储节点中对应 目标用户标识的存储位置。
[0074] 可理解的是,本实施例的终端30的各功能单元的功能可参见图1所示实施例的相 关描述,此处不再寶述。
[0075] 请一并参见图4,图4是本发明实施例提供的另一种终端的结构示意图。其中,图4 所示的终端30是由图3所示的终端30进行优化得到的。与图3相比,图4所描述的终端30包括 接收单元301、第一查询单元303、第二查询单元305和存储单元307外,还包括判断单元309、 选择单元311和迁移单元313,其中,
[0076] 判断单元309,用于根据目标存储节点中存储的用户数据判断目标存储节点是否 过负荷;
[0077] 作为一种可选的实施方式,判断单元309具体用于:
[0078] 持续统计目标存储节点在每一时间周期内的用户数据增长速度,在用户数据增长 速度超过预设增长速度阔值时判定目标存储节点过负荷;或,
[0079] 统计目标存储节点中存储的用户数据的数量,在目标存储节点中用户数据的数量 超过预设容量阔值时判定目标存储节点过负荷。
[0080] 选择单元311,用于若判断单元309判断出目标存储节点过负荷,则从目标存储节 点所存储的多个转存节点对应的用户数据中选择部分转存节点对应的用户数据作为待迁 移用户数据,并从尚未过负荷的存储节点中选择至少一个存储节点作为待迁移存储节点, 或从新增的存储节点中选择至少一个存储节点作为待迁移存储节点,其中,待迁移存储节 点的剩余总存储容量大于待迁移用户数据的数据量;
[0081] 迁移单元313,用于将待迁移用户数据迁移到待迁移存储节点中,并更新存储映射 表。
[0082] 可理解的是,本实施例的终端30的各功能单元的功能参见图2所示实施例的相关 描述,此处不再寶述。
[0083] 请参见图5,图5是本发明实施例提供的一种分布式数据库系统的结构示意图。如 图5所示,分布式数据库系统500包括多个存储节点502-506和业务服务器508。其中,存储节 点502-506与业务服务器508之间可通过总线或者其它方式连接,其中,图5中W通过总线 510连接为例。存储节点502-506中的每一个存储节点都存储有多个用户数据,每一个用户 数据由该用户数据的数据标识唯一标识,该数据标识可W包括但不限于用户标识和数据项 标识。例如,存储节点502中存储有用户1的年龄"18岁",则"18岁"即为存储节点502中存储 的用户数据,该用户数据由用户标识"Γ和数据项标识"年龄"唯一标识。业务服务器508可 用于实现用户的注册、数据上传、数据下载等业务,业务服务器508还用于根据用户发送的 数据存储请求将用户需要存储的用户数据存储到存储节点502-506中,或根据用户发送的 数据访问请求从存储节点502-506中获取用户需要的用户数据,本实施例中业务服务器508 可具体为上述实施例中的终端30。
[0084] 具体来说,每一存储节点都维护一张数据映射表,数据映射表中记录有每个用户 数据的数据标识与该用户数据在存储节点中的存储位置之间的对应关系,其中数据标识可 唯一标识该数据标识对应的用户数据。在具体实现过程中,当存储节点502采用数据表来存 储用户数据时,数据映射表可采用例如但不限于表2所示结构。
[0085] 需要说明的是,为提高业务服务器508从存储节点502-506中存取用户数据的效 率,可使用内存数据库来实现上述存储节点502-506中的至少一个,即将用户数据放在内存 中,W提高业务服务器508的业务性能。
[0086] 应注意,本领域的技术人员应当明白,在具体实现过程中,存储节点的数量可根据 实际需要进行设置,而并非局限于图5中所示的数量。
[0087] 业务服务器508用于接收数据存储请求,该数据存储请求携带目标用户标识和用 户数据,业务服务器508提取数据存储请求中携带的目标用户标识和用户数据,具体的,该 目标用户标识可为QQ号码、微信号码等,该目标用户标识还可W为QQ号码、微信号码等各种 号码转换后的二进制值。业务服务器508将目标用户标识按照预设的映射算法进行运算,其 中,该预设的映射算法可包括但不限于哈希算法,例如:MD5算法、除留取余算法、平方取中 算法等。业务服务器508采用哈希算法将目标用户标识对应的任意长度的二进制值映射为 较短的固定长度的二进制值,得到哈希值,并根据运算结果(即哈希值)查询目标用户标识 对应的目标转存节点,其中,若终端所对应的分布式数据库系统包括多个转存节点,则每个 转存节点对应一个或多个用户标识,且多个转存节点中至少有一个转存节点对应多个用户 标识,且多个转存节点各自对应的用户标识的个数可W相同,也可W不同。例如,第一转存 节点对应一个用户标识,第二转存节点对应两个用户标识,第Ξ转存节点对应Ξ个用户标 识;或者,第一转存节点、第二转存节点和第Ξ转存节点各自对应两个用户标识,等等。需要 说明的是,若终端采用的映射算法为MD5算法,则多个转存节点各自对应的用户标识的个数 相同。
[008引业务服务器508还用于读取存储映射表,在存储映射表中查询目标转存节点对应 的目标存储节点,该存储映射表中记录有转存节点标识与存储该转存节点对应用户数据的 存储节点的标识之间的一一对应关系或多对一对应关系,其中,每个存储节点对应一个或 多个转存节点。为了提高业务服务器508读取存储映射表的效率,可W将存储映射表缓存在 分布式数据库系统500的内存中,业务服务器508直接从分布式数据库系统500的内存中读 取存储映射表,不再通过分布式数据库系统500的磁盘读取存储映射表,大大提高了业务服 务器508读取存储映射表的效率。具 体来说,存储映射表可采用例如但不限于表1结构。
[0089] 业务服务器508还用于将数据存储请求携带的用户数据存储至目标存储节点中对 应目标用户标识的存储位置。具体的,业务服务器508通过上述映射算法和存储映射表查询 到目标用户标识对应的目标存储节点后,将数据存储请求中携带的用户数据存储至目标存 储节点中对应目标用户标识的存储位置,例如,若业务服务器508查询到目标存储节点为存 储节点502,且具体为存储节点502中的数据表1,且数据存储请求中携带的用户数据为用户 1的身高"180cm",则业务服务器508将用户数据"180cm"存储到存储节点502中的数据表1 中。
[0090] 需要说明的是,本发明实施例描述的为数据存储时的应用场景,用户通过业务服 务器508从存储节点中读取用户数据时,业务服务器508根据用户标识查询用户标识对应的 存储节点的执行操作同上,此处不再寶述。
[0091] 可见,在图5所描述的分布式数据库系统中,业务服务器接收数据存储请求,将数 据存储请求中携带的目标用户标识按照预设的映射算法进行运算,并根据运算结果查询目 标用户标识对应的目标转存节点,并在存储映射表中查询目标转存节点对应的目标存储节 点,进而将数据存储请求中携带的用户数据存储至目标存储节点中对应目标用户标识的存 储位置。因此在业务服务器将大量用户数据按照分布式数据存储方式存储到多个存储节点 时,可W避免映射表中用户标识与存储节点的对应关系过多,提高业务服务器在映射表中 查询目标用户所对应的目标存储节点的效率,从而提高用户数据的存储效率。
[0092] 请参见图6,图6是本发明实施例提供的另一种分布式数据库系统的结构示意图。 如图6所示,分布式数据库系统500包括多个存储节点502-506、业务服务器508和待迁移存 储节点512,其中,存储节点502-506和待迁移存储节点512与业务服务器508之间可通过总 线或者其它方式连接,其中,图5中W通过总线510连接为例。存储节点502-506和业务服务 器508的结构和功能可参见图5所示实施例中存储节点502-506和业务服务器508的相关描 述,此处不再寶述。其中,业务服务器508还用于在存储节点502-506过负荷时,将存储节点 502-506中的部分用户数据迁移到待迁移存储节点512中,待迁移存储节点512用于对从存 储节点502-506中迁移出的用户数据进行存储。
[0093] 业务服务器508还用于根据目标存储节点中存储的用户数据判断目标存储节点是 否过负荷,若判断出目标存储节点过负荷,则业务服务器508从目标存储节点所存储的多个 转存节点对应的用户数据中选择部分转存节点对应的用户数据作为待迁移用户数据,并从 尚未过负荷的存储节点中选择至少一个存储节点作为待迁移存储节点512,或从新增的存 储节点中选择至少一个存储节点作为待迁移存储节点512,其中,待迁移存储节点512的剩 余总存储容量大于待迁移用户数据的数据量;业务服务器508将待迁移用户数据迁移到待 迁移存储节点512中,并更新存储映射表。其中,待迁移存储节点512的数量可W为一个,也 可W为多个,本发明实施例W待迁移存储节点512为一个为例进行说明。
[0094] 具体的,若业务服务器508判断出目标存储节点过负荷,则需要将目标存储节点中 的部分用户数据进行数据迁移,即需要对分布式数据库系统500进行扩容,或对分布式数据 库系统500的负载进行均衡,W使目标存储节点中的用户数据不再过负荷,从而影响系统性 能。业务服务器508从尚未过负荷的存储节点中选择至少一个存储节点,或从系统新增加的 存储节点中选择至少一个,或从尚未过负荷的存储节点W及新增加的存储节点中选择至少 一个尚未过负荷的存储节点W及至少一个新增加的存储节点作为待迁移存储节点512,若 待迁移存储节点512为一个,则该待迁移存储节点512的剩余总存储容量需大于待迁移用户 数据的数据量,若待迁移存储节点512为多个,则多个待迁移存储节点512的剩余总存储容 量需大于待迁移用户数据的数据量,例如,若目标存储节点为存储节点502,业务服务器508 从存储节点502中存储的转存节点L1和L3对应的用户数据中选择转存节点L1对应的用户1 和用户12对应的所有用户数据作为待迁移用户数据,用户1和用户12对应的所有用户数据 的数据量为50GB(Gigabyte,吉字节),业务服务器508从新增加的存储节点中选择一个作为 待迁移存储节点512,该待迁移存储节点512的存储容量为200GB,可容纳待迁移用户数据。 因此,业务服务器508将待迁移用户数据迁移至待迁移存储节点512上,即实现了多个用户 的用户数据的批量迁移,不再针对每一个用户数据进行单独迁移,提高了用户数据的迁移 效率。业务服务器50則尋待迁移用户数据迁移至待迁移存储节点512后,更新存储映射表,将 存储映射表中转存节点L1对应存储节点标识修改为512,后续若需对用户1和用户12对应的 用户数据进行存取,则需从存储节点512中存取用户1和用户12对应的用户数据。
[00M]作为一种可选的实施方式,业务服务器508持续统计目标存储节点在每一时间周 期内的用户数据增长速度,在用户数据增长速度超过预设增长速度阔值时判定目标存储节 点过负荷。其中,该时间周期可根据分布式数据库系统500的具体应用环境进行设置。不难 理解,周期时长越短,算得的用户数据增长速度越准确。预设增长速度阔值也可根据分布式 数据库系统500的具体应用环境进行设置。
[0096] 在具体实现过程中,可采用例如但不限于下列公式来计算目标存储节点的用户数 据增长速度:用户数据增长速度=(当前周期统计的用户数据的数据量前一周期统计的用 户数据的数据量)/周期时长。上述周期时长可根据分布式数据库系统500的具体应用环境 进行设置。用户数据增长速度为正值,表明目标存储节点中用户数据在增长,且值越大表明 目标存储节点中用户数据的增长速度越快,为负表明目标存储节点中用户数据在减少。
[0097] 作为一种可选的实施方式,业务服务器508统计目标存储节点中存储的用户数据 的数量,在目标存储节点中用户数据的数量超过预设容量阔值时判定目标存储节点过负 荷。其中,预设容量阔值可根据目标存储节点的具体存储容量进行设置,例如,若目标存储 节点的存储容量为200GB,则将目标存储节点对应的预设容量阔值设置为180GB等。
[0098] 可见,在图6所描述的分布式数据库系统中,当业务服务器判断出目标存储节点过 负荷时,从目标存储节点中存储的多个转存节点对应的用户数据中选择部分转存节点对应 的用户数据作为待迁移用户数据,并从尚未过负荷的存储节点中选择至少一个存储节点作 为待迁移存储节点,或从新增的存储节点中选择至少一个存储节点作为待迁移存储节点, 进而将待迁移用户数据迁移至待迁移存储节点中,因此可W针对多个用户标识对应的用户 数据进行批量迁移,无需针对单独用户的用户数据进行逐次迁移,减少了用户数据迁移的 次数和时间,提高了用户数据的迁移效率。
[0099] 请参见图7,是本发明提供的另一种终端的结构示意图。其中,如图7所示,终端70 可W包括:至少一个处理器701,例如CPU,至少一个总线702,至少一个输入装置703和至少 一个输出装置704,存储器705。其中,总线702用于实现运些组件之间的通信连接;输入装置 703具体可为终端的触控面板,包括触摸屏和触控屏,用于检测终端触控面板上的操作指 令;输出装置704可W包括终端的显示屏(Display),用于输出、显示图像或者数据;存储器 705可W是高速RAM显示器,也可W是非不稳定的显示器(non-volatile memcxry),例如至少 一个磁盘显示器,存储器705可选的还可W是至少一个位于远离前述处理器701的显示装 置。如图7所示,作为一种计算机显示介质的存储器705中可W包括操作系统、网络通信模 块、用户接口模块W及数据存储程序。
[0100] 在图7所示的终端70中,处理器701可W用于运行存储器705中存储的数据存储程 序,并执行W下操作:
[0101] 通过输入装置703接收数据存储请求,数据存储请求携带目标用户标识和用户数 据;
[0102] 将目标用户标识按照预设的映射算法进行运算,并根据运算结果查询目标用户标 识对应的目标转存节点,其中,目标转存节点对应多个用户标识;
[0103] 在存储映射表中查询目标转存节点对应的目标存储节点,存储映射表中记录有转 存节点与存储转存节点对应用户数据的存储节点之间的一一对应关系或多对一对应关系;
[0104] 将数据存储请求携带的用户数据存储至目标存储节点中对应目标用户标识的存 储位置。
[0105] 进一步地,处理器701执行将数据存储请求携带的用户数据存储 至目标存储节点 中对应目标用户标识的存储位置之后,还执行:
[0106] 根据目标存储节点中存储的用户数据判断目标存储节点是否过负荷;
[0107] 若判断出目标存储节点过负荷,则从目标存储节点所存储的多个转存节点对应的 用户数据中选择部分转存节点对应的用户数据作为待迁移用户数据,并从尚未过负荷的存 储节点中选择至少一个存储节点作为待迁移存储节点,或从新增的存储节点中选择至少一 个存储节点作为待迁移存储节点,其中,待迁移存储节点的剩余总存储容量大于待迁移用 户数据的数据量;
[0108] 将待迁移用户数据迁移到待迁移存储节点中,并更新存储映射表。
[0109] 更进一步地,处理器701执行根据目标存储节点中存储的用户数据判断目标存储 节点是否过负荷,具体为:
[0110] 持续统计目标存储节点在每一时间周期内的用户数据增长速度,在用户数据增长 速度超过预设增长速度阔值时判定目标存储节点过负荷;或,
[0111] 统计目标存储节点中存储的用户数据的数量,在目标存储节点中用户数据的数量 超过预设容量阔值时判定目标存储节点过负荷。
[0112] 更进一步地,映射算法包括哈希算法。
[0113] 更进一步地,存储映射表存储在分布式数据库的内存中。
[0114] 可理解的是,处理器701的执行步骤具体可参见图1或图2实施例的内容,此处不再 寶述。
[0115] 综上所述,终端接收数据存储请求,将数据存储请求中携带的目标用户标识按照 预设的映射算法进行运算,并根据运算结果查询目标用户标识对应的目标转存节点,并在 存储映射表中查询目标转存节点对应的目标存储节点,进而将数据存储请求中携带的用户 数据存储至目标存储节点中对应目标用户标识的存储位置。因此在终端将大量用户数据按 照分布式数据存储方式存储到多个存储节点时,可w避免映射表中用户标识与存储节点的 对应关系过多,提高终端在映射表中查询目标用户所对应的目标存储节点的效率,从而提 高用户数据的存储效率。
[0116] 进一步地,当终端判断出目标存储节点过负荷时,从目标存储节点中存储的多个 转存节点对应的用户数据中选择部分转存节点对应的用户数据作为待迁移用户数据,并从 尚未过负荷的存储节点中选择至少一个存储节点作为待迁移存储节点,或从新增的存储节 点中选择至少一个存储节点作为待迁移存储节点,进而将待迁移用户数据迁移至待迁移存 储节点中,因此可W针对多个用户标识对应的用户数据进行批量迁移,无需针对单独用户 的用户数据进行逐次迁移,减少了用户数据迁移的次数和时间,提高了用户数据的迁移效 率。
[0117] 本领域普通技术人员可W理解实现上述实施例方法中的全部或部分流程,是可W 通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质 中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁 碟、光盘、只读存储记忆体(Read-Only Memoir,ROM)或随机存储记忆体(Random Access Memory,RAM)等。
[0118] 本发明实施例方法中的步骤可W根据实际需要进行顺序调整、合并和删减。
[0119] 本发明实施例终端中的单元可W根据实际需要进行合并、划分和删减。
[0120] W上所掲露的仅为本发明一种较佳实施例而已,当然不能W此来限定本发明之权 利范围,本领域普通技术人员可W理解实现上述实施例的全部或部分流程,并依本发明权 利要求所作的等同变化,仍属于发明所涵盖的范围。
【主权项】
1. 一种数据存储方法,其特征在于,所述方法包括: 接收数据存储请求,所述数据存储请求携带目标用户标识和用户数据; 将所述目标用户标识按照预设的映射算法进行运算,并根据运算结果查询所述目标用 户标识对应的目标转存节点,其中,所述目标转存节点对应多个用户标识; 在存储映射表中查询所述目标转存节点对应的目标存储节点,所述存储映射表中记录 有转存节点与存储所述转存节点对应用户数据的存储节点之间的一一对应关系或多对一 对应关系; 将所述数据存储请求携带的所述用户数据存储至所述目标存储节点中对应所述目标 用户标识的存储位置。2. 根据权利要求1所述的方法,其特征在于,所述将所述数据存储请求携带的所述用户 数据存储至所述目标存储节点中对应所述目标用户标识的存储位置之后,还包括: 根据所述目标存储节点中存储的用户数据判断所述目标存储节点是否过负荷; 若判断出所述目标存储节点过负荷,则从所述目标存储节点所存储的多个转存节点对 应的用户数据中选择部分转存节点对应的用户数据作为待迀移用户数据,并从尚未过负荷 的存储节点中选择至少一个存储节点作为待迀移存储节点,或从新增的存储节点中选择至 少一个存储节点作为所述待迀移存储节点,其中,所述待迀移存储节点的剩余总存储容量 大于所述待迀移用户数据的数据量; 将所述待迀移用户数据迀移到所述待迀移存储节点中,并更新所述存储映射表。3. 根据权利要求2所述的方法,其特征在于,所述根据所述目标存储节点中存储的用户 数据判断所述目标存储节点是否过负荷,包括: 持续统计所述目标存储节点在每一时间周期内的用户数据增长速度,在所述用户数据 增长速度超过预设增长速度阈值时判定所述目标存储节点过负荷;或, 统计所述目标存储节点中存储的用户数据的数量,在所述目标存储节点中用户数据的 数量超过预设容量阈值时判定所述目标存储节点过负荷。4. 根据权利要求1-3任一项所述的方法,其特征在于,所述映射算法包括哈希算法。5. 根据权利要求1-3任一项所述的方法,其特征在于,所述存储映射表存储在所述分布 式数据库的内存中。6. -种终端,其特征在于,所述终端包括: 接收单元,用于接收数据存储请求,所述数据存储请求携带目标用户标识和用户数据; 第一查询单元,用于将所述目标用户标识按照预设的映射算法进行运算,并根据运算 结果查询所述目标用户标识对应的目标转存节点,其中,所述目标转存节点对应多个用户 标识; 第二查询单元,用于在存储映射表中查询所述目标转存节点对应的目标存储节点,所 述存储映射表中记录有转存节点与存储所述转存节点对应用户数据的存储节点之间的一 一对应关系或多对一对应关系; 存储单元,用于将所述数据存储请求携带的所述用户数据存储至所述目标存储节点中 对应所述目标用户标识的存储位置。7. 根据权利要求6所述的终端,其特征在于,所述终端还包括: 判断单元,用于根据所述目标存储节点中存储的用户数据判断所述目标存储节点是否 过负荷; 选择单元,用于若所述判断单元判断出所述目标存储节点过负荷,则从所述目标存储 节点所存储的多个转存节点对应的用户数据中选择部分转存节点对应的用户数据作为待 迀移用户数据,并从尚未过负荷的存储节点中选择至少一个存储节点作为待迀移存储节 点,或从新增的存储节点中选择至少一个存储节点作为所述待迀移存储节点,其中,所述待 迀移存储节点的剩余总存储容量大于所述待迀移用户数据的数据量; 迀移单元,用于将所述待迀移用户数据迀移到所述待迀移存储节点中,并更新所述存 储映射表。8. 根据权利要求7所述的终端,其特征在于,所述判断单元具体用于: 持续统计所述目标存储节点在每一时间周期内的用户数据增长速度,在所述用户数据 增长速度超过预设增长速度阈值时判定所述目标存储节点过负荷;或, 统计所述目标存储节点中存储的用户数据的数量,在所述目标存储节点中用户数据的 数量超过预设容量阈值时判定所述目标存储节点过负荷。9. 根据权利要求6-8任一项所述的终端,其特征在于,所述映射算法包括哈希算法。10. 根据权利要求6-8任一项所述的终端,其特征在于,所述存储映射表存储在所述分 布式数据库的内存中。
【专利摘要】本发明实施例提供了一种数据存储方法及终端。其中,该方法包括:接收数据存储请求,数据存储请求携带目标用户标识和用户数据;将目标用户标识按照预设的映射算法进行运算,并根据运算结果查询目标用户标识对应的目标转存节点,目标转存节点对应多个用户标识;在存储映射表中查询目标转存节点对应的目标存储节点,存储映射表中记录有转存节点与存储转存节点对应用户数据的存储节点之间的一一对应关系或多对一对应关系;将数据存储请求携带的用户数据存储至目标存储节点中对应目标用户标识的存储位置。通过本发明实施例,避免了在进行大量数据的分布式存储时产生大映射表,提高查询目标用户所对应的目标存储节点的效率。
【IPC分类】G06F17/30, H04L29/08
【公开号】CN105491149
【申请号】CN201510998390
【发明人】赖正盛
【申请人】深圳市金立通信设备有限公司
【公开日】2016年4月13日
【申请日】2015年12月26日

最新回复(0)