一种数据存储的方法和装置的制造方法

文档序号:10665661阅读:321来源:国知局
一种数据存储的方法和装置的制造方法
【专利摘要】本发明公开了一种数据存储的方法和装置。该方法,包括:缓存数据片,记录所述数据片的开始时间和结束时间,单个所述数据片的数据属于同一周期;根据所述开始时间和结束时间聚合一个完整周期内的数据片得到数据单元;将所述数据单元写入存储区;确认所述数据单元的最后一个数据片的结束时间是时间索引节点,添加该时间索引节点关联的各级时间索引的索引信息和对应的时间段的汇总信息。通过在缓存中将琐碎的数据进行聚合后得到满足预设的索引规则的数据单元,将数据单元按时序存入存储区域,在存储区域中为每个数据单元生成对应的各级索引信息,减少琐碎数据单个存储对硬盘造成的频繁访问,并使得后续检索快速高效。
【专利说明】
一种数据存储的方法和装置
技术领域
[0001]本发明涉及视频监控技术领域,尤其涉及一种数据存储的方法和装置。
【背景技术】
[0002]基于时序的数据采集获得的经常是琐碎的数据,如果数据采集的时间很长,产生的琐碎的数据片的片数就越多。在现有技术中,对这种数据的存储过程是将每个琐碎的数据片一次写入存储区域。
[0003]以车站或商场的客流量的数据统计为例,如图1所示,客流量信息由IPC(IPCamra,网络摄像机)发送给NVR系统(Network Video Recorder,网络硬盘录像机),NVR系统进行存储后,用户可通过本地界面或者远程客户端获取统计结果,并可将统计结果转存或下载。
[0004]如图2所示,每个数据片携带的客流量信息最少包括统计对应时段的开始时间和结束时间,也就是 Tlstart、Tgstart、 、Tnstart、Tn+]_start萍卩 T ien(j、TgentP 、 T_d;具体的数据至少包括进入人数和离开人数。这些数据片携带的数据在数据库中的存储结构如图3所示,每个数据片根据产生的时序依次指向后方的数据。将每一包数据当作一个片段,每一个片段之间通过偏移量进行检索(即前一片段存储下一个片段的偏移位置)。
[0005]但是存储的数据并不仅仅是用于存储的,还需要对数据进行运算、统计、分析或以特定的方式搜索。这种存储方式下,将会产生以下问题:
[0006]1、因每收到一包数据即写入硬盘,在硬盘容量相同前提下,外部数据产生的周期直接影响存储周期,虽目前周期固定为15min,不排除这个周期的调整或未来需要兼容第三方厂家的IPC (有客流量统计功能);
[0007]2、写硬盘的频率直接取决于外部数据产生的周期,过于频繁可能会影响硬盘使用寿命;
[0008]3、因收到源数据直接存储,其每一包数据形成一个片段信息,以15min产生一包数据,一天将产生96个片段,一年以365天计算,则产生约3.5万个片段,如果要统计年报表将先要搜索出属于该年的所有片段并进行计算(对离开人数和进入人数分别累加),检索效率较低。

【发明内容】

[0009]本发明的目的是提供一种数据存储的方法和装置,其通过在缓存中将琐碎的数据进行聚合后得到满足预设的索引规则的数据单元,将数据单元按时序存入存储区域,在存储区域中为每个数据单元生成对应的各级索引信息,减少琐碎数据单个存储对硬盘造成的频繁访问,依时序存入的数据单元和对应产生的索引信息使得后续检索快速高效。
[0010]为实现上述目的,具体采用以下技术方案:
[0011]—方面采用一种数据存储的方法,包括:
[0012]缓存数据片,记录所述数据片的开始时间和结束时间,单个所述数据片的数据属于同一周期;
[0013]根据所述开始时间和结束时间聚合一个完整周期内的数据片得到数据单元;
[0014]将所述数据单元写入存储区;
[0015]确认所述数据单元的最后一个数据片的结束时间是时间索引节点,添加该时间索引节点关联的各级时间索引的索引信息和对应的时间段的汇总信息。
[0016]其中,所述根据所述开始时间和结束时间聚合一个完整周期内的数据片得到数据单元,包括:
[0017]若最新缓存的数据片的开始时间为周期的开始时间,将最新缓存的数据片新建为临时数据单元;
[0018]若最新缓存的数据片的开始时间不为周期的开始时间,将最新缓存的数据片聚合到临时数据单元;
[0019]若最新缓存的数据片的结束时间为周期的结束时间,所述临时数据单元即为一个完整周期对应的数据单元。
[0020]其中,所述数据片中的数据为基于时序的统计数据;
[0021]所述根据所述开始时间和结束时间聚合一个完整周期内的数据片得到数据单元,具体为:
[0022]根据所述开始时间和结束时间,将一个完整周期内的数据片中对应的数据累加得到数据单元。
[0023]其中,所述聚合包括至少两级聚合,所述时间索引对应所述聚合包括至少两级时间索引。
[0024]其中,存储所述数据单元的存储文件包括数据区、索引区和文件头,所述时间索引包括日时间索引和月时间索引;
[0025]所述将所述数据单元写入存储区,具体为:
[0026]根据所述数据单元对应的开始时间、结束时间和所述索引区记录的当前数据片段的存储位置;将所述数据单元写入数据区中已有的日数据片段,或添加日数据片段后写入添加的日数据片段,添加指向添加的日数据片段的索引信息;
[0027]所述确认所述数据单元的最后一个数据片的结束时间是时间索引节点,添加该时间索引节点关联的各级时间索引的索引信息和对应的时间段的汇总信息,包括:
[0028]确认所述数据单元的最后一个数据片的结束时间是日时间索引节点,在所述日数据片段中添加该时间片段中所有数据单元的汇总信息;
[0029]确认所述数据单元的最后一个数据片的结束时间是月时间索引节点;添加月数据片段,所述月数据片段中记录该月每天的汇总信息和该月的汇总信息;添加指向该月数据片段的索引信息;
[0030]其中,所述索引信息根据添加时序从后往前依次存储于所述索引区;所述日数据片段和月数据片段根据添加时序从前往后依次存储于所述数据区。
[0031]其中,所述文件头记录有存储文件的片段数、起始片段的索引位置、文件的整体开始时间、文件的整体结束时间和文件的版本号。
[0032]另一方面采用一种数据存储的装置,包括:
[0033]数据缓存模块,用于缓存数据片,记录所述数据片的开始时间和结束时间,单个所述数据片的数据属于同一周期;
[0034]周期聚合模块,用于根据所述开始时间和结束时间聚合一个完整周期内的数据片得到数据单元;
[0035]数据写入模块,用于将所述数据单元写入存储区;
[0036]节点汇总模块,用于确认所述数据单元的最后一个数据片的结束时间是时间索引节点,添加该时间索引节点关联的各级时间索引的索引信息和对应的时间段的汇总信息。
[0037]其中,所述周期聚合模块,包括:
[0038]起始子模块,用于若最新缓存的数据片的开始时间为周期的开始时间,将最新缓存的数据片新建为临时数据单元;
[0039]聚合子模块,用于若最新缓存的数据片的开始时间不为周期的开始时间,将最新缓存的数据片聚合到临时数据单元;
[0040]完成子模块,用于若最新缓存的数据片的结束时间为周期的结束时间,所述临时数据单元即为一个完整周期对应的数据单元。
[0041]其中,所述数据片中的数据为基于时序的统计数据;
[0042]所述周期聚合模块,具体用于:
[0043]根据所述开始时间和结束时间,将一个完整周期内的数据片中对应的数据累加得到数据单元。
[0044]其中,所述聚合包括至少两级聚合,所述时间索引对应所述聚合包括至少两级时间索引。
[0045]其中,存储所述数据单元的存储文件包括数据区、索引区和文件头,所述时间索引包括日时间索引和月时间索引;
[0046]所述数据写入模块,具体用于:
[0047]根据所述数据单元对应的开始时间、结束时间和所述索引区记录的当前数据片段的存储位置;,将所述数据单元写入数据区中已有的日数据片段,或添加日数据片段后写入添加的日数据片段,添加指向添加的日数据片段的索引信息;
[0048]所述节点汇总模块,包括:
[0049]第一汇总子模块,用于确认所述数据单元的最后一个数据片的结束时间是日时间索引节点,在所述日数据片段中添加该时间片段中所有数据单元的汇总信息;
[0050]第二汇总子模块,用于确认所述数据单元的最后一个数据片的结束时间是月时间索引节点;添加月数据片段,所述月数据片段中记录该月每天的汇总信息和该月的汇总信息;添加指向该月数据片段的索引信息;
[0051]其中,所述索引信息根据添加时序从后往前依次存储于所述索引区;所述日数据片段和月数据片段根据添加时序从前往后依次存储于所述数据区。
[0052]其中,所述文件头记录有存储文件的片段数、起始片段的索引位置、文件的整体开始时间、文件的整体结束时间和文件的版本号。
[0053]本发明的有益效果在于:通过在缓存中将琐碎的数据进行聚合后得到满足预设的索引规则的数据单元,将数据单元按时序存入存储区域,在存储区域中为每个数据单元生成对应的各级索引信息,减少琐碎数据单个存储对硬盘造成的频繁访问,依时序存入的数据单元和对应产生的索引信息使得后续检索快速高效。
【附图说明】
[0054]图1是现有技术中一种数据采集存储系统的结构示意图;
[0055]图2是图1中数据采集存储系统采集的源数据的示意图;
[0056]图3是图1中数据采集存储系统采集的数据存储的示意图;
[0057]图4是本发明【具体实施方式】中提供的一种数据存储的方法的第一实施例的方法流程图;
[0058]图5是本发明【具体实施方式】中提供的一种数据存储的方法的第二实施例的方法流程图;
[0059]图6是本发明【具体实施方式】中提供的一种数据存储的方法的第二实施例中数据存储的过程示意图;
[0060]图7是本发明【具体实施方式】中提供的一种数据存储的方法的第二实施例中数据检索的过程示意图;
[0061]图8是本发明【具体实施方式】中提供的一种数据存储的装置的第一实施例的结构方框图;
[0062]图9是本发明【具体实施方式】中提供的一种数据存储的装置的第二实施例的结构方框图。
【具体实施方式】
[0063]为使本发明的目的、技术方案和优点更加清楚明了,下面结合【具体实施方式】并参照附图,对本发明进一步详细说明。应该理解,这些描述只是示例性的,而并非要限制本发明的范围。此外,在以下说明中,省略了对公知结构和技术的描述,以避免不必要地混淆本发明的概念。
[0064]请参考图4,其是本发明【具体实施方式】中提供的一种数据存储的方法的第一实施例的方法流程图。本实施例中的方法,主要用于各种数据存储,特别是基于时序获取的数据,例如视频、音频、人流量、车流量等数据的统计。如图所示,该方法,包括:
[0065]步骤SlOl:缓存数据片,记录所述数据片的开始时间和结束时间,单个所述数据片的数据属于同一周期。
[0066]在获取数据的过程中,外部数据可能会不定期产生,某一个时间段内可能长生很多,缓存中可能会存在多个数据片,如果将多个数据片直接按时序存储,会导致存储区存在很多零碎数据,在统计过程中对数据的索引和统计很不方便,效率很低。
[0067]为了实现有序存储,将数据按周期进行存储,每个周期中的数据可以由多个数据片组成,但是为了保证数据统计的正确性,每个数据片中的数据属于同一周期。假设以I小时为周期,以整点作为一个周期的开始时间,那么每个数据片中缓存的数据不能跨整点,例如00:55:08?01:03:12这个时间段的数据最后是会造成统计结果的误差的,因为在这种数据片的数据只能计入01:00:00?01:59:59周期;这意味着0:00:00?0:59:59周期的数据实质上不足该周期的真实数据,对应的,01:00:00?01:59:59周期的数据实质上超过一个该周期的真实数据。
[0068]步骤S102:根据所述开始时间和结束时间聚合一个完整周期内的数据片得到数据单元。
[0069]当在已缓存的数据片中根据开始时间和结束时间确认某个完整周期对应的数据已缓存完时,将该周期内的数据片聚合成一个整体得到数据单元,具体的聚合方式根据不同的数据类型进行聚合,例如视频、音频或数值。
[0070]步骤S103:将所述数据单元写入存储区。
[0071]存储区指存储设备中用于存储数据的一块物理区域,将数据单元写入存储区的过程现有技术中已有实现,在此不做进一步说明。
[0072]步骤S104:确认所述数据单元的最后一个数据片的结束时间是时间索引节点,添加该时间索引节点关联的各级时间索引的索引信息和对应的时间段的汇总信息。
[0073]本方案针对的是按时序进行存储的数据,其对应的索引方式也是时序索引。根据每个数据单元的最后一个数据片的结束时间就可以判断出是否是生成索引信息的节点,如果有,直接根据索引类型生成其对应的索引区域的相关内容即可。
[0074]综上所述,通过在缓存中将琐碎的数据进行聚合后得到满足预设的索引规则的数据单元,将数据单元按时序存入存储区域,在存储区域中为每个数据单元生成对应的各级索引信息,减少琐碎数据单个存储对硬盘造成的频繁访问,依时序存入的数据单元和对应产生的索引信息使得后续检索快速高效。
[0075]请参考图5,其是发明【具体实施方式】中提供的一种数据存储的方法的第二实施例的方法流程图,如图所示,该方法包括:
[0076]步骤S201:缓存数据片,记录所述数据片的开始时间和结束时间,单个所述数据片的数据属于同一周期。
[0077]—般而言,每个数据单元对应的周期的长度为I小时。对于大多数的数据统计而言,I小时是一个比较常见的基本统计周期,但是在不同的应用领域,对数据统计的精度不同,所以I小时只是优选的一个周期长度,可以设置更精确的周期,例如30分钟、10分钟、I分钟等。
[0078]步骤S202:若最新缓存的数据片的开始时间为周期的开始时间,将最新缓存的数据片新建为临时数据单元。
[0079]步骤S203:若最新缓存的数据片的开始时间不为周期的开始时间,将最新缓存的数据片聚合到临时数据单元。
[0080]步骤S204:若最新缓存的数据片的结束时间为周期的结束时间,所述临时数据单元即为一个完整周期对应的数据单元。
[0081]最新缓存的数据片根据开始时间和结束时间的判断,对应不同的处理方式,对于每一个数据片,开始时间和结束时间都要进行判断,最后需要响应的是上述三种情况。第一种情况数据片是一个周期的第一个数据片,将该数据片新建为临时数据单元;第二种情况数据片不是一个周期的第一个数据片,则将该数据片聚合到临时数据单元;第三种情况数据片是一个周期的最后一个数据片,则将该数据片聚合到临时数据单元后,临时数据单元就是一个完整周期对应的数据单元。对于单个数据片而言并不是只会发生其中之一的情况,如果单个数据片的长度刚好是一个周期的长度,那么第一种情况和第三种情况对于该数据片都会发生;如果单个数据片刚好是周期的最后一个数据片,那么第二种情况和第三种情况对于该数据片都会发生。数据片的开始时间和结束时间以及一个周期的开始时间和结束时间的判断是比较简单。例如以I小时作为周期,以整点作为一个周期的开始时间,那么一个周期的时段为aa: OO: OO?aa: 59:59,对应的,开始时间为aa: 00:00的数据片即为该周期的第一个数据片,结束时间为aa:59:59的数据片即为该周期的最后一个数据片。
[0082]对于一般的基于时序的数值类的数据,聚合的过程其实就是一个累加的过程,根据所述开始时间和结束时间,将一个完整周期内的数据片中对应的数据累加得到数据单
J L ο
[0083]步骤S205:根据所述数据单元对应的开始时间、结束时间和所述索引区记录的当前数据片段的存储位置;将所述数据单元写入数据区中已有的日数据片段,或添加日数据片段后写入添加的日数据片段,添加指向添加的日数据片段的索引信息。
[0084]存储所述数据单元的存储文件包括数据区、索引区和文件头。所述聚合包括至少两级聚合,所述时间索引对应所述聚合包括至少两级时间索引,例如设置为日时间索引和月时间索引两级。所述文件头记录有存储文件的片段数、起始片段的索引位置、文件的整体开始时间、文件的整体结束时间和文件的版本号。
[0085]步骤S206:确认所述数据单元的最后一个数据片的结束时间是日时间索引节点,在所述日数据片段中添加该时间片段中所有数据单元的汇总信息。
[0086]为了实现快速统计和检索,对于每一个常规的统计时段,在该统计时段结束时,SP先生成该统计时段的基本汇总信息,下级的基本汇总信息也是上级时间片段中数据存储的基本元素。在本方案中,以I小时为一个周期,一般而言,再上一级的统计时段就是天,所以日数据片段中存储的数据除了 24个周期的数据单元对应的数据,还包括对该24个数据单元进行初步统计得到的汇总信息。
[0087]步骤S207:确认所述数据单元的最后一个数据片的结束时间是月时间索引节点;添加月数据片段,所述月数据片段中记录该月每天的汇总信息和该月的汇总信息;添加指向该月数据片段的索引信息。
[0088]所述索引信息根据添加时序从后往前依次存储于所述索引区;所述日数据片段和月数据片段根据添加时序从前往后依次存储于所述数据区。
[0089]将每个日数据片段中的汇总信息抽取出来作为月数据片段中的数据内容,对应的,每个月的最后一天也会产生月汇总信息,通过索引信息可以实现所有数据的快速定位,进行检索。
[0090]请参考图6,其是本实施例中数据存储的过程示意图,其基于人流量数据实现,统计的基本参数为进入人数和离开人数,数据单元的周期为I小时。如图所示,在具体的统计过程中,外部数据可能会不定期产生,某一个时间段内可能会产生多个,从而导致缓存中可能会有如图6的最上方所示的多个数据片,如果将这些数据片采用如图3所示的方式直接有序存储,会导致硬盘中有很多零碎数据,如果需要检索报表,需要对所有的数据片进行检索并进行统计,效率较低,直接影响用户体验。本发明中采用的方案是基于预设的周期先将每个周期内的数据片进行聚合,具体到图6中就是将一个小时内的数据片中记录的进入人数和离开人数分别相加聚合得到数据单元中的数据,数据片和数据单元中记录的实际是同一类数据,只是对应的时间范围不同。
[0091]通过上述的聚合,属于同一小时的数据只需要一个数据单元保存,从而达到了数据压缩的目的,减少了数据碎片,控制了片段索引的数量。如果按小时聚合信息,一天产生24个数据单元。如果根据数据单元进行存储,一天24个数据单元,一年如果按365天统计,则将记录8760个数据单元。以年报表进行检索,首先需要检索8760个数据单元,然后还需要对这些数据单元进行计算,最后得到该年每个月的汇总信息。
[0092]这种存储方式下检索效率较之图3中的方案有所提高,但仍达不到实时检索的要求,为进一步提高检索效率。将每一小时的数据单元进行二次聚合得到日片段;如图6所示,每个数据单元中的数据存入日数据片段中,一个完整的日数据片段包括24个数据单元和一个汇总信息,同一天的小时单元信息聚合在一起,形成日数据片段,而日数据片段作为当天数据单元的容器,负责存储该天所有数据单元,将数据单元按天进行归档。以上方式存储,一年如果按365天统计,则将记录365个日片段,较8760个片段而言,检索命中率已经有了 20倍以上的提升。基于报表应用场景,在检测实时数据时,在每一天的结束时,对该天所有的数据单元进行汇总得到每天的汇总信息,并在每一个月的最后一天结束时对这个月每天的汇总信息进行统计并汇总成月数据片段。月数据片段并不是日数据片段的集合,而是逐一记录该月每天的日汇总信息,并基于所有的日汇总信息得到月汇总信息,在数据检测时实时动态地计算,这样避免了在检索时,对数据的计算,尤其在嵌入式平台上计算比较占用CPU资源。在图6中,其示意的是一月份的月数据片段,那么在一月份的月数据片段中包含该月31天每天的日汇总信息以及该月的月汇总信息。
[0093]数据的记录通常是以文件的方式进行体现,为了保证数据的私密性,在将日数据片段和月数据片段存入存储区时,本方案采用了特定的文件格式。
[0094]如图6所示,文件中包含数据区、索引区和文件头。数据区主要用于存储具体数据信息,数据片段分为日数据片段和月数据片段,每一天将产生一个日数据片段,每一个月末将产生一个月数据片段,此处数据片段是数据的集合,即将属于同一天的小时的数据单元聚合形成日数据片段,将属于同一月的日汇总信息聚合形成月数据片段,可以理解为是信息的一种归档形式。
[0095]索引区用于存储数据区每一个数据片段具体的位置等信息,即片段索引,其与具体数据片段一一对应,记录一个日数据片段则同时会记录一个日片段索引,用于定位对应的日数据片段;记录一个月数据片段则同时会记录一个月片段索引,用于定位对应的月数据片段,对于数据片段的检索,实质是对片段索引的检索,然后通过片段索引进行数据定位,可以理解为片段索引为目录,而片段信息则是数据片段具体内容。
[0096]文件头主要用于记录文件的版本号、文件的创建时间、片段索引数等。文件头存储在文件末端的固定位置,索引区由文件头结束位置反向存储,数据区由前往后正向存储。
[0097]单个日数据片段中的数据单元通过信息偏移量进行索引,即前一个数据单元记录下一个数据单元的信息偏移量,实现具体的数据单元之间的定位和信息扩展。月片段数据中记录的该月每天的汇总信息同样采用信息偏移量的方式进行前后关联。
[0098]通过上述存储方式,从提高检索的命中率和降低检索的计算两方面提高了数据检索的效率,从而满足了嵌入式平台下对数据检索的实时性。
[0099]基于上述数据缓存、聚合及存储技术,数据基于时序进行存储。以一年的信息为例,数据片段的数量通常情况下仅365日数据片段和12月数据片段,相比原方案的3.5万个片段,仅片段数量压缩约92倍。并且每个片段之间的逻辑关系清晰,对于信息的检索大大提高了命中率,对于数据的统计很少有额外的计算。
[0100]例如需要搜索2014年I月的数据,首先在文件头读取文件相关信息判断要搜索的数据是否在该文件,如果是则在索引区搜索到I月的索引信息,通过索引信息定位数据区中I月的月数据片段,将其顺序读取,即可获取I月每一天的汇总信息。如果需要具体到每一天的数据,则通过这一天的索引信息即可实现快速定位,定位过程如图7所示。
[0101]当月片段不存在(异常情况下),快速搜索将切换到降级搜索,对属于该月的所有的日数据片段进行读取,如图7所示,如果I月的月片段数据不存在,则根据每一天的索引信息读取每一天的日数据片段,日片段数据中存有每一天的汇总信息,将每一天的汇总信息进行累加即可得到该月31天的汇总信息。
[0102]基于上述的日数据片段和月数据片段,可以进一步衍生出日报表、周报表、月报表和年报表,各种报表选择对应的日数据片段或月数据片段进行统计即可。
[0103]在本实施例中,为了说明方便,采用的是日时间索引和日时间索引的两级索引方式,在实际应用过程中,针对具体的应用场景需求,可以设置其他的时间索引方式,例如日、旬、季度的三级索引方式;对数据的处理过程也可针对科学实验中的数据记录等。
[0104]综上所述,通过在缓存中将琐碎的数据进行聚合后得到满足预设的索引规则的数据单元,将数据单元按时序存入存储区域,在存储区域中为每个数据单元生成对应的各级索引信息,减少琐碎数据单个存储对硬盘造成的频繁访问,依时序存入的数据单元和对应产生的索引信息使得后续检索快速高效。独立设计的文件格式保证了数据的快速存储,减少了存储空间的浪费,同时增强了数据的私密性。
[0105]以下是本发明【具体实施方式】中提供的一种数据存储的装置的实施例,数据存储的装置的实施例基于上述的数据存储的方法的实施例实现,在数据存储的装置的实施例中未尽的阐述,请参考上述的数据存储的方法的实施例。
[0106]请参考图8,其是本发明【具体实施方式】中提供的一种数据存储的装置的第一实施例的结构方框图,如图所示,该装置,包括:
[0107]数据缓存模块310,用于缓存数据片,记录所述数据片的开始时间和结束时间,单个所述数据片的数据属于同一周期;
[0108]周期聚合模块320,用于根据所述开始时间和结束时间聚合一个完整周期内的数据片得到数据单元;
[0109]数据写入模块330,用于将所述数据单元写入存储区;
[0110]节点汇总模块340,用于确认所述数据单元的最后一个数据片的结束时间是时间索引节点,添加该时间索引节点关联的各级时间索引的索引信息和对应的时间段的汇总信息。
[0111]为了确保本装置的设计有效实现,特别在嵌入式平台中,从硬件框架的角度而言,为了承载装置中的上述各模块,降低对系统的负荷,保证数据处理及存储的实时性。硬件的系统框架采用角色分工,主要包括监听者、派发者和执行者。监听者监听来自数据采集端(例如IPC)的数据片,并将数据片插入缓存的源信息链表,自动压缩数据并定周期写入已处理数据链表,等待派发者派发。派发者观察已处理数据链表,如果有适合写入的数据,则启动执行者执行数据的写入。执行者负责向存储区写入数据。
[0112]一般而言,因为NVR系统资源较为紧张,监听者和派发者都分别启动I个线程,而执行者可以启动多个线程进行快速执行派发者派发的命令。
[0113]通过以上技术方案,在嵌入式平台资源有限的情况下,使用数据缓存及聚合的方法,在合理的系统框架中得以实现,并分别以日、周、月、年报表,进行实际检索测试,检索效率已达预期的秒级响应。
[0114]综上所述,上述各单元的协同工作,通过在缓存中将琐碎的数据进行聚合后得到满足预设的索引规则的数据单元,将数据单元按时序存入存储区域,在存储区域中为每个数据单元生成对应的各级索引信息,减少琐碎数据单个存储对硬盘造成的频繁访问,依时序存入的数据单元和对应产生的索引信息使得后续检索快速高效。
[0115]请参考图9,其是本发明【具体实施方式】中提供的一种数据存储的装置的第二实施例的结构方框图,如图所示,该装置,包括:
[0116]数据缓存模块310,用于缓存数据片,记录所述数据片的开始时间和结束时间,单个所述数据片的数据属于同一周期;
[0117]周期聚合模块320,用于根据所述开始时间和结束时间聚合一个完整周期内的数据片得到数据单元;
[0118]数据写入模块330,用于将所述数据单元写入存储区;
[0119]节点汇总模块340,用于确认所述数据单元的最后一个数据片的结束时间是时间索引节点,添加该时间索引节点关联的各级时间索引的索引信息和对应的时间段的汇总信息。
[0120]其中,所述周期聚合模块320,包括:
[0121]起始子模块321,用于若最新缓存的数据片的开始时间为周期的开始时间,将最新缓存的数据片新建为临时数据单元;
[0122]聚合子模块322,用于若最新缓存的数据片的开始时间不为周期的开始时间,将最新缓存的数据片聚合到临时数据单元;
[0123]完成子模块323,用于若最新缓存的数据片的结束时间为周期的结束时间,所述临时数据单元即为一个完整周期对应的数据单元。
[0124]其中,所述数据片中的数据为基于时序的统计数据;
[0125]所述周期聚合模块320,具体用于:
[0126]根据所述开始时间和结束时间,将一个完整周期内的数据片中对应的数据累加得到数据单元。
[0127]其中,所述聚合包括至少两级聚合,所述时间索引对应所述聚合包括至少两级时间索引。
[0128]其中,存储所述数据单元的存储文件包括数据区、索引区和文件头,所述时间索引包括日时间索引和月时间索引;
[0129]所述数据写入模块330,具体用于:
[0130]根据所述数据单元对应的开始时间、结束时间和所述索引区记录的当前数据片段的存储位置;,将所述数据单元写入数据区中已有的日数据片段,或添加日数据片段后写入添加的日数据片段,添加指向添加的日数据片段的索引信息;
[0131 ] 所述节点汇总模块340,包括:
[0132]第一汇总子模块341,用于确认所述数据单元的最后一个数据片的结束时间是日时间索引节点,在所述日数据片段中添加该时间片段中所有数据单元的汇总信息;
[0133]第二汇总子模块342,用于确认所述数据单元的最后一个数据片的结束时间是月时间索引节点;添加月数据片段,所述月数据片段中记录该月每天的汇总信息和该月的汇总信息;添加指向该月数据片段的索引信息;
[0134]其中,所述索引信息根据添加时序从后往前依次存储于所述索引区;所述日数据片段和月数据片段根据添加时序从前往后依次存储于所述数据区。
[0135]其中,所述文件头记录有存储文件的片段数、起始片段的索引位置、文件的整体开始时间、文件的整体结束时间和文件的版本号。
[0136]综上所述,上述功能模块的协同合作,通过在缓存中将琐碎的数据进行聚合后得到满足预设的索引规则的数据单元,将数据单元按时序存入存储区域,在存储区域中为每个数据单元生成对应的各级索引信息,减少琐碎数据单个存储对硬盘造成的频繁访问,依时序存入的数据单元和对应产生的索引信息使得后续检索快速高效。独立设计的文件格式保证了数据的快速存储,减少了存储空间的浪费,同时增强了数据的私密性。
[0137]应当理解的是,本发明的上述【具体实施方式】仅仅用于示例性说明或解释本发明的原理,而不构成对本发明的限制。因此,在不偏离本发明的精神和范围的情况下所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。此外,本发明所附权利要求旨在涵盖落入所附权利要求范围和边界、或者这种范围和边界的等同形式内的全部变化和修改例。
[0138]尽管已经详细描述了本发明的实施方式,但是应该理解的是,在不偏离本发明的精神和范围的情况下,可以对本发明的实施方式做出各种改变、替换和变更。
【主权项】
1.一种数据存储的方法,其特征在于,包括: 缓存数据片,记录所述数据片的开始时间和结束时间,单个所述数据片的数据属于同一周期; 根据所述开始时间和结束时间聚合一个完整周期内的数据片得到数据单元; 将所述数据单元写入存储区; 确认所述数据单元的最后一个数据片的结束时间是时间索引节点,添加该时间索引节点关联的各级时间索引的索引信息和对应的时间段的汇总信息。2.根据权利要求1所述的一种数据存储的方法,其特征在于,所述根据所述开始时间和结束时间聚合一个完整周期内的数据片得到数据单元,包括: 若最新缓存的数据片的开始时间为周期的开始时间,将最新缓存的数据片新建为临时数据单元; 若最新缓存的数据片的开始时间不为周期的开始时间,将最新缓存的数据片聚合到临时数据单元; 若最新缓存的数据片的结束时间为周期的结束时间,所述临时数据单元即为一个完整周期对应的数据单元。3.根据权利要求1所述的一种数据存储的方法,其特征在于,所述数据片中的数据为基于时序的统计数据; 所述根据所述开始时间和结束时间聚合一个完整周期内的数据片得到数据单元,具体为: 根据所述开始时间和结束时间,将一个完整周期内的数据片中对应的数据累加得到数据单元。4.根据权利要求1所述的一种数据存储的方法,其特征在于,所述聚合包括至少两级聚合,所述时间索引对应所述聚合包括至少两级时间索引。5.根据权利要求4所述的一种数据存储的方法,其特征在于,存储所述数据单元的存储文件包括数据区、索引区和文件头,所述时间索引包括日时间索引和月时间索引; 所述将所述数据单元写入存储区,具体为: 根据所述数据单元对应的开始时间、结束时间和所述索引区记录的当前数据片段的存储位置;将所述数据单元写入数据区中已有的日数据片段,或添加日数据片段后写入添加的日数据片段,添加指向添加的日数据片段的索引信息; 所述确认所述数据单元的最后一个数据片的结束时间是时间索引节点,添加该时间索弓丨节点关联的各级时间索引的索引信息和对应的时间段的汇总信息,包括: 确认所述数据单元的最后一个数据片的结束时间是日时间索引节点,在所述日数据片段中添加该时间片段中所有数据单元的汇总信息; 确认所述数据单元的最后一个数据片的结束时间是月时间索引节点;添加月数据片段,所述月数据片段中记录该月每天的汇总信息和该月的汇总信息;添加指向该月数据片段的索引ig息; 其中,所述索引信息根据添加时序从后往前依次存储于所述索引区;所述日数据片段和月数据片段根据添加时序从前往后依次存储于所述数据区。6.根据权利要求5所述的一种数据存储的方法,其特征在于,所述文件头记录有存储文件的片段数、起始片段的索引位置、文件的整体开始时间、文件的整体结束时间和文件的版本号。7.一种数据存储的装置,其特征在于,包括: 数据缓存模块,用于缓存数据片,记录所述数据片的开始时间和结束时间,单个所述数据片的数据属于同一周期; 周期聚合模块,用于根据所述开始时间和结束时间聚合一个完整周期内的数据片得到数据单元; 数据写入模块,用于将所述数据单元写入存储区; 节点汇总模块,用于确认所述数据单元的最后一个数据片的结束时间是时间索引节点,添加该时间索引节点关联的各级时间索引的索引信息和对应的时间段的汇总信息。8.根据权利要求7所述的一种数据存储的装置,其特征在于,所述周期聚合模块,包括: 起始子模块,用于若最新缓存的数据片的开始时间为周期的开始时间,将最新缓存的数据片新建为临时数据单元; 聚合子模块,用于若最新缓存的数据片的开始时间不为周期的开始时间,将最新缓存的数据片聚合到临时数据单元; 完成子模块,用于若最新缓存的数据片的结束时间为周期的结束时间,所述临时数据单元即为一个完整周期对应的数据单元。9.根据权利要求7所述的一种数据存储的装置,其特征在于,所述数据片中的数据为基于时序的统计数据; 所述周期聚合模块,具体用于: 根据所述开始时间和结束时间,将一个完整周期内的数据片中对应的数据累加得到数据单元。10.根据权利要求7所述的一种数据存储的装置,其特征在于,所述聚合包括至少两级聚合,所述时间索引对应所述聚合包括至少两级时间索引。11.根据权利要求10所述的一种数据存储的装置,其特征在于,存储所述数据单元的存储文件包括数据区、索引区和文件头,所述时间索引包括日时间索引和月时间索引; 所述数据写入模块,具体用于: 根据所述数据单元对应的开始时间、结束时间和所述索引区记录的当前数据片段的存储位置;将所述数据单元写入数据区中已有的日数据片段,或添加日数据片段后写入添加的日数据片段,添加指向添加的日数据片段的索引信息; 所述节点汇总模块,包括: 第一汇总子模块,用于确认所述数据单元的最后一个数据片的结束时间是日时间索引节点,在所述日数据片段中添加该时间片段中所有数据单元的汇总信息; 第二汇总子模块,用于确认所述数据单元的最后一个数据片的结束时间是月时间索引节点;添加月数据片段,所述月数据片段中记录该月每天的汇总信息和该月的汇总信息;添加指向该月数据片段的索引信息; 其中,所述索引信息根据添加时序从后往前依次存储于所述索引区;所述日数据片段和月数据片段根据添加时序从前往后依次存储于所述数据区。12.根据权利要求11所述的一种数据存储的装置,其特征在于,所述文件头记录有存储文件的片段数、起始片段的索引位置、文件的整体开始时间、文件的整体结束时间和文件的版本号。
【文档编号】G06F3/06GK106033324SQ201510125757
【公开日】2016年10月19日
【申请日】2015年3月20日
【发明人】宓舟军
【申请人】杭州海康威视数字技术股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1