CN112463753B - 一种区块链数据存储方法、***、设备及可读存储介质 - Google Patents
一种区块链数据存储方法、***、设备及可读存储介质 Download PDFInfo
- Publication number
- CN112463753B CN112463753B CN202011229981.9A CN202011229981A CN112463753B CN 112463753 B CN112463753 B CN 112463753B CN 202011229981 A CN202011229981 A CN 202011229981A CN 112463753 B CN112463753 B CN 112463753B
- Authority
- CN
- China
- Prior art keywords
- target
- block
- directory
- target block
- area
- 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
- 238000000034 method Methods 0.000 title claims abstract description 63
- 238000003860 storage Methods 0.000 title claims abstract description 41
- 238000013500 data storage Methods 0.000 title claims abstract description 30
- 238000013507 mapping Methods 0.000 claims abstract description 59
- 238000004590 computer program Methods 0.000 claims description 10
- 238000004519 manufacturing process Methods 0.000 claims description 3
- 230000008569 process Effects 0.000 abstract description 10
- 238000010586 diagram Methods 0.000 description 17
- 239000007787 solid Substances 0.000 description 8
- 238000005516 engineering process Methods 0.000 description 7
- 101000824318 Homo sapiens Protocadherin Fat 1 Proteins 0.000 description 5
- 102100022095 Protocadherin Fat 1 Human genes 0.000 description 5
- 230000000694 effects Effects 0.000 description 4
- 239000004065 semiconductor Substances 0.000 description 4
- 239000010410 layer Substances 0.000 description 3
- 230000001133 acceleration Effects 0.000 description 2
- 238000004458 analytical method Methods 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 230000006872 improvement Effects 0.000 description 2
- 238000012545 processing Methods 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 101100334010 Drosophila melanogaster sotv gene Proteins 0.000 description 1
- 101000824299 Homo sapiens Protocadherin Fat 2 Proteins 0.000 description 1
- 102100022093 Protocadherin Fat 2 Human genes 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 238000004883 computer application Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 230000002085 persistent effect Effects 0.000 description 1
- 230000001052 transient effect Effects 0.000 description 1
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/23—Updating
- G06F16/2365—Ensuring data consistency and integrity
-
- 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/18—File system types
- G06F16/182—Distributed file systems
-
- 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/17—Details of further file system functions
- G06F16/172—Caching, prefetching or hoarding of files
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Computer Security & Cryptography (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Human Computer Interaction (AREA)
Abstract
本发明公开了一种区块链数据存储方法、***、设备及可读存储介质,该方法包括:区块文件***获取目标区块的目标区块序号和目标区块内容;其中,区块文件***包括目录区和数据区,数据区中每个簇的大小与区块链的区块大小相同,目录区存储区块序号和簇地址之间的映射关系;为目标区块循序分配目标簇地址,并在目录区中,记录目标区块序号和目标簇地址的目标映射关系;按照目标簇地址,将目标区块内容循序写入数据区。在该方法中,区块文件***在存储区块过程中,在确定了目标簇地址之后,可直接将目标区块内容循序写入数据区中,目录和数据写入可循序写入,可省去大量的查找时间以及数据写入时间,能够加快区块链中数据写入速度。
Description
技术领域
本发明涉及区块链技术领域,特别是涉及一种区块链数据存储方法、***、设备及可读存储介质。
背景技术
区块链存储技术,本质上指以每个区块链存储***(如最简单的台式机,中高端服务器)为最小存储单位去管理,希望以区块链的特性,加上分布式存储,在协议层或软件应用层能做到保密,及资料容错备份等等。
目前的计算机***,在对区块链存储技术进行改进时,不仅要在软件层的文件***与存储装置控制器考虑数据存储,也要考虑程序的执行,以及与更早***的兼容。这限制了区块链存储在存储优化等新技术的发展。因而,在日益增长的数据存储量,以及快速存储的需求下,当前的区块链存储技术仍然存在数据存储速度慢的问题。
综上所述,如何有效地解决区块链中数据存储速度慢等问题,是目前本领域技术人员急需解决的技术问题。
发明内容
本发明的目的是提供一种区块链数据存储方法、***、设备及可读存储介质,以加快区块链的数据存储速度。
为解决上述技术问题,本发明提供如下技术方案:
一种区块链数据存储方法,包括:
区块文件***获取目标区块的目标区块序号和目标区块内容;其中,所述区块文件***包括目录区和数据区,所述数据区中每个簇的大小与区块链的区块大小相同,所述目录区存储区块序号和簇地址之间的映射关系;
为所述目标区块循序分配目标簇地址,并在所述目录区中,记录所述目标区块序号和所述目标簇地址的目标映射关系;
按照所述目标簇地址,将所述目标区块内容循序写入所述数据区。
优选地,还包括:
接收读取所述目标区块的读取请求;
在所述目录区查询与所述目标区块序号对应的所述目标簇地址;
利用所述目标簇地址,从所述数据区中读取所述目标区块内容;
输出所述目标区块内容。
优选地,还包括:
读取所述目录区中的目录,并将所述目录写入缓存中,得到缓存目录;
相应地,在所述目录区中,记录所述目标区块序号和所述目标簇地址的目标映射关系,包括:
在所述缓存目录中,记录所述目标映射关系。
优选地,还包括:
接收读取所述目标区块的读取请求;
在所述缓存目录查询与所述目标区块序号对应的所述目标簇地址;
利用所述目标簇地址,从所述数据区中读取所述目标区块内容;
输出所述目标区块内容。
优选地,还包括:
读取所述目录区中的目录,并将所述目录复制到CAM中,得到CAM目录;
相应地,在所述目录区中,记录所述目标区块序号和所述目标簇地址的目标映射关系,包括:
在所述CAM目录中,记录所述目标映射关系。
优选地,还包括:
接收读取所述目标区块的读取请求;
在所述CAM目录中,查询与所述目标区块序号对应的所述目标簇地址;
利用所述目标簇地址,从所述数据区中读取所述目标区块内容;
输出所述目标区块内容。
优选地,将所述目标区块内容循序写入所述数据区,包括:
将所述目标区块内容写入所述数据区对应的连续硬盘扇区。
一种区块文件***,包括:
待存区块获取模块,用于获取目标区块的目标区块序号和目标区块内容;其中,所述区块文件***包括目录区和数据区,所述数据区中每个簇的大小与区块链的区块大小相同,所述目录区存储区块序号和簇地址之间的映射关系;
映射关系记录模块,用于为所述目标区块循序分配目标簇地址,并在所述目录区中,记录所述目标区块序号和所述目标簇地址的目标映射关系;
写数据模块,用于按照所述目标簇地址,将所述目标区块内容循序写入所述数据区。
一种电子设备,包括:
存储器,用于存储计算机程序;
处理器,用于执行所述计算机程序时实现上述区块链数据存储方法的步骤。
一种可读存储介质,所述可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现上述区块链数据存储方法的步骤。
应用本发明实施例所提供的方法,区块文件***获取目标区块的目标区块序号和目标区块内容;其中,区块文件***包括目录区和数据区,数据区中每个簇的大小与区块链的区块大小相同,目录区存储区块序号和簇地址之间的映射关系;为目标区块循序分配目标簇地址,并在目录区中,记录目标区块序号和目标簇地址的目标映射关系;按照目标簇地址,将目标区块内容循序写入数据区。
在本方法中,区块文件***借助区块链的每个区块有唯一的序号,即区块序号,以及区块的固定大小,将数据区的簇的大小设置为区块大小,如此,目录区记录的映射关系,则对应为区块序号和簇地址之间的映射关系。也就是说,区块与簇对应,目录区即直接将区块序号作为簇索引。简单明了的区块链目录结构以及与数据区的对映关系,以及一个区块对应一个簇。本方法,在存储区块过程中,在确定了目标簇地址之后,可直接将目标区块内容循序写入数据区中,由于目录简单,数据写入可循序写入,可省去大量的查找时间以及数据写入时间,能够加快区块链中数据写入速度。
相应地,本发明实施例还提供了与上述区块链数据存储方法相对应的区块文件***、设备和可读存储介质,具有上述技术效果,在此不再赘述。
附图说明
为了更清楚地说明本发明实施例或相关技术中的技术方案,下面将对实施例或相关技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例中一种区块链数据存储方法的实施流程图;
图2为本发明实施例中一种区块文件***的格式示意图;
图3为一种FAT文件***的格式示意图;
图4为本发明实施例中一种数据存取示意图;
图5为本发明实施例中一种基于缓存目录进行数据存取示意图;
图6为本发明实施例中一种基于CAM目录进行数据存取示意图;
图7为本发明实施例中一种CAM目录示意图;
图8本发明实施例中另一种基于CAM目录进行数据存取示意图;
图9为本发明实施例中一种区块文件***的结构示意图;
图10为本发明实施例中一种电子设备的结构示意图;
图11为本发明实施例中一种电子设备的具体结构示意图。
具体实施方式
为了使本技术领域的人员更好地理解本发明方案,下面结合附图和具体实施方式对本发明作进一步的详细说明。显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
为便于理解本发明实施例所提供的技术方案,下面对涉及的相关技术术语进行简要说明:
区块链(Block Chain),指藉由密码学串接并保护内容的串连文字记录(又称区块)。
星际文件***(IPFS,InterPlanetary File System)是一个分布式文件***,它尝试为所有计算装置连接同一个文件***,IPFS协议结合区块链技术与各种网络协议的优势来储存不可更改的数据,移除网络上的重复档案,以及取得储存节点的地址信息,用以搜寻网络中的档案IPFS将文件分割为固定大小区块,每个区块以唯一的一组序号(CID/ID)索引与区块内容存储在分布式文件***。分布式文件***基于CID读取所有区块并还原为原文件。
文件***(File System),为目前操作***中的模块,负责计算机***中将数据以档案的形式管理及储存。
文件分配表(FAT,File Allocation Table)指一种由微软发明并拥有部分专利的文件***,供MS-DOS及所有的Windows***使用的文件***。
Ext2:Linux最传统的磁盘文件***,后续有Ext3/4等,其基本原理同FAT,但可视为对FAT之改良。
结合存储(CAM,Content Addressable Memory),或称内容可寻址内存,是一种特殊类型的计算机存储,应用于某些非常高速的搜索程序。CAM不仅具有数据比较器及地址编码器,还具有一般内存可存取数据的特性之外,提供高速的数据搜寻能力。常见的应用为在半导体集成电路中,对特定网络封包内容做搜寻,以现今的半导体技术,其查询效能可达到200M/s(每秒200兆) 以上。CAM内存使用静态内存(SRAM),每一次查询延迟可以达到小到5奈秒,若因存储空间需求较大CAM内存使用动态内存(DRAM),每一次查询延迟大约100~150奈秒。
***调用(System Call):内核提供的一系列的函数。这些***调用是在内核中实现的,再通过一定的方式把***调用给用户。***调用是用户程序和内核交互的接口。
驱动程序(Device Driver)指设备驱动程序(Device Driver),是一种可以使计算机和装置/设备进行相互通信的特殊程序。相当于硬件的接口,操作***只有通过这个接口,才能控制硬件装置/设备的工作。
逻辑区块地址(LBA,Logical Block Address)是计算机***数据存储装置上用来表示数据所在位置的通用机制。
物理区块地址(PBA,Physics Block Address)即机械硬盘的数据扇区或固态硬盘的数据分页。软件程序为了兼容性,在读写档案时会以逻辑区块地址向***请求档案,***的文件***及存储装置控制器将之转换为物理区块地址,找到数据真正的地址并进行读写。机械硬盘的数据扇区或固态硬盘资料分页的 LBA到PBA的转换方式。
扇区(Sector),传统机械硬盘的最小存储单位,磁盘读写基本单位是扇区,固态硬盘基本单位是分页。
簇/丛集(Cluster),即一群连续的扇区,每个簇/丛集可以包括2、4、8、16、32、64…,即2的n次方个扇区,文件***操作文件的最小单位是簇。
档案目录表(FDT,File Directory Table)。
链表(linked list),指一种数据结构,链表是一种物理存储单元上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的。链表由一系列结点(链表中每一个元素称为结点)组成,结点可以在运行时动态生成。每个结点包括两个部分:一个是存储数据元素的数据域,另一个是存储下一个结点地址的指针域。相比于线性表顺序结构,操作复杂。由于不必须按顺序存储,链表在***的时候可以达到O(1)的复杂度,比另一种线性表顺序表快得多,但是查找一个节点或者访问特定编号的节点则需要O(n)的时间,而线性表和顺序表相应的时间复杂度分别是O(logn)和O(1)。
请参考图1和图4,其中图1为本发明实施例中一种区块链数据存储方法的流程图,图4为本发明实施例中一种数据存取示意图。
从图4可见,区块链的区块的写入和读取流程需要透过软件程序,***调用,以及文件***,最后到实体的硬盘。其中。文件***(搭配存储装置控制器)起到一个关键的作用,即将软件程序及操作***核心层对映的逻辑区块地址,转换为硬盘的物理区块地址。实际对硬盘读写,以得到所需档案(一个档案对应一个或多个区块)对应的区块内容。该方法可应用于如图4所示的数据存取示意架构中的区块文件***中,包括以下步骤:
S101、区块文件***获取目标区块的目标区块序号和目标区块内容。
其中,区块文件***包括目录区和数据区,数据区中每个簇的大小与区块链的区块大小相同,目录区存储区块序号和簇地址之间的映射关系。
其中,目标区块可以为任意一个待存储的区块。
区块文件***的格式可参考图2,图2为本发明实施例中一种区块文件***的格式示意图。可见,在目录区存储CID与簇地址的映射关系,在数据区中每个簇的大小与区块大小一致。即区块文件***具有以下特征/特点:
区块文件***中簇的大小为区块大小寻找区块数据更快;
区块文件***简化了目录结构以及与数据区的对映;
目录区中每个序号(CID)代表每个区块;
目录区中每个簇地址=数据区的簇地址。
为便于理解本发明实施例所提供的区块文件***的特征/特点,可对比参考图3,图3为一种FAT文件***的格式示意图。如图3所示,假设硬盘空间以线性排列,简化的FAT文件***由左到右分别为:
引导扇区:位于最开始的位置,主要记录了***开机及文件***的重要信息;
FAT1/FAT2:两份文件分配表,这是出于***冗余考虑,FAT指示簇 (Cluster)是如何储存的;
根目录区:储存档案和目录信息的目录表;
数据区:数据真正存储的区域。
相较于FAT文件***而言,本发明实施例中的区块文件***目录结构更加简单明了。
举例说明,目录简单与区块大小与实际数据读取和写入的对应关系。
假设文件***要对档案文件名FILE1做读写,首先在根目录区搜寻,由 FDT(档案目录表),找到FILE1的起始丛集在第3个簇,接下来由FAT1中的链表可以知道FILE1的下一个簇,直到到最后结束的簇,分别是5,7,8。也就是说,FILE1需要4个簇做为存储空间。假设硬盘每个扇区是512Byte,文件***规划每个簇是8个扇区,即每个丛集是4096Byte=4KByte,那FILE1 在数据区占据了4个丛集共16K Byte。可见,在该文件***中读写档案实际上要分别在根目录区及FAT1中不断花时间搜寻以存取数据,这过程包括了软件程序,文件***及硬件控制器与硬盘的之间的各种协同工作。
而本发明实施例中的区块文件***中以区块大小为簇大小,一个区块对应一个簇,在目录中也可以区块序号进行检索,可省去查找过程,特别是目录、数据写入循序写入(可具体参见S102和S103)可加快数据写速度。
S102、为目标区块循序分配目标簇地址,并在目录区中,记录目标区块序号和目标簇地址的目标映射关系。
获得目标区块的目标区块序号和目标区块内容之后,便可为目标区块循序分配目标簇地址。
其中,循序分配簇地址,可具体为获得目标序号与目标区块内容,可依照目录区与数据区簇地址(对映目录区中每个簇地址),将目标区块序号循序写入目录区,即第一个收到的区块链区块簇地址分配为0,写入硬盘簇地址0,第二个收到的区块链区块簇地址分配为1,写入硬盘簇地址1以此类推,往下一个可用的空间写入。对比,常用的文件***,本实施例无需寻找硬盘可用空间,循序写入节省了磁盘寻找时间。
需要注意的是,在本实施例中,为目标区块循序分配目标簇地址,仅需分配一个簇地址即可,也就是说,一个簇便于一个区块对应。
分配了目标簇地址之后,便可明确地址与目标区块之间的映射关系,即目标区块序号与目标簇地址之间存在映射关系,为便于区别,在本实施例中将目标区块序号与目标簇地址之间的映射关系称为目标映射关系。
明确该目标映射关系后,便可在目录区存储该目标映射关系。可见,在本实施例中,目录区仅需存储目标区块号与目标簇地址的映射关系即可,即可直接基于区块号检索到区块内容的存储位置。
S103、按照目标簇地址,将目标区块内容循序写入数据区。
按照目标簇地址,可按照循序写入的方式将目标区块内容循序写入数据区。
其中,数据循序续写可参照区块序号的循序写入,在此不再一一赘述。
由于一个区块对应一个簇,因而在将目标区块内容写入数据区的过程中,是将目标区块内容写入磁盘的连续空间,可提高数据读写速度。也就是说,将目标区块内容循序写入数据区,包括:将目标区块内容写入数据区对应的连续硬盘扇区。
应用本发明实施例所提供的方法,区块文件***获取目标区块的目标区块序号和目标区块内容;其中,区块文件***包括目录区和数据区,数据区中每个簇的大小与区块链的区块大小相同,目录区存储区块序号和簇地址之间的映射关系;为目标区块循序分配目标簇地址,并在目录区中,记录目标区块序号和目标簇地址的目标映射关系;按照目标簇地址,将目标区块内容循序写入数据区。
在本方法中,区块文件***借助区块链的每个区块有唯一的序号,即区块序号,以及区块的固定大小,将数据区的簇的大小设置为区块大小,如此,目录区记录的映射关系,则对应为区块序号和簇地址之间的映射关系。也就是说,区块与簇对应,目录区即直接将区块序号作为簇索引。简单明了的区块链目录结构以及与数据区的对映关系,以及一个区块对应一个簇。本方法,在存储区块过程中,在确定了目标簇地址之后,可直接将目标区块内容循序写入数据区中,由于目录简单,数据写入可循序写入,可省去大量的查找时间以及数据写入时间,能够加快区块链中数据写入速度。
需要说明的是,基于上述实施例,本发明实施例还提供了相应的改进方案。在优选/改进实施例中涉及与上述实施例中相同步骤或相应步骤之间可相互参考,相应的有益效果也可相互参照,在本文的优选/改进实施例中不再一一赘述。
在本发明的一种具体实施例方式中,还提出了快速读取目标区块的处理流程,具体实现过程,包括:
步骤一、接收读取目标区块的读取请求;
步骤二、在目录区查询与目标区块序号对应的目标簇地址;
步骤三、利用目标簇地址,从数据区中读取目标区块内容;
步骤四、输出目标区块内容。
为便于描述,下面将上述四个步骤结合起来进行说明。
由于目录区中记录了目标区块序号与存储了目标区块内容的目标簇地址的目标映射关系,因此,在接收到读取目标区块的读取请求后,可直接在目录区查询与目标区块序号对应的目标簇地址。得到目标簇地址之后,便可直接从数据区中读取到目标区块内容,然后将目标区块内容输出。也就是说,收到要读取目标区块的请求后,只需要到目录区查找与目标区块区块对映的目标簇地址,即可在硬盘数据区中取得并回复区块内容。
相对于目前常用之文件***(如以FAT为例),可省去寻找目录及等待读取的时间。
在本发明的一种具体实施方式中,还可通过缓存目录来提高数据存取速度。具体的实现方式,包括:读取目录区中的目录,并将目录写入缓存中,得到缓存目录;相应地,在目录区中,记录目标区块序号和目标簇地址的目标映射关系,包括:在缓存目录中,记录目标映射关系。相应地,数据读取过程,可具体包括:
步骤一、接收读取目标区块的读取请求;
步骤二、在缓存目录查询与目标区块序号对应的目标簇地址;
步骤三、利用目标簇地址,从数据区中读取目标区块内容;
步骤四、输出目标区块内容。
为便于描述,下面将基于缓存目录进行数据存储和进行数据读取结合起来进行说明。
请参考图5,图5为本发明实施例中基于缓存目录进行数据存取示意图。
具体的,可在计算机***上电开机时,将硬盘目录表(即目录区存放的目录表)完全或部分复制到缓存目录。具体的,若缓存足够大或搭配使用***易失存储器,则可将全部目录复制到缓存目录;当然,也可仅将热数据对应目录复制到缓存目录。
写入区块链的区块:获得目标区块序号与目标区块内容,首先更新缓存目录(可同样采用循序写入更新),再依照可用硬盘空间,将目标区块序号与目标区块内容循序写入硬盘目录区与数据区。进一步地,在更新缓存目录时,可不用每次同步更新硬盘的目录,而是只有在例如***关机,***即将断电时或者***目前空闲时(即没有写入/读取区块链区块之请求,才更新硬盘的目录。需要注意的是,采用缓存目录加快数据存取效率,需保证缓存目录与硬盘目录区保持数据同步。
读取区块链区块:确定要读取的目标区块序号后,只需要到缓存目录查找对映目标区块序号的目标簇地址,即可由硬盘中取得并输出目标区块内容。因为缓存目录的查找速度比硬盘的目录要快,因此可以提升读取速度。
可见,对于数据存储和读取整体而言,使用缓存目标可提升写入/读取区块链区块的整体效能。
在本发明的一种具体实施方式中,还可采用CAM目录来加速区块链数据的存储和读取速度。具体的实现方式,包括:读取目录区中的目录,并将目录复制到CAM中,得到CAM目录;相应地,在目录区中,记录目标区块序号和目标簇地址的目标映射关系,包括:在CAM目录中,记录目标映射关系。相应地,数据读取过程,包括:
步骤一、接收读取目标区块的读取请求;
步骤二、在CAM目录中,查询与目标区块序号对应的目标簇地址;
步骤三、利用目标簇地址,从数据区中读取目标区块内容;
步骤四、输出目标区块内容。
为便于描述,下面将基于CAM目录进行数据存储和进行数据读取结合起来进行说明。
请参考图6,图6为本发明实施例中基于CAM目录进行数据存取示意图。
CAM以内容快速寻址的结构与特点,可以配合区块文件目录,在CAM目录中以CID为内容快速寻找地址,即簇地址。
其中,CAM目录可具体参考图7,图7为本发明实施例中一种CAM目录示意图。其中,下图7的上方为本文中CAM目录的示意方块,下方则为半导体集成电路中CAM通用设计的示意图。如图7所示CAM包括数据比较器,内存 (CELL)和地址编码器,图7所示的例子为查询内容Qm345678…所在之地址。
在存储装置控制器的基础上,加上CAM目录则可以实现在硬件层的区块读写加速。计算机***上电开机时,由硬盘将目录表完全复制到存储装置控制器的CAM目录。
写入区块链的区块:程序收到目标区块序号与目标区块内容,首先更新 CAM目录(采用循序写入更新),再依照可用硬盘空间,将目标区块序号与目标区块内容循序写入硬盘目录区与数据区。由于存储装置控制器与CAM目录是度高整合的硬件电路,数据读取和写入速度更快,更新CAM目录对写入区块链区块的效能影响更小。当然,在实际应用中,更新CAM目录时,不用每次同步更新硬盘的目录,而是只有在例如***关机,***即将断电时或者***目前空闲时(如,没有写入/读取区块链区块的请求),才更新硬盘的目录。
需要说明的是,不论如何对目录进行更新,需保障CAM目录与硬盘目录区保持数据同步。
读取区块链区块:确定读取的目标区块序号,只需要到CAM目录查找对映目标区块序号的目标簇地址,即可由硬盘中取得并回复区块内容。因为CAM 目录查找速度比硬盘的目录还要快,也比缓存目录快,因此可以最大程度提升读取速度。
在本实施例中,可以采用CAM内存,也可以采用动态内存(DRAM)或静态内存(SRAM)。
进一步地,请参考图8,图8为本发明实施例中***在软件核心层搭配区块文件***,存储装置控制器加上CAM目录能以目前的半导体集成电路技术进行设计与生产;搭配对应之软件,驱动程序与存储装置控制器加上CAM目录,每个存储装置控制器加上CAM目录,可存取多个硬盘***层级也可搭配多个,存储装置控制器加上CAM目录,
相应于上面的方法实施例,本发明实施例还提供了一种区块文件***,下文描述的区块文件***与上文描述的区块链数据存储方法可相互对应参照。
参见图9所示,该***包括以下模块:
待存区块获取模块101,用于获取目标区块的目标区块序号和目标区块内容;其中,区块文件***包括目录区和数据区,数据区中每个簇的大小与区块链的区块大小相同,目录区存储区块序号和簇地址之间的映射关系;
映射关系记录模块102,用于为目标区块循序分配目标簇地址,并在目录区中,记录目标区块序号和目标簇地址的目标映射关系;
写数据模块103,用于按照目标簇地址,将目标区块内容循序写入数据区。
应用本发明实施例所提供的***,区块文件***获取目标区块的目标区块序号和目标区块内容;其中,区块文件***包括目录区和数据区,数据区中每个簇的大小与区块链的区块大小相同,目录区存储区块序号和簇地址之间的映射关系;为目标区块循序分配目标簇地址,并在目录区中,记录目标区块序号和目标簇地址的目标映射关系;按照目标簇地址,将目标区块内容循序写入数据区。
在本***中,区块文件***借助区块链的每个区块有唯一的序号,即区块序号,以及区块的固定大小,将数据区的簇的大小设置为区块大小,如此,目录区记录的映射关系,则对应为区块序号和簇地址之间的映射关系。也就是说,区块与簇对应,目录区即直接将区块序号作为簇索引。简单明了的区块链目录结构以及与数据区的对映关系,以及一个区块对应一个簇。本***,在存储区块过程中,在确定了目标簇地址之后,可直接将目标区块内容循序写入数据区中,由于目录简单,数据写入可循序写入,可省去大量的查找时间以及数据写入时间,能够加快区块链中数据写入速度。
在本发明的一种具体实施方式中,还包括:读数据模块,用于接收读取目标区块的读取请求;在目录区查询与目标区块序号对应的目标簇地址;利用目标簇地址,从数据区中读取目标区块内容;输出目标区块内容。
在本发明的一种具体实施方式中,还包括:
缓存加速模块,用于读取目录区中的目录,并将目录写入缓存中,得到缓存目录;
相应地,映射关系记录模块102,具体用于在缓存目录中,记录目标映射关系。
在本发明的一种具体实施方式中,还包括:读数据模块,用于接收读取目标区块的读取请求;在缓存目录查询与目标区块序号对应的目标簇地址;利用目标簇地址,从数据区中读取目标区块内容;输出目标区块内容。
在本发明的一种具体实施方式中,还包括:CAM加速模块,用于读取目录区中的目录,并将目录复制到CAM中,得到CAM目录;
相应地,映射关系记录模块102,具体用于在CAM目录中,记录目标映射关系。
在本发明的一种具体实施方式中,还包括:读数据模块,用于接收读取目标区块的读取请求;在CAM目录中,查询与目标区块序号对应的目标簇地址;利用目标簇地址,从数据区中读取目标区块内容;输出目标区块内容。
在本发明的一种具体实施方式中,写数据模块103,具体用于将目标区块内容写入数据区对应的连续硬盘扇区。
为便于本领域技术人员更好地,理解本发明实施例所提供的区块链数据存储方法、区块文件***的技术效果,下面结合相关技术对本发明实施例所提出的区块文件***进行详细说明。
本发明实施例中的区块文件***,与文件***基于机械硬盘的效能比较结果如表1所示:
表1
其中,比较条件中只列出了跟文件***及硬盘相关之所需时间。
FAT目录及FAT1/2链表皆需由到硬盘中读取;
读取写入一个区块链区块,区块大小256KB;
机械硬盘每个扇区大小=4KB;
FAT每簇大小使用4KB(对应1个扇区大小)及64KB(对应16个扇区大小)。
区块文件***每簇大小=256KB(对应64个扇区)。
SAS为15000rpm,即硬盘平均访问时间=旋转滞后时间+磁头寻道时间=大约2+3.5=5.5ms;
SAS为15000rpm,即硬盘4KB/64KB随机读写假设达到12MB/s,256KB 以上读写或循序读写假设可达120MB/s。
在区块文件***除了扇区损坏之特殊情况,其可循序写入的特性,可以让硬盘扇区也是连续的,相对FAT文件***皆无法保证扇区一定连续,在此4KB/64KB随机读写效能。
本发明实施例中的区块文件***,与文件***基于固态硬盘的效能比较结果如表2和表3所示:
表2
表3
比较条件中只列出了跟文件***及硬盘相关之所需时间。
FAT目录及FAT1/2链表皆需到硬盘中读取;
读取写入一个区块链区块,区块大小256KB;
硬盘每个扇区大小=4KB;
FAT每簇大小使用4KB及64KB;
区块文件***的每簇大小=256KB;
固态硬盘平均访问时间(即寻找时间)大约100us;
.M.2PCIe固态硬盘:256K以上读写或循序读写假设可达3000MB/s以上; 4KB随机读取;写入假设大约分别是:50MB/s;150MB/s;
64KB随机读取;写入假设大约分别是:250MB/s:500MB/s;
区块文件***除了扇区损坏的特殊情况,其可循序写入的特性,可以让硬盘扇区也是连续的,相对FAT文件***皆无法保证扇区一定连续。
综上,本发明实施例中的区块文件***相对于文件***提升效能情况如下:
基于机械硬盘:区块文件***的读写效能快10.1倍到22.95倍;
基于固态硬盘:区块文件***读取效能快6.22倍到26.93倍;区块文件***写入效能快4.86倍到17.85倍。
以上的效能比较以一个256KB的区块链区块存储在机械硬盘与固态硬盘进行分析,得到量化的分析比较数据,实际运作时,对成千上万的区块存储与搜寻,能加速而节省的总时间,仍然可以由此得到量化的数据。
相应于上面的方法实施例,本发明实施例还提供了一种电子设备,下文描述的一种电子设备与上文描述的一种区块链数据存储方法可相互对应参照。
参见图10所示,该电子设备包括:
存储器332,用于存储计算机程序;
处理器322,用于执行计算机程序时实现上述方法实施例的区块链数据存储方法的步骤。
具体的,请参考图11,图11为本实施例提供的一种电子设备的具体结构示意图,该电子设备可因配置或性能不同而产生比较大的差异,可以包括一个或一个以上处理器(central processing units,CPU)322(例如,一个或一个以上处理器)和存储器332,存储器332存储有一个或一个以上的计算机应用程序342 或数据344。其中,存储器332可以是短暂存储或持久存储。存储在存储器332 的程序可以包括一个或一个以上模块(图示没标出),每个模块可以包括对数据处理设备中的一系列指令操作。更进一步地,中央处理器322可以设置为与存储器332通信,在电子设备301上执行存储器332中的一系列指令操作。
电子设备301还可以包括一个或一个以上电源326,一个或一个以上有线或无线网络接口350,一个或一个以上输入输出接口358,和/或,一个或一个以上操作***341。
上文所描述的区块链数据存储方法中的步骤可以由电子设备的结构实现。
相应于上面的方法实施例,本发明实施例还提供了一种可读存储介质,下文描述的一种可读存储介质与上文描述的一种区块链数据存储方法可相互对应参照。
一种可读存储介质,可读存储介质上存储有计算机程序,计算机程序被处理器执行时实现上述方法实施例的区块链数据存储方法的步骤。
该可读存储介质具体可以为U盘、移动硬盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可存储程序代码的可读存储介质。
本领域技术人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。本领域技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
Claims (9)
1.一种区块链数据存储方法,其特征在于,包括:
区块文件***获取目标区块的目标区块序号和目标区块内容;其中,所述区块文件***包括目录区和数据区,所述数据区中每个簇的大小与区块链的区块大小相同,所述目录区存储区块序号和簇地址之间的映射关系;
为所述目标区块循序分配目标簇地址,并在所述目录区中,记录所述目标区块序号和所述目标簇地址的目标映射关系;
按照所述目标簇地址,将所述目标区块内容循序写入所述数据区;
其中,将所述目标区块内容循序写入所述数据区,包括:
将所述目标区块内容写入所述数据区对应的连续硬盘扇区。
2.根据权利要求1所述的区块链数据存储方法,其特征在于,还包括:
接收读取所述目标区块的读取请求;
在所述目录区查询与所述目标区块序号对应的所述目标簇地址;
利用所述目标簇地址,从所述数据区中读取所述目标区块内容;
输出所述目标区块内容。
3.根据权利要求1所述的区块链数据存储方法,其特征在于,还包括:
读取所述目录区中的目录,并将所述目录写入缓存中,得到缓存目录;
相应地,在所述目录区中,记录所述目标区块序号和所述目标簇地址的目标映射关系,包括:
在所述缓存目录中,记录所述目标映射关系。
4.根据权利要求3所述的区块链数据存储方法,其特征在于,还包括:
接收读取所述目标区块的读取请求;
在所述缓存目录查询与所述目标区块序号对应的所述目标簇地址;
利用所述目标簇地址,从所述数据区中读取所述目标区块内容;
输出所述目标区块内容。
5.根据权利要求1所述的区块链数据存储方法,其特征在于,还包括:
读取所述目录区中的目录,并将所述目录复制到CAM中,得到CAM目录;
相应地,在所述目录区中,记录所述目标区块序号和所述目标簇地址的目标映射关系,包括:
在所述CAM目录中,记录所述目标映射关系。
6.根据权利要求5所述的区块链数据存储方法,其特征在于,还包括:
接收读取所述目标区块的读取请求;
在所述CAM目录中,查询与所述目标区块序号对应的所述目标簇地址;
利用所述目标簇地址,从所述数据区中读取所述目标区块内容;
输出所述目标区块内容。
7.一种区块文件***,其特征在于,包括:
待存区块获取模块,用于获取目标区块的目标区块序号和目标区块内容;其中,所述区块文件***包括目录区和数据区,所述数据区中每个簇的大小与区块链的区块大小相同,所述目录区存储区块序号和簇地址之间的映射关系;
映射关系记录模块,用于为所述目标区块循序分配目标簇地址,并在所述目录区中,记录所述目标区块序号和所述目标簇地址的目标映射关系;
写数据模块,用于按照所述目标簇地址,将所述目标区块内容循序写入所述数据区;其中,将所述目标区块内容循序写入所述数据区,包括:将所述目标区块内容写入所述数据区对应的连续硬盘扇区。
8.一种电子设备,其特征在于,包括:
存储器,用于存储计算机程序;
处理器,用于执行所述计算机程序时实现如权利要求1至6任一项所述区块链数据存储方法的步骤。
9.一种可读存储介质,其特征在于,所述可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如权利要求1至6任一项所述区块链数据存储方法的步骤。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011229981.9A CN112463753B (zh) | 2020-11-06 | 2020-11-06 | 一种区块链数据存储方法、***、设备及可读存储介质 |
US18/246,659 US12038908B2 (en) | 2020-11-06 | 2021-04-26 | Blockchain data storage method, system, device, and readable storage medium |
PCT/CN2021/089875 WO2022095346A1 (zh) | 2020-11-06 | 2021-04-26 | 一种区块链数据存储方法、***、设备及可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011229981.9A CN112463753B (zh) | 2020-11-06 | 2020-11-06 | 一种区块链数据存储方法、***、设备及可读存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112463753A CN112463753A (zh) | 2021-03-09 |
CN112463753B true CN112463753B (zh) | 2023-01-10 |
Family
ID=74825887
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011229981.9A Active CN112463753B (zh) | 2020-11-06 | 2020-11-06 | 一种区块链数据存储方法、***、设备及可读存储介质 |
Country Status (3)
Country | Link |
---|---|
US (1) | US12038908B2 (zh) |
CN (1) | CN112463753B (zh) |
WO (1) | WO2022095346A1 (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112463753B (zh) | 2020-11-06 | 2023-01-10 | 苏州浪潮智能科技有限公司 | 一种区块链数据存储方法、***、设备及可读存储介质 |
CN113420083B (zh) * | 2021-06-02 | 2024-03-19 | 湖南大学 | 一种具有可拓展分布式账本的异构并行区块链结构的*** |
CN113806803B (zh) * | 2021-09-17 | 2023-06-02 | 厦门服云信息科技有限公司 | 一种数据存储方法、***、终端设备及存储介质 |
CN114925401A (zh) * | 2022-06-14 | 2022-08-19 | 北京师范大学 | 一种基于区块链及分布式存储的学情记录***及方法 |
CN116893787B (zh) * | 2023-09-06 | 2023-12-05 | 四川易利数字城市科技有限公司 | 一种基于区块链大数据应用的磁盘存储方法 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104794024A (zh) * | 2015-04-15 | 2015-07-22 | 四川神琥科技有限公司 | 一种数据恢复方法 |
CN107644056A (zh) * | 2017-08-04 | 2018-01-30 | 武汉烽火众智数字技术有限责任公司 | 一种文件存储方法、装置及*** |
CN110286859A (zh) * | 2019-06-28 | 2019-09-27 | 中国海洋大学 | 基于fat文件***的数据存储方法及装置 |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20200076574A1 (en) * | 2018-08-30 | 2020-03-05 | 0Chain, LLC | Systems and methods of blockchain platform for rule-based de-centralized roles and control |
CN110008206B (zh) * | 2019-03-22 | 2024-07-16 | 深圳前海微众银行股份有限公司 | 一种基于区块链***的数据处理方法及装置 |
KR102204605B1 (ko) * | 2019-04-25 | 2021-01-19 | 주식회사 웨이투빗 | 각 노드가 사용하는 저장 공간을 자동으로 최적화할 수 있는 블록체인을 제공하는 방법 및 장치 |
KR102541781B1 (ko) * | 2019-12-26 | 2023-06-08 | 서강대학교 산학협력단 | 블록체인 네트워크에서의 처리 성능 향상 방법 |
CN111782656B (zh) * | 2020-06-30 | 2024-04-12 | 京东科技信息技术有限公司 | 数据读写方法及装置 |
US11860856B2 (en) * | 2020-07-20 | 2024-01-02 | International Business Machines Corporation | Managing distributed ledger storage space |
CN112463753B (zh) * | 2020-11-06 | 2023-01-10 | 苏州浪潮智能科技有限公司 | 一种区块链数据存储方法、***、设备及可读存储介质 |
-
2020
- 2020-11-06 CN CN202011229981.9A patent/CN112463753B/zh active Active
-
2021
- 2021-04-26 US US18/246,659 patent/US12038908B2/en active Active
- 2021-04-26 WO PCT/CN2021/089875 patent/WO2022095346A1/zh active Application Filing
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104794024A (zh) * | 2015-04-15 | 2015-07-22 | 四川神琥科技有限公司 | 一种数据恢复方法 |
CN107644056A (zh) * | 2017-08-04 | 2018-01-30 | 武汉烽火众智数字技术有限责任公司 | 一种文件存储方法、装置及*** |
CN110286859A (zh) * | 2019-06-28 | 2019-09-27 | 中国海洋大学 | 基于fat文件***的数据存储方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN112463753A (zh) | 2021-03-09 |
US12038908B2 (en) | 2024-07-16 |
WO2022095346A1 (zh) | 2022-05-12 |
US20240045853A1 (en) | 2024-02-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112463753B (zh) | 一种区块链数据存储方法、***、设备及可读存储介质 | |
US20220129374A1 (en) | Memory system, data storage device, user device and data management method thereof | |
KR101944876B1 (ko) | 파일 액세스 방법 및 장치 및 스토리지 디바이스 | |
JP3371044B2 (ja) | ディスクアレイのための領域割り当て方法およびディスクアレイアクセス方法 | |
US4536837A (en) | Improved disk file allocation and mapping system utilizing cylinder control blocks and file map having unbalanced tree structure | |
US7035881B2 (en) | Organization of read-write snapshot copies in a data storage system | |
US8285967B1 (en) | Method for on-demand block map generation for direct mapped LUN | |
US8966476B2 (en) | Providing object-level input/output requests between virtual machines to access a storage subsystem | |
US20040024961A1 (en) | Immediately available, statically allocated, full-logical-unit copy with a transient, snapshot-copy-like intermediate stage | |
CN100405304C (zh) | 基于存储区域网络的高速固态存储设备的实现方法 | |
US6567887B2 (en) | Buffering of partition tables, file system directory structures and individual file cluster chains in a mass storage device | |
US8694563B1 (en) | Space recovery for thin-provisioned storage volumes | |
WO2013162954A1 (en) | Efficient data object storage and retrieval | |
JP4222917B2 (ja) | 仮想記憶システムおよびその動作方法 | |
US20030115408A1 (en) | Cache storage system and method | |
US10346077B2 (en) | Region-integrated data deduplication | |
JP4394467B2 (ja) | ストレージシステム、サーバ装置及び先行コピーデータ生成方法 | |
WO2022262381A1 (zh) | 一种数据压缩方法及装置 | |
US11366609B2 (en) | Technique for encoding deferred reference count increments and decrements | |
US11409664B2 (en) | Logical memory allocation and provisioning using timestamps | |
US20210374095A1 (en) | Targetless snapshot virtual replication data pointer table | |
US10848555B2 (en) | Method and apparatus for logical mirroring to a multi-tier target node | |
JPH06110766A (ja) | 分割格納ファイルシステムのディレクトリ構成方法および計算機システム | |
US11847100B2 (en) | Distributed file system servicing random-access operations | |
KR100818993B1 (ko) | 블록 가상 할당을 이용한 파일 관리 장치 및 방법 |
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 |