CN107533562B - 在具有只追加磁道带的设备上存储数据和轻量级索引的序列化方案 - Google Patents
在具有只追加磁道带的设备上存储数据和轻量级索引的序列化方案 Download PDFInfo
- Publication number
- CN107533562B CN107533562B CN201680023337.1A CN201680023337A CN107533562B CN 107533562 B CN107533562 B CN 107533562B CN 201680023337 A CN201680023337 A CN 201680023337A CN 107533562 B CN107533562 B CN 107533562B
- Authority
- CN
- China
- Prior art keywords
- data
- segment
- descriptor
- lightweight
- data segment
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2228—Indexing structures
- G06F16/2272—Management thereof
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
一种方法包括:接收多个数据记录;将所述数据记录存储为存储单元中的数据段;接收每个数据段的多个描述符,其中,每个描述符描述数据段中包含的数据的一个方面;采用第一用户自定义函数来解析每个数据段的第一最小描述符和每个数据段的第一最大描述符;创建所述数据段的轻量级索引,其中,所述轻量级索引包括每个数据段的第一最小描述符和每个数据段的第一最大描述符;将所述轻量级索引追加到所述存储单元中的所述数据段。
Description
相关申请案交叉申请
本发明申请要求于2015年4月20日递交的发明名称为“在具有只追加磁道带的设备上存储数据和轻量级索引的序列化方案”的第14/690,612号美国非临时申请案的在先申请优先权,该在先申请的全部内容以引入的方式并入本文。
背景技术
可以预计的是,物联网(Internet of Things,简称IoT)的增长会导致可用于描述世界的数据量急剧增加。管理大量数据的挑战之一是以一种空间高效和可搜索的方式存储数据。具体地,IoT设备生成的大量数据很快就会变冷。用户通常对最近的数据最感兴趣,对较旧的数据的兴趣明显较少。随着IoT在各种设备上得到越来越广泛的应用,以可搜索的方式对这种冷数据进行空间高效的存储将会变得越来越重要。进一步地,可能需要采用智能搜索技术来允许用户在连续生成的海量数据中找到特定的有用数据。
发明内容
在一实施例中,本发明的方法包括:接收多个数据记录;将所述数据记录存储为存储单元中的数据段;接收每个数据段的多个描述符,其中,每个描述符描述数据段中包含的数据的一个方面;采用第一用户自定义函数来解析每个数据段的第一最小描述符和每个数据段的第一最大描述符;创建所述数据段的轻量级索引,其中,所述轻量级索引包括每个数据段的第一最小描述符和每个数据段的第一最大描述符;将所述轻量级索引追加到所述存储单元中的所述数据段。
在另一实施例中,本发明的装置包括:接收器,用于:接收多个数据记录;接收每个数据记录的多个描述符,其中,每个描述符描述数据记录中包含的数据的一个方面;存储器,包括:数据磁道带,用于将所述数据记录存储为只追加格式的数据段;处理器,与所述接收器和所述存储器耦合,其中,所述处理器用于:采用第一用户自定义函数来解析每个数据段的多个最小描述符和每个数据段的多个最大描述符;创建所述数据段的轻量级索引,其中,所述轻量级索引包括每个数据段的最小描述符和每个数据段的最大描述符;将所述轻量级索引追加到所述数据磁道带中的所述数据段。
在另一实施例中,本发明的方法包括:存储多个轻量级索引,其中,每个轻量级索引与多个只追加数据磁道带中的一个相关联,每个轻量级索引包括:关联数据磁道带中的多个数据段中的每一个数据段的至少一个最小描述符;关联数据磁道带中的多个数据段中的每一个数据段的至少一个最大描述符;接收包括至少一个查询词的查询;搜索存储的轻量级索引,以针对由关联的最小描述符和关联的最大描述符限定的范围找到满足查询词的数据段;返回包括找到的数据段的每个数据磁道带的指示和关联数据磁道带中每个找到的数据段的相对起始位置。
通过以下结合附图和权利要求的详细描述,将会更清楚地理解这些以及其它特征。
附图说明
为了更透彻地理解本发明,现参阅结合附图和具体实施方式而描述的以下简要说明,其中的相同参考标号表示相同部分。
图1是存储网络的实施例的示意图;
图2是一般的数据存储方案的实施例的示意图;
图3是冷数据的只追加数据存储方案的实施例的示意图;
图4是一种用于数据存储的网元(networkelement,简称NE)的实施例的示意图;
图5是密封数据磁道带的实施例的示意图;
图6是开放数据磁道带的实施例的示意图;
图7是用于存储具有轻量级索引的存储单元的方法的实施例的流程图;
图8是采用轻量级索引查询多个存储单元的方法的实施例的流程图;
图9A-B示出了开放数据磁道带的持久存储方案的实施例;
图10是存储单元持久存储的方法的实施例的流程图;
图11是用户对数据的兴趣随时间变化的示例图。
具体实施方式
首先应理解,尽管下文提供一项或多项实施例的说明性实施方案,但所公开的系统和/或方法可使用任何数目的技术来实施,无论该技术是当前已知还是现有的。本发明决不应限于下文所说明的说明性实施方案、附图和技术,包括本文所说明并描述的示例性设计和实施方案,而是可在所附权利要求书的范围以及其等效物的完整范围内修改。
本文公开了以空间高效和可搜索的方式存储和索引冷数据的各种机制。如下所述,可以空间更高效地将数据存储为只追加格式。在这样的系统中,将多个数据段写入存储设备中的存储单元(如数据磁道带)。一个单元包括头部、一系列分段、轻量级索引和密封条。分段数据是一系列记录的压缩形式。分段包括段头、分段数据和段校验和。分段数据是一组记录的压缩形式。记录包括时间和一系列属性。描述符是在关联记录中预期的一组属性上定义的数学函数(可以是任何复杂度的数学函数)。描述符间隔可以由两个描述符值定义:给定描述符的下界(最小)值和上界(最大)值。除了其它信息之外,轻量级索引(可以位于每个单元的末端附近)包括从段标识符(identifier,简称ID)到描述符间隔集合以及每个分段的相关时间间隔的映射。所述轻量级索引还可以包括从段ID到单元中每个段头的相对位置的映射。在一些实施例中,可以将相对位置用作序列ID。在这种情况下,不需要使用段ID到相对位置的映射。存储设备还接收描述数据记录的各个方面的属性以及与数据记录相关联的时间。当存储单元快满时,存储设备将总结每个数据段各方面(例如,描述符间隔)的轻量级索引进行压缩,并将该压缩的轻量级索引追加到存储单元。应当注意,压缩实际上并不是必需的,单位值的压缩也是压缩,且是对因子1.0的压缩。通过在属性上解析用户自定义函数(例如,描述符)以生成每个数据段的最大描述符和最小描述符来生成轻量级索引。描述符和与数据段相关联的时间/时间范围一起存储在索引中。然后通过将密封条追加到存储单元的末端来表明存储单元已满。所述密封条包括指示轻量级索引的相对起始位置的数据。针对存储和查询的处理目的,还可以将轻量级索引转发到索引服务器。在接收到包括查询词、时间和/或时间范围的查询时,存储单元或索引服务器检索与时间范围相关联的数据段的轻量级索引。然后,存储单元/索引服务器返回针对由最小/最大描述符限定的范围满足查询词的数据段的指示。例如,数据段可以与温度数据相关联,并且在一定时间段内可以具有最高温度和最低温度。在接收到七十华氏度(degree Fahrenheit,简称°F)的查询词后,存储设备/索引服务器可以返回具有大于或等于70°F的最大描述符和小于或等于70°F的最小描述符的所有数据段。每个数据段可以包括多个描述符。例如,数据段可以包括描述设备中测量电流的数据,描述符可以包括在进行电流测量时测量的温度、噪声量、湿度等。通过采用多个描述符可以进行高级查询,例如,返回与指定温度、湿度和噪声量等相关联的所有数据段。描述符也可以用于视频数据,例如,指示一个视频流中在给定时间间隔内的人数。可以使用轻量级索引来快速获得满足相关标准的安全视频片段,例如,返回在一段时间间隔内显示人数多于指定人数的所有视频片段等。
图1是存储网络100的实施例的示意图。网络100包括数据源101、存储设备111、索引服务器113和客户端121。在一些实施例中,可以省略索引服务器113。所述存储设备111从所述数据源101接收比特流,将来自所述比特流的数据记录存储为数据段,并对所述数据段进行索引。在一实施例中,所述存储设备111将索引转发到所述索引服务器113进行单独存储。之后,根据实施例,所述客户端121向所述存储设备111或所述索引服务器113发送查询。接收所述查询的实体(例如,所述存储设备111或所述索引服务器113)根据查询来检索索引并返回查询涉及的数据段和/或数据段的相对位置。
所述数据源101包括用于捕获数据并将关联比特流转发到所述存储设备111的任何设备。例如,数据源101可以包括视频和/或音频监控系统、包括传感器的IoT设备、捕获有关系统状态/利用率的数据的数据中心、捕获有关系统状态/利用率的数据的移动网络等。因此,比特流包括数据记录,其中,所述数据记录包括:各种数据阵列,如媒体(例如,视频和/或音频数据)、传感器数据和/或基本上连续监控的任何其它类型的时间序列数据。每个数据记录还可以包括与数据相关联的时间/时间范围以及与数据段相关联的一个或多个描述符。每个描述符描述数据的一个方面。对于基于传感器的数据,每个描述符可以包括与数据相关联的属性,例如,温度、电流、设备利用率或与数据相关的任何其它属性。例如,基于传感器的记录可以作为<时间t;属性1a1;...;属性nan>发送。其中,时间t是捕获传感器数据的时间,属性1-n包括记录中描述数据的任意数量n个属性,并且a1至an包括关联属性的值。对于基于媒体的数据,每个描述符可以包括与数据相关联的blob,其中,blob是与数据相关联的任意类型的元数据。例如,基于媒体的记录可以作为<时间t;blob1b1;…;Blobn bn>发送。其中,时间t是捕获媒体数据的时间,Blobs1-n包含数据记录中描述数据的任意数量n个blob,b1到bn包括相关联的blob的值。
所述存储设备111包括任意设备,用于接收包括数据记录的比特流,将数据记录中的数据存储为数据段,并为数据段建立索引使其可搜索。所述存储设备111可将每个记录在数据段中存储为已接收记录(例如,在将记录作为具有头部和校验和的压缩数据接收的情况下),或者可以在存储前处理数据记录,即压缩一系列记录的数据,并添加头部和校验和以创建数据段。如参考下面图3所讨论的,所述存储设备111可以用于只追加数据存储以进行增加数据密度的存储。所述存储设备111可以将接收到的数据段连续地追加到存储单元,如内存设备上的数据磁道带。一旦存储单元快满,数据存储设备就会生成描述存储单元中每个数据段的轻量级索引,并将索引追加到存储单元中的最后一个数据段。所述轻量级索引可以指示每个数据段的时间和/或时间范围。生成轻量级索引还包括解析在属性上与每个数据记录相关联的一个或多个用户自定义函数(如描述符),并且针对要包含在特定分段中的记录集合,保留这些描述符的最大值和最小值。此类用户自定义函数可以从所述数据源101接收和/或在设置时配置到所述存储设备111中。用户自定义函数可以包括返回特定属性的标识函数或与属性相关的其它有用数据。解析每个用户自定义函数会创建最大描述符和最小描述符(例如,为每个函数都创建最大描述符和最小描述符)。然后将每个数据段的最大描述符和最小描述符存储在轻量级索引中。例如,具有属性1-n的每个数据段的轻量级索引可以通过tmin、tmax、Min1(f1(a1,…,an)、Max1(f1(a1,…,an)、…、Minm(fm(a1,…an)、Maxm(fm(a1,…,an)来描述。其中,tmin表示数据段的起始时间,tmax表示数据段的结束时间,f1到fm描述应用于属性值a1到an的任意数量m个用户自定义函数,Min1和Max1到Minm和Maxm表示所述m个用户自定义函数中的每一个用户自定义函数的最小和最大结果。同样地,每个具有blobs1-n的数据段的轻量级索引可以通过tmin、tmax、Min1(f1(b1,…,bn)、Max1(f1(b1,…,bn)、…、Minm(fm(b1,…,bn)、Maxm(fm(b1,…,bn)来描述。其中,tmin表示数据段的起始时间,tmax表示数据段的结束时间,f1到fm表示应用于blob值b1到bn的任意数量m个用户自定义函数,Min1和Max1到Minm和Maxm表示所述m个用户自定义函数中的每一个用户自定义函数的最小和最大结果。通过使用最小描述符和最大描述符(例如,将最小描述符和最大描述符用于每个函数)和每个数据段,相关的最小和最大描述符创建有界范围。当查询时,轻量级索引可用于快速确定包含或满足查询词的范围内的所有数据段。由于函数是用户自定义的,轻量级描述符可用于指示与几乎所有查询相关的数据段。例如,可以使用轻量级索引来返回所有数据段,包括指定相机中在一定日期/时间范围内含有三人或多人的视频图像。轻量级索引也可以用于在一定日期/时间范围内返回指定数据中心内的所有处理器核心相关联的有一定的利用率百分比的数据。当将轻量级索引追加到存储单元时,所述存储设备111将密封条追加到存储单元的末端。所述密封条表示存储单元已满,并提供指向存储单元中轻量级索引的相对位置的指针。
在一实施例中,所述存储设备111还可以将轻量级索引转发到所述索引服务器113。所述索引服务器113维护轻量级索引并从所述客户端121接收查询。在一实施例中,当接收到具有一个或多个查询词的查询时,所述索引服务器113搜索轻量级索引,并向所述客户端121返回由查询词指示的每个数据段的相对位置的指示以及关联存储单元的指示。在另一实施例中,所述索引服务器113直接将指示返回至所述存储设备111,使得所述存储设备111可以将所有相关数据段转发给所述客户端121。在又一实施例中,所述索引服务器113通过所述存储设备111从所述客户端121接收查询,并将指示返回至所述存储设备111。
所述客户端121可以是任意设备,用于将包括一个或多个查询词的查询转发到所述存储设备111和/或所述索引服务器113。根据实施例,所述客户端121可以接收与来自所述索引服务器113的查询相关的数据段的指示,并将请求转发到所述存储设备111以获得相关的数据段。所述客户端121还可以直接将查询发送到所述存储设备111,和/或直接从所述存储设备111接收响应指示和/或相关数据段。因此,在一些实施例中,所述客户端121可能不直接知道所述索引服务器113。
图2是一般数据存储方案200的实施例的示意图,所述方案可供存储设备使用,如存储设备111。在所述数据存储方案200中,将数据存储在多个数据磁道带210中。每个数据磁道带210包括较大量的数据,例如32-256兆字节(megabyte,简称MB)。作为具体示例,当数据流以每五秒一次传输的频率发送64位数据时,32MB数据磁道带中可以存储大约4周的数据流。存储设备包括将接收的数据写入存储器的写入头和从存储器读取数据的读取头。每个数据磁道带210的写入(written,简称w)宽度221与写入头大致相同。由于与硬件相关联的原因,写入头中心附近的数据比写入头边缘的数据的错误少。因此,读取头小于写入头,并且仅读取每个数据磁道带210的中心。间隙(gap,简称g)223位于数据磁道带之间,以防止在写入过程中相邻的数据磁道带210被破坏。所述数据存储方案200允许独立写入、读取和覆盖每个数据磁道带。然而,g223的存在减少了适合存储器的任意指定区域的数据磁道带210的数量。
图3是用于冷数据的只追加数据存储方案300的实施例的示意图,所述方案可供存储设备使用,如存储设备111。所述数据存储方案300使用与数据磁道带210相似的数据磁道带310。与数据存储方案200相比,所述数据存储方案300通过消除方案200中示出的一些间隙223将数据磁道带310分组为组311和312。虽然方案300描述了磁道带310的第一组311和磁道带310的第二组312,但是可以使用任何数量的组。组311通过间隙(gap,简称g)323与组312隔开。所述数据存储方案300使所述数据磁道带310叠盖,即,使组中每个数据磁道带310覆盖组中前一个数据磁道带310的一部分。虽然数据磁道带310的写入(written width,简称w)宽度321的部分被覆盖,但是会保留每个数据磁道带310的读取(read,简称r)宽度322(例如,不会覆盖读取宽度)。因此,所述方案300通过利用读取头和写入头之间的大小差异来使适合指定空间的数据磁道带310的数量最大化。与所述方案300相关联的运营成本是覆盖任何磁道带310也将覆盖/破坏任何后续磁道带310中的数据。因此,所述方案300是只追加方案。只要保留间隙323,即可将新磁道带310追加到任意组311或312的末端,而不会破坏数据。覆盖任何写入磁道带310还需要覆盖相关组311或312中的所有后续磁道带310。因此,所述方案300不太适合需要频繁更新的数据,但非常适合存储后很少更改的大量冷数据的存储。例如,所述数据存储方案300允许最佳的数据磁道带310的存储空间效率,这有利于大量的数据,因为冷数据很少被修改,而不需要大量的运营成本。
图4是作为网络中的节点的NE 400的实施例的示意图,例如,网络100中的存储设备111、索引服务器113、客户端121和/或数据源101,用于存储、索引和/或搜索如图3所描述的只追加格式的数据段。所述NE 400可以在单个节点中实现,或者所述NE 400的功能可以在网络中的多个节点中实现。本领域技术人员将意识到,术语NE包含各种各样的设备,其中,所述NE 400仅是一个示例。所述NE 400是为了讨论清晰的目的,但绝不意味着将本发明的应用限于特定的NE实施例或NE实施例的类别。本发明中描述的至少一些特征/方法可以在网络装置或组件中实现,如所述NE 400。例如,本发明中的特征/方法可以使用硬件、固件和/或安装的在硬件上运行的软件来实现。所述NE 400可以是通过网络处理、存储和/或转发数据帧的任何设备,例如,服务器、客户端、数据源等。如图4所示,所述NE 400可以包括收发机(transceiver,简称Tx/Rx)410,该收发机410可以是发射机,接收机或其组合。所述Tx/Rx 410可以耦合到多个端口450(例如上游接口和/或下游接口),用于从其它节点发送和/或接收帧。处理器430可耦合到所述Tx/Rx 410,以处理帧和/或确定向哪些节点发送帧。所述处理器430可以包括一个或多个多核处理器和/或存储器432,其可以用作数据存储器,缓冲器等。所述处理器430可以实现为通用处理器,或者可以是一个或多个专用集成电路(application-specific integrated circuit,简称ASIC)和/或数字信号处理器(digitalsignal processor,简称DSP)的一部分。处理器430可以包括串行化模块434,可以根据实施例执行方法700、800和/或1000。在一实施例中,串行化模块434接收、存储和索引数据段。在另一实施例中,序列化模块434基于查询来检索索引并返回数据段和/或指向数据段的指针。在可替代实施例中,串行化模块434可以实现为存储在所述存储器432中的指令,可以由处理器430执行,例如实现为计算机程序产品。在另一可替代实施例中,串行化模块434可以在单独的NE上实现。端口420可以包含电和/或光传输和/或接收组件。
应当理解,通过将可执行指令编程和/或加载到所述NE 400,所述处理器430、所述串行化模块434、所述端口450、所述Tx/Rx 410和/或所述存储器432中的至少一个会发生改变,从而在某种程度上将所述NE 400转换成具有本发明新颖功能的特定机器或装置,如多核转发架构。对于电气工程和软件工程领域至关重要的是,可以按照公知的设计规则将可以通过将可执行软件加载到计算机来实现的功能转换为硬件实现。在软件还是硬件中实现某一概念的决定通常取决于设计的稳定性和要生产的单元数量的考虑,而非考虑任何涉及从软件域到硬件域的转换问题。通常,经常变化的设计可以优先在软件中实现,这是因为重编硬件实现要比重编软件设计更加昂贵。通常,稳定性好并大批量生产的设计可以优先在硬件中实现,例如,在ASIC中,这是因为大批量生产运行使得硬件实现比软件实现更廉价。通常,一项设计可以以软件的形式进行开发和测试,之后根据公认的设计规则转化为专用集成电路中的等效的硬件实现方式,所述硬件实现方式硬连线至所述软件的指令。按照相同的方式,由新型ASIC控制的机器即为一种特定机器或装置,同样地,已被编程和/或加载可执行指令的计算机可被视为一种特定的机器或装置。
图5是密封数据磁道带500的实施例的示意图。所述密封数据磁道带500可以是也可以不是只追加数据磁道带,并且可以基本类似于磁道带210或310。所述密封数据磁道带500是从数据源(例如数据源101)接收到数据记录的比特流时存储设备(如存储设备111或NE 400)创建的示例存储单元。可以通过方法700和/或1000创建所述密封数据磁道带500并通过方法800搜索所述密封数据磁道带500。在一实施例中,所述密封数据磁道带500可以包括约32-256MB的数据。在另一实施例中,所述密封数据磁道带500可以包括明显较少的数据,例如约4MB。
所述密封数据磁道带500包括磁道带头501,数据段510,轻量级索引520,间隙540和密封条530。在一实施例中,所述密封数据磁道带500是只追加磁道带,并在存储单元接收到数据记录时初始化所述数据磁道带500。所述磁道带头501可以先追加到数据磁道带500,且可以包括指示所述数据磁道带500的特性的数据,如所述数据磁道带500的预定大小、所述数据磁道带500的起始位置、指向下一个和/或前一个磁道带的指针等。
然后可以将所述数据磁道带500的第一接收数据记录转换成数据段510并追加到磁道带头。可以将记录转换成数据段510,即压缩数据记录以创建压缩段513,将段头511添加到所述压缩段513前端,并将校验和515添加到所述压缩段513的末端。所述段头511包括指示所述数据段510大小的数据。所述压缩段513包括来自接收的记录的压缩数据,例如捕获的数据、时间和/或时间范围(例如,指示数据何时被捕获、发送等)和/或描述如图1所描述的数据各方面的描述符。所述校验和515包括基于所述数据段510中数据的计算值。所述校验和515可以在检索所述数据段510时独立计算,以确保数据段不被破坏。因此,将所述段头511和所述校验和515添加到所述数据段510以确保所述数据段510的完整性。所述压缩段513的大小可以变化,并且所述数据段510的大小也可以相应变化。在可替代实施例中,直接从数据源(例如数据源101)接收所述数据段510并作为记录。在这种情况下,可以省略对记录的压缩和对所述段头511和所述校验和515的添加。
通过将每个数据段510追加到前一数据段510,直到数据磁道带500充满,来接收额外的数据记录并存储为数据段510。每个数据段包括段头511、压缩段513和校验和515。当要存储的数据段510的大小、轻量级索引520的预期大小和密封条530的预期大小之和超过数据磁道带500中的剩余可用空间时,可以确定所述数据磁道带500已满。在确定所述数据磁道带500已满时,存储设备计算所述轻量级索引520并将所述轻量级索引520追加到最后的数据段510。所述轻量级索引520包括位于所述轻量级索引520的相对起始位置处的轻量级索引头部521。所述轻量级索引头部521指示所述轻量级索引520的大小。所述轻量级索引520还包括索引数据523。所述索引数据523包括每个数据段510的最小描述符和最大描述符,如以上图1所述,该最小描述符和该最大描述符可以通过解析应用于在每个数据记录中接收的属性的用户自定义函数得到。所述轻量级索引520还包括校验和525,该校验和525基本类似于校验和515,并且用于确保所述轻量级索引520的完整性。
一旦将所述轻量级索引520追加到所述数据磁道带500上,则将密封条530追加到所述数据磁道带500的末端。所述密封条530指示所述数据磁道带500已满。例如,所述密封条530可以是32位长,并且可以占据所述数据磁道带500中的最后32位的空间。所述密封条530包括指示所述轻量级索引520的相对起始位置的数据(例如,指针)。因此,存储设备可以通过存储设备的读取头的两次移动来读取所述轻量级索引520。具体地,读取头可以读取所述密封条530,并且直接移动以读取所述轻量级索引520。
由于数据段510和轻量级索引520的大小可能会变化,在所述轻量级索引520和所述密封条530之间可能存在不同大小的间隙540。间隙540的大小等于所述数据磁道带500的总大小与所述数据段510、所述轻量级索引520和所述密封条530的大小之和之间的差异。
图6是开放数据磁道带600的实施例的示意图。所述开放数据磁道带600可以基本类似于密封数据磁道带500,但是示出了在所述数据磁道带600已满之前所述数据磁道带600的状态。所述开放数据磁道带600是从数据源(例如数据源101)接收到数据记录的比特流时,由存储设备(如存储设备111或NE 400)创建的示例存储单元。所述开放数据磁道带600可以由方法700和/或1000创建。所述开放数据磁道带600包括磁道带头601和数据段610。每个数据段610包括段头611、压缩段613和校验和615,基本上分别类似于磁道带头501、数据段510、段头511,压缩段513和校验和515。所述数据磁道带600还包括未分配的空间650,所述未分配的空间650不包含数据或包含已指定为要覆盖的数据。当存储设备(如存储设备111)接收附加记录/数据段610时,将这样的分段610追加到所述未分配空间650中。一旦剩余的未分配空间650不足以存储附加段610、轻量级索引(例如轻量级索引520)和密封条(例如密封条530),则就不再认为所述数据磁道带600对更多的数据段610的存储开放。在这一点上,认为磁道带已满。然后在确定和追加密封条之前确定并追加轻量级索引。一旦追加了所述密封条,则认为所述数据磁道带600是密封磁道带,并且可以基本类似于密封磁道带500。
图7是存储具有轻量级索引的存储单元(例如数据磁道带500和/或600)的方法700的实施例的流程图。所述方法700可以是当从数据源(例如数据源101)接收到包含数据记录的比特流时由存储设备(如存储设备111和/或NE 400)创建。在步骤701,接收数据记录。数据记录分别包括数据(例如由数据源捕获的数据)和如图1中充分描述的用于描述关联数据记录中数据的各方面的描述符。在步骤703,通过压缩数据记录并向压缩的记录添加头部和校验和,将每个数据记录转换成数据段。然后如图5-6所述,将数据段追加到存储单元,直到存储单元充满。在步骤705,一旦所述存储单元已满,在每个数据段的每个描述符上解析一个或多个用户自定义函数。解析函数会为每个数据段创建应用于每个接收的描述符的每个函数的最大描述符,以及应用于每个接收的描述符的每个函数的最小描述符。在步骤707,创建轻量级索引并追加到存储单元中的最后的数据段。所述轻量级索引包括每个数据段的最小和最大描述符、每个数据段的时间和/或时间范围、以及指向每个数据段的相对起始位置的指针。在可选步骤709,可以将所述轻量级索引发送到单独的索引服务器(例如,用于专用查询处理)。在步骤711,将密封条追加到所述存储单元的末端。所述密封条包括指向存储单元中的轻量级索引的相对起始位置的指针,该指针允许在查询时快速找到并检查所述轻量级索引。
图8是通过使用轻量级索引来搜索多个存储单元(如数据磁道带500)的方法800的实施例的流程图。存储设备和/或索引服务器(如存储设备100、索引服务器113和/或NE400)可以采用所述方法800,以便当从客户端(如客户端121)接收查询时搜索数据段。在一实施例中,当密封已满的存储单元(如数据磁道带500)时,所述方法800由存储设备实现。在可替代实施例中,所述方法800由索引服务器通过从存储设备接收轻量级索引实现。在步骤801,获得并存储轻量级索引。如上所述,每个轻量级索引包括每个数据段的最小描述符和最大描述符、用户自定义函数、接收的描述符等。在步骤803,例如从客户端或从存储设备接收包括一个或多个查询词的查询。所述查询词可以包括时间/时间范围和/或与任何描述符相关的数据,例如数据属性、blob/元数据等。在步骤805,搜索所述轻量级索引。例如,当接收到时间范围时,搜索与在时间范围内捕获的数据段相关联的每个轻量级索引。在步骤807,根据每个查询词满足由相关最小和最大描述符限定的范围,返回每个数据段的相对起始位置(或其它指示)。作为示例,查询词可以指示值(例如四个)或更多。在这种情况下,返回由包括等于或大于指示值(例如五)的值的最小/最大描述符限定的任何范围。还可以支持包括多个词汇的更高级的查询,例如返回指定时间范围(第二项)内拍摄的视频(第一项)的所有数据段,该视频包括在指定位置(第四项)的指定数量的人(第三项)的图像,等等。因此,可支持查询的复杂性仅受到为数据段存储的最小/最大描述符的性质和数量的限制。应当注意,对于该示例实施例,视频上的GPS数据可以指示相对位置。此外,描述符可以包括通过地理区域的最小角落和最大角落的边界框。因此,可以将描述符表示为用于提取地理位置的函数,作为边界框的函数可以被良好排序并且适于提取边界框架/框的最小和最大坐标。也可以返回包括找到的数据段的每个存储段的相对起始位置(例如,或其它指示)。位置/指示可以返回给请求客户端、存储设备等。
图9A-B示出了存储设备(如存储设备111)中用于开放数据磁道带(如开放数据磁道带600)的持久存储方案900的实施例。数据磁道带包括磁道带头901、数据段910和未分配空间950,分别基本类似于磁道带头601,数据段610和未分配空间650。由方案900操作的开放数据磁道带是从数据源(如数据源101)接收数据记录的比特流时,存储设备(如存储设备111或NE 400)创建的示例存储单元。方案900的开放数据磁道带可以由方法700和/或1000创建。图9A示出了当第一次从数据源(例如数据源101)接收到部分记录960时的磁道带。通过将所述部分记录960的新部分追加到最后的数据段910后面来连续存储所述部分记录960。具体地,将所述部分记录960追加于先前完成数据段910紧邻的起始位置970(图中虚线描绘处)处。所述部分记录960可以在没有段头和校验和时以未压缩形式被接收和存储。一旦完全接收所述部分记录960,则读取和压缩所述部分记录960以创建压缩段,例如压缩段613。将段头和校验和(例如,段头611和校验和615)添加到所述压缩段,以创建数据段910。然后将新创建的数据段910追加到起始位置970处的最后的数据段910,覆盖所述部分记录960。图9B示出了第二次当所述起始位置970处所述新创建的数据段910覆盖所述部分记录960时的数据磁道带。然后,所述起始位置970变为新创建的数据段910的相对起始位置。连续存储部分记录,如所述部分记录960,增加了所述存储方案900的持久性。所述部分记录960可以存储相当长的一段时间。在电源故障、硬件错误、软件错误等情况下,存储在随机存取存储器(random access memory,简称RAM)中的部分记录可能会丢失。通过将所述部分记录960暂时追加到数据磁道带来保护所述部分记录960免受数据丢失。此外,将所述部分记录960存储在数据磁道带中减少了操作存储设备所需的RAM的量,这可能会降低与所述方案900相关联的硬件成本。
图10是基于存储方案(如方案900)的存储单元(如数据磁道带600)中的持久存储的方法1000的实施例的流程图。所述方法1000可以由存储设备(如存储设备111)来实现,并且可以在接收到部分记录(如部分记录960)之后发起。在步骤1001,接收包含部分数据的部分记录。在步骤1003,将部分数据记录追加到存储单元中的最后完成的数据段(例如与起始位置970相邻的数据段910)。在步骤1005,当接收到用于部分数据记录的完整数据时,读取部分记录。通过压缩完整的数据,在压缩数据的前端添加一个头部,并将校验和添加到压缩数据的末端来创建一个新完成的数据段。在步骤1007,如图9A-B所述,在最后完成的数据段之后,将新完成的数据段追加到存储单元。然后覆盖部分数据记录。
图11是用户对数据的兴趣随时间变化的示例图1100。在图1100中,用户感兴趣的级别在纵轴上示出,并且在横轴上描绘数据寿命。当数据老化时,对高保真数据(例如视频)和/或细粒/高密度数据的兴趣迅速下降。对低保真数据和/或过程/低密度数据的兴趣下降得更慢。具体来说,对大多数任务而言,当前数据通常比旧数据相关性更高。与低兴趣相关的结果数据被认为是冷数据。一些数据完全过期,而其它数据可能永久相关。无论在哪种情况下,可以在网络(如网络100)中存储冷数据(例如,存储为只追加格式)。数据可以由存储设备(如存储设备111)、索引服务器113和/或NE 400管理。例如,通过采用方法700和/或1000为数据建立索引,可以以持久和空间高效的方式存储冷数据,例如存储在数据磁道带500、600和/或900中。此外,在一些冷数据变得与用户相关的情况下,例如,可以使用方法800从不相关的冷数据中找到并检索相关的冷数据。
虽然本发明提供多个具体实施例,但应当理解,所公开的系统和方法也可通过其它多种具体形式体现,而不会脱离本发明的精神或范围。本发明的实例应被视为说明性而非限制性的,且本发明并不限于本文本所给出的细节。例如,各种单元或组件可以在另一系统中组合或合并,或者某些特征可以省略或不实施。
此外,在不脱离本发明的范围的情况下,各种实施例中描述和说明为离散或单独的技术、系统和方法可以与其它系统、模块、技术或方法进行组合或合并。展示或论述为彼此耦合或直接耦合或通信的其它项也可以采用电方式、机械方式或其它方式通过某一接口、设备或中间组件间接地耦合或通信。其它变更、替换、更替示例对本领域技术人员而言是显而易见的,均不脱离此处公开的精神和范围。
Claims (20)
1.一种数据存储和索引方法,其特征在于,包括:
接收多个数据记录;
将数据记录存储在存储单元的数据段中,所述数据段包括段头、分段数据和段校验和;
计算每个数据记录的多个描述符,其中,每个描述符描述数据记录中包含的数据的一个方面;采用第一用户自定义函数解析得到每个数据段的第一最小描述符和每个数据段的第一最大描述符;
当确定所述存储单元已满,创建所述数据段的轻量级索引,其中,所述轻量级索引包括每个数据段的第一最小描述符和每个数据段的第一最大描述符,所述轻量级索引用于在查询时快速确定包含或满足查询词的范围内的所有数据段;
将所述轻量级索引追加到所述存储单元中的最后的数据段。
2.根据权利要求1所述的方法,其特征在于,还包括:采用第二用户自定义函数来解析每个数据段的第二最小描述符和每个数据段的第二最大描述符,其中,所述轻量级索引还包括所述第二最小描述符和所述第二最大描述符。
3.根据权利要求2所述的方法,其特征在于,每个数据段包括与时间范围相关联的数据,并且关联数据段的第一最小描述符、第一最大描述符、第二最小描述符和第二最大描述符分别描述关联时间范围内数据的一个方面。
4.根据权利要求1所述的方法,其特征在于,还包括:向所述存储单元追加密封条以指示所述存储单元已满。
5.根据权利要求4所述的方法,其特征在于,所述密封条包括指向所述存储单元中所述轻量级索引的相对起始位置的指针。
6.根据权利要求1所述的方法,其特征在于,所述存储单元是只追加存储单元。
7.根据权利要求1所述的方法,其特征在于,还包括:将所述轻量级索引发送到索引服务器进行存储。
8.根据权利要求1所述的方法,其特征在于,将所述数据段存储在所述存储单元中还包括:接收部分数据记录;
将所述部分数据记录追加到所述存储单元中最后完成的数据段;
通过压缩所述部分数据记录中包含的数据来创建新完成的数据段;
通过将所述新完成的数据段追加到所述最后完成的数据段来覆盖所述部分数据记录。
9.根据权利要求1所述的方法,其特征在于,还包括:
接收包括至少一个查询词的查询;
针对由找到的数据段的第一最小描述符和第一最大描述符限定的范围返回满足查询词的每个数据段的相对起始位置。
10.一种数据存储和索引装置,其特征在于,包括:
接收器,用于:接收多个数据记录;
接收每个数据记录的多个描述符,其中,每个描述符描述关联数据记录中包含的数据的一个方面;
存储器,包括:数据磁道带,用于将所述数据记录存储为只追加格式的数据段,所述数据段包括段头、分段数据和段校验和;
处理器,与所述接收器和所述存储器耦合,其中,所述处理器用于:
采用第一用户自定义函数解析得到每个数据段的多个最小描述符和每个数据段的多个最大描述符;
当确定存储单元已满,创建所述数据段的轻量级索引,其中,所述轻量级索引包括每个数据段的最小描述符和每个数据段的最大描述符,所述轻量级索引用于在查询时快速确定包含或满足查询词的范围内的所有数据段;
将所述轻量级索引追加到所述数据磁道带中的最后的数据段。
11.根据权利要求10所述的装置,其特征在于,所述接收器还用于接收每个数据段的时间,且所述轻量级索引包括基于所述接收的时间的每个数据段的时间范围。
12.根据权利要求11所述的装置,其特征在于,所述数据段包括传感器数据,且描述符是在所述时间范围内描述所述传感器数据的属性。
13.根据权利要求11所述的装置,其特征在于,所述数据段包括媒体数据,且描述符是包括在所述时间范围内描述所述媒体数据的元数据的blob。
14.根据权利要求11所述的装置,其特征在于,当所述数据磁道带充满数据段时,将所述轻量级索引追加到所述数据磁道带,并将单个轻量级索引用于所述数据磁道带。
15.根据权利要求14所述的装置,其特征在于,所述处理器还用于:在追加所述轻量级索引以指示所述数据磁道带已满之后,向所述数据磁道带追加密封条。
16.根据权利要求15所述的装置,其特征在于,所述密封条包括指向所述数据磁道带中所述轻量级索引的相对起始位置的指针。
17.一种数据存储和索引方法,其特征在于,包括:
存储多个轻量级索引,其中,每个轻量级索引与多个只追加数据磁道带中的一个相关联,所述轻量级索引用于在查询时快速确定包含或满足查询词的范围内的所有数据段,每个轻量级索引包括:
关联数据磁道带中的多个数据段中的每一个数据段的至少一个最小描述符;
关联数据磁道带中的多个数据段中的每一个数据段的至少一个最大描述符;
接收包括至少一个查询词的查询;
搜索存储的轻量级索引,以针对由找到的数据段的最小描述符和最大描述符限定的范围找到满足查询词的数据段;
返回包括找到的数据段的每个数据磁道带的指示和关联数据磁道带中每个找到的数据段的相对起始位置。
18.根据权利要求17所述的方法,其特征在于,所述方法在索引服务器上实现。
19.根据权利要求17所述的方法,其特征在于,所述方法在存储设备上实现,且所述方法还包括:
接收数据记录;
将每个数据记录存储为关联数据磁道带中的一个数据段;
其中,所述存储多个轻量级索引包括:在只追加数据磁道带充满数据段后,将每个轻量级索引追加到所述只追加数据磁道带。
20.根据权利要求19所述的方法,其特征在于,将密封条追加到每个已满数据磁道带,且所述搜索存储的轻量级索引还包括:检索每个密封条,以找到指向所述存储的轻量级索引的相对起始位置的指针。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/690,612 US10394786B2 (en) | 2015-04-20 | 2015-04-20 | Serialization scheme for storing data and lightweight indices on devices with append-only bands |
US14/690,612 | 2015-04-20 | ||
PCT/CN2016/079579 WO2016169456A1 (en) | 2015-04-20 | 2016-04-18 | Serialization scheme for storing data and lightweight indices on devices with append-only bands |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107533562A CN107533562A (zh) | 2018-01-02 |
CN107533562B true CN107533562B (zh) | 2020-07-24 |
Family
ID=57129344
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201680023337.1A Active CN107533562B (zh) | 2015-04-20 | 2016-04-18 | 在具有只追加磁道带的设备上存储数据和轻量级索引的序列化方案 |
Country Status (3)
Country | Link |
---|---|
US (1) | US10394786B2 (zh) |
CN (1) | CN107533562B (zh) |
WO (1) | WO2016169456A1 (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10809708B2 (en) * | 2015-07-09 | 2020-10-20 | Siemens Aktiengesellschaft | Generating events using contextual information on an intelligent programmable logic controller |
US10346396B2 (en) * | 2016-08-02 | 2019-07-09 | Quest Software Inc. | Altering search sequence to cause multiple searches to load and evaluate segments together |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6345268B1 (en) * | 1997-06-09 | 2002-02-05 | Carlos De La Huerga | Method and system for resolving temporal descriptors of data records in a computer system |
CN101539902A (zh) * | 2009-05-05 | 2009-09-23 | 中国科学院计算技术研究所 | 多计算机系统中节点的dma设备及通信方法 |
CN101796492A (zh) * | 2007-04-11 | 2010-08-04 | Emc公司 | 使用细分段的集群存储 |
CN101996250A (zh) * | 2010-11-15 | 2011-03-30 | 中国科学院计算技术研究所 | 一种基于Hadoop的海量流数据存储和查询方法及系统 |
Family Cites Families (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP3280332B2 (ja) * | 1998-07-10 | 2002-05-13 | インターナショナル・ビジネス・マシーンズ・コーポレーション | ループに対するバージョニングを実行する方法及び装置、配列レンジ・チェックに関する情報をベーシック・ブロック内において収集する方法及び装置、配列レンジ・チェックに関する情報を変更する方法、配列レンジ・チェック最適化方法、配列レンジ・チェックのためのコードを生成する方法、不要配列レンジ・チェック除去方法及び装置、配列レンジ・チェックを選択する方法、配列レンジ・チェック変更方法、配列レンジ・チェック収集方法、及び配列レンジ・チェック取扱判断方法 |
US6754799B2 (en) * | 2001-05-16 | 2004-06-22 | Microsoft Corporation | System and method for indexing and retrieving cached objects |
US6873985B2 (en) * | 2001-12-06 | 2005-03-29 | Xerox Corporation | Lightweight subject indexing for e-mail collections |
US7788324B2 (en) | 2002-03-29 | 2010-08-31 | Atto Technology, Inc. | Method and system for improving the efficiency and ensuring the integrity of a data transfer |
US20040199485A1 (en) * | 2003-04-01 | 2004-10-07 | International Business Machines Corporation | Index for directory database |
US7512616B2 (en) | 2003-11-20 | 2009-03-31 | International Business Machines Corporation | Apparatus, system, and method for communicating a binary code image |
JP5196924B2 (ja) * | 2007-09-11 | 2013-05-15 | 株式会社東芝 | データベース処理装置、方法及びプログラム |
WO2012176374A1 (ja) * | 2011-06-21 | 2012-12-27 | 日本電気株式会社 | 数値範囲検索装置、数値範囲検索方法、および数値範囲検索プログラム |
US9645758B2 (en) * | 2011-07-22 | 2017-05-09 | Sandisk Technologies Llc | Apparatus, system, and method for indexing data of an append-only, log-based structure |
CN103246664B (zh) * | 2012-02-07 | 2016-05-25 | 阿里巴巴集团控股有限公司 | 网页检索方法和装置 |
CN102779180B (zh) | 2012-06-29 | 2015-09-09 | 华为技术有限公司 | 数据存储系统的操作处理方法,数据存储系统 |
US9471610B1 (en) * | 2013-09-16 | 2016-10-18 | Amazon Technologies, Inc. | Scale-out of data that supports roll back |
US9223843B1 (en) * | 2013-12-02 | 2015-12-29 | Amazon Technologies, Inc. | Optimized log storage for asynchronous log updates |
US9785712B1 (en) * | 2014-06-20 | 2017-10-10 | Amazon Technologies, Inc. | Multi-index search engines |
WO2016033676A1 (en) * | 2014-09-02 | 2016-03-10 | Netra Systems Inc. | System and method for analyzing and searching imagery |
-
2015
- 2015-04-20 US US14/690,612 patent/US10394786B2/en active Active
-
2016
- 2016-04-18 WO PCT/CN2016/079579 patent/WO2016169456A1/en active Application Filing
- 2016-04-18 CN CN201680023337.1A patent/CN107533562B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6345268B1 (en) * | 1997-06-09 | 2002-02-05 | Carlos De La Huerga | Method and system for resolving temporal descriptors of data records in a computer system |
CN101796492A (zh) * | 2007-04-11 | 2010-08-04 | Emc公司 | 使用细分段的集群存储 |
CN101539902A (zh) * | 2009-05-05 | 2009-09-23 | 中国科学院计算技术研究所 | 多计算机系统中节点的dma设备及通信方法 |
CN101996250A (zh) * | 2010-11-15 | 2011-03-30 | 中国科学院计算技术研究所 | 一种基于Hadoop的海量流数据存储和查询方法及系统 |
Also Published As
Publication number | Publication date |
---|---|
CN107533562A (zh) | 2018-01-02 |
US10394786B2 (en) | 2019-08-27 |
US20160306836A1 (en) | 2016-10-20 |
WO2016169456A1 (en) | 2016-10-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8347408B2 (en) | Matching of unknown video content to protected video content | |
US8259177B2 (en) | Video fingerprint systems and methods | |
US8010566B2 (en) | Extended multimedia file structure and multimedia file producting method and multimedia file executing method | |
CN107851122B (zh) | 大规模存储和检索具有良有界生命的数据 | |
US9286165B2 (en) | Apparatus and method for recovering partition using backup boot record information | |
US11392541B2 (en) | Data transfer using snapshot differencing from edge system to core system | |
US8938430B2 (en) | Intelligent data archiving | |
US20100082712A1 (en) | Location and Time Based Media Retrieval | |
CN102244758A (zh) | 一种基于录像文件的数据获取方法和设备 | |
CN103092848B (zh) | 一种图片存储与检索方法 | |
US20090327334A1 (en) | Generating Measures of Video Sequences to Detect Unauthorized Use | |
US9411690B2 (en) | Security surveillance apparatus with networking and video recording functions and failure detecting and repairing method for storage device thereof | |
WO2020103493A1 (zh) | 基于fat32文件系统的删除文件恢复方法及系统 | |
CN108984686B (zh) | 一种基于日志合并的分布式文件系统索引方法和装置 | |
JP2020526057A5 (zh) | ||
US11250888B1 (en) | Flash memory and method for storing and retrieving embedded audio video data | |
CN107533562B (zh) | 在具有只追加磁道带的设备上存储数据和轻量级索引的序列化方案 | |
CN111125298A (zh) | 重建ntfs文件目录树的方法、设备及存储介质 | |
CN111651127A (zh) | 一种基于叠瓦式磁记录盘的监控数据存储方法及装置 | |
CN109947730B (zh) | 元数据恢复方法、装置、分布式文件系统及可读存储介质 | |
CN114556283B (zh) | 一种数据写入、一致性检查和读取的方法及装置 | |
US8370325B2 (en) | File structure analyzing apparatus, file structure analyzing method, and program | |
CN114675783A (zh) | 一种数据存储方法、系统、设备以及介质 | |
CN110990239A (zh) | 一种基于软传感器在用户设备中采集用户数据的系统及方法 | |
CN112416873B (zh) | 视频碎片文件的恢复方法、装置、计算机设备及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |