CN107315806A - 一种基于文件系统的嵌入式存储方法和装置 - Google Patents
一种基于文件系统的嵌入式存储方法和装置 Download PDFInfo
- Publication number
- CN107315806A CN107315806A CN201710495025.7A CN201710495025A CN107315806A CN 107315806 A CN107315806 A CN 107315806A CN 201710495025 A CN201710495025 A CN 201710495025A CN 107315806 A CN107315806 A CN 107315806A
- Authority
- CN
- China
- Prior art keywords
- key
- data
- file
- embedded storage
- file system
- 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.)
- Granted
Links
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/10—File systems; File servers
- G06F16/13—File 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 (8)
1.一种基于文件系统的嵌入式存储方法,其特征在于,包括:
对每个待写入的数据进行解析,得到与所述数据相对应的Key;
对所述Key进行索引,得到与所述Key相对应的目录;
以所述Key作为文件名,在与所述Key相对应的目录内生成文件,将所述数据写入所述文件中。
2.根据权利要求1所述的基于文件系统的嵌入式存储方法,其特征在于,将所述数据写入所述文件中之后,还包括:
接收待读取数据的Key并进行解析,计算出与所述待读取数据的Key相对应的目录;
拼接所述待读取数据的Key和其对应的目录,得到文件的完整路径;
根据所述文件的完整路径,读取所述文件的内容得到所述待读取数据。
3.根据权利要求1-2任一项所述的基于文件系统的嵌入式存储方法,其特征在于,
所述对所述Key进行索引为:
对所述Key进行至少一次Hash。
4.根据权利要求3所述的基于文件系统的嵌入式存储方法,其特征在于,
所述对所述Key进行至少一次Hash为:
对所述Key进行至三次Hash。
5.一种基于文件系统的嵌入式存储装置,其特征在于,包括:
第一解析单元,用于对每个待写入的数据进行解析,得到与所述数据相对应的Key;
索引单元,用于对所述Key进行索引,得到与所述Key相对应的目录;
写入单元,用于以所述Key作为文件名,在与所述Key相对应的目录内生成文件,将所述数据写入所述文件中。
6.根据权利要求5所述的基于文件系统的嵌入式存储装置,其特征在于,还包括:
第二解析单元,用于接收待读取数据的Key并进行解析,计算出与所述待读取数据的Key相对应的目录;
文件路径生成单元,用于拼接所述待读取数据的Key和其对应的目录,得到文件的完整路径;
读取单元,用于根据所述文件的完整路径,读取所述文件的内容得到所述待读取数据。
7.根据权利要求5-6任一项所述的基于文件系统的嵌入式存储装置,其特征在于,
所述索引单元具体用于对所述Key进行至少一次Hash。
8.根据权利要求7所述的基于文件系统的嵌入式存储装置,其特征在于,
所述索引单元具体用于对所述Key进行至三次Hash。
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 true CN107315806A (zh) | 2017-11-03 |
CN107315806B 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) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111984597A (zh) * | 2020-08-19 | 2020-11-24 | 安徽鸿程光电有限公司 | 文件存储方法、装置、设备和介质 |
CN114519125A (zh) * | 2020-11-19 | 2022-05-20 | 北京达佳互联信息技术有限公司 | 数据写入方法、装置及服务器 |
Citations (5)
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 | 北京天地云箱科技有限公司 | 数据存储系统及方法 |
-
2017
- 2017-06-26 CN CN201710495025.7A patent/CN107315806B/zh active Active
Patent Citations (5)
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 | 北京天地云箱科技有限公司 | 数据存储系统及方法 |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111984597A (zh) * | 2020-08-19 | 2020-11-24 | 安徽鸿程光电有限公司 | 文件存储方法、装置、设备和介质 |
WO2022036927A1 (zh) * | 2020-08-19 | 2022-02-24 | 安徽鸿程光电有限公司 | 文件存储方法、装置、设备和介质 |
CN111984597B (zh) * | 2020-08-19 | 2023-12-08 | 安徽鸿程光电有限公司 | 文件存储方法、装置、设备和介质 |
CN114519125A (zh) * | 2020-11-19 | 2022-05-20 | 北京达佳互联信息技术有限公司 | 数据写入方法、装置及服务器 |
Also Published As
Publication number | Publication date |
---|---|
CN107315806B (zh) | 2020-04-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8261241B2 (en) | Converting format strings to regular expressions | |
CN105607960A (zh) | 文件系统目录树修复方法和装置 | |
CN106874348B (zh) | 文件存储和索引方法、装置及读取文件的方法 | |
US8234539B2 (en) | Correction of errors in a memory array | |
CN103384256A (zh) | 一种云存储方法及装置 | |
CN103902632A (zh) | 键值存储系统中构建文件系统的方法、装置及电子设备 | |
CN107111460A (zh) | 使用块文件的重复数据删除 | |
CN104021123A (zh) | 用于数据迁移的方法和系统 | |
CN106301886A (zh) | 一种用户操作审计方法及装置 | |
CN110109874A (zh) | 一种基于区块链的无中心分布式文件检索方法 | |
CN107315806A (zh) | 一种基于文件系统的嵌入式存储方法和装置 | |
CN103559224A (zh) | 一种对元数据对象进行散列的方法及装置 | |
CN101576919A (zh) | 标识生成方法和装置 | |
CN103176867A (zh) | 一种快速文件差异备份方法 | |
CN106372002A (zh) | 一种数据存储方法及读取还原方法 | |
CN107395721B (zh) | 一种元数据集群扩容的方法和系统 | |
US8725765B2 (en) | Hierarchical registry federation | |
CN107220342A (zh) | 一种分布式数据库的控制方法及系统 | |
CN104050251A (zh) | 一种文件管理方法及管理系统 | |
CN115202589B (zh) | 放置组成员选择方法、装置、设备及可读存储介质 | |
CN107797940B (zh) | 一种针对无法访问东芝硬盘数据区的恢复方法 | |
CN104991926A (zh) | 文件系统恢复方法和系统 | |
US20200348866A1 (en) | Method, device and computer program product for raid type conversion | |
CN211062038U (zh) | 一种控制南桥sata盘序的硬件架构 | |
CN111770158B (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 |