发明内容
本发明的目的是提供一种数据存储方法,以降低工作人员进行数据分配时的工作量,提高数据分配效率。
为实现上述目的,本发明提供了如下技术方案:
一种数据存储方法,应用于分布式实时数据库系统,包括:
根据测点的物理关联性或逻辑关联性将待存储数据划分为若干个数据集,并为每个数据集分配一个识别码;
依据第i个数据集的识别码确定与所述第i个数据集对应的服务器节点,包括:
依据每个服务器节点的剩余资源与所有服务器节点的总剩余资源的比值为每个服务器节点分配管辖的虚拟存储空间域,其中,每个虚拟存储空间域包括若干虚拟存储单元,每个虚拟存储单元具有唯一的地址标识;
应用哈希函数将第i个数据集的识别码进行转换,获得与第i个数据集对应的哈希值;
依据第i个数据集对应的哈希值的预设位置处的数组以及虚拟存储单元的地址标识确定与第i个数据集对应的虚拟存储空间域,所述数组的位数与所述虚拟存储单元的地址标识的位数相同;
依据与第i个数据集对应的虚拟存储空间域确定与所述第i个数据集对应的服务器节点;
将第i个数据集中的数据存储至与所述第i个数据集对应的服务器节点中。
上述方法,优选的,还包括:实时记录各个服务器节点的属性指标,所述属性指标至少包括:
每个服务器节点的当前剩余资源量;
每个服务器节点所允许的剩余资源量的最小值;
每个服务器节点当前管辖的虚拟存储单元的数量;
每个服务器节点的当前相对剩余资源量,其中,第i个服务器节点的相对剩余资源量依据第一公式确定,所述第一公式为:
其中,U为第i个服务器节点的相对剩余资源量;cremain为第i个服务器节点当前的剩余资源量;callremain是所有服务器节点的总的剩余资源量;T为第i个服务器节点当前管辖的虚拟存储单元的数量;N为所有服务器节点管辖的所有虚拟存储单元的数量。
上述方法,优选的,还包括:
当监测到第i个服务器节点的相对剩余资源量小于或等于预设阈值时,将所述第i个服务器节点过载的虚拟存储单元分配给其它服务器节点管辖。
上述方法,优选的,所述将所述第i个服务器节点过载的虚拟存储单元分配给其它服务器节点管辖包括:
获取所述第i个服务器节点的相对剩余资源量为零时,所述第i个服务器节点对应的虚拟存储单元的个数Tzero;
所述第i个服务器节点过载的虚拟存储单元的数量TE为:TE=T-Tzero,其中,T为所述第i个服务器节点当前管辖的虚拟存储单元的数量;
依据所述第一公式确定与所述过载的虚拟存储单元的数量TE相对应的n个服务器节点,所述n个服务器节点所能额外管辖的虚拟存储单元的数量的总和大于或等于所述第i个服务器节点过载的虚拟存储单元的数量TE;
将所述第i个服务器节点所管辖的虚拟存储单元中的TE个存储单元分配给与所述虚拟存储单元转移数量TE相对应的n个服务器节点管辖。
上述方法,优选的,所述n个服务器节点中,第j个服务器节点的能额外管辖的虚拟存储单元的个数Tj依据如下方法确定:
获取所述第j个服务器节点的相对剩余资源量为零时,所述第j个服务器节点对应的虚拟存储单元的个数TM;
所述第j个服务器节点能额外管辖的虚拟存储单元的个数Tj为:Tj=TM-T,其中,T为所述第j个服务器节点当前管辖的虚拟存储单元的数量。
上述方法,优选的,还包括:
当监测到第i个服务器节点的相对剩余资源量小于或等于所述第i个服务器节点所允许的剩余资源量的最小值时,将所述第i个服务器节点中存储时间最早的部分数据迁移到其它服务器节点中。
上述方法,优选的,所述将所述第i个服务器中存储时间最早的部分数据迁移到其它服务器节点中包括:
获取所述第i个服务器节点的相对剩余资源量为零时,所述第i个服务器节点对应的剩余资源量cM;
所述第i个服务器节点过载的资源量cx为:cx=cM-cremain,其中,cremain为所述第i个服务器节点当前剩余资源量;
依据所述第一公式确定与所述第i个服务器节点过载的资源量cx对应的n个服务器节点,所述n个服务器节点所能额外提供的资源量的总和大于或等于所述第i个服务器节点过载的资源量cx;
将所述第i个服务器节点过载的资源量cx对应的存储时间最早的数据迁移至所述n个服务器节点中。
上述方法,优选的,所述n个服务器节点中第k个服务器节点所能额外提供的资源量cxk依据如下方法确定:
获取所述第k个服务器节点的相对剩余资源量为零时,所述第k个服务器节点对应的剩余资源量ck;
所述第k个服务器节点所能额外提供的资源量cxk为:cxk=cremain-ck,其中,cremain为所述第i个服务器节点当前剩余资源量。
上述方法,优选的,当所述分布式实时数据库系统中有新的服务器节点加入时,还包括:
将相对剩余资源量小于或等于预设阈值的服务器节点管辖的部分虚拟存储单元分配给所述新的服务器节点管辖,所述新的服务器节点所管辖的虚拟存储单元的数量为所述新的服务器节点的相对剩余资源量为零时所对应的虚拟虚拟存储单元的数量。
上述方法,优选的,还包括:
将相对剩余资源量小于或等于服务器节点所允许的剩余资源量的最小值的服务器节点中的部分数据迁移至所述新的服务器节点中,迁移至所述新的服务器节点的数据量对应的资源量为所述新的服务器节点的相对剩余资源量为零时,所述新的服务器节点所对应的资源量。
上述方法,优选的,还包括:
当所述分布式实时数据库系统存储状态发生变化时,更新服务器节点与虚拟存储空间域的对应关系,并将所述对应关系存储至日志信息表中;
所述日志信息表包括实时信息表和历史信息表,所述实时信息表用于存储当前时刻的服务器节点与虚拟存储空间域的对应关系;所述历史信息表用于记录历史各时刻服务器节点与虚拟存储空间域的对应关系。
上述方法,优选的,所述历史信息表包括全量信息表和若干个增量信息表;
所述全量信息表包括若干条第一类记录,所述第一类记录用于存储历史某一时刻所有服务器节点与虚拟存储空间域的对应关系;
每一条所述第一类记录对应一个增量信息表,所述增量信息表包括预设数目条第二类记录,所述第二类记录用于记录历史某一时刻与上一条第二类记录的对应时刻相比发生变化的服务器节点与虚拟存储空间域的对应关系,其中,所述第二类记录的记录时刻晚于所述第一类记录的记录时刻。
一种基于如上所述的数据存储方法的数据查询方法,每一个增量信息表对应一个速查表,所述速查表包括预设数目条与所述增量信息表中的第二类记录一一对应的第三类记录,每一条第三类记录用于记录相对应的第二类记录中虚拟存储空间域的管辖状态是否发生变化的状态信息;所述方法包括:
依据待查询的时间在所述全量信息表中确定与所述待查询的时间对应的第一类记录组;
确定与所述第一类记录组中的第m条第一类记录相对应的速查表,依据所述待查询时间,在所述速查表中确定与所述待查询时间对应的第三类记录组;
依据所述待查询数据所属的数据集确定所述待查询数据所对应的虚拟存储单元Um;
对于所述第三类记录组中的第y条第三类记录,当所述虚拟存储单元Um对应位置处的状态信息为发生状态变化时,在所述第y条第三类记录中,确定与所述虚拟存储单元Um相邻的若干个连续的发生状态变化的虚拟存储单元;
依据所述连续的虚拟存储单元所属的虚拟存储空间域确定所述与所述第y条第三类记录对应的待查询数据所在的服务器节点;
在所述服务器节点中查询与所述第y条第三类记录对应的待查询数据。
一种数据存储系统,包括:
与数据采集器相连接的至少一个中心服务器节点,与所述至少一个中心服务器节点相连接的若干个子服务器节点;其中,
所述中心服务器节点包括:
划分模块,用于根据测点的物理关联性或逻辑关联性将待存储数据划分为若干个数据集,并为每个数据集分配一个识别码;
确定模块,用于依据第i个数据集的识别码确定与所述第i个数据集对应的子服务器节点,具体包括:
分配单元,用于依据每个子服务器节点的剩余资源与所有子服务器节点的总剩余资源的比值为每个子服务器节点分配管辖的虚拟存储空间域,其中,每个虚拟存储空间域包括若干虚拟存储单元,每个虚拟存储单元具有唯一的地址标识;
转换单元,用于应用哈希函数将第i个数据集的识别码进行转换,获得与第i个数据集对应的哈希值;
第一确定单元,用于依据第i个数据集对应的哈希值的预设位置处的数组以及虚拟存储单元的地址标识确定与第i个数据集对应的虚拟存储空间域,所述数组的位数与所述虚拟存储单元的地址标识的位数相同;
第二确定单元,用于依据与第i个数据集对应的虚拟存储空间域确定与所述第i个数据集对应的子服务器节点;
存储模块,用于将数据采集器推送的待存储的数据存储至相应的子服务器中。
上述系统,优选的,所述中心服务器节点还包括:
记录模块,用于实施记录各个子服务器节点的属性指标,所示属性指标至少包括:
每个子服务器节点的当前剩余资源量;
每个子服务器节点所允许的剩余资源量的最小值;
每个子服务器节点当前管辖的虚拟存储单元的数量;
每个子服务器节点的当前相对剩余资源量,其中,第i个子服务器节点的相对剩余资源量依据第一公式确定,所述第一公式为:
其中,U为第i个子服务器节点的相对剩余资源量;cremain为第i个子服务器节点当前的剩余资源量;callremain是所有子服务器节点的总的剩余资源量;T为第i个子服务器节点当前管辖的虚拟存储单元的数量;N为所有子服务器节点管辖的所有虚拟存储单元的数量。
上述系统,优选的,所述中心服务器节点还包括:
监测模块,用于监测第i个子服务器节点的相对剩余资源量的大小;
第一分配模块,用于在所述监测模块监测到第i个子服务器节点的相对剩余资源量小于或等于预设阈值时,将所述第i个子服务器节点过载的虚拟存储单元分配给其它子服务器节点管辖;
第二分配模块,用于在所述监测模块监测到第i个子服务器节点的相对剩余资源量小于或等于所述第i个子服务器节点所允许的剩余资源量的最小值时,将所述第i个子服务器节点中存储时间最早的部分数据迁移到其它子服务器节点中。
上述系统,优选的,所述中心服务器节点还包括:
第三分配模块,用于当有新的子服务器节点加入数据存储系统时,将相对剩余资源量小于或等于子服务器节点所允许的剩余资源量的最小值的子服务器节点中的部分数据迁移至所述新的子服务器节点中,迁移至所述新的子服务器节点的数据量对应的资源量为所述新的子服务器节点的相对剩余资源量为零时,所述新的子服务器节点所对应的资源量。
上述系统,优选的,所述中心服务器节点还包括:
日志记录模块,用于当所述数据存储系统存储状态发生变化时,更新子服务器节点与虚拟存储空间域的对应关系,并将所述对应关系存储至日志信息表中;
所述日志信息表包括实时新表和历史信息表,所述实时信息表用于记录当前时刻的服务器节点与虚拟存储空间域的对应关系;所述历史信息表用于记录历史各时刻服务器节点与虚拟存储空间域的对应关系。
通过以上方案可知,本申请提供了一种数据存储方法,将待存储数据分为若干的数据集,每个数据集通过虚拟存储空间域及哈希算法与相应的服务器节点建立映射关系,即每个数据集存储至与该数据集存在映射关系的服务器节点中,实现了分布式实时数据库系统中海量数据的自动存储,降低了工作人员进行数据分配时的工作量,提高了数据存储时的分配效率。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
请参阅图1,图1为本申请实施例提供的一种数据存储方法的流程图,包括:
步骤S101:将待存储数据划分为若干个数据集,并为每个数据集分配一个识别码;
本申请实施例中,为了简化分布式实时数据库系统,可以根据测点的物理关联性或逻辑关联性将海量待存储数据分为若干个组,每个组称为一个数据集。具体哪些数据分为一组,可以由用户指定。
其中,测点是工业领域的专有词汇,代指某个监测变量,该变量的值(即待存储数据,如1号锅炉的液位高度值等)可以来源于某个传感器,也可以来源于其他子系统,还可以来源于某次计算的结果。测点的物理关联性是指设备实体有连接关系,或者若干测点位于同一物理设备中,例如,一个设备中的两个待测量:1号锅炉的液位测点与炉温测点;测点的逻辑关联性是指设备实体间没有连接关系或测点位于不同的设备中,但用户认为这些测点有逻辑上的关联。
所述识别码可以是数组,如,某个数据集的识别码可以是“010010000000000”;所述识别码也可以是字符串,如,某个数据集的识别码可以是“test1”,也可以是测点的名称。
步骤S102:依据第i个数据集的识别码确定与所述第i个数据集对应的服务器节点,具体步骤如图2所示,可以包括:
步骤S1021:依据每个服务器节点的剩余资源与所有服务器的总剩余资源的比值为每个服务器分配管辖的虚拟存储空间域,其中,每个虚拟存储空间域包括若干虚拟存储单元,每个虚拟存储单元具有唯一的地址标识;
本申请实施例中,服务器节点的资源可以为服务器节点的磁盘空间、CPU性能(如CPU主频)、内存大小中的任意一项;或者,可以由服务器节点的磁盘空间、CPU性能、内存大小中的任意项的组合确定。
当服务器节点的资源为服务器节点的磁盘容量时,服务器节点的剩余资源是指服务器节点的剩余磁盘容量;所有服务器节点的总剩余资源则是指所有服务器节点的剩余磁盘容量的总和;
当服务器节点资源为服务器节点的CPU性能时,服务器节点的剩余资源是指服务器节点的CPU主频与CPU空闲比率的乘积,其中,CPU空闲比率为1与CPU占用比率之差;所有服务器节点的总剩余资源则是指所有服务器节点的剩余资源的总和;
当服务器节点资源为服务节点的内存大小时,服务器节点的剩余资源是指服务器节点的剩余内存的大小;所有服务器节点的总剩余资源则是指所有服务器节点的剩余内存大小的总和。
当服务器节点资源为服务器节点的磁盘空间、CPU性能、内存大小中的任意项的组合时,对于每一项资源分量,可以将其除以单位值以对资源分量进行归一化,从而便于所有分量进行叠加以得到服务器节点的资源。所述单位值的大小可以由用户指定。
例如,对于磁盘容量这一资源分量,可以取单位值为1GB,则如果服务器节点的当前磁盘的容量(即剩余空间)为20GB,那么,当前磁盘的容量除以单位值后(即归一化后)为20;对于CPU性能这一资源分量,可以取单位值为1GHz,则如果服务器节点的当前CPU主频为4GHz,那么,当前CPU主频归一化后为4;同理,对于内存这一资源分量,可以取单位值为1GHz,则如果服务器节点当前内存为15GHz,那么,当前内存归一化后为15,将归一化后的三个资源分量进行叠加即为服务器节点的资源值,本例中,服务器节点的资源值为39。
优选的,还可以为各个资源分量配置权重系数,基于此,分布式实时数据库系统中第m个服务器节点的资源值可以由第三公式(即公式(1))确定:
其中,Rnode为第m个服务器节点的资源值,Vdisk、Vcpu、Vmemory分别为第m个服务器节点的磁盘空间、CPU、内存的可用量(有单位),Idisk、Icpu、Imemory分别为磁盘空间、CPU、内存的单位值,a、b、c分别为各资源分量对应的权重系数。其中各个资源分量对应的权重系数的大小可由用户指定。
本申请实施例中,所述依据每个服务器节点的剩余资源与所有服务器的总剩余资源的比值为每个服务器分配管辖的虚拟存储空间域,具体可以依据第二公式(即公式(2))实现:
其中,Tm为分布式实时数据库系统中第m个服务器节点所管辖的虚拟存储空间域的大小;N为总的虚拟存储空间的大小;Rm为分布式实时数据库系统中第m个服务器的剩余资源;Rall为分布式实时数据库系统中所有服务器的剩余资源的总和;所有服务器所管辖的虚拟存储空间域的总和为总的虚拟存储空间。
步骤S1022:应用哈希算法将第i个数据集的识别码进行转换,获得与第i个数据集对应的哈希值;
本申请实施例中,可以选用MD5(Message-Digest Algorithm 5,信息-摘要算法5)哈希算法或SHA-1(Secure Hash Algorithm,安全散列算法)哈希算法等,当然,也可以选用其它哈希算法,这里不做具体限定。
在确定哈希算法后,如何对识别码进行哈希运算属于本领域的公知常识,这里不再赘述。
步骤S1023:依据第i个数据集对应的哈希值的预设位置处的数组以及虚拟存储单元的地址标识确定与第i个数据集对应的虚拟存储空间域,所述数组的位数与所述虚拟存储单元的地址标识的位数相同;
根据虚拟存储单元的地址标识的位数,依据第i个数据集对应的哈希值中的预设位置相应位数的数组确定与第i个数据集对应的虚拟存储空间域。
例如,假设虚拟存储单元的地址标识为4位的16进制数,而第i个数据集对应的哈希值为形如352d fcd6 fcc7 9137 95e6 e963 7a72 74d9的32位16进制数,所述预设位置如果为前四位,那么,第i个数据集对应虚拟存储空间域就是地址标识为352d的虚拟存储空间所属的虚拟存储空间域。
步骤S1024:依据与第i个数据集对应的虚拟存储空间域确定与所述第i个数据集对应的服务器节点;
由于虚拟空间域与服务器节点之间存在对应关系,因此,在确定第i个数据集与虚拟存储空间域的对应关系后,就可以确定第i个数据集与服务器节点之间的对应关系,也就是说,第i个数据集中的数据存储至与第i个数据集对应的服务器节点中。
步骤S103:将第i个数据集中的数据存储至与所述第i个数据集对应的服务器节点中。
确定与第i个数据集对应的服务器节点后,将第i个数据集中的数据存储至与第i个数据集对应的服务器节点中。
由于在流程工业领域,待存储数据是实时采集并进行存储的,因此,各个数据集都是动态增长的,也就是说,本申请实施例中,各个数据集的数据是不断更新的。
本申请实施例提供的一种数据存储方法,将待存储数据分为若干的数据集,每个数据集通过虚拟存储空间域及哈希算法与相应的服务器节点建立映射关系,即每个数据集存储至与该数据集存在映射关系的服务器节点中,实现了分布式实时数据库系统中海量数据的自动存储,降低了工作人员进行数据分配时的工作量,提高了数据存储时的分配效率。
本申请实施例中,为防止相互关联较为紧密的测量点在经过哈希运算后被分到多个服务器节点中而将待存储数据进行分组,对分组(即数据集)进行哈希运算,使得同一个组的数据被分到一个服务器节点中,方便后续查找。
上述实施例,优选的,还可以实时记录各个服务器节点的属性指标,以便于工作人员了解服务器节点的使用状况,优选的,所述属性指标可以包括:
每个服务器节点的当前剩余资源量;
每个服务器节点所允许的剩余资源量的最小值;
每个服务器节点当前管辖的虚拟存储单元的数量;
每个服务器节点当前的相对剩余资源量;
其中,各个服务器节点所允许的剩余资源量的最小值可以相同,例如,各个服务器节点所允许的剩余资源量的最小值为固定值A;当然,各个服务器节点所允许的剩余资源量的最小值也可以不同,例如第i个服务器节点所允许的剩余资源量的最小值可以为第i个服务器节点总的资源的80%,具体每个服务器节点所允许的剩余资源量的最小值是多少,可以由用户指定。
第i个服务器节点的相对剩余资源量依据第一公式(即公式(3))确定,所述第一公式为:
其中,U为第i个服务器节点的相对剩余资源量;cremain为第i个服务器节点当前的剩余资源量;callremain是所有服务器节点的总的剩余资源量;T为第i个服务器节点当前管辖的虚拟存储单元的数量;N为所有服务器节点管辖的所有虚拟存储单元的数量。
上述实施例,优选的,还可以包括:
对第i个服务器节点的剩余资源量进行监测,当监测到第i个服务器节点的相对剩余资源量小于或等于预设阈值时,将所述第i个服务器节点过载的虚拟存储单元分配给其它服务器节点管辖。
所述预设阈值可以由用户确定,例如,所述预设阈值可以取值为-0.2。
本申请实施例中,当第i个服务器节点的剩余资源量小于或等于预设阈值时,确定所述第i个服务器节点的虚拟存储单元量过载,也就是说,当监测到第i个服务器节点的虚拟存储单元量过载时,将第i个服务器节点过载的虚拟存储单元分配给其它服务器节点管辖。
本申请实施例中,所述将第i个服务器节点过载的虚拟存储单元分配给其它服务器节点管辖的步骤可参见图3,可以包括:
步骤S301:依据所述第一公式确定所述第i个服务器节点过载的虚拟存储单元的数量TE;具体包括:
获取所述第i个服务器节点的相对剩余资源量为零时,所述第i个服务器节点对应的虚拟存储单元的个数Tzero;即,令第一公式中的相对剩余资源量U为零,从确定Tzero的值,即:
所述第i个服务器节点过载的虚拟存储单元的数量TE为:
TE=T-Tzero (5)
其中,T为所述第i个服务器节点当前管辖的虚拟存储单元的数量;
步骤S302:依据所述第一公式确定与所述过载的虚拟存储单元的数量TE相对应的n个服务器节点,所述n个服务器节点所能额外管辖的虚拟存储单元的数量的总和大于或等于所述第i个服务器节点过载的虚拟存储单元的数量TE;
优选的,所述n个服务器节点中每一个服务器节点的相对剩余资源量都大于或等于零。
具体的,所述n个服务器节点中,第j个服务器节点的能额外管辖的虚拟存储单元的个数Tj可以依据如下方法确定:
获取所述第j个服务器节点的相对剩余资源量为零时,所述第j个服务器节点对应的虚拟存储单元的个数TM;即,令第一公式中的相对剩余资源量U为零,从确定TM的值,即:
所述第j个服务器节点能额外管辖的虚拟存储单元的个数Tj为:
Tj=TM-T (7)
其中,T为所述第j个服务器节点当前管辖的虚拟存储单元的数量。
所述n个服务器节点可以是相对剩余资源量最大的n个服务器节点。具体的,可以先计算相对剩余资源量最大的服务器节点可以额外管辖的虚拟存储单元的个数T1,如果T1≥TE,则执行步骤S303,即将所述第i个服务器节点过载的虚拟存储单元分配给相对剩余率资源量最大的服务器节点即可,而如果T1<TE,则计算剩余的服务器节点中相对剩余资源量最大的服务器节点可以额外管辖的虚拟存储单元的个数T2,如果T1+T2≥TE,则执行步骤S303,即将所述第i个服务器节点过载的虚拟存储单元分配给上述两个剩余资源量最大的服务器节点管辖,其中,可以为相对剩余资源量最大的服务器节点分配的虚拟存储单元的数量为T1,那么,为另一个相对剩余资源量最大的服务器节点分配的虚拟存储单元的数量则为TE-T1。而如果T1+T2<TE,则继续计算剩余的服务器节点中相对剩余资源量最大的服务器节点可以额外管辖的虚拟存储单元的个数T3,如果,T1+T2+T3≥TE,则执行步骤S303,即将所述第i个服务器节点过载的虚拟存储单元分配给上述三个相对剩余资源量最大的服务器节点管辖,而如果T1+T2+T3<TE,则继续计算剩余的服务器节点中相对剩余资源量最大的服务器节点可以额外管辖的虚拟存储单元的个数,依此类推,直到满足公式(8)为止。
步骤S303:将所述第i个服务器节点所管辖的虚拟存储单元中的TE个存储单元分配给与所述虚拟存储单元转移数量TE相对应的n个服务器节点管辖。
上述实施例,优选的,还可以包括:
对第i个服务器节点的剩余资源量进行监测,当监测到第i个服务器节点的相对剩余资源量小于或等于所述第i个服务器节点所允许的剩余资源量的最小值时,将所述第i个服务器节点中存储时间最早的部分数据迁移到其它服务器节点中。
本申请实施例中,当所述第i个服务器节点的相对剩余资源量小于或等于所述第i个服务器节点所允许的剩余资源量的最小值时,说明所述第i个服务器节点的资源量不足,需要将所述第i个服务器节点中的部分数据迁移到资源量比较充足的服务器节点中。
本申请实施例中,将所述第i个服务器中存储时间最早的部分数据迁移到其它服务器节点中的步骤可以参看图4,可以包括:
步骤S401:依据所述第一公式确定所述第i个服务器节点过载的资源量cx,具体包括:
获取所述第i个服务器节点的相对剩余资源量为零时,所述第i个服务器节点对应的剩余资源量cM;即,令第一公式中的相对剩余资源量U为零,从而确定cM的值,即:
所述第i个服务器节点过载的资源量cx为:
cx=|cremain-cM|=cM-cremain (10)
其中,cremain为所述第i个服务器节点当前剩余资源量;
步骤S402:依据所述第一公式确定与所述第i个服务器节点过载的资源量cx对应的n个服务器节点,所述n个服务器节点所能额外提供的资源量的总和大于或等于所述第i个服务器节点过载的资源量cx;
优选的,所述n个服务器节点中第k个服务器节点所能额外提供的资源量cxk可以依据如下方法确定:
获取所述第k个服务器节点的相对剩余资源量为零时,所述第k个服务器节点对应的剩余资源量ck;即:
所述第k个服务器节点所能额外提供的资源量cxk为:
cxk=cremain-ck (12)
其中,cremain所述第k个服务器的当前剩余资源量。所述n个服务器节点可以是相对剩余资源量最大的n个服务器节点。具体的,可以先计算相对剩余资源量最大的服务器节点所能额外提供的资源量cx1,如果cx1≥cx,则执行步骤S403,即将所述第i个服务器节点过载的资源量cx对应的存储时间最早的数据迁移至所述相对剩余资源量最大的服务器节点中。而如果cx1<cx,则计算剩余的服务器节点中剩余资源量最大的服务器节点所能额外提供的资源量cx2、如果cx1+cx2≥cx,则执行步骤S403,即将所述第i个服务器节点过载的资源量cx对应的存储时间最早的数据迁移至上述两个剩余资源量最大的服务器节点中,其中,迁移至相对剩余量最大的服务器节点中的数据量可以为cx1,那么,迁移至另一个相对剩余量最大的服务器节点的数据量则为cx-cx1。而如果cx1+cx2<cx,则继续计算剩余的服务器节点中剩余资源量最大的服务器节点所能额外提供的资源量cx3,如果cx1+cx2+cx3≥cx,则执行步骤S403,即将所述第i个服务器节点过载的资源量cx对应的存储时间最早的数据迁移至上述两个剩余资源量最大的服务器节点中。而如果cx1+cx2+cx3<cx,则继续计算剩余的服务器节点中剩余资源量最大的服务器节点所能额外提供的资源量,依此类推,直到满足公式(13)为止。
步骤S403:将所述第i个服务器节点过载的资源量cx对应的存储时间最早的数据迁移至所述n个服务器节点中。
上述实施例,优选的,当所述分布式实时数据库系统中有新的服务器节点加入时,还可以包括:
将相对剩余资源量小于或等于预设阈值的服务器节点管辖的部分虚拟存储单元分配给所述新的服务器节点管辖,所述新的服务器节点所管辖的虚拟存储单元的数量为所述新的服务器节点的相对剩余资源量为零时所对应的虚拟虚拟存储单元的数量。
也就是说,当有新的服务器节点加入分布式实时数据库系统中时,会将原分布式实时数据库系统中相对剩余资源量较小的一些服务器节点所管辖的虚拟存储单元分配给新加入的服务器节点进行管辖,其中,分配给新的服务器节点管辖的虚拟存储单元的量依据如下规则确定:
所述新的服务器节点加入分布式实时数据系统后,该新的服务器节点的相对剩余资源量(依据第一公式确定)为零,即在新的服务器节点的相对剩余资源量U=0时,计算得到的T即为分配给新的服务器节点管辖的虚拟存储单元的数量。
上述实施例,优选的,在将一些虚拟存储单元分配给新的服务器管辖后,还可以将相对剩余资源量小于或等于服务器节点所允许的剩余资源量的最小值的服务器节点中的部分数据迁移至所述新的服务器节点中,迁移至所述新的服务器节点的数据量对应的资源量为所述新的服务器节点的相对剩余资源量为零时,所述新的服务器节点所对应的资源量。
也就是说,迁移至新的服务器节点的数据所占用的资源量依据如下规则确定:
新的服务器节点接收迁移的数据后,该新的服务器节点的相对剩余资源量(依据第一公式确定)为零,即在新的服务器节点的相对剩余资源量U=0时,计算得到的cremain即为将数据迁移至新的服务器节点后,新的服务器节点的剩余资源量,新的服务器节点的最大资源量量减去新的服务器节点的剩余资源量以即为迁移至新的服务器节点的数据量所对应的资源量。
上述实施例,优选的,在分布式实时数据库系统的存储状态发生变化时,更新服务器节点与虚拟存储空间域的对应关系,并将所述对应关系存储至日志信息表中;
所述分布式实时数据库系统的存储状态发生变化包括:虚拟存储单元与服务器节点的对应关系的变化。
所述日志信息表包括实时信息表和历史信息表;
所述实时信息表用于记录当前时刻的服务器节点与虚拟存储空间域的对应关系,也就是说,当分布式实时数据库的存储状态发生变化时,对实时信息表中服务器节点与虚拟存储空间域的对应关系进行更新;
所述历史信息表用于记录历史各时刻服务器节点与虚拟存储空间域的对应关系,也就是说,实时信息表每更新一次,都将更新后的实时信息表中的信息增加至历史信息表中。
优选的,为了节约资源,所述历史信息表可以包括全量信息表和增量信息表;其中,
所述全量信息表包括若干条第一类记录,所述第一类记录用于存储历史某一时刻所有服务器节点与虚拟存储空间域的对应关系;所述全量信息表中的第一类记录按预设周期进行记录;
每一条所述第一类记录对应一个增量信息表,所述增量信息表包括若干条第二类记录,所述第二类记录用于记录历史某一时刻与上一条第二类记录的对应时刻相比发生变化的服务器节点与虚拟存储空间域的对应关系,其中,所述第二类记录的记录时刻晚于所述第一类记录的记录时刻。也就是说,增量信息表中的每一条第二类记录只记录发生变化的服务器节点与虚拟存储空间域的对应关系,而未发生变化的服务器与虚拟存储空间域的对应关系不进行记录。而且,所述增量信息表记录的是该增量信息表对应的那一条第一类记录,以及该第一类记录的下一条第一类记录之间的时间段内的增量信息。例如,假设某个增量信息表对应全量信息表中的第3条第一类记录,第3条第一类记录的记录时间为t3,全量信息表中第4条第一类记录的记录时间为t4,那么,该增量信息表记录的就是(t3,t4)时间段内的发生变化的服务器节点与虚拟存储空间域的对应关系。
所述预设周期可以为时间周期,即当计时时间达到预设值时,在所述全量信息表中增加一条第一类记录,并对应该新增加的第一类记录建立增量信息表;所述预设周期也可以为所述增量信息表中第二类记录的条数,即,在所述增量信息表中的第二类记录的条数达到预设数目时,在所述全量信息表中增加一条第一类记录,并对应该新增加的第一类记录建立增量信息表。也就是说,上述例子中,第4条第一类记录是在计时时间达到预设值或则增量信息表中第二类记录的条数达到预设数目时进行记录的。
具体的,增量信息表的记录过程如下:
每增加一条状态信息发生变化的记录,就将该记录增加到当前的增量信息表中;增量信息表中的每一条第二记录都记录有发生变化的服务器节点与所对应的虚拟存储空间域的对应关系,而未发生状态变化的服务器节点与虚拟存储空间域的对应关系则不存储至增量信息表中。
而全量信息表的记录方式为:当所述增量信息表中的记录条数达到预设数目或计时时间达到预设值时,将所述增量信息表中所有第二记录与该增量信息表对应的那条第一类记录进行整合,形成一条新的第一类记录,增加到全量信息表中;其中,整合方式为:以该增量信息表对应的全量信息表中的那一条第一类记录作为原始记录,在该原始记录的基础上,按照增量信息表中每一条第二类记录的内容进行修改获得所述新的第一类记录。
基于上述数据储存方法,本申请实施例还提供一种数据查询方法,对于实时数据的查询,可以根据待查询数据所属的数据集确定待查询数据所对应的虚拟存储空间域,根据实时信息表中服务器节点与虚拟存储空间域的对应关系,确定待查询数据所在的服务器节点,在该服务器节点中查询待查询数据即可。
对于历史数据的查询,在根据待查询数据所属的数据集确定待查询数据所对应的虚拟存储空间域后,可以根据待查询时间在历史信息表中确定待查询时间段内的历史记录,根据历史记录中服务器节点与虚拟存储空间域的对应关系确定服务器节点,在确定的服务器节点中查找待查询的数据。
当所述历史信息表包括全量信息表和增量信息表时,本申请实施例提供的一种数据查询方法的流程图如图5所示。
本实施例中,每一个增量信息表对应一个速查表,所述速查表包括预设数目条与所述增量信息表中的第二类记录一一对应的第三类记录,每一条第三类记录用于记录与该第三类记录相对应的第二类记录中虚拟存储空间域的管辖状态是否发生变化的状态信息;所述方法包括:
步骤S501:依据待查询的时间在所述全量信息表中确定与所述待查询的时间对应的第一类记录组;所述第一类记录组包括至少一条第一类记录。
本申请实施例中,待查询时间是指用户确定的要查询数据所属的时间段。将待查询的时间与全量信息表中每一条第一类记录对应的时间相比对以确定在所述待查询时间内的第一类记录组。
步骤S502:确定与所述第一类记录组中的第m条记录相对应的速查表,依据所述待查询时间在所述速查表中确定与所述待查询时间对应的第三类记录组;所述第三类记录组包括至少一条第三类记录;
步骤S503:依据待查询数据所属的数据集确定所述待查询数据所对应的虚拟存储单元Um;
步骤S504:对于所述第三类记录组中的第y条第三类记录,当所述虚拟存储单元Um对应位置处的状态信息为发生状态变化时,在所述第y条第三类记录中,确定与所述虚拟存储单元Um相邻的若干个连续的发生状态变化的虚拟存储单元;
步骤S505:依据所述连续的发生状态变化的虚拟存储单元所属的虚拟存储空间域确定与所述第y条第三类记录对应的待查询数据所在的服务器节点;
步骤S506:在所述服务器节点中查询与所述第y条第三类记录对应的待查询数据。
对于待查询时间段内的所有记录都依据如上方法进行查询,直到待查时间段内的所有记录都查完为止,将查询到的数据汇总返回给客户端。
本申请实施例提供的数据存储方法及查询方法,在服务器节点失效(如过载,或宕机)时,用户无需处理,分布式实时数据库系统可以应用本申请提供的方案自动进行处理,并且分布式实时数据库系统的状态变化日志自动记录到日志信息表中,从而在变化后各测点的历史数据仍然能够被正确查到。
进一步的,本申请实施例中,对实时数据和历史数据分别管理,其中,实时数据使用实时信息表进行记录并在分布式实时数据库系统的存储状态发生变化时对实时信息表进行实时更新;查询历史数据使用全量信息表和增量信息表,以及与增量信息表对应的速查表,能够快速定位对应历史时刻的测点数据存储在哪个服务器节点中,这样实时信息表和历史信息表分别解决了用户的不同查询需求(订阅实时数据的需求和查询一个长时间段的历史数据的需求)。
另外,本申请实施例提供的数据存储方法,对于新服务器节点的加入,分布式实时数据库系统可以自动从负载较重的服务器节点分配一部分虚拟存储单元给新服务器节点,从而实现了负载均衡,也保证了新服务器节点资源的有效利用,因此,本申请实施例提供的数据存储方法使得系统的可扩展性好,可适用于不同规模的集群(即分布式实时数据库系统)。
另一方面,本申请实施例提供的数据存储方法,在分布式实时数据库系统的状态发生变化时(如有新的服务器节点加入或有节点失效),仅将一部分虚拟存储空间对应的数据移交给其它服务器节点或新加入的节点代为管辖,而无需将这些测点的所有历史数据全部迁移到其它节点中,并将状态变化进行记录即可,从而大大节省了网络数据迁移量,减小了分布式实时数据库系统的状态变化对分布式实时数据库系统内部运行的冲击。
需要说明的是,对于由于数据在服务器节点之间的迁移而造成的分布式实时数据库系统的存储状态的变化,可建立数据迁移日志,迁移日志中包括数据的迁移时间以及数据迁移后所在的服务器节点。在查询数据时,根据数据迁移日志查询即可。
下面通过具体实例对本申请的方案进行说明。
本实例中,假设虚拟存储空间的大小为0x0000-0xffff,共65536个虚拟存储单元,也就是说,每一个虚拟存储单元的地址标识为一个4位的16进制数。
在进行数据存储时,根据测点的物理关联性或逻辑性将海量待存储数据分为若干数据集,并为每个数据集分配一个全局唯一的识别码;本实例中,所述识别码为字符串,本实例中,假设第i个数据集的识别码为字符串“testi”。
依据每个服务器节点的剩余资源与所有服务器的总剩余资源的比值为每个服务器分配管辖的虚拟存储空间域,其中,每个虚拟存储空间域包括若干虚拟存储单元;并记录服务器节点与虚拟存储空间域的对应关系,具体可以以T-N序列(其中,N表示服务器据节点,T表示服务器节点N所管辖的虚拟存储空间域的起始虚拟存储单元的地址)的形式记录,形如:上N述序列记录了当前时刻服务器节点N1管辖的虚拟存储空间域为[T1,T2),服务器节点N2管辖的虚拟存储空间域为[T2,T3),以此类推,服务器节点Nn-1管辖的虚拟存储空间域为[Tn-1,Tn),服务器节点Nn管辖的虚拟存储空间域为虚拟存储单元Tn及以后的虚拟存储单元。
与T-N序列相对应,本例中,服务器节点与虚拟存储空间域的对应关系通过表格记录,为方便叙述,本例中,将记载服务器节点与虚拟存储空间域的对应关系的表格称为T-N序列表(表1);
表1中,T表示虚拟存储单元的地址标识,N表示服务器节点。
表1
T |
N |
T |
N |
T |
N |
T |
…… |
N |
T |
N |
0000 |
1 |
3000 |
2 |
7000 |
3 |
b000 |
…… |
n |
ffff |
填充位 |
基于表1,虚拟存储单元地址为0x0000-0x2999的虚拟存储单元归第1个服务器节点管辖,也就是说,与0x0000-0x2999这一虚拟存储空间域对应的数据存储至第1个服务器节点中;虚拟存储单元地址为0x3000-0x6999的虚拟存储单元归第2个服务器节点管辖,也就是说,与0x3000-0x6999这一虚拟存储空间域对应的数据存储至第2个服务器节点中;依此类推。当分布式实时数据库系统的状态发生变化时,对T-N序列表进行相应的更新。
下面说明如何建立数据集与虚拟存储空间域的对应关系:
对于第i个数据集,
(1)取第i个数据集的全局唯一的识别码testi;
(2)对testi进行MD5哈希运算,获得哈希值,所述哈希值为形如352d fcd6 fcc79137 95e6 e963 7a72 74d9的32位16进制数;
(3)取哈希值的前四位作为第i个数据集的虚拟存储单元的地址;例如,假设某个数据集的识别码经过MD5哈希运算后得到的哈希值为352d fcd6 fcc7 9137 95e6 e9637a72 74d9,那么,该数据集的虚拟存储单元的地址就为352d。
(4)根据第i个数据集的虚拟存储单元地址所属的虚拟空间域,就可以找到第i个数据集在虚拟存储空间中的位置,由于虚拟存储空间域与服务器节点存在对应关系,因此,找到第i个数据集在虚拟存储空间中的位置也就是确定第i个数据集归哪个服务器节点管辖,具体如图6所示。
本例中,为了方便后续数据查询,历史信息表包括全量信息表和若干个增量信息表;其中,增量信息表中可以存储1000条第二类记录,记录全量信息表中第一类记录的记录时刻依据增量信息表中第二类记录的条数确定,即当增量信息表中第二类记录的条数达到1000条时,在全量信息表中增加一条第一类记录,并建立与该新增加的第一类记录相对应的增量信息表,并将以后分布式实时数据库系统的存储状态发生变化时,在增量信息表中增加相应的发生变化的服务器节点与虚拟存储空间域的对应关系,直到增量信息表中的记录条数达到1000条,然后再在全量信息表中增加一条全量信息,依此类推;
每一个增量信息表对应一个速查表,所述速查表包括1000条与所述增量信息表中的第二类记录一一对应的状态变化信息,每一条状态变化信息记录各个时刻与该条状态变化信息对应的第二类记录中虚拟存储空间域的管辖状态是否发生变化的状态信息;
下面以三个状态变化场景为例进行说明:
情景1:假设在t1时刻,服务器节点N2的相对剩余资源量小于预设阈值-0.2,假设此时通过本方案的方法计算确定,T2到T3范围内的虚拟存储单元应该由服务器节点N6来管辖,则变更后的T-N序列(表)应该为T1N1T2N6T3N3T4N4T5N5T6N6……Tn-1Nn-1TnNn,同时在增量信息表中增加一条针对该变化的记录,该条记录中,只记录发生变化的T-N序列,即T2N6T3。
其中,T2N6T3表示相比于t1时刻之前的T-N序列,t1时刻的分布式实时数据库系统的存储状态变化为:T2到T3范围内的虚拟存储单元应该由服务器节点N6来管辖。
情景2:假设服务器节点N8所管辖的虚拟存储空间域为[T8,T9),在t2时刻,服务器节点N8失效。假设通过本方案的方法计算确定,T8到T9范围内的虚拟存储单元被管辖的情况如下:
T8到T8.5范围内的虚拟存储单元被服务器节点N10所管辖,T8.5到T9范围内的虚拟存储单元被服务器节点N11所管辖,变更后的T-N序列(表)应该为T1N1T2N2T3N3T4N4T5N5T6N6T7N7T8N10T8.5N11T9N9T10N10T11N11T12N12……Tn-1Nn-1TnNn,同时在曾量信息表中增加一条针对该变化的记录,该条记录中,只记录发生变化的T-N序列,即T8N10T8.5N11T9;
其中,T8N10T8.5N11T9表示相比于t2时刻之前的T-N序列,t2时刻的分布式实时数据库系统的存储状态变化为:T8到T8.5范围内的虚拟存储单元被服务器节点N10所管辖,T8.5到T9范围内的虚拟存储单元被服务器节点N11所管辖。
情景3:假设在t3时刻有新的服务器节点N15加入当前的分布式实时数据库系统,假设根据本申请实施例提供的方法计算得到服务器节点N15将代偿其它服务器节点管辖的一部分虚拟存储单元包括:[T12,T13),[T18,T20),[T23,T24),那么,相比于t3时刻之前的T-N序列,t3时刻的分布式实时数据库系统的存储状态变化为:T12到T13范围内的虚拟存储单元被服务器节点N15所管辖,即T12N15T13;T18到T20范围内的虚拟存储单元被服务器节点N15所管辖,即T18N15T20;T23到T24范围内的虚拟存储单元也被服务器节点N15所管辖,即T23N15T24。同时将全量信息表中增加一条针对该变化的记录,该条记录中,只记录发生变化的T-N序列,即T12N15T13,T18N15T20,T23N15T24;
当需要查询数据时,如果是对实时数据进行查询,则可以根据待查询的测点所属的数据集的识别码确定待查询测点所对应的虚拟存储单元,然后根据实时信息表确定该虚拟存储单元所对应的服务器节点,即待查询测点所在的服务器节点。
如果是对历史数据进行查询,则可以利用历史信息表进行查询,优选的,可以利用全量信息表和增量信息表进行查询,具体的,
在查询历史数据时,
(1)根据待查询的时间在全量信息表中确定与待查询的时间对应的第一类记录组;确定与所述第一类记录组中的第m条第一类记录相对应的速查表(由于一条第一类记录对应一个增量信息表,而一个增量信息表对应一个速查表,因此,一条第一类记录对应一个速查表),依据所述待查询时间,在所述速查表中确定与所述待查询时间对应的第三类记录组;假设某一条第一类记录对应的速查表如图7所示,假设在待查时间段内,所述第三类记录组为第2条第三类记录到第5条第三类记录。
上述步骤可以通过定义全局唯一的映射表map<time,{n,r}>来实现,映射表map<time,{n,r}>用于存储“某一具体时刻对应于第n个速查表的第r行”这样的信息,从而由待查询的时刻可以快速定位到对应的行(注:一行即一条记录)。
为了更清楚的说明历史数据的查询过程,请参看图7,图7为本申请实例提供的依据全量信息表中的某一条记录对应的速查表对历史数据进行查询的示意图;
(2)根据待查测点所属数据集所对应的虚拟存储单元的地址确定待查测点在待查时间段上属于速查表中的哪个单元。假设本步骤中确定的存储单元的地址是T3,那么,本例中,待查测点在某个待查时间段上在图7所示速查表中的位置如图中T3所在列中的阴影部分所示的4个列向单元;
(3)从步骤(2)中4个列向单元的最下边一个单元开始向上搜索(即从时间最晚的一条记录开始向前搜索),如果,如果遇到值为“1”的单元,则执行步骤(4),如果直到第一条记录还未遇到“1”,则表示虚拟存储单元的地址为T3的虚拟存储单元的管辖节点在本表的记录时间内未改变,可以根据该表对应的T-N序列(表)直接找到待查测点所在的服务器节点(即虚拟存储单元的地址为T3的虚拟存储单元所对应的服务器节点),并转到步骤(5);
(4)从遇到的“1”处向左寻找这个“1”所在的“1”序列中的第一个“1”(即从地址值最大的虚拟存储单元向地址值小的虚拟存储单元的方向寻找),确定第一个“1”对应的虚拟存储单元,本例中,假设第一个“1”对应的虚拟存储单元为T1.5,如图7中横向定位箭头所指向的T1.5所在列中阴影部分所示的“1”,那么,可以确定,待查询数据存储在虚拟存储单元为T1.5所对应的服务器节点内,根据与图7所示的增量信息表对应的T-N序列(表)就可以找到虚拟存储单元为T1.5所对应的服务器节点。
(5)从确定的服务器节点中查询数据,并将查询到的数据进行汇总后返回给客户端。
本申请实施例还提供一种数据存储系统,如图8所示,本申请实施例提供的数据存储系统包括:
与数据采集器相连接的至少一个中心服务器节点801,以及与所述至少一个中心服务器节点相连接的若干个子服务器节点802;其中,
中心服务器节点801的结构示意图如图9所示,可以包括:划分模块8011,确定模块8012和存储模块8013;
划分模块8011用于将待存储数据划分为若干个数据集,并为每个数据集分配一个识别码;
确定模块8012用于依据第i个数据集的识别码确定与所述第i个数据集对应的子服务器节点。
具体的,确定模块8012的结构图如图10所示,可以包括:
分配单元1001,用于依据每个子服务器节点的剩余资源与所有子服务器节点的总剩余资源的比值为每个子服务器节点分配管辖的虚拟存储空间域,其中,每个虚拟存储空间域包括若干虚拟存储单元,每个虚拟存储单元具有唯一的地址标识;
转换单元1002,用于应用哈希函数将第i个数据集的识别码进行转换,获得与第i个数据集对应的哈希值;
第一确定单元1003,用于依据第i个数据集对应的哈希值的预设位置处的数组以及虚拟存储单元的地址标识确定与第i个数据集对应的虚拟存储空间域,所述数组的位数与所述虚拟存储单元的地址标识的位数相同;
第二确定单元1004,用于依据与第i个数据集对应的虚拟存储空间域确定与所述第i个数据集对应的子服务器节点;
存储模块8013用于将数据采集器推送的待存储的数据存储至相应的子服务器中。
各个子服务器节点用于存储数据。
进一步的,本申请实施例提供的另一种中心服务器节点的结构示意图如图11所示,还可以包括:
记录模块1101,用于实施记录各个子服务器节点的属性指标,所示属性指标至少包括:
每个子服务器节点的当前剩余资源量;
每个子服务器节点所允许的剩余资源量的最小值;
每个子服务器节点当前管辖的虚拟存储单元的数量;
每个子服务器节点的当前相对剩余资源量,其中,第i个子服务器节点的相对剩余资源量依据第一公式确定,所述第一公式为:
其中,U为第i个子服务器节点的相对剩余资源量;cremain为第i个子服务器节点当前的剩余资源量;callremain是所有子服务器节点的总的剩余资源量;T为第i个子服务器节点当前管辖的虚拟存储单元的数量;N为所有子服务器节点管辖的所有虚拟存储单元的数量。
进一步的,本申请实施例提供的又一种中心服务器节点的结构示意图如图12所示,还可以包括:
监测模块1201,用于监测第i个子服务器节点的相对剩余资源量的大小。
第一分配模块1202,用于在所述监测模块监测到第i个子服务器节点的相对剩余资源量小于或等于预设阈值时,将所述第i个子服务器节点过载的虚拟存储单元分配给其它子服务器节点管辖。
第二分配模块1203,用于在所述监测模块监测到第i个子服务器节点的相对剩余资源量小于或等于所述第i个子服务器节点所允许的剩余资源量的最小值时,将所述第i个子服务器节点中存储时间最早的部分数据迁移到其它子服务器节点中。
进一步的,本申请实施例提供的又一种中心服务器节点的结构示意图如图13所示,还可以包括:
第三分配模块1301,用于当有新的子服务器节点加入数据存储系统时,将相对剩余资源量小于或等于子服务器节点所允许的剩余资源量的最小值的子服务器节点中的部分数据迁移至所述新的子服务器节点中,迁移至所述新的子服务器节点的数据量对应的资源量为所述新的子服务器节点的相对剩余资源量为零时,所述新的子服务器节点所对应的资源量。
进一步的,本申请实施例提供的又一种中心服务器节点的结构示意图如图14所示,还可以包括:
日志记录模块1401,用于当所述数据存储系统存储状态发生变化时,更新子服务器节点与虚拟存储空间域的对应关系,并将所述对应关系存储至日志信息表中;
所述日志信息表包括实时信息表和历史信息表,所述实时信息表用于记录当前时刻的服务器节点与虚拟存储空间域的对应关系;所述历史信息表用于记录历史各时刻服务器节点与虚拟存储空间域的对应关系。
需要说明的是,本说明书中每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。
对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。对于实施例公开的装置(或系统)而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分的说明即可。