CN101859232A - 一种可变长度数据存储接口 - Google Patents
一种可变长度数据存储接口 Download PDFInfo
- Publication number
- CN101859232A CN101859232A CN200910301456A CN200910301456A CN101859232A CN 101859232 A CN101859232 A CN 101859232A CN 200910301456 A CN200910301456 A CN 200910301456A CN 200910301456 A CN200910301456 A CN 200910301456A CN 101859232 A CN101859232 A CN 101859232A
- Authority
- CN
- China
- Prior art keywords
- data
- storage
- interface
- read
- memory
- 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.)
- Pending
Links
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
一种按照可变长度记录对数据存储读写的存储接口方法。利用该接口,主机和存储之间数据的交换以可变长度的数据串为单位,而不是以固定大小的数据块为单位。在关系数据库系统可以利用这种变长记录存储接口的方法,实现基于行数据的存取接口,以取代以块为基础单位的存取接口。半结构数据库中也可以利用该接口实现基于节点数据的存取接口。
Description
技术领域
本专利涉及计算机系统,尤其是计算机主机与存储的接口。
背景技术
现代计算机系统中最主要的组成部分是中央处理器和存储。其中使用的存储结构主要分成两级:内存和外存,如附图1所示。计算机的内存主要利用SDRAM,速度比较快,但是掉电后会丢失数据。所以计算机需要一个可以长时间保持数据的存储,也就是外存。
由于内存(比如SDRAM)的速度快,与中央处理器的速度可以匹配,而外存的速度慢,所以中央处理器每次处理数据都必须在内存中进行。数据必须从外存中读取到内存中才能操作,最终,为了持久保持数据,必须写回到外存做永久保存。本文将内存和外存之间数据交换的接口称之为存储系统接口(Interface)。现行的计算机存储系统读写的接口一般有ATA,SATA,SCSI,FC等规范。这些规范使用的物理介质不同,传输速度也不同。但是他们的传输都同样是基于固定长度。同时,使用这样的接口的设备一般统称为“块设备”。
外存的存储设备目前大部分是硬盘(使用磁碟)的结构,同时有其他的结构如闪存硬盘,有时候也称为固态硬盘。硬盘由一个磁头(由机械臂,数据读写磁头和马达组成)和磁碟片组成。数据在磁碟片上按照扇形的区域组织,一般一个磁盘可能有1~2个双面的磁碟组成,那么一个200GB的硬盘单面磁碟的容量现在可能是100GB或者50GB。磁碟片不停的按照一定的速度旋转,每次读写数据的时候,将磁头放置到合适的位置进行数据的读取。这个动作导致每次从随机磁碟上随机一个位置读取的时候有一个延时。由于磁头的运动是机械运动,速度无法像磁电系统一样提高,目前,这个延时一般在2~7个毫秒。磁头定位到数据后,顺序的读取速度则比较快,目前可以达到50MB/秒的水平。
由于硬盘的这个结构特点,目前的计算机系统中内存与外存直接的数据交换以数据块为单位进行。每次的数据交换必须整块的数据。这个数据块的大小一般规定是512个字节或者他的倍数。经过多年的应用和改进,事实证明这种工作方式对于磁盘结构是非常合适的。
目前出现了一种新的存储系统,也就是闪存硬盘,有时候也称为固态闪存盘(或者SSD,以后简称闪存盘)。这种闪存盘内部的存储单元不再是磁碟,而是闪存的芯片。它的读取时间可以在25us左右,但是对于后续的同一块其他字节的读取在0.03us的水平,也就是顺序读可以保持在30MB/S的水平(后续的芯片会有更高的读取速度)。所以,正常情况下,传统的块设备读写方式对于闪存盘也是合适的。
这种读写的方式一直都存在一个问题,那就是,在实际的操作中,用户在操作文件的时候,往往仅仅需要读取或者修改很小的一段的数据,比如10个字节的数据。在这种情况下,操作系统仍然不得不从磁盘读取整块(比如512个字节)的数据,完成小段的修改后,再把整块的数据写回到磁盘中。这样,就造成了磁盘带宽的浪费。
前面提到的新出现闪存盘同时具备与传统的基于磁碟的磁盘不同的一个性质:闪存盘减小了存储单元的存取粒度。一个闪存盘可能由60个左右的闪存单元组成,其中的每一个闪存单元都可以并行读取数据,这是传统磁盘做不到的。利用这种特点,我们可以并行读取多个闪存单元中的数据,克服随机读取和顺序读取时间不匹配问题,从而实现一个虚拟的“可随机读取”的线性空间。
现有的磁盘阵列(RAID)系统可以把磁盘组合成为一个更大的存储系统,从宿主计算机的角度看,一个RAID系统可以作为一个单一的磁盘使用。在磁盘阵列系统的内部,数据块在许多的单个磁盘上按照“条带”的方式组织,这样,在提高了存储的容量的同时,也极大的提高了对于整个存储系统的读写速度。常用的磁盘阵列中数据块的组织方式有RAID-0(条带化),RAID-1(全冗余),RAID-5(校验块)等。存储阵列(RAID)可以组合多个存储成为一个单一的存储。多个磁盘可以组合成虚拟的单一磁盘,从主机的角度只看到一个磁盘。
本专利中提出了一种可以按照记录的实际长度从外存中读取数据的方法用以解决这种数据传输带宽的浪费问题。同时,本专利提出了这种方法在关系数据库系统和半结构数据库中的应用方式。
发明内容
本专利是一种可以充分利用新型闪存存储能力的存储接口。该存储接口可以为主机提供按照需要的内容长度进行读写的能力。实现该存储接口的系统中利用的每个存储单元可以仍然是基于数据块的读写方式。
如何利用块存储单元实现可变长度接口
根据我们前面背景技术里面描述的闪存存储的特点,我们可以设计一种存储系统,在这个存储系统的内部使用许多的闪存存储单元。同时,我们加入微处理器和SDRAM缓冲存储。系统结构如附图5所示,关于每个单元的功能在附图5的附图说明中详细说明。
现有的硬盘系统中,一般也存在一个控制器模块,具备简单的处理功能,比如对数据寻址,同时管理一个缓存,比如200GB的硬盘,可能具备8MB的磁盘缓存。尤其现在的SSD系统中,处理器的功能更进一步,由于每个存储单元的粒度更小,微处理器要负责解析请求的数据块实际在那个闪存模块上存储,并协调多个闪存存储单元对于缓存区域同步数据。这里,我们的处理单元要负责更多的责任,主要是本专利接口的可变长度数据串的处理。
在可变长度数据存储接口中,对于多个的读取小段数据(我们称为数据串,比如几个或几十个字节)的请求,我们利用微处理器解析每个数据串的起始地址,计算出该数据串所在的存储单元,然后将对应的数据块的读取请求发给存储单元。存储单元读出所需的数据块后放入存储系统的缓存中。然后微处理器在存储系统的缓存中把需要的结果数据串从数据块中提取出,并组装成数据包返回给主机。读取中,可能出现一个数据串跨越两个存储单元的情况。这种情况下,我们可以把请求解析为两个数据存储单元的读写请求,从存储单元中读取相应的数据块后,在两个数据块中找出需要的数据串并返回。
虽然目前的闪存单元仅仅提供基于数据块的读写接口,但是根据需要,闪存单元也可以提供对数据块中部分数据读取的能力。在这种情况下,前面的读取程序仍然成立,需要改动的是组装返回数据集的步骤,因为这个情况下,是利用读到的数据串直接组装返回数据串而不需要从数据块中提取。
对存储的一维线性编址
磁盘阵列的组织方式也适用于本专利中的闪存存储系统。为了能保证数据的读写负载平均的分布在每个数据存储单元上,本专利中的存储系统采取磁盘阵列(RAID)中数据块的分布方式。在不考虑数据容错(或容灾)的需求的情况下,我们以RAID-0的方式组织数据在众多的存储单元中的存储。用户可以按照不同RAID级别组织数据块的存储位置。
这样组织的数据块可以按照存储单元和存储单元内部位置的组合进行编号,类似磁盘的柱面+扇区的方式,也利用类似存储阵列的技术。这样,我们可以对于所有存储单元的存储空间的综合进行线性的编址,整个存储系统对外提供统一的线性存储空间。
接口数据结构
存储接口上需要传输的数据分成两类:数据请求包和数据包。主机通过存储接口向存储系统发出数据请求包,然后存储系统将结果构造成数据包返回给主机。
其中,每个数据请求包中包括下面数据:
包中数据串的个数
对于每个数据串,给出数据串的开始地址和数据串的长度
如果有判断条件,则包括判断谓词
数据串开始地址使用存储系统的地址编码方式,缺省可以选择64位的编码。64位可以提供大约1.8×10^7TB的数据存储空间,对于目前的存储系统,应该够用了。必要的情况下,可以使用更多位数的地址空间。
本专利中的存储接口的数据请求包格式如表格1所示:
表格1:数据请求包格式
每个数据包中包括下面数据:
包中数据串的个数
对于每个数据串,给出数据串的长度和每个数据串的数据
本专利中的存储接口的数据包格式如表格2所示:
表格2:数据包格式
有寻道时间的存储单元的并行读取方式
如果每个存储单元的随机读取时间和顺序读取时间相同,也就是没有寻道时间。那么我们的设计会很简单,只需要顺序的读取每个数据串就可以了(每次定位对应的数据块)。但是实际上,磁盘系统和闪存系统都存在一个寻道的时间。这种情况下,我们在发出读取请求后,需要等待一段时间再读取数据,这段时间里面,我们可以利用流水线的方式请求和读取多个存储单元上的数据。在这两种情况下,我们都可以用条带化(RAID-0)的存储方式提高性能。
我们把数据块分布到不同的存储单元,而这些存储单元,往往是存在寻道时间的。如果我们采取简单的顺序读写的方式,假设需要读取50个字节为一串,一个对于10个数据串的数据包的读取请求就会被存储系统中的微处理器解析成为一个10个数据块的随机读取操作。那么,简单的读取这500个字节数据的速度就变成了25*10=250us。这个时间是对于一个数据块的读取时间的10倍,这个读取速度是我们不能接受的。
针对这个问题,由于前面讲过数据是按照RAID的方式在存储单元上分散存储的。那么,存储系统在收到10个数据串的读取请求后,可以不按照读取“请求一个存储单元->读取一个存储单元”,再“请求一个存储单元->读取一个存储单元”这样的顺序操作,而是同时对于请求的10个存储单元发出读取请求。当然,如果存储系统中只配置一个处理单元,实际的操作顺序会变成:
请求存储单元A,
请求存储单元B,
......
请求存储单元J,
等待一定的时间(存储单元A的随机读取延时)
读取存储单元A,
读取存储单元B,
......
读取存储单元J。
利用这种处理方式,我们可以在一个数据块的随机读取延时(加9个顺序读取延时)里面从10个存储单元中读取到10个数据串的数据。之后,我们就可以将这10个数据串组成应答数据包返回请求的主机。
对比考虑传统的磁盘结构,其中一般只有一个或两个磁头,一个磁头同时只能从一个磁碟的一个扇道里面读取数据。这样,就不可能在单个磁盘上做到并行读取数据。相比之下,NAND闪存做的SSD里面,现有的技术已经可以很容易封装60~70个闪存芯片在同一个存储系统里,所有这些闪存芯片都是可以并行读取的。随着技术的发展,可以封装更多的闪存芯片到同一个存储系统中。
这样,存储内部的闪存芯片的带宽可以并行扩大,但是与主机的接口却一般被限制在某个速度,比如4Gb/s。理想的状态是通过对于存储单元的并行读取,可以保证存储接口(电缆,比如ATA,SATA等)达到全速的输出。比如,对于一个N个存储单元组成的存储系统,其接口的读写速度为I,存储单元的随机读取延时为R,顺序读取带宽为i,每块的大小为B,每个数据串的长度为L,每个那么理想的公式为:I~=i*N*(B/L)
如果存储单元可以支持对于变长字段的读取,则公式可以简化为:I~=i*N。
注:公式中~=代表约等于。
本存储接口的硬盘实现及实现代价分析
由于在单个磁盘中只有一个磁头,无法做到并行读取,所以不能利用本专利的方法。但是在一个大型阵列系统中会有很多的磁盘,比如高端磁盘阵列中可以装配上千个硬盘。那么这种情况下,是可以做到在多个磁盘之间并行读取的,也就可以实现本专利中的存储接口。但是,这种实现代价比较大,对于硬盘的读取操作浪费很多,而且得到的存储系统读写速度一般,实现的经济意义不大。
对比基于闪存模块的本接口的实现,由于我们可以得到很多小的闪存块,在一个总线上对于一个闪存芯片的读取代价相对不大,而且由于集成电路的发展,这种代价会继续下降。并且,多个闪存芯片读取速度的总和会超过磁盘接口的读写带宽。目前USB3.0和SATA一般提供300MB/s的速度,而单一闪存芯片可望达到100MB/S的读取速度。在这种情况下,该技术可以得到很好的应用。
该接口如何兼容传统基于数据块的存储接口
如果定义每个数据串的长度统一为一个固定的512字节或者2K字节,并且每个请求包中只有一个数据串请求,那么就变成传统的磁盘接口。
在现存的计算机主机中,很多应用程序根据块结构的存储接口做出了很多的优化,他们使用固定长度数据块的接口能获得更好的性能,那么这种应用可以使用固定长度的数据串(等价于原来的数据块)。具体的实现中,也可以在该专利的接口之上实现原来的磁盘接口的应用程序调用接口(API),需要使用固定长度数据块接口的应用可以调用原来的应用程序调用接口(API)。
关系数据库的应用
在关系数据库中,数据的存储一般以表的方式进行,而表中的数据则是以一条条的记录(也称为“行”,或者Row)为单位的,每条记录具有相同的字段(或者列,column)结构,比如下面的表格:
表格3:关系数据库中表的格式
关系型数据库管理系统(RDBMS)把这个表格存储到外存中的时候,将会形成记录的结构形式:
块A【(1,李明,1954-01-02,ming@abc.com,2001,26,000)
(2,蒋飞,1977-02-18,fei@abc.com,2001,27,000)】
块B【(3,王强,1978-08-02,qiang@abc.com,2001,16,000)
(4,李洋,1967-11-23,yang@abc.com,2009,15,000)】
块C【......】
......
注:其中标点符号是不需要存储的。这里假定每个数据块正好只能放2条数据,实际的数据库中可以存放大概几十到几百条的数据。如果每个记录的大小大概在50个字节左右。同时,在数据库中,如果数据块的大小是8KB,每个数据块上可以存储160个记录。
现在的关系数据库系统中,根据磁盘的读写特性,数据的读取也是以块为单位的。每次可以要读取一条记录的时候,如果这条记录不在内存中,数据库就必须把数据记录所在的整个数据块读取到内存中。但是,同一个数据块上的其他159条记录随着要读取的一条数据读到内存后,占据大量的内存空间,却很可能根本不会用到,这就造成了磁盘接口带宽和内存的浪费。之后,这个数据块在内存空间不够用的时候被放回磁盘,如果一条记录做出了修改,整个数据块都要写回到磁盘,同样会导致磁盘读写接口带宽的浪费。
利用本专利中的存储读写接口,对于关系数据库数据的读写可以精确到“行”,而不是以块为单位。这种读写方式下,每个“行”对应到磁盘上的一个顺序的记录。它具有一个起始地址和长度,从磁盘读写的时候将要读写的所有行的地址和长度组合成一个读取请求包。这样可以节省IO,同时也节省内存缓存。
传统基于数据块组织的数据库中,缓存管理一般以指针队列的方法管理。对于基于行数据的缓存的管理,将不同于按照块为基础的缓存管理,可以使用散列(Hash)的数据结构方法。
由于可变长度存储系统中包括执行单元,具备执行代码的能力,主机可以对于记录存储的读取附加判断条件,这样数据库就可以把谓词的执行放到下层进行执行。这种情况下,接口数据接口中,读取请求串211的格式要加入判断谓词和谓词条件的值,如表格4所示:
表格4:带条件的数据请求包格式
另外一个方面,在关系数据库的基础上,近些年数据仓库的技术得到了极大的发展。在超大规模的查询处理中,采样后基于概率的查询估计成为一项逐渐可行的技术。这项技术中,对于一个查询所涉及到的所有数据块仅仅读取其中的一部分数据块,比如5%。这个采样一般要求尽量做到随机分布,以减小估计的结果跟实际的结果的误差。在基于块的接口下,每次的读取必须读取同一块上的相邻多行数据,这样,就影响了随机性。我们可以利用跟前面关系数据库类似的方法,应用基于行的采样方法得到比基于数据块的采样方法更好的随机性。基于行的采样中,每次的读取可以随机一行的数据,这样采样到的行数据更有随机性。
半结构数据数据库的应用
现实世界的数据中结构化数据(可以表达成关系表结构的)只占到很小的部分,更多的数据是无结构的(比如文本的)或者半结构(XML格式)的数据格式。目前对于半结构的数据存储有一些产品,但目前商业化应用的范围还很小。在XML半结构数据库中,数据的基本单位是一个节点。每个节点可以有属性,也可以有子节点。有些数据数据库把半结构数据转换成结构数据存储,另外一种做法是直接按照节点的方式存储。在后一种方式下,一个节点对应存到磁盘上的就成为一个记录。这个记录,类似于关系数据库的记录,一般是一个具有一定的结构的,长度一般远小于一个数据块的大小。但是,与关系数据库不同的是,相似的节点记录一般不能保证存储在临近的位置,这样,XML数据库更需要一个能够从外存上随机读取一个或多个记录的能力。并且XML的节点记录的结构更松散,其中含有多少个属性,是不确定的,这样,每个节点记录的长度变化更大。
与关系数据库存储面临的问题类似,由于传统磁盘的接口是基于块的,每次XML数据库读取一个节点的时候,必须读取含有节点记录的整个磁盘块,这个操作的代价是很高的。利用本专利的接口,XML数据库每次读取一个或多个个节点记录的时候,向存储系统发出一个请求数据包,其中包含每个节点记录的其实位置和长度信息,存储系统可以仅仅返回所需要的节点记录信息,而不是多个数据块的全部内容。
注:面向对象/关系的数据库中,现有的缓存管理也是基于数据块的。如果使用可变长度存储系统,记录级别的数据的缓存管理也与关系数据库中一样成为一个新的问题。这里同样可以考虑用hash做缓存管理,但是每个记录的长度不同,复杂度更大。
附图说明
附图1展示了现有存储系统中数据块和数据串存储的层次关系。
附图2展示了现有的基于块的数据存取接口的工作方式。
附图3展示了基于可变长度的数据串和数据包的数据存取接口的工作方式。
附图4展示了关系型数据库如何利用该接口的方式。
附图5展示了实现该接口的一种方式的内部构造。
附图1
附图1中,块数据存储系统131是以数据块的形式存储数据的设备,其中包含一个或者多个存储单元(数据存储单元104)。每个存储单元104中的数据,按照数据块105的方式存储,每个存储单元104包含若干个数据块105。所有数据块105中的数据按照顺序排列并使用统一的线性空间地址访问。同时,如果从主机上应用程序(比如数据库软件)的角度看,数据块105中的数据则往往可以组织成一个个的记录的形式(数据串208)。块存储接口存储端132是存储系统131与主机的接口。
如果块数据存储系统131理解为一个硬盘,则数据存储单元104对应磁盘中单个的碟片,每个数据块105通常是512字节,通常称为磁盘上的一个扇区。块存储接口存储端132可能是目前使用比较多的磁盘接口比如ATA,SATA等。
附图2
附图2给出了传统的块存储系统131和计算机主机102的接口的工作方式。在块存储系统131中,所有的数据在数据存储单元104中按照块的结构存储,当计算机主机102需要从存储系统131中读取数据时:
1.中央处理器119向块存储接口主机端133发出读数据的指令,同时给出到读取的数据的地址和长度(或块数),并指定读到的数据在计算机内存105中的存放位置。
2.块存储接口主机端133通过数据线109将请求按照数据块地址请求211的方式发给块存储接口存储端132
3.块存储接口存储端132负责从存储单元104中读取相应的数据然后返回给块存储接口主机端133。
4.块存储接口主机端133把读到的数据块212放到计算机内存105中的对应位置,并通知给中央处理器119进行后续的操作。
注意:这里的数据块212往往对应于附图1中的数据块105。
附图3
附图3给出了新的基于可变长度的数据串和数据包的数据存取接口的工作方式。这个方案中,接口的工作方式与附图2相似,但是其中传输的协议不同。在数据读取的过程中,在数据线109上传输的数据请求包211和数据包212,这两个数据结构的定义符合《接口数据结构》一节中描述的数据请求包和数据包的定义。
可变长度存储系统101的详细内部结构在附图3中没有给出,详细实现结构会在附图5中给出。
附图4
附图4展示了关系型数据库如何利用该接口的方式。
从主机的角度看关系型数据库是一种应用程序。在附图4中,数据库缓存302总是存储在计算机主存(附图3中的计算机内存105)中。数据库缓存302中的表格图标代表一个表,是有很多的行组成的。
对于关系数据库管理系统301收到的每个关系查询,首先要解析成为一个执行计划,描述对数据的各种操作。根据执行计划,数据库管理引擎303对数据库中的数据(行)进行访问。
如果发现数据不在缓存中,在首先需要把数据从外存(在本系统中是可变长度存储系统101)把数据读入。如果关系数据库实现在具备传统块存取系统的附图2上,每次的读入必须以“数据块”(212,Block)为单位,其中,每个块上将包含多个数据“行”(row)。
在具备实现了附图3的可变长度存储接口存储的计算机系统中,关系型数据库管理系统301对于内存中数据缓存的管理以“行”为单位,而不是按照传统的以“数据块”为单位。每次仅仅将需要读写的数据行读入内存。
附图5
附图5展示了实现该接口的一种方式的内部构造。这种内部构造与现存的RAID系统的实现相似。RAID实现了多个磁盘的带宽的叠加变成更高带宽的一个存储。这里需要的同样的带宽分割处理的功能,同时,要实现原来RAID系统没有的功能,包括:
1.分析数据读写请求包(如附图3中的数据请求包211),定位其在存储单元上的位置
2.组合并返回数据应答包(如附图3中的数据包212)
3.如果数据请求包中有判断谓词,执行判断谓词
附图5中的存储系统仅包含了16个存储单元,但是实际实现的存储系统可能包含更多的存储单元。桥接器113负责接收从存储处理器203发出的指令,对自己控制的存储单元104进行读写操作。在桥接器113中也可能存在本地小型缓存,以解决存储单元104与总线242以及存储缓存202的速度不匹配的问题。
附图5中数据读操作的工作流程是:
1.当一个请求数据包211到达时,存储处理器203解析请求数据包,分解出每个数据串的起始地址和长度,然后计算出需要读写的存储单元104中的数据块的地址,一个数据串可能对应读写多个数据存储单元中的多个数据块。
2.如果本次操作是读取操作,通过桥接器113向需要读取的数据单元104依次发出读取请求并读出数据。这里用一个读写操作为例子说明读写的方式。假定存储系统收到一个有100个数据串的读取的请求读操作数据包211,而存储系统中有60个可独立读写的存储单元104。假定闪存存储单元的数据读取准备时间是25us,并假定数据平均分布在不同的存储单元104上。那么,这个读操作的处理顺序为:
2.1根据请求数据包211中解析到的每个数据串的地址和长度,在25us内,按照一定的延时,依次向60个存储单元104发出读请求,然后,从第一次发出读命令25us后,根据需要的长度依次从每个存储单元104中读取相应的数据串并将读取到的数据串分别写入到数据缓存中。
2.2然后按照上面同样的顺序对于依次向剩余的40个存储单元104发出读取请求并读相应的数据到缓存中。
3.存储处理器203负责组合读到的数据串(在缓存里面)成为一个数据包212并返回给主机102。
这里可以注意到,一个操作由于涉及到多于可以并行读取的存储单元104的数目,这个操作可能需要经历多个读写周期。
如果本次操作是写入操作,则按照类似上面读取操作的顺序,向需要写入的数据单元依次发出写入请求和写入的数据,并依次从数据存储单元中获取写入完成信号,以确认本次写入操作总体的完成。
根据集成电路系统实现的限制和需要,附图5的实际物理实现可能需要一些其他支持的元器件系统,比如信号分离器和复用器(multiplexer,demultiplexer),闪存单元控制器(用以控制几个闪存芯片读写)等。附图5主要从运行逻辑上讲解实现可变长度接口的机制,不涉及到具体的物理实现。
同时,由于闪存存储单元实现的特殊性,尤其写入的时候,要使用比磁盘更加复杂的算法,比如耗损均衡(Wear Leveling),特殊的写入方式等。比如写入操作在闪存存储单元上的处理与硬盘写入存在很多的不同。由于闪存单元的写入操作以块为单位,并且如果一个位0->1的改变必须事先擦除整块。所以写入一个小于数据块大小的数据串208可能要转变成为增添操作(如果没有0->1的改变)或者整块的擦除和重写(如果有0->1的改变)。
这些技术不是本专利的内容,本专利方法独立于这些技术,并可以共同应用于实现存储系统。本附图的逻辑描述中没有体现这些实现技术,而仅仅是把存储单元抽象成为一个基于数据块读写的存储单元。
Claims (8)
1.一种按照可变长度记录对数据读写的存储接口方法,该方法的特征是:主机和存储之间数据的交换以可变长度的数据串为单位,而不是以固定大小的数据块为单位。
2.根据权利要求1所述的存储接口方法,其特征是:主机利用该接口进行读取的时候,给出一串的要读取的位置信息加长度组成的数据请求包,读取请求包中包含一个或多个位置和长度的组合。读取后存储向主机返回包含所有要依次读取的数据串的数据包。
3.一种可以实现变长记录接口存储系统,该系统的特征是:系统中包含微处理器,内存,数据读写总线和存储单元。该系统根据收到的读取请求串,从多个不同的存储单元中读取数据,并组合成对应的应答数据串,并返回给请求的主机。
4.根据权利要求3所述的存储系统,其特征是:内部用以存储数据的存储单元仍是基于数据块的方式组织。并且每个存储单元具备下面3种特性:能够在断电的时候永久性的存储数据;每块数据存储单元的大小(粒度)远远小于整个存储系统的容量;所有数据存储单元的带宽总和大于或远大于总存储系统对外的带宽。闪存是一种符合这3个特性的存储单元,可以作为该存储系统的存储单元。
5.根据权利要求3所述的存储系统,其特征是:数据返回的格式可以是变长的,仅仅返回应用程序需要的数据内容,而不是根据外存的数据存储块的大小作为返回内容的长度。
6.一种在关系数据库系统中利用变长记录接口的方法:该存储可以应用于关系数据库,实现基于行数据的存取接口,以取代以块为基础单位的存取接口。
7.根据权利要求6所述的关系数据库系统中利用变长记录接口的方法,其特征是:主机可以对于记录存储的读取附加判断条件,这样数据库可以把选择谓词的一部分放到存储系统中执行。
8.一种在半结构数据库系统中利用变长记录接口的方法:利用该接口,每次对于外存的读取可以以一个对象为单位,而不是以磁盘块为单位。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN200910301456A CN101859232A (zh) | 2009-04-09 | 2009-04-09 | 一种可变长度数据存储接口 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN200910301456A CN101859232A (zh) | 2009-04-09 | 2009-04-09 | 一种可变长度数据存储接口 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN101859232A true CN101859232A (zh) | 2010-10-13 |
Family
ID=42945164
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN200910301456A Pending CN101859232A (zh) | 2009-04-09 | 2009-04-09 | 一种可变长度数据存储接口 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101859232A (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103226598A (zh) * | 2013-04-22 | 2013-07-31 | 华为技术有限公司 | 访问数据库的方法和装置以及数据库管理系统 |
CN106844244A (zh) * | 2017-01-16 | 2017-06-13 | 联想(北京)有限公司 | 一种实现固态硬盘数据交互的装置和方法 |
CN113434544A (zh) * | 2021-06-02 | 2021-09-24 | 中科驭数(北京)科技有限公司 | 数据库数据读取方法、数据库数据写入方法及装置 |
-
2009
- 2009-04-09 CN CN200910301456A patent/CN101859232A/zh active Pending
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103226598A (zh) * | 2013-04-22 | 2013-07-31 | 华为技术有限公司 | 访问数据库的方法和装置以及数据库管理系统 |
CN103226598B (zh) * | 2013-04-22 | 2016-06-22 | 华为技术有限公司 | 访问数据库的方法和装置以及数据库管理系统 |
CN106844244A (zh) * | 2017-01-16 | 2017-06-13 | 联想(北京)有限公司 | 一种实现固态硬盘数据交互的装置和方法 |
CN106844244B (zh) * | 2017-01-16 | 2021-05-18 | 联想(北京)有限公司 | 一种实现固态硬盘数据交互的装置和方法 |
CN113434544A (zh) * | 2021-06-02 | 2021-09-24 | 中科驭数(北京)科技有限公司 | 数据库数据读取方法、数据库数据写入方法及装置 |
CN113434544B (zh) * | 2021-06-02 | 2022-11-18 | 中科驭数(北京)科技有限公司 | 数据库数据读取方法、数据库数据写入方法及装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11340794B2 (en) | Multiprocessor system with independent direct access to bulk solid state memory resources | |
CN100377065C (zh) | 一种超大容量的虚拟磁盘存储系统 | |
CN102012791B (zh) | 基于Flash的数据存储PCIE板卡 | |
CN103049222B (zh) | 一种raid5的写io优化处理方法 | |
CN104765575B (zh) | 信息存储处理方法 | |
CN100416508C (zh) | 一种存储网络中的数据备份方法 | |
US9996557B2 (en) | Database storage system based on optical disk and method using the system | |
CN106066890B (zh) | 一种分布式高性能数据库一体机系统 | |
CN104679442A (zh) | 一种提高磁盘阵列性能的方法及装置 | |
CN104049918A (zh) | 一种双控存储服务器的缓存管理方法 | |
WO2015134941A1 (en) | Multiprocessor system with independent direct access to bulk solid state memory resources | |
CN102521330A (zh) | 一种桌面虚拟化环境下的镜像分布式存储方法 | |
JP2013156977A (ja) | 冗長キャッシュデータのエラスティックキャッシュ | |
US20200341873A1 (en) | Data access method, apparatus and computer program product | |
CN102637147A (zh) | 利用固态硬盘作为计算机写缓存的存储系统以及相应的管理调度方法 | |
CN105446665A (zh) | 一种计算机存储加速系统及其优化方法 | |
CN104765574A (zh) | 数据云端存储方法 | |
CN100449545C (zh) | 访问扇区数据的方法和系统 | |
Oukid et al. | On the diversity of memory and storage technologies | |
US6868438B2 (en) | Storage system, disk control cluster and a method of increasing of disk control cluster | |
JPH11288387A (ja) | ディスクキャッシュ装置 | |
CN104778100A (zh) | 一种安全备份数据的方法 | |
CN105786721A (zh) | 一种内存地址映射管理方法及处理器 | |
CN101788888A (zh) | 一种实现目标端驱动的方法及该目标端驱动 | |
CN102929813A (zh) | 一种pci-e接口固态硬盘控制器的设计方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C02 | Deemed withdrawal of patent application after publication (patent law 2001) | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20101013 |