CN112307263B - 一种文件存储方法、装置、设备及介质 - Google Patents

一种文件存储方法、装置、设备及介质 Download PDF

Info

Publication number
CN112307263B
CN112307263B CN202011185520.6A CN202011185520A CN112307263B CN 112307263 B CN112307263 B CN 112307263B CN 202011185520 A CN202011185520 A CN 202011185520A CN 112307263 B CN112307263 B CN 112307263B
Authority
CN
China
Prior art keywords
file
target object
metadata information
writing
data
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
Application number
CN202011185520.6A
Other languages
English (en)
Other versions
CN112307263A (zh
Inventor
孔帅
李�杰
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Suzhou Inspur Intelligent Technology Co Ltd
Original Assignee
Suzhou Inspur Intelligent Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Suzhou Inspur Intelligent Technology Co Ltd filed Critical Suzhou Inspur Intelligent Technology Co Ltd
Priority to CN202011185520.6A priority Critical patent/CN112307263B/zh
Publication of CN112307263A publication Critical patent/CN112307263A/zh
Application granted granted Critical
Publication of CN112307263B publication Critical patent/CN112307263B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/70Information retrieval; Database structures therefor; File system structures therefor of video data
    • G06F16/78Retrieval characterised by using metadata, e.g. metadata not derived from the content or metadata generated manually
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/12Replacement control
    • G06F12/121Replacement control using replacement algorithms
    • G06F12/123Replacement control using replacement algorithms with age lists, e.g. queue, most recently used [MRU] list or least recently used [LRU] list
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/70Information retrieval; Database structures therefor; File system structures therefor of video data
    • G06F16/73Querying

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Multimedia (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Computational Linguistics (AREA)
  • Library & Information Science (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本申请公开了一种文件存储方法、装置、设备及介质,包括:获取监控视频对应的写入数据;确定所述写入数据在对应的视频文件中所属的对象以得到目标对象;任一所述视频文件包括多个对象;根据所述目标对象将所述写入数据写入聚合文件的相应位置,其中,同一所述视频文件的对象在所述聚合文件中的写入位置与在该视频文件中的顺序一致。这样,在文件读取时,无需从多个聚合文件中读取多个碎片,并且,在修改写时,能够避免产生大量文件碎片,降低了存储压力,提升了文件读写性能。

Description

一种文件存储方法、装置、设备及介质
技术领域
本申请涉及文件存储领域,特别涉及一种文件存储方法、装置、设备及介质。
背景技术
在分布式存储系统中,本地对象存储位于最底层,负责将数据实际写入磁盘中。目前主流的本地对象存储引擎为FileStore,在FileStore的基础上,可以将对象文件聚合成一个大文件(默认为64MB),所有的对象数据追加写入该大文件中,当文件大小超过64MB时再切换到另一个大文件。这样可以减少对象文件的个数,但是当上层应用的IO比较复杂时,例如视频监控场景,对象聚合功能会存在以下问题:(1)每路摄像头一次发送的数据长度不固定,再加上随机sync操作,导致内存中无法凑齐一整个对象,最终一个对象的数据会被拆分成若干碎片并保存到不同的聚合文件上,一个聚合文件上也会承载大量的来自不同对象的碎片数据。由于每个数据碎片都有自己的元数据信息包括对象名、属性、大小、修改时间、在对象中的偏移量、所在聚合文件的编号、在聚合文件上的偏移量等且需要保存到KV数据库中,当碎片化程度较高时,大量的对元数据和数据的读写操作会导致磁盘持续100%,进而影响上层应用的读写,导致出现写入视频时丢帧、读取视频时加载不上来的现象;(2)视频监控场景会预先创建大量的64MB的稀疏文件,使集群的水位超过85%,即集群始终保持高水位运行;然后在后续的循环修改写时,对象聚合机制会产生大量的垃圾数据,必须通过及时打洞的方式释放磁盘空间,这又会进一步加剧磁盘的压力。
发明内容
有鉴于此,本申请的目的在于提供一种文件存储方法、装置、设备及介质,能够避免产生大量文件碎片,提升文件读写性能。其具体方案如下:
第一方面,本申请公开了一种文件存储方法,包括:
获取监控视频对应的写入数据;
确定所述写入数据在对应的视频文件中所属的对象以得到目标对象;任一所述视频文件包括多个对象;
根据所述目标对象将所述写入数据写入聚合文件的相应位置,其中,同一所述视频文件的对象在所述聚合文件中的写入位置与在该视频文件中的顺序一致。
可选的,所述确定所述写入数据在对应的视频文件中所属的对象以得到目标对象,包括:
根据所述写入数据写入的所述视频文件以及写入该视频文件的位置确定所述写入数据所属的所述对象以得到目标对象。
可选的,所述根据所述目标对象将所述写入数据写入聚合文件的相应位置,包括:
从数据库中查找所述目标对象的元数据信息;
若从所述数据库中查找不到所述目标对象的元数据信息,则判断所述目标对象是否为该目标对象对应的所述视频文件的第一个对象;
若所述目标对象为该目标对象对应的所述视频文件的第一个对象,并且,所述写入数据在所述目标对象中的偏移量为0,则将所述写入数据写入当前聚合文件中,并在当前聚合文件中预留该视频文件其他对象的位置;
若所述目标对象不为该目标对象对应的所述视频文件的第一个对象,并且,所述写入数据在所述目标对象中的偏移量为0,则查找该视频文件中第一个对象的元数据信息,利用该元数据信息确定所述写入数据在当前聚合文件中的写入位置,然后根据该写入位置将所述写入数据写入当前聚合文件;
若从所述数据库中查找到所述目标对象的元数据信息,则根据该元数据信息将所述写入数据写入当前聚合文件中的相应位置。
可选的,所述根据所述目标对象将所述写入数据写入聚合文件的相应位置之后,还包括:
若LRU缓存中不存在所述目标对象的所述元数据信息,则在所述LRU缓存中创建所述目标对象的元数据信息,然后将该元数据信息保存至所述数据库;
若所述LRU缓存中存在所述目标对象的所述元数据信息,则在所述LRU缓存中更新所述目标对象的元数据信息,然后将该元数据信息保存至所述数据库。
可选的,所述根据所述目标对象将所述写入数据写入聚合文件的相应位置之后,还包括:
若LRU缓存中不存在当前聚合文件的所述元数据信息,则在所述LRU缓存中创建当前聚合文件的元数据信息,然后将该元数据信息保存至所述数据库;
若所述LRU缓存中存在当前聚合文件的所述元数据信息,则在所述LRU缓存中更新当前聚合文件的元数据信息,然后将该元数据信息保存至所述数据库。
可选的,所述从数据库中查找所述目标对象的元数据信息之前,还包括:
从所述LRU缓存中查找是否存在所述目标对象的元数据信息;
若所述LRU缓存中不存在所述目标对象的元数据信息,则触发所述从数据库中查找所述目标对象的元数据信息的步骤;
若所述LRU缓存中存在所述目标对象的元数据信息,则根据该元数据信息将所述写入数据写入当前聚合文件中的相应位置。
第二方面,本申请公开了一种文件存储装置,包括:
写入数据获取模块,用于获取监控视频对应的写入数据;
目标对象确定模块,用于确定所述写入数据在对应的视频文件中所属的对象以得到目标对象;任一所述视频文件包括多个对象;
数据写入模块,用于根据所述目标对象将所述写入数据写入聚合文件的相应位置,其中,同一所述视频文件的对象在所述聚合文件中的写入位置与在该视频文件中的顺序一致。
可选的,所述目标对象确定模块,具体用于:
根据所述写入数据写入的所述视频文件以及写入该视频文件的位置确定所述写入数据所属的所述对象以得到目标对象。
第三方面,本申请公开了一种电子设备,包括:
存储器,用于保存计算机程序;
处理器,用于执行所述计算机程序,以实现前述的文件存储方法。
第四方面,本申请公开了一种计算机可读存储介质,用于保存计算机程序,所述计算机程序被处理器执行时实现前述的文件存储方法。
可见,本申请获取监控视频对应的写入数据,然后确定所述写入数据在对应的视频文件中所属的对象以得到目标对象;任一所述视频文件包括多个对象,之后根据所述目标对象将所述写入数据写入聚合文件的相应位置,其中,同一所述视频文件的对象在所述聚合文件中的写入位置与在该视频文件中的顺序一致。也即,本申请将同一视频文件中对应的写入数据根据所属对象写入聚合文件,在聚合文件中,同一视频文件对应的写入数据按对象顺序相邻存储,这样,在文件读取时,无需从多个聚合文件中读取多个碎片,并且,在修改写时,能够避免产生大量文件碎片,降低了存储压力,提升了文件读写性能。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1为本申请公开的一种文件存储方法流程图;
图2为本申请公开的一种具体的文件存储子方法流程图;
图3为现有技术中的一种文件存储示意图;
图4为本申请公开的一种文件存储示意图;
图5为本申请公开的一种具体的文件存储方法流程图;
图6为本申请公开的一种具体的文件存储示意图;
图7为本申请公开的一种文件存储装置结构示意图;
图8为本申请公开的一种电子设备结构图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
目前,主流的本地对象存储引擎为FileStore,在FileStore的基础上,可以将对象文件聚合成一个大文件(默认为64MB),所有的对象数据追加写入该大文件中,当文件大小超过64MB时再切换到另一个大文件。这样可以减少对象文件的个数,但是当上层应用的IO比较复杂时,例如视频监控场景,对象聚合功能会存在以下问题:(1)每路摄像头一次发送的数据长度不固定,再加上随机sync操作,导致内存中无法凑齐一整个对象,最终一个对象的数据会被拆分成若干碎片并保存到不同的聚合文件上,一个聚合文件上也会承载大量的来自不同对象的碎片数据。由于每个数据碎片都有自己的元数据信息且需要保存到KV数据库中,当碎片化程度较高时,大量的对元数据和数据的读写操作会导致磁盘持续100%,进而影响上层应用的读写,导致出现写入视频时丢帧、读取视频时加载不上来的现象;(2)视频监控场景会预先创建大量的64MB的稀疏文件,使集群的水位超过85%,即集群始终保持高水位运行;然后在后续的循环修改写时,对象聚合机制会产生大量的垃圾数据,必须通过及时打洞的方式释放磁盘空间,这又会进一步加剧磁盘的压力。为此,本申请提供了一种文件存储方案,能够避免产生大量文件碎片,提升文件读写性能。
参见图1所示,本申请实施例公开了一种文件存储方法,包括:
步骤S11:获取监控视频对应的写入数据。
步骤S12:确定所述写入数据在对应的视频文件中所属的对象以得到目标对象;任一所述视频文件包括多个对象。
其中,所述视频文件为预设大小的文件。也即,视频文件的大小是固定的,而不是随着写入数据的增加而增加的。
并且,每路监控视频可以对应一个或多个所述视频文件,当需要写入数据时,可以创建对应的所述视频文件。将所述写入数据写入所述视频文件,进而写入对应的存储设备。
在具体的实施方式中,根据所述写入数据写入的所述视频文件以及写入该视频文件的位置确定所述写入数据所属的所述对象以得到目标对象。
也即,当获取到写入数据,即可计算其在对应视频文件的所属的对象。
以64MB的视频文件、8+2纠删冗余、16MB的文件条带为例,每个视频文件会被划分成4个对象,每个对象在聚合文件上的大小为2MB。
步骤S13:根据所述目标对象将所述写入数据写入聚合文件的相应位置,其中,同一所述视频文件的对象在所述聚合文件中的写入位置与在该视频文件中的顺序一致。
参见图2所示,本申请实施例公开了一种具体的文件存储方法子流程图,上述步骤S13具体可以包括:
步骤S21:从所述LRU缓存中查找是否存在所述目标对象的元数据信息。
步骤S22:若所述LRU缓存中不存在所述目标对象的元数据信息,则从数据库中查找所述目标对象的元数据信息。
步骤S23:若从所述数据库中查找不到所述目标对象的元数据信息,则判断所述目标对象是否为该目标对象对应的所述视频文件的第一个对象。
在具体的实施方式中,可以确定所述目标对象的对象编号,依据所述对象编号判断是该目标对象是否为当前视频文件的第一个对象。
步骤S24:若所述目标对象为该目标对象对应的所述视频文件的第一个对象,则将所述写入数据写入当前聚合文件中,并在当前聚合文件中预留该视频文件其他对象的位置。
需要指出的是,若在从LRU缓存和数据库中均查找不到写入数据所属的对象的元数据信息,表明当前写入为创建写,即当前处于预埋数据阶段;由于视频文件都是顺序写,此时,写入数据在对象中的偏移量等于0,也即,所述写入数据在所述目标对象中的偏移量为0。
在具体的实施方式中,可以根据视频文件的大小在当前聚合文件中预留该视频文件其他对象的位置。以64MB的视频文件、8+2纠删冗余、16MB的文件条带为例,可以将聚合文件的写入位置向后移8M,预留出其他三个对象的位置。并且,若当前聚合文件超过64M,则切换到下一个聚合文件。
步骤S25:若所述目标对象不为该目标对象对应的所述视频文件的第一个对象,则查找该视频文件中第一个对象的元数据信息,利用该元数据信息确定所述写入数据在当前聚合文件中的写入位置,然后根据该写入位置将所述写入数据写入当前聚合文件。
也即,可以利用所述视频文件的第一个对象的元数据信息计算该写入数据在聚合文件中的写入位置。并且,也为创建写,写入数据在对象中的偏移量为0。
步骤S26:若从所述数据库中查找到所述目标对象的元数据信息,则根据该元数据信息将所述写入数据写入当前聚合文件中的相应位置。
步骤S27:若所述LRU缓存中存在所述目标对象的元数据信息,则根据该元数据信息将所述写入数据写入当前聚合文件中的相应位置。
并且,本实施例中,所述根据所述目标对象将所述写入数据写入聚合文件的相应位置之后,还包括:
若LRU缓存中不存在所述目标对象的所述元数据信息,则在所述LRU缓存中创建所述目标对象的元数据信息,然后将该元数据信息保存至所述数据库;若所述LRU缓存中存在所述目标对象的所述元数据信息,则在所述LRU缓存中更新所述目标对象的元数据信息,然后将该元数据信息保存至所述数据库。
若LRU缓存中不存在当前聚合文件的所述元数据信息,则在所述LRU缓存中创建当前聚合文件的元数据信息,然后将该元数据信息保存至所述数据库;若所述LRU缓存中存在当前聚合文件的所述元数据信息,则在所述LRU缓存中更新当前聚合文件的元数据信息,然后将该元数据信息保存至所述数据库。
可见,本申请获取监控视频对应的写入数据,然后确定所述写入数据在对应的视频文件中所属的对象以得到目标对象;任一所述视频文件包括多个对象,之后根据所述目标对象将所述写入数据写入聚合文件的相应位置,其中,同一所述视频文件的对象在所述聚合文件中的写入位置与在该视频文件中的顺序一致。也即,本申请将同一视频文件中对应的写入数据根据所属对象写入聚合文件,在聚合文件中,同一视频文件对应的写入数据按对象顺序相邻存储,这样,在文件读取时,无需从多个聚合文件中读取多个碎片,并且,在修改写时,能够避免产生大量文件碎片,降低了存储压力,提升了文件读写性能。
例如,参见图3所示,图3为现有技术中的一种文件存储示意图。参见图4所示,图4为本申请实施例公开的一种文件存储示意图。以64MB的视频文件、8+2纠删冗余、16MB的文件条带为例,每个视频文件会被划分成4个对象,每个对象在聚合文件上的大小为2MB。依据视频文件的大小,将同一个视频文件的对象数据固定在聚合文件的某段区域上,从而解决了后续循环覆盖写时产生大量碎片的问题。
例如,参见图5所示,图5为本申请实施例公开的一种具体的文件存储流程图。首先从LRU缓存或者数据库中查找写入数据所属的对象的元数据信息,找不到时,则为创建写,即当前处于预埋数据阶段;由于视频文件都是顺序写,此时写入的数据在对象中的偏移量等于0,写入数据所属的对象编号为0,则本对象是64MB视频文件的第一个对象,此时除了需要将数据写入当前的聚合文件以外,还需要将当前聚合文件的写入位置向后偏移8MB,给后续的3个对象预留出写入空间;最后创建对象的元数据信息以及创建或更新当前聚合文件的元数据信息并写入数据库;若写入数据所属的对象编号不为0,则首先需要从LRU缓存或数据库中查找编号为0的对象的元数据信息,然后计算本对象的写入位置,最后将数据写入指定聚合文件的相应位置上;最后创建对象的元数据信息以及创建或更新当前聚合文件的元数据信息并写入数据库;如果能从LRU或数据库中找到写入数据所属的对象,则为覆盖写,则根据元数据信息将数据直接写入指定的位置,然后更新当前对象和指定聚合文件的元数据信息并写入数据库。
其中,在具体的实施方式中,可上层应用可以预先创建视频文件,(且文件大小固定,然后循环覆盖写时加不定时的sync(同步)。
并且,可以新增一个配置项objectchunk_video_file_size,表示上层应用创建的视频文件的大小;默认为0,表示关闭本申请对应的优化功能,执行原来的对象聚合流程。
另外,在一种具体的实施方式中,可以在覆盖写阶段,为了保证数据的安全,可以创建一个临时对象,然后将被覆盖的数据拷贝到临时对象上,最后进行数据的覆盖写;写入成功后删除临时对象,写入失败时用临时对象里的数据进行回滚,例如参见图6所示,图6为本申请实施例公开的一种具体的文件存储示意图。但是,这种方式会带来额外的读写开销,在视频监控场景下允许异常情况下的少量丢帧,在视频回放时少量的跳帧不影响整体效果,因此,在另外一种具体的实施方式中,本申请实施例可以跳过对数据的备份过程,进一步优化io流程。在读数据的时候,可以直接根据对象的元数据信息从聚合文件上读取数据并返回。也即,可以在覆盖写时跳过了对老数据的备份过程,减少了底层的读写放大。
可以理解的是,本实施例底层文件采用覆盖写的方式不再产生垃圾数据,避免了打洞释放磁盘空间的过程对磁盘造成的读写压力;在读取数据时可以一次性读取,不用再从多个聚合文件上读取各个分片,降低了读取的时延。
参见图7所示,本申请实施例公开了一种文件存储装置,包括:
写入数据获取模块11,用于获取监控视频对应的写入数据;
目标对象确定模块12,用于确定所述写入数据在对应的视频文件中所属的对象以得到目标对象;任一所述视频文件包括多个对象;
数据写入模块13,用于根据所述目标对象将所述写入数据写入聚合文件的相应位置,其中,同一所述视频文件的对象在所述聚合文件中的写入位置与在该视频文件中的顺序一致。
可见,本申请实施例获取监控视频对应的写入数据,然后确定所述写入数据在对应的视频文件中所属的对象以得到目标对象;任一所述视频文件包括多个对象,之后根据所述目标对象将所述写入数据写入聚合文件的相应位置,其中,同一所述视频文件的对象在所述聚合文件中的写入位置与在该视频文件中的顺序一致。也即,本申请将同一视频文件中对应的写入数据根据所属对象写入聚合文件,在聚合文件中,同一视频文件对应的写入数据按对象顺序相邻存储,这样,在文件读取时,无需从多个聚合文件中读取多个碎片,并且,在修改写时,能够避免产生大量文件碎片,降低了存储压力,提升了文件读写性能。
其中,所述目标对象确定模块12,具体用于:
根据所述写入数据写入的所述视频文件以及写入该视频文件的位置确定所述写入数据所属的所述对象以得到目标对象。
其中,所述数据写入模块13,具体用于:
从数据库中查找所述目标对象的元数据信息;若从所述数据库中查找不到所述目标对象的元数据信息,则判断所述目标对象是否为该目标对象对应的所述视频文件的第一个对象;若所述目标对象为该目标对象对应的所述视频文件的第一个对象,则将所述写入数据写入当前聚合文件中,并在当前聚合文件中预留该视频文件其他对象的位置;若所述目标对象不为该目标对象对应的所述视频文件的第一个对象,则查找该视频文件中第一个对象的元数据信息,利用该元数据信息确定所述写入数据在当前聚合文件中的写入位置,然后根据该写入位置将所述写入数据写入当前聚合文件;若从所述数据库中查找到所述目标对象的元数据信息,则根据该元数据信息将所述写入数据写入当前聚合文件中的相应位置。
所述装置还包括第一元数据创建模块以及第一元数据存储模块,第一元数据创建模块具体用于若LRU缓存中不存在所述目标对象的所述元数据信息,则在所述LRU缓存中创建所述目标对象的元数据信息,相应的,所述第一元数据存储模块用于将该元数据信息保存至所述数据库。
所述装置还包括第一元数据更新模块,用于若所述LRU缓存中存在所述目标对象的所述元数据信息,则在所述LRU缓存中更新所述目标对象的元数据信息,相应的,所述第一元数据存储模块用于将该元数据信息保存至所述数据库。
所述装置还包括第二元数据创建模块以及第二元数据存储模块,所述第二元数据创建模块,具体用于若LRU缓存中不存在当前聚合文件的所述元数据信息,则在所述LRU缓存中创建当前聚合文件的元数据信息,相应的,所述第二元数据存储模块用于将该元数据信息保存至所述数据库;
所述装置还包括第二元数据更新模块,用于若所述LRU缓存中存在当前聚合文件的所述元数据信息,则在所述LRU缓存中创建当前聚合文件的元数据信息,相应的,所述第二元数据存储模块,用于将该元数据信息保存至所述数据库。
所述装置还包括元数据查找模块,用于从所述LRU缓存中查找是否存在所述目标对象的元数据信息;从数据库中查找所述目标对象的元数据信息
相应的,所述装置还用于若所述LRU缓存中存在所述目标对象的元数据信息,则根据该元数据信息将所述写入数据写入当前聚合文件中的相应位置。
参见图8所示,本申请实施例公开了一种电子设备,包括处理器21和存储器22;其中,所述存储器22,用于保存计算机程序;所述处理器21,用于执行所述计算机程序,以实现前述实施例公开的文件存储方法。
关于上述文件存储方法的具体过程可以参考前述实施例中公开的相应内容,在此不再进行赘述。
进一步的,本申请实施例还公开了一种计算机可读存储介质,用于保存计算机程序,其中,所述计算机程序被处理器执行时实现前述实施例公开的文件存储方法。
关于上述文件存储方法的具体过程可以参考前述实施例中公开的相应内容,在此不再进行赘述。
本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其它实施例的不同之处,各个实施例之间相同或相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质中。
以上对本申请所提供的一种文件存储方法、装置、设备及介质进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。

Claims (9)

1.一种文件存储方法,其特征在于,包括:
获取监控视频对应的写入数据;
确定所述写入数据在对应的视频文件中所属的对象以得到目标对象;任一所述视频文件包括多个对象;
根据所述目标对象将所述写入数据写入聚合文件的相应位置,其中,同一所述视频文件的对象在所述聚合文件中的写入位置与在该视频文件中的顺序一致;
其中,所述根据所述目标对象将所述写入数据写入聚合文件的相应位置,包括:
从数据库中查找所述目标对象的元数据信息;
若从所述数据库中查找不到所述目标对象的元数据信息,则判断所述目标对象是否为该目标对象对应的所述视频文件的第一个对象;
若所述目标对象为该目标对象对应的所述视频文件的第一个对象,则将所述写入数据写入当前聚合文件中,并在当前聚合文件中预留该视频文件其他对象的位置;
若所述目标对象不为该目标对象对应的所述视频文件的第一个对象,则查找该视频文件中第一个对象的元数据信息,利用该元数据信息确定所述写入数据在当前聚合文件中的写入位置,然后根据该写入位置将所述写入数据写入当前聚合文件;
若从所述数据库中查找到所述目标对象的元数据信息,则根据该元数据信息将所述写入数据写入当前聚合文件中的相应位置。
2.根据权利要求1所述的文件存储方法,其特征在于,所述确定所述写入数据在对应的视频文件中所属的对象以得到目标对象,包括:
根据所述写入数据写入的所述视频文件以及写入该视频文件的位置确定所述写入数据所属的所述对象以得到目标对象。
3.根据权利要求1所述的文件存储方法,其特征在于,所述根据所述目标对象将所述写入数据写入聚合文件的相应位置之后,还包括:
若LRU缓存中不存在所述目标对象的所述元数据信息,则在所述LRU缓存中创建所述目标对象的元数据信息,然后将该元数据信息保存至所述数据库;
若所述LRU缓存中存在所述目标对象的所述元数据信息,则在所述LRU缓存中更新所述目标对象的元数据信息,然后将该元数据信息保存至所述数据库。
4.根据权利要求1所述的文件存储方法,其特征在于,所述根据所述目标对象将所述写入数据写入聚合文件的相应位置之后,还包括:
若LRU缓存中不存在当前聚合文件的所述元数据信息,则在所述LRU缓存中创建当前聚合文件的元数据信息,然后将该元数据信息保存至所述数据库;
若所述LRU缓存中存在当前聚合文件的所述元数据信息,则在所述LRU缓存中更新当前聚合文件的元数据信息,然后将该元数据信息保存至所述数据库。
5.根据权利要求3所述的文件存储方法,其特征在于,所述从数据库中查找所述目标对象的元数据信息之前,还包括:
从所述LRU缓存中查找是否存在所述目标对象的元数据信息;
若所述LRU缓存中不存在所述目标对象的元数据信息,则触发所述从数据库中查找所述目标对象的元数据信息的步骤;
若所述LRU缓存中存在所述目标对象的元数据信息,则根据该元数据信息将所述写入数据写入当前聚合文件中的相应位置。
6.一种文件存储装置,其特征在于,包括:
写入数据获取模块,用于获取监控视频对应的写入数据;
目标对象确定模块,用于确定所述写入数据在对应的视频文件中所属的对象以得到目标对象;任一所述视频文件包括多个对象;
数据写入模块,用于根据所述目标对象将所述写入数据写入聚合文件的相应位置,其中,同一所述视频文件的对象在所述聚合文件中的写入位置与在该视频文件中的顺序一致;
其中,所述数据写入模块,具体用于:
从数据库中查找所述目标对象的元数据信息;若从所述数据库中查找不到所述目标对象的元数据信息,则判断所述目标对象是否为该目标对象对应的所述视频文件的第一个对象;若所述目标对象为该目标对象对应的所述视频文件的第一个对象,则将所述写入数据写入当前聚合文件中,并在当前聚合文件中预留该视频文件其他对象的位置;若所述目标对象不为该目标对象对应的所述视频文件的第一个对象,则查找该视频文件中第一个对象的元数据信息,利用该元数据信息确定所述写入数据在当前聚合文件中的写入位置,然后根据该写入位置将所述写入数据写入当前聚合文件;若从所述数据库中查找到所述目标对象的元数据信息,则根据该元数据信息将所述写入数据写入当前聚合文件中的相应位置。
7.根据权利要求6所述的文件存储装置,其特征在于,所述目标对象确定模块,具体用于:
根据所述写入数据写入的所述视频文件以及写入该视频文件的位置确定所述写入数据所属的所述对象以得到目标对象。
8.一种电子设备,其特征在于,包括:
存储器,用于保存计算机程序;
处理器,用于执行所述计算机程序,以实现如权利要求1至5任一项所述的文件存储方法。
9.一种计算机可读存储介质,其特征在于,用于保存计算机程序,所述计算机程序被处理器执行时实现如权利要求1至5任一项所述的文件存储方法。
CN202011185520.6A 2020-10-29 2020-10-29 一种文件存储方法、装置、设备及介质 Active CN112307263B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202011185520.6A CN112307263B (zh) 2020-10-29 2020-10-29 一种文件存储方法、装置、设备及介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202011185520.6A CN112307263B (zh) 2020-10-29 2020-10-29 一种文件存储方法、装置、设备及介质

Publications (2)

Publication Number Publication Date
CN112307263A CN112307263A (zh) 2021-02-02
CN112307263B true CN112307263B (zh) 2022-12-23

Family

ID=74330781

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202011185520.6A Active CN112307263B (zh) 2020-10-29 2020-10-29 一种文件存储方法、装置、设备及介质

Country Status (1)

Country Link
CN (1) CN112307263B (zh)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113138945B (zh) * 2021-04-16 2023-11-21 宜通世纪科技股份有限公司 一种数据缓存方法、装置、设备及介质
CN113687783B (zh) * 2021-07-31 2024-02-13 济南浪潮数据技术有限公司 一种对象聚合方法、系统、装置及计算机存储介质
CN113688139B (zh) * 2021-08-30 2024-03-12 重庆紫光华山智安科技有限公司 对象存储方法、网关、设备及介质
CN115469797B (zh) * 2021-09-09 2023-12-29 上海江波龙数字技术有限公司 一种数据写入方法、存储装置及计算机可读存储介质
CN115955581A (zh) * 2023-03-15 2023-04-11 浪潮电子信息产业股份有限公司 一种实时视频处理方法、装置、设备及存储介质

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108763473A (zh) * 2018-05-29 2018-11-06 郑州云海信息技术有限公司 一种分布式存储的本地对象存储方法及装置
CN110647514A (zh) * 2019-08-23 2020-01-03 北京浪潮数据技术有限公司 一种元数据更新方法、装置及元数据服务器

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108763473A (zh) * 2018-05-29 2018-11-06 郑州云海信息技术有限公司 一种分布式存储的本地对象存储方法及装置
CN110647514A (zh) * 2019-08-23 2020-01-03 北京浪潮数据技术有限公司 一种元数据更新方法、装置及元数据服务器

Also Published As

Publication number Publication date
CN112307263A (zh) 2021-02-02

Similar Documents

Publication Publication Date Title
CN112307263B (zh) 一种文件存储方法、装置、设备及介质
CN107870973B (zh) 一种加快多路监控同时回放的文件存储系统
TWI590049B (zh) 記憶體裝置與其操作方法
CN108319602B (zh) 数据库管理方法及数据库系统
US10936207B2 (en) Linked lists in flash memory
US11182083B2 (en) Bloom filters in a flash memory
US10565075B2 (en) Storage device and block storage method based on the storage device
US20090049229A1 (en) Nonvolatile memory device, method of writing data,and method of reading out data
CN110647514B (zh) 一种元数据更新方法、装置及元数据服务器
CN106951375B (zh) 在存储系统中删除快照卷的方法及装置
US20050163014A1 (en) Duplicate data storing system, duplicate data storing method, and duplicate data storing program for storage device
CN107203331B (zh) 写数据的方法及装置
US11106362B2 (en) Additive library for data structures in a flash memory
US20200034340A1 (en) Flash file system and data management method therof
CN113568582B (zh) 数据管理方法、装置和存储设备
CN113282249B (zh) 一种数据处理方法、系统、设备以及介质
CN113608701B (zh) 一种存储系统中数据管理方法和固态硬盘
CN109213450B (zh) 一种基于闪存阵列的关联元数据删除方法、装置及设备
CN111444114B (zh) 一种非易失性内存中数据的处理方法、装置及系统
CN110795031A (zh) 一种基于全闪存储的数据重删方法、装置和系统
CN103729301B (zh) 数据处理方法和装置
CN113485874A (zh) 数据处理方法及分布式存储系统
CN109992527B (zh) 一种全闪存储系统的位图管理方法
CN111078159A (zh) 一种避免dvr存储卡写损坏的写入方法
CN112000629B (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