掌桥专利:专业的专利平台
掌桥专利
首页

数据表的元信息管理方法、装置及存储介质

文献发布时间:2023-06-19 10:06:57


数据表的元信息管理方法、装置及存储介质

技术领域

本申请涉及大数据技术领域,特别涉及一种数据表的元信息管理方法、装置及存储介质。

背景技术

在分布式存储系统中,当主节点创建一个数据表并将该数据表存储至数据库时,将会生成该数据表的元信息,该元信息用于描述该数据表的结构、数据特征等。当前,根据存储数据表的数据库的不同,用于管理数据表的方法也不同。基于此,亟需提供一种适用于各种数据库场景下的数据表的元信息管理方法。

发明内容

本申请提供了一种数据表的元信息管理方法、装置及存储介质,能够适用于各种数据库场景下的元信息管理,通用性较好。所述技术方案如下:

一方面,提供了一种数据表的元信息管理方法,所述方法包括:

获取数据表的元信息,所述数据表的元信息包括所述数据表的综合信息、所述数据表所包含的多个分区的分区信息和所述多个分区中每个分区包含的多个分片的分片信息;

根据所述数据表的元信息,生成表描述文件、每个分区的分区描述文件和每个分片的分片描述文件;

其中,每个分片的分片描述文件包括相应分片的分片信息,每个分区的分区描述文件包括相应分区的分区信息和用于描述相应分区所包含的多个分片的分片描述文件的第一描述信息,所述表描述文件包含有所述数据表的综合信息和用于描述所述多个分区的分区描述文件的第二描述信息。

在本申请实施例的一种可能的实施方式中,所述数据表的综合信息包括所述数据表的状态信息、所述数据表的数据特征以及所述数据表中的数据的生命周期信息。

在本申请实施例的一种可能的实施方式中,所述第二描述信息包括所述分区描述文件的文件数量、每个分区描述文件的文件标识以及最近一次更新的分区描述文件的更新时间。

在本申请实施例的一种可能的实施方式中,所述数据表的数据特征包括所述数据表的表类型,所述表类型为时序表、散列表中的任一种。

在本申请实施例的一种可能的实施方式中,所述多个分区中每个分区的分区信息包括相应分区的数据范围、相应分区中的数据的最近一次更新时间以及用于表征所述多个分区的分区原则的划分类型。

在本申请实施例的一种可能的实施方式中,所述每个分区的分区描述文件中的第一描述信息包括相应分区所包含的多个分片的分片描述文件的文件数量和文件标识,以及相应分区内的数据量和数据增速。

在本申请实施例的一种可能的实施方式中,每个分片的分片信息包括相应分片内的数据块信息、数据的索引信息、数据量和数据增速。

在本申请实施例的一种可能的实施方式中,所述方法还包括:

根据第一分区的分区描述文件中包括的各个分片描述文件的文件标识,获取各个分片描述文件中的数据量和数据增速;

根据获取的各个分片描述文件中的数据量和数据增速,从所述第一分区包括的各个分片中选择目标分片;

将待写入所述第一分区的数据写入至所述目标分片。

在本申请实施例的一种可能的实施方式中,所述方法还包括:

当接收到所述数据表的更新元信息时,根据所述更新元信息,对所述表描述文件、一个或多个分区的分区描述文件和一个或多个分片的分片描述文件进行更新。

另一方面,提供了一种数据表的元信息管理获取模块,用于获取数据表的元信息,所述数据表的元信息包括所述数据表的综合信息、所述数据表所包含的多个分区的分区信息和所述多个分区中每个分区包含的多个分片的分片信息;

生成模块,用于根据所述数据表的元信息,生成表描述文件、每个分区的分区描述文件和每个分片的分片描述文件;

其中,每个分片的分片描述文件包括相应分片的分片信息,每个分区的分区描述文件包括相应分区的分区信息和用于描述相应分区所包含的多个分片的分片描述文件的第一描述信息,所述表描述文件包含有所述数据表的综合信息和用于描述所述多个分区的分区描述文件的第二描述信息。

在本申请实施例的一种可能的实施方式中,所述数据表的综合信息包括所述数据表的状态信息、所述数据表的数据特征以及所述数据表中的数据的生命周期信息。

在本申请实施例的一种可能的实施方式中,所述第二描述信息包括所述分区描述文件的文件数量、每个分区描述文件的文件标识以及最近一次更新的分区描述文件的更新时间。

在本申请实施例的一种可能的实施方式中,所述数据表的数据特征包括所述数据表的表类型,所述表类型为时序表、散列表中的任一种。

在本申请实施例的一种可能的实施方式中,所述多个分区中每个分区的分区信息包括相应分区的数据范围、相应分区中的数据的最近一次更新时间以及用于表征所述多个分区的分区原则的划分类型。

在本申请实施例的一种可能的实施方式中,所述每个分区的分区描述文件中的第一描述信息包括相应分区所包含的多个分片的分片描述文件的文件数量和文件标识,以及相应分区内的数据量和数据增速。

在本申请实施例的一种可能的实施方式中,每个分片的分片信息包括相应分片内的数据块信息、数据的索引信息、数据量和数据增速。

在本申请实施例的一种可能的实施方式中,所述装置还用于:

根据第一分区的分区描述文件中包括的各个分片描述文件的文件标识,获取各个分片描述文件中的数据量和数据增速;

根据获取的各个分片描述文件中的数据量和数据增速,从所述第一分区包括的各个分片中选择目标分片;

将待写入所述第一分区的数据写入至所述目标分片。

在本申请实施例的一种可能的实施方式中,所述装置还用于:

当接收到所述数据表的更新元信息时,根据所述更新元信息,对所述表描述文件、一个或多个分区的分区描述文件和一个或多个分片的分片描述文件进行更新。

另一方面,提供了一种计算机设备,所述计算机设备包括处理器、通信接口、存储器和通信总线,所述处理器、所述通信接口和所述存储器通过所述通信总线完成相互间的通信,所述存储器用于存放计算机程序,所述处理器用于执行所述存储器上所存放的程序,以实现上述所述数据表的元信息管理方法的步骤。

另一方面,提供了一种计算机可读存储介质,所述存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现上述所述数据表的元信息管理方法的步骤。

另一方面,提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述所述的数据表的元信息管理方法的步骤。

本申请提供的技术方案至少可以带来以下有益效果:

在本申请实施例中,按照数据表、数据表包括的分区和分区包括的分片这三个层次生成三种描述文件来管理该数据表的元信息。由于当前的各种数据库在存储数据表时,均是通过将数据表按照一定规则进行多层切割后来进行存储的,因此,通过上述方法来管理数据表的元信息时,不会受限于数据表所对应的数据库,通用性较好。

附图说明

为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1是本申请实施例提供的一种分布式存储系统的架构图;

图2是本申请实施例提供的一种数据表的元信息管理方法的流程图;

图3是本申请实施例提供的一种数据表划分方式示意图;

图4是本申请实施例提供的一种三种描述文件之间的关系示意图;

图5是本申请实施例提供的一种表描述文件中包含的各种信息的示意图;

图6是本申请实施例提供的一种分区描述文件中包含的各种信息的示意图;

图7是本申请实施例提供的一种分片描述文件中包含的各种信息的示意图;

图8是本申请实施例提供的一种更新元信息的示意图;

图9是本申请实施例提供的一种数据表的元信息管理装置的结构示意图;

图10是本申请实施例提供的一种服务器的结构示意图。

具体实施方式

为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合附图对本申请实施方式作进一步地详细描述。

在对本申请实施例提供的数据表的元信息管理方法进行详细的解释说明之前,先对本申请实施例涉及的系统架构进行介绍。

图1是本申请实施例提供的一种分布式存储系统的架构图。如图1所示,该存储系统包括主节点101和多个从节点102。主节点101能够和每个从节点102进行通信。

其中,主节点101用于接收客户端发送的数据表创建请求和数据表更新请求。当接收到数据表创建请求时,主节点101创建数据表,并将数据表存储至多个从节点102中。并且,在创建数据表的同时,主节点101将生成并存储数据表的元信息,并将数据表的元信息存储至各个从节点102。其中,主节点101可以通过本申请实施例提供的方法来管理数据表的元信息。当接收到数据表更新请求时,主节点101获取该数据表更新请求中携带的更新信息,并将该更新信息同步至存储该数据表的多个从节点中。需要说明的是,在数据表发生更新时,数据表的元信息也会相应地变化,在这种情况下,主节点101还用于将变更后的数据表的元信息同步至存储该数据表的元信息的各个从节点102中。

可选地,在一些可能的场景中,该分布式存储系统中还包括元数据节点103,该元数据节点103上部署有元数据数据库。在这种情况下,在数据表发生更新时,主节点101还可以将变更后的数据表的元信息持久化至该元数据节点103上的元数据数据库中。

从节点102中存储有数据表的元信息。其中,从节点102可以通过本申请实施例提供的方法从元数据节点103上部署的元数据数据库中加载数据表的元信息,进而根据该数据表的元信息生成表描述文件、分区描述文件和分片描述文件来对数据表的元信息进行管理。后续,当主节点101接收到数据表更新请求时,从节点102还可以接收主节点101发送的变更后的数据表的元信息,以对自身管理的数据表的元信息进行更新。

除此之外,在本申请实施例中,从节点102还能接收客户端发送的访问请求,并根据该访问请求和管理的数据表的元信息进行数据访问。其中,数据访问包括数据读取和数据写入。

其中,主节点101和从节点102中的任一节点可以为一台独立的服务器,也可以为一个服务器集群,或者是一个云服务设备,本申请实施例对此不做限定。

接下来对本申请实施例提供的数据表的元信息管理方法进行详细的解释说明。

图2是本申请实施例提供的一种数据表的元信息管理方法的流程图,该方法应用于图1所示的分布式存储系统中包括的主节点和从节点中的任一节点中,为了方便描述,在下文中以目标节点为例来对本申请实施例进行说明。参见图2,该方法包括如下步骤。

步骤201:获取数据表的元信息,该数据表的元信息包括数据表的综合信息、数据表所包含的多个分区的分区信息和多个分区中每个分区包含的多个分片的分片信息。

当目标节点为主节点时,主节点在创建该数据表时,即会生成该数据表的元信息。在这种情况下,主节点通过下述步骤202来对该数据表的元信息进行管理。

当目标节点为从节点时,在一种实现方式中,主节点在创建数据表之后,将数据表的元信息存储至元数据数据库中,在这种情况下,目标节点从元数据数据库中获取数据表的元信息,然后通过下述步骤202来对该数据表的元信息进行管理。或者,在另一种实现方式中,主节点可以通过其他存储组件或者是直接将数据表的元信息发送至目标节点。相应地,目标节点接收来自主节点的数据表的元信息。

其中,数据表的元信息是指用于对数据表的属性进行描述的信息。在本申请实施例中,数据表的元信息包括数据表的综合信息、数据表所包含的多个分区的分区信息和该多个分区中每个分区所包含的多个分片的分片信息。

需要说明的是,当前,在采用各种数据库对数据表进行存储时,通常均是以整体有序、局部散列的方式来对数据表进行存储的。例如,在传统型数据库Oracle中是将数据表划分为段、段再划分为区、区再划分为数据块来进行数据存储。在Hadoop数据库中,是通过区域(region)切割来存储数据的。例如,对于时序数据,可以根据时间戳前缀将数据表划分为多个分区,每个分区对应一个连续时间范围内的数据,每个分区再划分为多个分片,每个分片包括多个region。基于此,在本申请实施例中,在逻辑上,参见图3,将数据表划分为多个分区,每个分区划分多个分片。其中,一个分区包含一个连续时间范围内的数据,一个分片包含多个数据块。相应地,目标节点获取到的数据表的元信息可以包括数据表的综合信息、数据表的各个分区的分区信息和每个分区包括的分片的分片信息。其中,该综合信息用于描述该数据表的整体特征。分区信息用于描述对应的分区的特征,分片信息用于描述对应的分片的特征。

示例性地,该数据表的综合信息可以包括该数据表的状态信息、该数据表的数据特征以及该数据表的数据的生命周期信息。

其中,数据表的状态信息包括健康状态、可用性和状态刷新间隔。健康状态用于指示存储该数据表的数据库的状态是否健康。可用性用于指示该数据表中的数据是否可用。状态刷新间隔是指目标节点检测该数据表的健康状态和可用性是否发生变化的时间间隔。例如,假设状态刷新间隔为10s,则目标节点每隔10s检测一次该数据表的健康状态和可用性是否发生变化,并在检测到发生变化时对其进行刷新。

数据表的数据特征包括该数据表的表类型。其中,表类型可能为时序表、散列表中的任一种。时序表是指按照数据的时间顺序对数据进行存储的数据表。散列表是指将数据进行哈希之后得到散列值,将散列值作为主键来存储数据的表。可选地,在一些可能的情况中,根据散列表的数据量的大小,散列表还可以进一步的被分类为散列大表和散列小表。例如,将数据量达到一定阈值的散列表称为散列大表,而未达到该阈值的散列表则称为散列小表。

除此之外,数据表的数据特征还可以包括存储数据表的数据库的类型、数据表的索引类型、数据表的标识、数据表的创建时间、创建者、数据结构定义等特征信息中的一种或多种,本申请实施例对此不做限定。

数据表的生命周期信息用于描述数据表中的数据的生命周期。示例性地,数据表的生命周期信息包括生命周期值和生命周期单位。例如,生命周期值可以为30,生命周期单位为天,则该生命周期信息用于表征数据表中从当前时刻到当前时刻之前的30天内的数据是有效的,除此之外的数据则为失效数据。由此可见,通过该生命周期信息能够确定出数据表的有效数据范围。可选地,数据表的生命周期信息还包括触发时间,该触发时间是指根据生命周期值和生命周期单位触发数据有效性检测的时间。

由上述介绍可知,数据表的综合信息中既包括了该数据表的一些静态信息,也包括了该数据表的一些动态信息。例如,数据表的数据特征即为该数据表的静态信息,该静态信息不会随着数据表中数据的更新而发生变化。数据表的状态信息中的健康状态、可用性以即为动态信息,可能会随着该数据表的更新而发生变化。另外,数据表的生命周期信息能够实时表征该数据表中的有效数据范围,所以,该数据表的生命周期信息实际上也是一种动态信息。

数据表包括的多个分区中每个分区的分区信息用于表征相应分区的特征。

示例性地,一个分区的分区信息包括该分区的数据范围、该分区中的数据的最近一次更新时间以及用于表征该数据表的多个分区的分区原则的划分类型。

其中,根据数据表的表类型的不同,对数据表进行划分得到多个分区的分区原则也不同,也即,划分类型不同。例如,对于时序表而言,可以按照数据的时序来进行划分,而对于散列表而言,则根据数据对应的散列值来进行划分。基于此,在本申请实施例中,划分类型可以包括时序划分类型和哈希划分类型,当然,也可以包括其他划分原则对应的划分类型,本申请实施例对此不做限定。

由上述介绍可知,上述分区信息中包括的分区的数据范围和划分类型是用于描述该分区的静态信息,而该分区中的数据的最近一次更新时间则为用于描述该分区的动态状态的动态信息。

每个分区包括的每个分片的分片信息用于表征相应分片的特征。

示例性地,一个分片的分片信息包括该分片内的数据块信息、数据的索引信息、数据量和数据增速。

其中,该分片内的数据块信息包括该分片内包含的数据块的总数、各个数据块的标识。

需要说明的是,一个数据块包括数据表中的多条数据。根据数据库类型的不同,数据块也不同。例如,在hadoop数据库中,一个region即为一个数据块,数据块的标识即为region的标识。

数据的索引信息包括该分片内的索引实例总数和索引实例清单。其中,索引实例总数是指该分片内存储的数据的索引数量。索引实例清单则包含有该分片内数据的索引实例。

该分片内的数据量为该分片内各个数据块的数据量总和。该分片内的数据增速可以通过预设重载时长、该预设重载时长内的分片内的数据量变化以及最近一次确定该分片的数据增速计算得到。

例如,分片内的数据增速可以通过下述公式(1)计算得到。

其中,v

可选地,一个分片的分片信息还可以包括该分片的数据范围、该分片内的数据的最近一次更新时间、该分片的划分类型等,本申请实施例对此不做限定。其中,该分片的划分类型可以与该分片所属的分区的划分类型相同。

由上述介绍可知,一个分片的分片信息中既包含了该分片的静态信息,也包括该分片的一些动态信息。例如,该分片的数据范围、划分类型、数据块信息、索引信息等均为该分片的静态信息,而该分片内的数据量、数据增速和该分片内的数据的最近一次更新时间则为该分片的动态信息。

另外,在分片信息中,分别包含了数据块信息和索引信息。在对接不同的存储方式时,例如,不同的数据库和索引方法,数据块信息和索引信息也相应的不同。

步骤202:根据该数据表的元信息,生成表描述文件、每个分区的分区描述文件和每个分片的分片描述文件,每个分片的分片描述文件包括相应分片的分片信息,每个分区的分区描述文件包括相应分区的分区信息和用于描述相应分区所包含的多个分片的分片描述文件的第一描述信息,表描述文件包含有数据表的综合信息和用于描述多个分区的分区描述文件的第二描述信息。

目标节点在获取到数据表的元信息之后,根据该数据表包括的每个分片的分片信息生成每个分片的分片描述文件。之后,对于每个分区,根据每个分区的分区信息和相应分区包括的各个分片的分片描述文件,生成相应分区的分区描述文件。之后,根据该数据表的综合信息和各个分区的分区描述文件,生成该数据表的表描述文件。

由此可见,本申请实施例按照数据表、数据表包括的分区和分区包括的分片这三个层次生成三种描述文件来管理该数据表的元信息。三种描述文件之间的关系如图4中所示,也即,表描述文件用于描述数据表以及该表描述文件与多个分区的分区描述文件之间的关系,分区描述文件用于描述对应分区以及该分区描述文件与对应分区下的分片描述文件之间的关系,分片描述文件用于描述对应分片。

其中,表描述文件包括该数据表的综合信息和用于描述多个分区的分区描述文件的第二描述信息。其中,关于该数据表的综合信息的相关介绍可以参考步骤201中的介绍。第二描述信息包括该多个分区的分区描述文件的数量、每个分区描述文件的文件标识以及最近一次更新的分区描述文件的更新时间。

需要说明的是,由前文中介绍可知,每个分区的分区信息中包括相应分区内的数据的最近一次更新时间。而分区内的数据更新时,用于描述分区的元信息的分区描述文件也会发生变化,因此,在本申请实施例中,每个分区内的数据的最近一次更新时间即为该分区的分区描述文件的最近一次更新时间。基于此,目标节点从各个分区描述文件的最近一次更新时间中获取距离当前时刻最近的一个时间,将该时间作为第二描述信息包括的最近一次更新的分区描述文件的更新时间。

图5示出了一种表描述文件中包含的各种信息的示意图。其中,数据表的状态信息、数据特征和生命周期信息为该数据表的综合信息,第二描述信息包括分区描述文件总数量、分区描述文件清单以及更新时间。其中,分区描述文件清单包括各个分区描述文件的文件标识,更新时间即为最近一次更新的分区描述文件的更新时间。

一个分区的分区描述文件包括该分区的分区信息和用于描述该分区所包含的多个分片的分片描述文件的第一描述信息。其中,关于该分区的分区信息的相关介绍可以参考步骤201中的介绍。第一描述信息包括该分区内多个分片的分片描述文件的文件数量、文件标识以及该分区内的数据量和数据增速。

其中,该分区内的数据量是指该分区内包括的多个分片内的数据总量。该分区内的数据增速可以通过预设重载时长、该预设重载时长内的分区内的数据量变化以及最近一次确定的该分区的数据增速计算得到。具体计算方法可以参考前述介绍的计算分片内的数据增速的方法,本申请实施例在此不再赘述。

图6示出了一种分区描述文件中包含的各种信息的示意图。其中,该分片描述文件包括分区信息和第一描述信息。分区信息包括更新时间、划分类型和数据范围。更新时间即为该分区描述文件最近一次更新的时间,划分类型用于表征数据表的多个分区的分区原则,数据范围即为该分区内的数据的范围。第一描述信息包括分片描述文件总数量、分片描述文件清单以及度量信息,其中,该度量信息即包括该分区内的数据量和数据增速。可选地,该度量信息还可以包括预设重载时长。

一个分片的分片描述文件包括该分片的分片信息,其中,关于分片信息的相关介绍可以参考前述实施例中的相关介绍。另外,需要说明的是,分片信息包括该分片内的数据的最近一次更新时间。由于分片内的数据更新时,该分片的元信息也会发生相应地变化,因此,该分片内的数据的最近一次更新时间即为该分片的分片描述文件的最近一次更新时间。由于一个分区包括多个分片,当任一分片内的数据发生更新时,分区的元信息也会发生变化,因此,可以将一个分区内的多个分片中最近一个更新的分片的更新时间作为该分区的最近一次更新时间。

图7示出了一种分片描述文件中包含的各种信息的示意图。其中,该分片描述文件包括分片信息。分片信息包括数据块信息、索引信息和度量信息,其中,数据块信息包括数据块总数和数据块清单,索引信息包括索引实例总数和索引实例清单。度量信息包括该分片的数据量和数据增速。除此之外,该分片信息还包括更新时间、划分类型和数据范围。更新时间即为该分片描述文件最近一次更新的时间,划分类型用于表征分片原则,数据范围即为该分片内的数据的范围。

在本申请实施例中,按照数据表、数据表包括的分区和分区包括的分片这三个层次生成三种描述文件来管理该数据表的元信息。由于当前的各种数据库在存储数据表时,均是通过将数据表按照一定规则进行多层切割后来进行存储的,因此,通过上述方法来管理数据表的元信息时,不会受限于数据表所对应的数据库,通用性较好。

可选地,在通过上述方法管理数据表的元信息之后,如果主节点接收到对数据表更新请求,则根据更新请求对数据表进行更新。其中,在对数据表进行更新后,由于数据表发生了变化,所以,数据表的元信息也相应地发生了变化。基于此,主节点可以对该数据表的元信息进行更新。

需要说明的是,当目标节点即为主节点时,主节点在对数据表的元信息进行更新之后,可以根据数据表的更新元信息,对自身存储的表描述文件、一个或多个分区的分区描述文件和一个或多个分片的分片描述文件进行更新。其中,主节点根据该更新元信息所对应的分片确定该更新元信息所对应的分片描述文件,进而将该更新元信息更新至对应的分片描述文件,之后,主节点根据更新后的分片描述文件对该分片所属分区的分区描述文件进行更新,最后,根据更新后的分区描述文件对表描述文件进行更新。

主节点在对自身存储的表描述文件、一个或多个分区的分区描述文件和一个或多个分片的分片描述文件进行更新的同时,还可以将该数据表的更新元信息同步至其他从节点。

在一种可能的实现方式中,参见图8,主节点将该数据表的更新元信息发送至数据同步节点,之后,数据同步节点在接收到该数据表的更新元信息之后,将该数据表的更新元信息同步至各个从节点。各个从节点在接收到更新元信息之后,向数据同步节点反馈同步确认,数据同步节点在接收到各个从节点的同步确认之后,确定各个从节点均已同步完成,从而向主节点反馈同步确认。其中,该数据同步节点可以为zookeeper服务节点,本申请实施例对此不作限定。另外,主节点在向各个从节点同步该更新元信息的同时,还可以将该更新元信息持久化至元数据数据库中。

在另一种可能的实现方式中,主节点也可以直接向各个从节点发送该数据表的更新元信息。

各个从节点在接收到该数据表的更新元信息之后,参考前述介绍的主节点对表描述文件、分区描述文件和分片描述文件进行更新的方式,来对自身存储的表描述文件、分区描述文件和分片描述文件进行更新,从而使得每个从节点上的数据表的元信息均为最新的元信息,保证了各个节点上数据表的元信息的一致性。

可选地,在一些实施例中,本申请实施例中的表描述文件、分区描述文件和分片描述文件还能够为数据写入提供指导,以此来避免热点(Hotspotting)问题。

示例性地,当目标节点接收到数据写入请求之后,目标节点首先确定待写入数据所要写入的分区,将待写入数据所要写入的分区称为第一分区。由于一个分区包括多个分片,因此,在确定第一分区之后,目标节点根据第一分区的分区描述文件中包括的各个分片描述文件的文件标识,获取各个分片描述文件中的数据量和数据增速;根据获取的各个分片描述文件中的数据量和数据增速,从第一分区包括的各个分片中选择目标分片;将待写入第一分区的数据写入至目标分片。

其中,以第一分区中的任一分片为例,为了方便描述,将该分片称为第一分片。目标节点首先根据第一分区的分区描述文件中记录的第一分片的分片描述文件的文件标识,获取第一分片的分片描述文件,并从该分片描述文件中获取第一分片的数据量和数据增速。之后,目标节点获取预设的第一分片的存储上限值和增速上限值,并通过下述公式(2)-(4)确定第一分片的评价值。

Z=α*X+β*Y (4)

其中,v为第一分片的数据增速,v

对于第一分区内的每个分片,均可以参考上述方法得到相应分片的评价值。在获取到第一分区内所有分片的评价值之后,目标节点从该多个评价值中选取最小评价值,将最小评价值对应的分片作为目标分片。该目标分片即为选定的写入待写入数据的分片。这样,后续目标节点可以将待写入数据写入至该目标分片。

另外,在一些可能的实施例中,分区描述文件和分片描述文件中包含的诸如数据量和数据增速之类的度量信息,不仅能够为数据写入位置提供指导,在某些情况下,这些度量信息还能够为数据采集和写入速率等进行调节。例如,目标节点可以将上述度量信息发送至数据采集端,数据采集端在接收到该度量信息之后,能够根据该度量信息调节数据采集的速率和总量,以及写入数据的速率等。

在本申请实施例中,在生成表描述文件、分区描述文件和分片描述文件之后,如果数据表发生更新,主节点能够及时将数据表的更新元信息同步至各个从节点,以使各个从节点中对上述三层文件进行更新,保证了各个从节点上的元信息的一致性。

另外,本申请实施例中分区描述文件和分片描述文件中均包含有诸如数据量和数据增速之类的用于对数据表的数据进行度量的度量信息。在此基础上,节点能够根据该度量信息确定写入数据的位置,为写入数据提供指导,以避免热点问题。除此之外,节点还能够根据该度量信息调节数据采集、数据写入的速率和总量。

图9是本申请实施例提供的一种数据表的元信息管理装置900的结构示意图,该数据表的元信息管理装置可以由软件、硬件或者两者的结合实现成为主节点或从节点的部分或者全部。请参考图9,该装置900包括:获取模块901和生成模块902。

获取模块,用于获取数据表的元信息,数据表的元信息包括数据表的综合信息、数据表所包含的多个分区的分区信息和多个分区中每个分区包含的多个分片的分片信息;

生成模块,用于根据数据表的元信息,生成表描述文件、每个分区的分区描述文件和每个分片的分片描述文件;

其中,每个分片的分片描述文件包括相应分片的分片信息,每个分区的分区描述文件包括相应分区的分区信息和用于描述相应分区所包含的多个分片的分片描述文件的第一描述信息,表描述文件包含有数据表的综合信息和用于描述多个分区的分区描述文件的第二描述信息。

在本申请实施例的一种可能的实施方式中,数据表的综合信息包括数据表的状态信息、数据表的数据特征以及数据表中的数据的生命周期信息。

在本申请实施例的一种可能的实施方式中,第二描述信息包括分区描述文件的文件数量、每个分区描述文件的文件标识以及最近一次更新的分区描述文件的更新时间。

在本申请实施例的一种可能的实施方式中,数据表的数据特征包括数据表的表类型,表类型为时序表、散列表中的任一种。

在本申请实施例的一种可能的实施方式中,多个分区中每个分区的分区信息包括相应分区的数据范围、相应分区中的数据的最近一次更新时间以及用于表征多个分区的分区原则的划分类型。

在本申请实施例的一种可能的实施方式中,每个分区的分区描述文件中的第一描述信息包括相应分区所包含的多个分片的分片描述文件的文件数量和文件标识,以及相应分区内的数据量和数据增速。

在本申请实施例的一种可能的实施方式中,每个分片的分片信息包括相应分片内的数据块信息、数据的索引信息、数据量和数据增速。

在本申请实施例的一种可能的实施方式中,该装置还用于:

根据第一分区的分区描述文件中包括的各个分片描述文件的文件标识,获取各个分片描述文件中的数据量和数据增速;

根据获取的各个分片描述文件中的数据量和数据增速,从第一分区包括的各个分片中选择目标分片;

将待写入第一分区的数据写入至目标分片。

在本申请实施例的一种可能的实施方式中,该装置还用于:

当接收到数据表的更新元信息时,根据更新元信息,对表描述文件、一个或多个分区的分区描述文件和一个或多个分片的分片描述文件进行更新。

在本申请实施例中,按照数据表、数据表包括的分区和分区包括的分片这三个层次生成三种描述文件来管理该数据表的元信息。由于当前的各种数据库在存储数据表时,均是通过将数据表按照一定规则进行多层切割后来进行存储的,因此,通过上述方法来管理数据表的元信息时,不会受限于数据表所对应的数据库,通用性较好。

需要说明的是:上述实施例提供的数据表的元信息管理装置在管理元信息时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的数据表的元信息管理装置与数据表的元信息管理方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。

图10是本申请实施例提供的一种服务器的结构示意图。前述实施例中的主节点或从节点即可以通过该服务器来实现。其中,该服务器1000包括中央处理单元(CPU)1001、包括随机存取存储器(RAM)1002和只读存储器(ROM)1003的系统存储器1004,以及连接系统存储器1004和中央处理单元1001的系统总线1005。服务器1000还包括帮助计算机内的各个器件之间传输信息的基本输入/输出系统(I/O系统)1006,和用于存储操作系统1013、应用程序1014和其他程序模块1015的大容量存储设备1007。

基本输入/输出系统1006包括有用于显示信息的显示器1008和用于用户输入信息的诸如鼠标、键盘之类的输入设备1009。其中显示器1008和输入设备1009都通过连接到系统总线1005的输入输出控制器1010连接到中央处理单元1001。基本输入/输出系统1006还可以包括输入输出控制器1010以用于接收和处理来自键盘、鼠标、或电子触控笔等多个其他设备的输入。类似地,输入输出控制器1010还提供输出到显示屏、打印机或其他类型的输出设备。

大容量存储设备1007通过连接到系统总线1005的大容量存储控制器(未示出)连接到中央处理单元1001。大容量存储设备1007及其相关联的计算机可读介质为服务器1000提供非易失性存储。也就是说,大容量存储设备1007可以包括诸如硬盘或者CD-ROM驱动器之类的计算机可读介质(未示出)。

不失一般性,计算机可读介质可以包括计算机存储介质和通信介质。计算机存储介质包括以用于存储诸如计算机可读指令、数据结构、程序模块或其他数据等信息的任何方法或技术实现的易失性和非易失性、可移动和不可移动介质。计算机存储介质包括RAM、ROM、EPROM、EEPROM、闪存或其他固态存储其技术,CD-ROM、DVD或其他光学存储、磁带盒、磁带、磁盘存储或其他磁性存储设备。当然,本领域技术人员可知计算机存储介质不局限于上述几种。上述的系统存储器1004和大容量存储设备1007可以统称为存储器。

根据本申请的各种实施例,服务器1000还可以通过诸如因特网等网络连接到网络上的远程计算机运行。也即服务器1000可以通过连接在系统总线1005上的网络接口单元1011连接到网络1012,或者说,也可以使用网络接口单元1011来连接到其他类型的网络或远程计算机系统(未示出)。

上述存储器还包括一个或者一个以上的程序,一个或者一个以上程序存储于存储器中,被配置由CPU执行。

在一些实施例中,还提供了一种计算机可读存储介质,该存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现上述实施例中数据表的元信息管理方法的步骤。例如,该计算机可读存储介质可以是ROM、RAM、CD-ROM、磁带、软盘和光数据存储设备等。

值得注意的是,本申请实施例提到的计算机可读存储介质可以为非易失性存储介质,换句话说,可以是非瞬时性存储介质。

应当理解的是,实现上述实施例的全部或部分步骤可以通过软件、硬件、固件或者其任意结合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。所述计算机指令可以存储在上述计算机可读存储介质中。

也即是,在一些实施例中,还提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述所述的数据表的元信息管理方法方法的步骤。

以上所述为本申请实施例提供的实施例,并不用以限制本申请实施例,凡在本申请实施例的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请实施例的保护范围之内。

相关技术
  • 数据表的元信息管理方法、装置及存储介质
  • 邮件数据表的管理方法、装置、计算机设备及存储介质
技术分类

06120112422842