CN107315806B - 一种基于文件***的嵌入式存储方法和装置 - Google Patents

一种基于文件***的嵌入式存储方法和装置 Download PDF

Info

Publication number
CN107315806B
CN107315806B CN201710495025.7A CN201710495025A CN107315806B CN 107315806 B CN107315806 B CN 107315806B CN 201710495025 A CN201710495025 A CN 201710495025A CN 107315806 B CN107315806 B CN 107315806B
Authority
CN
China
Prior art keywords
key
data
file
directory
read
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
CN201710495025.7A
Other languages
English (en)
Other versions
CN107315806A (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.)
Hangzhou Shiqu Information and Technology Co Ltd
Original Assignee
Hangzhou Shiqu Information and 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 Hangzhou Shiqu Information and Technology Co Ltd filed Critical Hangzhou Shiqu Information and Technology Co Ltd
Priority to CN201710495025.7A priority Critical patent/CN107315806B/zh
Publication of CN107315806A publication Critical patent/CN107315806A/zh
Application granted granted Critical
Publication of CN107315806B publication Critical patent/CN107315806B/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/10File systems; File servers
    • G06F16/13File access structures, e.g. distributed indices

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (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

本申请公开了一种基于文件***的嵌入式存储方法和装置,该方法包括对每个待写入的数据进行解析,得到与所述数据相对应的Key;对所述Key进行索引,得到与所述Key相对应的目录;以所述Key作为文件名,在与所述Key相对应的目录内生成文件,将所述数据写入所述文件中。该装置包括第一解析单元,用于对每个待写入的数据进行解析,得到与所述数据相对应的Key;索引单元,用于对所述Key进行索引,得到与所述Key相对应的目录;写入单元,用于以所述Key作为文件名,在与所述Key相对应的目录内生成文件,将所述数据写入所述文件中。上述基于文件***的嵌入式存储方法和装置,能够提高数据读取性能,去除对二方服务的强依赖,增强应用的稳定性。

Description

一种基于文件***的嵌入式存储方法和装置
技术领域
本发明属于存储***技术领域,特别是涉及一种基于文件***的嵌入式存储方法和装置。
背景技术
众所周知,复杂的业务***会依赖多种类型的数据,为了保证***的解耦,***之间往往通过服务的方式提供数据,实际上,应用本身可能有数据,但是某一些数据并不是应用本身的,需要从其他***获取到。这种方式会给***带来许多的强依赖,依赖过多之后,就会使应用变得不稳定,很容易被依赖的二方服务(公司内部提供出来的公共服务)所影响。
发明内容
为解决上述问题,本发明提供了一种基于文件***的嵌入式存储方法和装置,提高数据读取性能,去除对二方服务的强依赖,增强应用的稳定性。
本发明提供的一种基于文件***的嵌入式存储方法,包括:
对每个待写入的数据进行解析,得到与所述数据相对应的Key;
对所述Key进行索引,得到与所述Key相对应的目录;
以所述Key作为文件名,在与所述Key相对应的目录内生成文件,将所述数据写入所述文件中。
优选的,在上述基于文件***的嵌入式存储方法中,将所述数据写入所述文件中之后,还包括:
接收待读取数据的Key并进行解析,计算出与所述待读取数据的Key相对应的目录;
拼接所述待读取数据的Key和其对应的目录,得到文件的完整路径;
根据所述文件的完整路径,读取所述文件的内容得到所述待读取数据。
优选的,在上述基于文件***的嵌入式存储方法中,所述对所述Key进行索引为:
对所述Key进行至少一次Hash。
优选的,在上述基于文件***的嵌入式存储方法中,所述对所述Key进行至少一次Hash为:
对所述Key进行至三次Hash。
本发明提供的一种基于文件***的嵌入式存储装置,包括:
第一解析单元,用于对每个待写入的数据进行解析,得到与所述数据相对应的Key;
索引单元,用于对所述Key进行索引,得到与所述Key相对应的目录;
写入单元,用于以所述Key作为文件名,在与所述Key相对应的目录内生成文件,将所述数据写入所述文件中。
优选的,在上述基于文件***的嵌入式存储装置中,还包括:
第二解析单元,用于接收待读取数据的Key并进行解析,计算出与所述待读取数据的Key相对应的目录;
文件路径生成单元,用于拼接所述待读取数据的Key和其对应的目录,得到文件的完整路径;
读取单元,用于根据所述文件的完整路径,读取所述文件的内容得到所述待读取数据。
优选的,在上述基于文件***的嵌入式存储装置中,所述索引单元具体用于对所述Key进行至少一次Hash。
优选的,在上述基于文件***的嵌入式存储装置中,所述索引单元具体用于对所述Key进行至三次Hash。
通过上述描述可知,本发明提供的上述基于文件***的嵌入式存储方法和装置,由于该方法包括对每个待写入的数据进行解析,得到与所述数据相对应的Key;对所述Key进行索引,得到与所述Key相对应的目录;以所述Key作为文件名,在与所述Key相对应的目录内生成文件,将所述数据写入所述文件中,因此提高数据读取性能,去除对二方服务的强依赖,增强应用的稳定性。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1为本申请实施例提供的第一种基于文件***的嵌入式存储方法的示意图;
图2为数据写入过程的示意图;
图3为数据读取过程的示意图;
图4为本申请实施例提供的第一种基于文件***的嵌入式存储装置的示意图。
具体实施方式
本发明的核心思想在于提供一种基于文件***的嵌入式存储方法和装置,提高数据读取性能,去除对二方服务的强依赖,增强应用的稳定性。
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本申请实施例提供的第一种基于文件***的嵌入式存储方法如图1所示,图1为本申请实施例提供的第一种基于文件***的嵌入式存储方法的示意图,该方法包括如下步骤:
S1:对每个待写入的数据进行解析,得到与所述数据相对应的Key;
S2:对所述Key进行索引,得到与所述Key相对应的目录;
S3:以所述Key作为文件名,在与所述Key相对应的目录内生成文件,将所述数据写入所述文件中。
参考图2,图2为数据写入过程的示意图,图中以Hash来表示索引过程,但是此次并不构成限制,还可以采用其他方式进行索引,而且图中是以三级索引为例进行说明,实际上,可以根据实际情况增加或减少索引层级,保证数据被分散到足够多的目录中,避免单个目录的文件数过多。具体的,在数据写入时,会解析数据,将对应的数据Key解析出来,并使用该Key进行包括Hash在内的索引,再以数据Key为文件名,在之前的目录下生成这个文件,再将数据写入该文件,完成数据的写入过程。
需要说明的是,现有的单文件存储方案在数据全量时非常简单,但是其增量的实现非常困难,会导致整个文件重写一遍,具体而言,假设一个文件中存储了100条数据,增量的时候只修改了第10条数据,这时单文件存储的处理步骤如下:新建一个文件,将前9条数据写入新文件,写入新的第10条数据,再继续写入后面的90条数据,可见,这个过程相当于整个文件重新写了一次,效率非常低,且需要考虑到并发场景,引入锁得更加复杂的方案。而如果是本实施例提供的单文件方案就解决了上述问题,直接找到这条数据对应的文件,把这个文件的内容改掉就够了,且现有的方案中,对于数据的查询也非常消耗性能,极端情况下需要将整个数据文件扫描一遍,而本实施例解决了这个问题,它将每一个数据拆分成一个单独的文件,这样数据进行增量更新时,只需要简单的将一个数据文件修改掉就可以了。同时针对数据Key进行索引,生成一个文件存储的完整路径,以这样的方式将文件打散到多个不同的目录下,每个目录下的文件数就得以减少,正是由于该方式是直接使用的文件的索引,所以文件查找非常迅速。
通过上述描述可知,本申请实施例提供的第一种基于文件***的嵌入式存储方法,由于包括对每个待写入的数据进行解析,得到与所述数据相对应的Key;对所述Key进行索引,得到与所述Key相对应的目录;以所述Key作为文件名,在与所述Key相对应的目录内生成文件,将所述数据写入所述文件中,因此提高数据读取性能,去除对二方服务的强依赖,增强应用的稳定性。
本申请实施例提供的第二种基于文件***的嵌入式存储方法,是在上述第一种基于文件***的嵌入式存储方法的基础上,还包括如下技术特征:
将所述数据写入所述文件中之后,还包括:
接收待读取数据的Key并进行解析,计算出与所述待读取数据的Key相对应的目录;
拼接所述待读取数据的Key和其对应的目录,得到文件的完整路径;
根据所述文件的完整路径,读取所述文件的内容得到所述待读取数据。
参考图3,图3为数据读取过程的示意图,在这种情况下,数据解析过程更加简单,直接使用传入的待读取数据的Key,使用数据写入时相对的算法,包括但不限于Hash方式,计算出待读取数据的Key对应的目录,拼接上待读取数据的Key,即得到了文件的完整路径,然后直接读取该文件内容,即为该数据的完整内容。
本申请实施例提供的第三种基于文件***的嵌入式存储方法,是在上述第一种至第二种基于文件***的嵌入式存储方法中任一种的基础上,还包括如下技术特征:
所述对所述Key进行索引为:
对所述Key进行至少一次Hash。
需要说明的是,当数据总量不大时,可以采用一次Hash即可,而当数据比较大时,就需要增加Hash的次数,以避免同一个目录中的数据超过承载能力,也就是说,可以根据实际的需要来决定Hash的次数,此处并不做具体限制。
本申请实施例提供的第四种基于文件***的嵌入式存储方法,是在上述第三种基于文件***的嵌入式存储方法的基础上,还包括如下技术特征:
所述对所述Key进行至少一次Hash为:
对所述Key进行至三次Hash。
需要说明的是,这里采用的Hash过程的次数是完全可配置化的,需要Hash的次数取决数据的多少,数据越多,Hash的次数就可配置得越多,保证单个目录下文件不会太多。利用该实施例的三次Hash的过程如下:对Key进行第1次Hash,做为一级目录名,再用一级目录名进行第二次Hash,做为二级目录名,用二级目录名进行第三次Hash,做为三级目录名,分别将三次Hash的值拼接,就能够形成一个文件路径,将数据写入该文件中,就完成了数据的写入过程。
本申请实施例提供的第一种基于文件***的嵌入式存储装置如图4所示,图4为本申请实施例提供的第一种基于文件***的嵌入式存储装置的示意图,该装置包括:
第一解析单元201,用于对每个待写入的数据进行解析,得到与所述数据相对应的Key;
索引单元202,用于对所述Key进行索引,得到与所述Key相对应的目录;
写入单元203,用于以所述Key作为文件名,在与所述Key相对应的目录内生成文件,将所述数据写入所述文件中。
需要说明的是,现有的单文件存储方案在数据全量时非常简单,但是其增量的实现非常困难,会导致整个文件重写一遍,具体而言,假设一个文件中存储了100条数据,增量的时候只修改了第10条数据,这时单文件存储的处理步骤如下:新建一个文件,将前9条数据写入新文件,写入新的第10条数据,再继续写入后面的90条数据,可见,这个过程相当于整个文件重新写了一次,效率非常低,且需要考虑到并发场景,引入锁得更加复杂的方案。而如果是本实施例提供的单文件方案就解决了上述问题,直接找到这条数据对应的文件,把这个文件的内容改掉就够了,且现有的方案中,对于数据的查询也非常消耗性能,极端情况下需要将整个数据文件扫描一遍,而本实施例解决了这个问题,它将每一个数据拆分成一个单独的文件,这样数据进行增量更新时,只需要简单的将一个数据文件修改掉就可以了。同时针对数据Key进行索引,生成一个文件存储的完整路径,以这样的方式将文件打散到多个不同的目录下,每个目录下的文件数就得以减少,正是由于该方式是直接使用的文件的索引,所以文件查找非常迅速。
本申请实施例提供的第二种基于文件***的嵌入式存储装置,是在上述第一种基于文件***的嵌入式存储装置的基础上,还包括如下技术特征:
还包括:
第二解析单元,用于接收待读取数据的Key并进行解析,计算出与所述待读取数据的Key相对应的目录;
文件路径生成单元,用于拼接所述待读取数据的Key和其对应的目录,得到文件的完整路径;
读取单元,用于根据所述文件的完整路径,读取所述文件的内容得到所述待读取数据。
在这种情况下,数据解析过程更加简单,直接使用传入的待读取数据的Key,使用数据写入时相对的算法,包括但不限于Hash方式,计算出待读取数据的Key对应的目录,拼接上待读取数据的Key,即得到了文件的完整路径,然后直接读取该文件内容,即为该数据的完整内容。
本申请实施例提供的第三种基于文件***的嵌入式存储装置,是在上述第一种至第二种基于文件***的嵌入式存储装置中任一种的基础上,还包括如下技术特征:
所述索引单元具体用于对所述Key进行至少一次Hash。
需要说明的是,当数据总量不大时,可以采用一次Hash即可,而当数据比较大时,就需要增加Hash的次数,以避免同一个目录中的数据超过承载能力,也就是说,可以根据实际的需要来决定Hash的次数,此处并不做具体限制。
本申请实施例提供的第四种基于文件***的嵌入式存储装置,是在上述第三种基于文件***的嵌入式存储装置的基础上,还包括如下技术特征:
所述索引单元具体用于对所述Key进行至三次Hash。
需要说明的是,这里采用的Hash过程的次数是完全可配置化的,需要Hash的次数取决数据的多少,数据越多,Hash的次数就可配置得越多,保证单个目录下文件不会太多。利用该实施例的三次Hash的过程如下:对Key进行第1次Hash,做为一级目录名,再用一级目录名进行第二次Hash,做为二级目录名,用二级目录名进行第三次Hash,做为三级目录名,分别将三次Hash的值拼接,就能够形成一个文件路径,将数据写入该文件中,就完成了数据的写入过程。
对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。

Claims (2)

1.一种基于文件***的嵌入式存储方法,其特征在于,包括:
对每个待写入的数据进行解析,得到与所述数据相对应的Key;
对所述Key进行索引,得到与所述Key相对应的目录;
以所述Key作为文件名,在与所述Key相对应的目录内生成文件,将所述数据写入所述文件中;
所述对所述Key进行索引为:
对所述Key进行三次Hash;
将所述数据写入所述文件中之后,还包括:
接收待读取数据的Key并进行解析,计算出与所述待读取数据的Key相对应的目录;
拼接所述待读取数据的Key和其对应的目录,得到文件的完整路径;
根据所述文件的完整路径,读取所述文件的内容得到所述待读取数据。
2.一种基于文件***的嵌入式存储装置,其特征在于,包括:
第一解析单元,用于对每个待写入的数据进行解析,得到与所述数据相对应的Key;
索引单元,用于对所述Key进行索引,得到与所述Key相对应的目录;
写入单元,用于以所述Key作为文件名,在与所述Key相对应的目录内生成文件,将所述数据写入所述文件中;
所述索引单元具体用于对所述Key进行三次Hash;
还包括:
第二解析单元,用于接收待读取数据的Key并进行解析,计算出与所述待读取数据的Key相对应的目录;
文件路径生成单元,用于拼接所述待读取数据的Key和其对应的目录,得到文件的完整路径;
读取单元,用于根据所述文件的完整路径,读取所述文件的内容得到所述待读取数据。
CN201710495025.7A 2017-06-26 2017-06-26 一种基于文件***的嵌入式存储方法和装置 Active CN107315806B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201710495025.7A CN107315806B (zh) 2017-06-26 2017-06-26 一种基于文件***的嵌入式存储方法和装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201710495025.7A CN107315806B (zh) 2017-06-26 2017-06-26 一种基于文件***的嵌入式存储方法和装置

Publications (2)

Publication Number Publication Date
CN107315806A CN107315806A (zh) 2017-11-03
CN107315806B true CN107315806B (zh) 2020-04-10

Family

ID=60180881

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201710495025.7A Active CN107315806B (zh) 2017-06-26 2017-06-26 一种基于文件***的嵌入式存储方法和装置

Country Status (1)

Country Link
CN (1) CN107315806B (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111984597B (zh) * 2020-08-19 2023-12-08 安徽鸿程光电有限公司 文件存储方法、装置、设备和介质
CN114519125A (zh) * 2020-11-19 2022-05-20 北京达佳互联信息技术有限公司 数据写入方法、装置及服务器

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6128626A (en) * 1998-06-30 2000-10-03 Bull Hn Information Systems Inc. Method for minimizing storage requirements for production assembly information and updates
CN101162469A (zh) * 2007-11-09 2008-04-16 清华大学 基于快照的细粒度文件与目录版本管理方法
CN101567003A (zh) * 2009-05-27 2009-10-28 清华大学 并行文件***中资源的管理和分配方法
CN102375853A (zh) * 2010-08-24 2012-03-14 ***通信集团公司 分布式数据库***、在其中建立索引的方法和查询方法
CN102722584A (zh) * 2012-06-08 2012-10-10 北京天地云箱科技有限公司 数据存储***及方法

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6128626A (en) * 1998-06-30 2000-10-03 Bull Hn Information Systems Inc. Method for minimizing storage requirements for production assembly information and updates
CN101162469A (zh) * 2007-11-09 2008-04-16 清华大学 基于快照的细粒度文件与目录版本管理方法
CN101567003A (zh) * 2009-05-27 2009-10-28 清华大学 并行文件***中资源的管理和分配方法
CN102375853A (zh) * 2010-08-24 2012-03-14 ***通信集团公司 分布式数据库***、在其中建立索引的方法和查询方法
CN102722584A (zh) * 2012-06-08 2012-10-10 北京天地云箱科技有限公司 数据存储***及方法

Also Published As

Publication number Publication date
CN107315806A (zh) 2017-11-03

Similar Documents

Publication Publication Date Title
JP5961689B2 (ja) 増分データの抽出
CN110019218B (zh) 数据存储与查询方法及设备
CN106874348B (zh) 文件存储和索引方法、装置及读取文件的方法
CN110147204B (zh) 一种元数据落盘方法、装置、***及计算机可读存储介质
CN107704202B (zh) 一种数据快速读写的方法和装置
US20120117080A1 (en) Indexing and querying hash sequence matrices
US11176110B2 (en) Data updating method and device for a distributed database system
CN110888837B (zh) 对象存储小文件归并方法及装置
CN109086456B (zh) 数据索引方法及装置
CN102591855A (zh) 一种数据标识方法及***
CN104102701A (zh) 一种基于hive的历史数据存档与查询方法
CN107315806B (zh) 一种基于文件***的嵌入式存储方法和装置
EP3343395B1 (en) Data storage method and apparatus for mobile terminal
CN109189343B (zh) 一种元数据落盘方法、装置、设备及计算机可读存储介质
CN114490060A (zh) 内存分配方法、装置、计算机设备和计算机可读存储介质
CN103714121A (zh) 一种索引记录的管理方法及装置
CN111026736B (zh) 数据血缘管理方法及装置、数据血缘解析方法及装置
CN112711649A (zh) 一种数据库多字段匹配方法、装置、设备及存储介质
CN109992708B (zh) 一种元数据查询的方法、装置、设备以及存储介质
CN106599326B (zh) 一种云化架构下的记录数据剔重处理方法及***
CN111444194B (zh) 一种块链式账本中索引的清除方法、装置及设备
CN114861003A (zh) 一种指定目录下的对象列举方法、装置及其介质
CN113742344A (zh) 电力***数据的索引方法及装置
CN109033271B (zh) 基于列存储的数据***方法、装置、服务器及存储介质
CN110046180B (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