数据访问方法和装置的制造方法_3

文档序号:8412460阅读:来源:国知局
所占用的存储空间。
[0046]本实施例的另一种实现方式中,上述访问速度较慢的存储介质可以为本地磁盘,其中,本地磁盘可以包括SSD、闪存(flash)和硬盘(Disk);上述访问速度较快的存储介质可以为内存;
[0047]本实现方式中,查找模块42,具体用于在上述本地磁盘中查找应用程序请求访问的数据块;
[0048]填充模块43,具体用于当查找模块42查找到上述应用程序请求访问的数据块时,将查找到的数据块填充到上述内存需要淘汰的数据块所占用的存储空间中。
[0049]进一步地,查找模块42,还用于当在上述本地磁盘中未查找到上述应用程序请求访问的数据块时,触发RPC调用远程存储,在上述远程存储中查找上述应用程序请求访问的数据块;
[0050]填充模块43,还用于将查找模块42查找到的数据块传输到上述本地磁盘,再将查找到的数据块从上述本地磁盘调度到上述内存,填充到上述内存需要淘汰的数据块所占用的存储空间中。
[0051]本实施例中,数据块会根据冷热程度调度到不同存储介质,数据块的冷热程度可以根据数据块在应用中的特点:如索引块、布隆过滤器(Bloomfilter)块和元信息块等等。数据块调度的替换策略在设计中是开放给应用程序定义的,通常采用LRU算法。调度的单位是应用逻辑上的数据块,当然这个数据块最终还是由底层物理介质的特性来决定。
[0052]无论是LRU还是其他置换算法,都会执行数据擦除操作,以回收空间。对于内存来说,这个不会有太多的开销;但是对于本地磁盘,例如ssd、flash或disk等来说,擦除操作的延时比较高,且会导致物理上的损耗,进而降低存储介质的使用寿命。因此,在本实施例中,并没有实质上的数据在存储介质上的擦除操作。在本地磁盘层的缓存设计中抽象了一个元数据管理层,如图2所示,当LRU算法发现需要淘汰的数据块时,标示模块44只要将需要淘汰的数据块所对应的元数据位标示为空闲(free)状态,如果查找模块42在本地磁盘中未查找到应用程序请求访问的数据块,则触发RPC调用远程存储,在上述远程存储中查找上述应用程序请求访问的数据块,并由填充模块43将查找到的数据块传输到本地磁盘,填充到本地磁盘中标示为空闲的元数据位对应的数据块所占用的存储空间。
[0053]而内存数据块的管理则不需要设计元数据管理层,因为内存是可以随意擦写的。LRU直接作用在内存数据块中,如果查找模块42在本地磁盘中查找到应用程序请求访问的数据块,则填充模块43将查找到的数据块直接填充到上述内存需要淘汰的数据块所占用的存储空间中;而如果查找模块42在本地磁盘中未查找到上述应用程序请求访问的数据块,则触发RPC调用远程存储,在远程存储中查找上述应用程序请求访问的数据块,并由填充模块43将查找到的数据块传输到本地磁盘,再将查找到的数据块从上述本地磁盘调度到内存,填充到内存需要淘汰的数据块所占用的存储空间中。
[0054]由于数据块在缓存中长时间保留会出现“老化”状态,即与远程存储中的数据发生了不一致,因此需要对缓存中的数据块进行更新。在实际工程实现中,由于数据更新的入口是由应用程序发起的,因此在发起写入更新的同时需要同步执行缓存更新。
[0055]具体地,本实施例提供的数据访问装置还可以包括:更新模块45 ;
[0056]这时,接收模块41,还用于接收上述应用程序的数据更新请求;
[0057]更新模块45,用于将上述访问速度较慢的存储介质中上述数据更新请求所请求更新的数据块更新为上述数据更新请求中携带的数据块,并将上述访问速度较慢的存储介质中更新后的数据块调度到上述访问速度较快的存储介质中,更新上述访问速度较快的存储介质中相应的数据块。也就是说,应用程序请求更新某个数据块时,更新模块45先更新远程存储中的数据块,以保证数据可靠性,更新成功后同时更新本地磁盘和内存中相应的数据块,以保持写入的一致性。
[0058]进一步地,上述数据访问装置还可以包括:判断模块46和处理模块47 ;
[0059]判断模块46,用于当接收模块41在数据块更新过程中,接收到了上述数据块的读取请求时,判断上述访问速度较快的存储介质中的上述数据块是否为合法的数据块;
[0060]处理模块47,用于当判断模块46确定上述访问速度较快的存储介质中的所述数据块不是合法的数据块时,等待上述访问速度较快的存储介质中的所述数据块更新完毕后,处理上述读取请求。也就是说,如果在数据块的更新过程中,接收模块41接收到了需要读取该数据块的请求,判断模块46需要先判断一下内存或本地磁盘中的上述数据块的合法性,具体地,判断模块46判断数据块的合法性可以采用MD5等算法,本实施例对判断模块46判断数据块的合法性所采用的算法不作限定。如果判断模块46确定内存或本地磁盘中保存的上述数据块不合法,则先等待内存或本地磁盘中的上述数据块更新完毕后,处理模块47再处理该读取请求。
[0061]上述数据访问装置可以充分发挥混合存储介质的优点,有效地降低了存储的成本,同时提高了单位数据访问的吞吐和性能。
[0062]需要说明的是,在本发明的描述中,术语“第一”、“第二”等仅用于描述目的,而不能理解为指示或暗示相对重要性。此外,在本发明的描述中,除非另有说明,“多个”的含义是两个或两个以上。
[0063]流程图中或在此以其他方式描述的任何过程或方法描述可以被理解为,表示包括一个或更多个用于实现特定逻辑功能或过程的步骤的可执行指令的代码的模块、片段或部分,并且本发明的优选实施方式的范围包括另外的实现,其中可以不按所示出或讨论的顺序,包括根据所涉及的功能按基本同时的方式或按相反的顺序,来执行功能,这应被本发明的实施例所属技术领域的技术人员所理解。
[0064]应当理解,本发明的各部分可以用硬件、软件、固件或它们的组合来实现。在上述实施方式中,多个步骤或方法可以用存储在存储器中且由合适的指令执行系统执行的软件或固件来实现。例如,如果用硬件来实现,和在另一实施方式中一样,可用本领域公知的下列技术中的任一项或他们的组合来实现:具有用于对数据信号实现逻辑功能的逻辑门电路的离散逻辑电路,具有合适的组合逻辑门电路的专用集成电路,可编程门阵列(Programmable Gate Array ;以下简称:PGA),现场可编程门阵列(Field ProgrammableGate Array ;以下简称:FPGA)等。
[0065]本技术领域的普通技术人员可以理解实现上述实施例方法携带的全部或部分步骤是可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,该程序在执行时,包括方法实施例的步骤之一或其组合。
[0066]此外,本发明各个实施例中的各功能模块可以集成在一个处理模块中,也可以是各个模块单独物理存在,也可以两个或两个以上模块集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。所述集成的模块如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。
[0067]上述提到的存储介质可以是只读存储器,磁盘或光盘等。
[0068]在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。在本说明书中,对
当前第3页1 2 3 4 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1