一种用于存储数据的方法和装置与流程

文档序号:11199207阅读:1047来源:国知局
一种用于存储数据的方法和装置与流程

本公开内容一般性地涉及存储技术,并且更特别地涉及一种用于存储数据的方法和装置。



背景技术:

近来,时间序列数据在云系统和数据中心中正在变得越来越大,虚拟化和集装化的技术已经增加了用于典型的分布式应用和服务的独立节点的数目。

未加工的时间序列数据通常是具有诸如{uuid,测量,时间戳,数值}这种格式的数据点的序列,其可以直接写入数据存储设备,诸如数据库或者平面文件。尽管具有很大的灵活性,但是这样的设计需要存储许多冗余信息,所以难以用高效的方式来查询。此外,分析任务将会遭受严重的性能问题。

例如,在使用openstack作为参考云平台的具体场景中,一个具有诸如{资源id、时间戳、数值}这种格式的数据点被存储作为ceilometer数据库中的数据项。但是,这种不良的数据存储设计使得后续的分析过程变得极度复杂,并且同时遭受到性能问题。



技术实现要素:

鉴于现有技术中存在的上述技术问题,本公开内容的实施例的目的之一在于提供一种用于存储数据的方法和装置,以解决现有技术中存在的上述至少一个技术问题。

根据本公开内容的第一方面,提供了一种用于存储数据的方法。该方法包括:从时间序列数据中提取度量信息以及与度量信息相关联的元数据,其中度量信息包括时间值和在时间值处的数值;以及将度 量信息存储在对象存储设备中,并且将元数据存储在数据库中。

在一些实施例中,元数据可以包括实体和资源,实体可以包括测量项目并且资源可以包括实体的组合。在一些实施例中,时间值和数值可以与特定实体相关联。在一些实施例中,对象存储设备可以具有可伸缩的存储空间。

在一些实施例中,该方法可以进一步包括:将所述度量信息的存储块划分为具有固定时间跨度的多个分段。在一些实施例中,该方法可以进一步包括:将分段与时间跨度之间的对应关系存储在数据库中作为元数据的一部分。在一些实施例中,数据库可以包括结构化查询语言sql数据库。

在一些实施例中,该方法可以进一步包括:使用分层技术将度量信息存储在对象存储设备中。在一些实施例中,对象存储设备可以包括作为性能层的第一存储设备和作为容量层的第二存储设备。在一些实施例中,该方法可以进一步包括:将度量信息存储在第一存储设备中,并且同时复制到第二存储设备。

在一些实施例中,该方法可以进一步包括:在将度量信息存储在第一存储设备中时,基于策略来删除第一存储设备中的原有对象数据。在一些实施例中,策略可以基于对象数据的访问频率和存储年龄。

在一些实施例中,该方法可以进一步包括:如果要访问的对象数据仅存储在第二存储设备中,则将对象数据从第二存储设备复制到第一存储设备。在一些实施例中,第一存储设备可以包括固态硬盘ssd,并且第二存储设备可以包括硬盘驱动器hdd。

在一些实施例中,该方法可以进一步包括:提供专用用户接口用以管理度量信息和元数据。在一些实施例中,管理可以包括以下各项中的至少一项:写入、读取、删除、以及更新。在一些实施例中,专用用户接口可以包括表述性状态传递rest接口。

根据本公开内容的第二方面,提供了一种用于存储数据的装置。该装置包括:提取单元,被配置为从时间序列数据中提取度量信息以及与度量信息相关联的元数据,其中度量信息包括时间值和在时间值 处的数值;以及控制单元,被配置为将度量信息存储在对象存储设备中,并且将元数据存储在数据库中。

根据本公开内容的第三方面,提供了一种计算机可读存储介质。该计算机可读存储介质具有存储在其上的计算机可读程序指令,这些计算机可读程序指令用于执行根据本公开内容的第一方面的方法。

根据本公开内容的第四方面,提供了一种存储系统。该存储系统包括根据本公开内容的第二方面的装置。

相对于现有技术的方法,根据本公开内容的用于存储数据的方法和装置提供了一种灵活的存储设计,用以保证存储容量的可扩展性,并且同时支持对数据的快速取回。这对于后续的分析任务是非常有帮助的,诸如时间序列虚拟化和统计分析,实时分类和预测,甚至进一步的决策和自动it操作。

此外,根据本公开一个或多个实施方式的用于存储数据的方法和装置还可以获得如下的技术优点。首先,通过利用数据库中的索引化技术和对象存储设备中的快速对象访问,数据请求能够快速地被执行。其次,数据请求中的参数规定,例如,时间跨度、资源列表和实体列表等,可以支持具有不同过滤和排序的数据取回,例如,用以满足用户的分析场景的资源与实体的不同组合。第三,对象存储设备可以支持几乎无限的存储容量并且具有灵活可伸缩性的特性。

附图说明

通过参考附图阅读下文的详细描述,本公开内容的实施例的上述以及其他目的、特征和优点将变得容易理解。在附图中,以示例性而非限制性的方式示出了本公开内容的若干实施例,其中:

图1示意性地示出了根据本公开内容的实施例的用于存储数据的方法的流程图。

图2示意性地示出了根据本公开内容的实施例的利用数据库和分层的对象存储设备的时间序列数据存储模型的示图。

图3示意性地示出了根据本公开内容的实施例的对象存储设备中 具有等同时间跨度的实体分段的示图。

图4示意性地示出了根据本公开内容的实施例的数据对象的状态转换示图。

图5示意性地示出了根据本公开内容的实施例的请求数据的工作流程的示图。

图6示意性地示出了根据本公开内容的实施例的用于存储数据的装置的框图。

图7示意性地示出了一个可以用来实施本公开内容的实施例的设备的框图。

具体实施方式

下面将参考附图中所示出的若干示例性实施例来描述本公开内容的原理和精神。应当理解,描述这些具体的实施例仅是为了使本领域的技术人员能够更好地理解并实现本公开内容,而并非以任何方式限制本公开内容的范围。

在存储系统中,时间序列数据并不具有通用目的,并且具有其特定的访问模式。例如,时间序列数据几乎总是按时间顺序到达,写入几乎总是按次序进行添加;时间序列数据很少更新;时间序列数据按批地(inbulk)删除,开始于历史数据的起始并且按相连的块来进行,所以高效的批量删除是重要的;对近期数据的读取具有非常低的时延,几乎实时地进行;读取通常是按序列地依次进行的;并且一次读取多个序列是常见的。

鉴于时间序列数据的上述特点,使用时间序列数据的模型化用于分析提出了新的挑战,这主要归因于其巨大的量、快速的生成速度、要求几乎无限的存储容量和可伸缩性、以及查询的灵活性。

一般而言,在时间序列数据中存在两种类型的信息,度量信息和元数据。基于此,本公开内容提出了一种分离的数据存储和数据模型的设计,即用于时间序列度量信息的对象存储设备和用于元数据的数据库,以便于支持对时间序列数据的快速和可伸缩的访问。

此外,本公开内容还可以将分层存储技术应用到对象存储设备池,以进一步加速对数据的取回,其中可以使用固态硬盘ssd作为性能层,可以使用硬盘驱动器hdd作为容量层。因此,度量信息可以按序列紧密地被包装并且被优化用于对序列的顺序读取,同时对数据库中的元数据进行的索引化和排序支持了灵活的且面向分析任务的数据划分群组。

图1示意性地示出了根据本公开内容的实施例的用于存储数据的方法100的流程图。在一些实施例中,方法100可以由稍后参考图6所描述的装置600来执行。

如图1中所示出的,方法100在开始之后可以进入步骤101。在步骤101中,从时间序列数据中提取度量信息以及与度量信息相关联的元数据,其中度量信息包括时间值和在时间值处的数值。

如上文所述,在时间序列数据中存在两种类型的信息,即度量信息和相关的元数据,其中度量信息包括时间值和在时间值处的数值。在一些实施例中,度量信息可以包括针对给定实体的{时间戳,数值}的列表,而实体可以包括具体的测量项目,例如,产品环境中的温度,或者实例的cpu利用率,等等。在一些实施例中,时间值和数值可以与特定实体相关联。

根据本公开内容的实施例,可以使用分离的数据模型来支持对时间序列数据的快速和可伸缩的访问。也就是说,如稍后结合图2进一步描述的,可以使用对象存储设备来存储度量信息,并且使用数据库来存储相关的元数据。

在一些实施例中,元数据可以包括实体和资源,其中实体可以包括测量项目并且资源可以包括实体的组合。在这些实施例中,时间序列数据可以被提取为三个部分,度量、实体和资源。

在一些实施例中,资源根据不同的应用场景可以与任何数目的实体相联系。此外,资源的配置可以易于灵活地根据后续的诸如分析任务来进行规定。

接下来,在完成步骤101之后,方法100可以进入步骤102,在 步骤102中,将度量信息存储在对象存储设备中,并且将元数据存储在数据库中。

根据本公开内容的实施例,时间序列数据的度量信息可以被存储在对象存储设备中,对象存储设备可以利用可伸缩的设计来提供几乎无限的空间来存储数据。在一些实施例中,对象存储设备可以具有可伸缩的存储空间。

在一些实施例中,数据库可以包括结构化查询语言sql数据库。如此,与资源有关的信息可以被存储在sql数据库中,所以能够充分地利用其快速排序和索引化的特征。

图2示意性地示出了根据本公开内容的实施例的利用数据库和分层的对象存储设备的时间序列数据存储模型的示图。应当理解,图2中所描绘的具体存储结构和过程仅是本公开内容的实施例的一种具体示例,在其他的具体实施例中,也可以偏离图2中所描绘的技术细节来实施本公开内容的技术方案。

如图2中所示出的,具有{uuid,测量,时间戳,数值}格式的时间序列数据201可以首先经过数据提取202处理。接着,所提取的元数据可以进行索引化处理204,然后存储到数据库205中。如图2中所示出的,所存储的元数据可以采用标记209所示出的形式,即以资源为单位进行存储,每个资源可以包括一个或多个实体。

另一方面,所提取的度量信息可以经过存储/复制203处理之后进入分层的对象存储设备206。如图2中所示出的,并且如稍后进一步描述的,对象存储设备206可以包括作为性能层的ssd207和作为容量层的hdd208。所存储的度量信息可以采用关于某个实体的{时间戳,数值}列表210的形式。由此实现了分离的数据存储和数据模型,同时利用了分层存储技术。

在下文中,参考图3来描述本公开内容的进一步的实施例。图3示意性地示出了根据本公开内容的实施例的对象存储设备中具有等同时间跨度的实体分段的示图。

如图3中所示出的,考虑到时间序列数据的潜在无限的特性,可 以将某个实体的度量信息块拆分为具有固定时间跨度的多个分段。因此,在一些实施例中,方法100可以进一步包括:将度量信息的存储块划分为具有固定时间跨度的多个分段。

此外,实体分段与时间跨度之间的对应关系可以被存储在数据库中作为元数据,而实体分段可以在时间上连续地写入到对象存储设备。因此,在一些实施例中,方法100可以进一步包括:将分段与时间跨度之间的对应关系存储在数据库中作为元数据的一部分。

在图3中所描绘的具体示例中,数据库310可以存储元数据311,而元数据311可以采用例如关于实体_a的不同时间跨度的分段实体,诸如实体_a_1、实体_a_2、……、实体_a_n等等。相应地,在对象存储设备320中,存储了关于实体_a_1、实体_a_2、……、实体_a_n的具体度量信息,例如,实体_a_1的{时间戳,数值}列表321、实体_a_2的{时间戳,数值}列表322、……、实体_a_n的{时间戳,数值}列表323,等等。因此,避免了在对象存储设备中某个实体的度量信息过大的问题。

在下文中,将详细地描述用于本公开内容的实施例的分层存储技术。如上文所描述的,分层技术可以使用在混合的存储系统中。例如,ssd可以提供比hdd多至100倍的每秒输入输出操作iops。因此,存储系统可能需要自动进行分层或缓存的技术来实现由ssd提供的大多数增加的性能。在一些实施例中,可以使用ssd作为性能层,并且使用hdd作为容量层。

自动分层的基本原理是,随着数据老化,它的价值下降。随着数据的值按时间下降,将它移动到较低性能和较低成本的存储层是有意义的。自动化的分层基于诸如数据年龄、访问频率、最后访问时间和甚至响应时间之类的策略。

此外,分层是一种反应性技术,意味着它基于历史访问趋势或者应用模式来移动/移除数据。因此,关键任务的数据可以利用ssd作为目标存储设备。但是,随着数据老化,它可以被移出ssd,当被召回(recall)时,它可以从hdd被复制回来。

基于上述的基本思想,如图2中所示出的,分层技术可以被应用到对象存储设备206以进一步加速对数据的取回。具体地,ssd207可以被使用作为性能层,而低成本的hdd208可以被使用作为容量层。以这种方式,热数据对象能够从性能层非常快速地被取回,而在ssd207中逐渐冷却的数据对象可以有意地自动消失,并且同时不用担心丢失数据对象。

因此,在一些实施例中,方法100可以进一步包括:使用分层技术将度量信息存储在对象存储设备中。在这些实施例中,对象存储设备可以包括作为性能层的第一存储设备和作为容量层的第二存储设备。在具体使用性能层和容量层来存储度量信息的实施例中,方法100可以进一步包括:将度量信息存储在第一存储设备中,并且同时复制到第二存储设备。

在进一步的实施例中,方法100可以包括:在将度量信息存储在第一存储设备中时,基于策略来删除第一存储设备中的原有对象数据。在一些实施例中,策略可以基于对象数据的访问频率和存储年龄。另外,方法100可以进一步包括:如果要访问的对象数据仅存储在第二存储设备中,则将对象数据从第二存储设备复制到第一存储设备。如上文所阐述的,第一存储设备可以包括固态硬盘ssd,并且第二存储设备可以包括硬盘驱动器hdd。

图4示意性地示出了根据本公开内容的实施例的数据对象的状态转换示图。具体而言,图4中示出了在ssd与hdd之间的数据移动以及数据对象的对应状态转换,其中数据的状态转换体现了访问趋势的改变,“奖励”表示不远的未来将存在潜在的访问,而“惩罚”表示在不远的未来很可能没有访问。

如图4中所示出的,当新数据对象401被存储到存储设备时,它可以被写入ssd410,同时复制到hdd420。新数据对象401向ssd410和hdd420两者的复制写入使得时间序列数据在hdd420处能够连续地写入和顺序组织(沿着时间线),并且因此促进了基于此后的数据取回的在分区0和时间范围中的实体分段。

进一步地,因为新到来的时间序列数据总是首先写入ssd410,由于容量的限制,这可以促使一些旧的数据对象从ssd410中消失。用于置换的策略可以基于时间对象的访问频率和时间位置等。

此外,当接收到对数据的请求时,如果数据对象已经在ssd410中,它将准备好用于快速取回,这样的访问可以视为一种“奖励”,可以对增加它保持停留在性能层ssd410中用于不远的未来进行下一次访问。

另一方面,逐渐减少的访问次数将会导致对于数据对象的“惩罚”而增加它从ssd410消失的机会。

对仅保存在hdd420中的数据对象的访问将会带来“奖励”,从而增加将该数据对象变热的机会,也就是将该数据对象从hdd420复制到sdd410。

在本公开内容的实施例中,还提供了专用用户接口来实现用户对时间序列数据的请求。在这个方面,方法100可以进一步包括:提供专用用户接口用以管理度量信息和元数据。在一些实施例中,管理可以包括以下各项中的至少一项:写入、读取、删除、以及更新。在一些实施例中,专用用户接口可以包括表述性状态传递rest接口。

作为非限制性的示例,以表述性状态传递rest接口为例,本公开内容的实施例所提供的专用用户接口可以至少包括以下的restfulapi用以响应用户请求。

post/vi/entity:创建实体。

post/vi/entity/<id>/measures:将{时间戳:<ts>,数值:<v>}的列表存储到存储设备作为针对指定实体的测量。

get/v1/entity/<id>/measure:读取针对指定实体的测量{时间戳:<ts>,数值:<v>}的列表。用户能够指定具有“开始=”和“结束=”的参数的间隔。

delete/v1/entity/<id>:删除指定的实体,包括属于这个实体的所有分段。

post/v1/resource:创建资源。属于这个资源的实体可以在参数 中被指定。

put/v1/resource/<id>:更新指定资源中的实体。

get/v1/resource/<id>/measures:读取针对指定资源中的所有实体的测量。

get/v1/resource/<id>/entity/<id>/measures:读取针对资源中的指定实体的测量。

delete/v1/resource/<id>:删除资源。但是,将不会删除这个资源中指定的实体。

下面参考图5来具体地描述根据本公开内容的实施例的数据请求的工作流程。图5示意性地示出了根据本公开内容的实施例的请求数据的工作流程的示图。

如图5中所示出的,描绘了数据取回的示例工作流程。在步骤501中,接收到rest数据取回请求。如方框510中所示出的,该请求用以获得在指定时间跨度之间的实例x的cpu利用率数据。在步骤502中,该请求可以通过接口api520首先被发送给数据库530来获得与对象存储设备540中所存储的数据对象有关的对应元数据。在步骤503中,可以在数据库530中搜索与res-实例-x有关的资源信息。在步骤504中,可以搜索与资源中的cpu利用率(x-cpu-util)有关的实体信息。在步骤505中,可以利用用户指定的时间跨度,导出与实体分段有关的对象信息。在步骤506中,可以定位对象存储设备540中的该数据分段。最后,在步骤507中,所请求的测量的列表可以被发送给用户。

图6示意性地示出了根据本公开内容的实施例的用于存储数据的装置600的框图。在图6所示出的框图中,使用虚线框来表示可选的单元或组件。本领域的技术人员可以理解,图6中仅示出了装置600中的与本公开内容紧密相关的单元或组件,在具体的实践中,装置600可以包括使其能够正常操作的其他功能单元或组件。此外,图6中所示出的各个单元或组件之间可以存在必要的连接关系,但是出于简洁的考虑,图6中并没有描绘出这些连接关系。

如图6中所示出的,用于存储数据的装置600包括提取单元601和控制单元602。提取单元601被配置为从时间序列数据中提取度量信息以及与度量信息相关联的元数据,其中度量信息包括时间值和在时间值处的数值。控制单元602被配置为将度量信息存储在对象存储设备中,并且将元数据存储在数据库中。

在一些实施例中,元数据可以包括实体和资源,实体可以包括测量项目并且资源可以包括实体的组合。在一些实施例中,时间值和数值可以与特定实体相关联。在一些实施例中,对象存储设备可以具有可伸缩的存储空间。

在一些实施例中,装置600可以进一步包括:划分单元603,被配置为将度量信息的存储块划分为具有固定时间跨度的多个分段。在一些实施例中,控制单元602可以进一步被配置为,将分段与时间跨度之间的对应关系存储在数据库中作为元数据的一部分。在一些实施例中,数据库可以包括结构化查询语言sql数据库。

在一些实施例中,控制单元603可以进一步被配置为,使用分层技术将度量信息存储在对象存储设备中。在一些实施例中,对象存储设备可以包括作为性能层的第一存储设备和作为容量层的第二存储设备。在一些实施例中,控制单元602可以进一步被配置为,将度量信息存储在第一存储设备中,并且同时复制到第二存储设备。

在一些实施例中,控制单元602可以进一步被配置为,在将度量信息存储在第一存储设备中时,基于策略来删除第一存储设备中的原有对象数据。在一些实施例中,该策略可以基于对象数据的访问频率和存储年龄。

在一些实施例中,控制单元602可以进一步被配置为,如果要访问的对象数据仅存储在所述第二存储设备中,则将对象数据从第二存储设备复制到第一存储设备。在一些实施例中,第一存储设备可以包括固态硬盘ssd,并且第二存储设备可以包括硬盘驱动器hdd。

在一些实施例中,装置600可以进一步包括:接口提供单元604,被配置为提供专用用户接口用以管理度量信息和元数据。在一些实施 例中,管理可以包括以下各项中的至少一项:写入、读取、删除、以及更新。在一些实施例中,专用用户接口可以包括表述性状态传递rest接口。

图7示意性地示出了一个可以用来实施本公开内容的实施例的设备700的框图。如图7中所示出的,设备700包括中央处理单元(cpu)701,其可以根据存储在只读存储设备(rom)702中的计算机程序指令或者从存储单元708加载到随机访问存储设备(ram)703中的计算机程序指令,来执行各种适当的动作和处理。在ram703中,还可存储设备700操作所需的各种程序和数据。cpu701、rom702以及ram703通过总线704彼此相连。输入/输出(i/o)接口705也连接至总线704。

设备700中的多个部件连接至i/o接口705,包括:输入单元706,例如键盘、鼠标等;输出单元707,例如各种类型的显示器、扬声器等;存储单元708,例如磁盘、光盘等;以及通信单元709,例如网卡、调制解调器、无线通信收发机等。通信单元709允许设备700通过诸如因特网的计算机网络和/或各种电信网络与其他设备交换信息/数据。

上文所描述的各个过程和处理,例如方法100,可由处理单元701来执行。例如,在一些实施例中,方法100可被实现为计算机软件程序,其被有形地包含于机器可读介质,例如存储单元708。在一些实施例中,计算机程序的部分或者全部可以经由rom702和/或通信单元709而被载入和/或安装到设备700上。当计算机程序被加载到ram703并由cpu701执行时,可以执行上文描述的方法100的一个或多个步骤。

在对本公开内容的实施例的描述中,术语“包括”及其类似用语应当理解为开放性包含,即“包括但不限于”。术语“基于”应当理解为“至少部分地基于”。术语“一个实施例”或“该实施例”应当理解为“至少一个实施例”。

应当注意,本公开内容的实施例可以通过硬件、软件或者软件和 硬件的结合来实现。硬件部分可以利用专用逻辑来实现;软件部分可以存储在存储设备中,由适当的指令执行系统,例如微处理器或者专用设计硬件来执行。本领域的技术人员可以理解上述的设备和方法可以使用计算机可执行指令和/或包含在处理器控制代码中来实现,例如在可编程的存储设备或者诸如光学或电子信号载体的数据载体上提供了这样的代码。

此外,尽管在附图中以特定顺序描述了本公开内容的方法的操作,但是这并非要求或者暗示必须按照该特定顺序来执行这些操作,或是必须执行全部所示的操作才能实现期望的结果。相反,流程图中描绘的步骤可以改变执行顺序。附加地或备选地,可以省略某些步骤,将多个步骤组合为一个步骤执行,和/或将一个步骤分解为多个步骤执行。还应当注意,根据本公开内容的两个或更多装置的特征和功能可以在一个装置中具体化。反之,上文描述的一个装置的特征和功能可以进一步划分为由多个装置来具体化。

虽然已经参考若干具体实施例描述了本公开内容,但是应当理解,本公开内容不限于所公开的具体实施例。本公开内容旨在涵盖所附权利要求的精神和范围内所包括的各种修改和等效布置。

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