一种数据读取方法、设备及计算机存储介质转让专利

申请号 : CN201711490607.2

文献号 : CN108052296B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 施文进施俊

申请人 : 惠龙易通国际物流股份有限公司

摘要 :

本发明的实施方式提供了一种数据读取方法、设备及计算机存储介质,其中,该方法包括:在确定出接收到IO请求的类型是读请求时,判断非易失性随机访问存储器NVRAM中是否存储有所述读请求对应的数据;若判断结果为是,在所述NVRAM中获取存储的读请求对应的数据块,并修改所述数据块标识;若判断结果为否时,将二级缓存NVMe SSD中读请求对应的数据加载至NVRAM中的数据块中存储,并修改所述数据块标识,解决磁盘低速的I0性能对数据库系统带来的影响,从而提升数据库性能。

权利要求 :

1.一种数据读取方法,所述方法应用于采用分布式架构的存储节点中,所述存储节点包含非易失性随机访问存储器NVRAM和NVMe SSD组成的二级存储架构,其特征在于,包括:在确定出接收到IO请求的类型是读请求时,判断非易失性随机访问存储器NVRAM中是否存储有所述读请求对应的数据;

若判断结果为是,在所述NVRAM中获取存储的读请求对应的数据块,并修改所述数据块标识;

若判断结果为否时,将二级缓存NVMe SSD中读请求对应的数据加载至NVRAM中的数据块中存储,并修改所述数据块标识;

还包括:将NVRAM中用于存储数据的缓存队列划分至少一个数据块,其中每个数据块包含有效数据部分和数据块的标识,所述数据块标识初始值为设定值;其中,在所述NVRAM中获取存储读请求对应的数据块,并修改所述数据块标识,包括:在所述NVRAM中获取存储读请求对应的数据块,若所述数据块是所述NVRAM中的缓存队列中最后一个数据块,且所述NVRAM中的缓存队列中所有数据块标识均为相同时,将除最后一个数据块的其它数据块标识设置为初始值,修改最后一个数据块标识为设定值。

2.如权利要求1所述的方法,其特征在于,在所述NVRAM中获取存储的读请求对应的数据块,并修改所述数据块标识,包括:根据所述NVRAM中数据块标识的数值,按照设定顺序访问每一数据块,获取存储的读请求对应的数据块。

3.一种数据读取设备,所述设备应用于采用分布式架构的存储节点中,所述存储节点包含非易失性随机访问存储器NVRAM和NVMe SSD组成的二级存储架构,其特征在于,包括:接收模块,用于接收IO请求;

处理模块,用于在确定出接收到IO请求的类型是读请求时,判断非易失性随机访问存储器NVRAM中是否存储有所述读请求对应的数据;若判断结果为是,在所述NVRAM中获取存储读请求对应的数据块,并修改所述数据块标识;若判断结果为否时,将二级缓存NVMe SSD中读请求对应的数据加载至NVRAM中的数据块中存储,并修改所述数据块标识;

还用于将NVRAM中用于存储数据的缓存队列划分至少一个数据块,其中每个数据块包含有效数据部分和数据块的标识,所述数据块标识初始值为设定值;其中,在所述NVRAM中存储的读请求对应的数据块,若所述数据块是所述NVRAM中的缓存队列中最后一个数据块,且所述NVRAM中的缓存队列中所有数据块的标识均为相同时,将除最后一个数据块的其它数据块的标识设置为初始值,修改最后一个数据块的标识为设定值。

4.如权利要求3所述的设备,其特征在于,所述处理模块,具体用于根据所述NVRAM中数据块标识的数值,按照设定顺序访问每一数据块,获取存储的读请求对应的数据块。

5.一种计算机存储介质,其特征在于包括存储器和处理器,其中存储器用于存储计算机程序,所述处理器用于按照存储器中存储的计算机程序,执行上述权利要求1~2任一所述的数据读取方法。

说明书 :

一种数据读取方法、设备及计算机存储介质

技术领域

[0001] 本发明涉及通信技术领域,更具体地,本发明的涉及一种数据读取方法、设备及计算机存储介质。

背景技术

[0002] 本部分旨在为权利要求书中陈述的本发明的实施方式提供背景或上下文。此处的描述不因为包括在本部分中就承认是现有技术。
[0003] 传统数据库大部分采用小机和盘阵方式,但是随着互联网技术的发展,数据量和数据分析需求剧增,传统IOE架构不论性能和成本都难以为继。分布式架构、云计算等新技术,逐渐在新一代的数据库系统中得到应用,解决了计算性能需求,能够实现横向线性扩展,但是IO访问性能由于外围存储速度受限,一直是数据库系统的性能瓶颈,特别是针对OLTP在线交易型数据库,对IO时延要求很高,直接影响用户的最终体验。
[0004] 在现有的数据库系统中,采用的存储系统有两种方式:磁盘整列和分布式存储。磁盘整列存在机头性能瓶颈,不发线性扩展,需要一次为未来3-5年IT投资买单。分布式存储,采用基于x86服务器,在上面部署分布式存储软件,性能线性增长,在线灵活扩容。而目前分布式存储多采用全闪存或混合存储架构,对于性能最好的全闪存架构,IO延时是几百us,针对IO时延要求很高的应用,也会影响用户体验。因此,如何能够提高数据库的性能,解决磁盘低速的I0性能对数据库系统带来的影响,成为现有技术亟需解决的问题。

发明内容

[0005] 本发明提出了一种数据读取方法、设备及计算机存储介质,解决磁盘低速的I0性能对数据库系统带来的影响,从而提升数据库性能。
[0006] 一种数据读取方法,包括:在确定出接收到IO请求的类型是读请求时,判断非易失性随机访问存储器NVRAM中是否存储有所述读请求对应的数据;若判断结果为是,在所述NVRAM中获取存储的读请求对应的数据块,并修改所述数据块标识;若判断结果为否时,将二级缓存NVMe SSD中读请求对应的数据加载至NVRAM中的数据块中存储,并修改所述数据块标识。
[0007] 一种数据读取设备,包括:接收模块,用于接收IO请求;处理模块,用于在确定出接收到IO请求的类型是读请求时,判断非易失性随机访问存储器NVRAM中是否存储有所述读请求对应的数据;若判断结果为是,在所述NVRAM中获取存储的读请求对应的数据块,并修改所述数据块标识;若判断结果为否时,将二级缓存NVMe SSD中读请求对应的数据加载至NVRAM中的数据块中存储,并修改所述数据块标识。
[0008] 一种计算机存储介质,包括存储器和处理器,其中所述存储器用于存储计算机程序,所述处理器用于处理上述任一方法的处理步骤。
[0009] 通过采用上述技术方案,在确定出接收到IO请求的类型是读请求时,判断非易失性随机访问存储器NVRAM中是否存储有所述读请求对应的数据;若判断结果为是,在所述NVRAM中获取存储的读请求对应的数据块,并修改所述数据块标识;若判断结果为否时,将二级缓存NVMe SSD中读请求对应的数据加载至NVRAM中的数据块中存储,并修改所述数据块标识,在数据读取时,通过修改数据块标识,优先读取热点数据,从而能够提高数据库的性能,解决磁盘低速的I0性能对数据库系统带来的影响。

附图说明

[0010] 通过参考附图阅读下文的详细描述,本发明示例性实施方式的上述以及其他目的、特征和优点将变得易于理解。在附图中,以示例性而非限制性的方式示出了本发明的若干实施方式,其中:
[0011] 图1为本发明实施例提出的分布式数据库存储系统机构组成示意图;
[0012] 图2为本发明实施例提出的数据读取方法流程图之一;
[0013] 图3为本发明实施例提出的数据读取方法流程图之二;
[0014] 图4为本发明实施例提出的数据读取方法流程图之三;
[0015] 图5为本发明实施例提出的数据读取设备结构组成示意图。

具体实施方式

[0016] 下面将参考若干示例性实施方式来描述本发明的原理和精神。应当理解,给出这些实施方式仅仅是为了使本领域技术人员能够更好地理解进而实现本发明,而并非以任何方式限制本发明的范围。相反,提供这些实施方式是为了使本发明更加透彻和完整,并且能够将本发明的范围完整地传达给本领域的技术人员。
[0017] 本领域技术人员知道,本发明的实施方式可以实现为一种系统、装置、设备、方法或计算机程序产品。因此,本发明可以具体实现为以下形式,即:完全的硬件、完全的软件(包括固件、驻留软件、微代码等),或者硬件和软件结合的形式。
[0018] 根据本发明的实施方式,提出了一种数据读取方法、设备及计算机存储介质。
[0019] 此外,附图中的任何元素数量均用于示例而非限制,以及任何命名都仅用于区分,而不具有任何限制含义。
[0020] 下面参考本发明的若干代表性实施方式,详细阐释本发明的原理和精神。
[0021] 发明概述
[0022] 本发明人发现,现有的电商平台,数据存储无论是通过云平台实现,还是通过服务器集群实现,目前分布式存储多采用全闪存或混合存储架构,对于性能最好的全闪存架构,IO延时是几百us,针对IO时延要求很高的应用,也会影响用户体验。因此,如何能够提高数据库的性能,解决磁盘低速的I0性能对数据库系统带来的影响,成为现有技术亟需解决的问题
[0023] 有鉴于此,本发明实施例提供了一种数据读取方法,在确定出接收到IO请求的类型是读请求时,判断非易失性随机访问存储器(NVRAM,Non-Volati le Random Access Memory)中是否存储有所述读请求对应的数据;若判断结果为是,在NVRAM中获取存储的读请求对应的数据块,并修改数据块标识;若判断结果为否时,将二级缓存支持NVMe接口协议的固态硬盘(NVMe SSD,Non-Volatile Memory express)中读请求对应的数据加载至NVRAM中的数据块中存储,并修改数据块标识。
[0024] 在介绍了本发明的基本原理之后,下面具体介绍本发明的各种非限制性实施方式。
[0025] 应用场景总览
[0026] 在本发明提出的技术方案中,可以应用在各种不同场景中实现数据库性能提升,例如电商平台、银联平台、证券平台以及移动通信平台等,在此并不做具体的限定。
[0027] 如图1所示的系统架构,系统包括至少一个计算节点、Infiniband网络集群和若干存储节点。其中:
[0028] 计算节点包括至少两台计算服务器,用于数据库计算,安装有集群软件、数据库软件和操作系统。
[0029] Infiniband网络集群至少两台Infiniband交换机,冗余部署,用于实现数据高速互联,支持RDMA协议,具有高带宽、低延时特性。
[0030] 存储节点包括至少两台存储服务器,采用分布式架构,每台服务器配置NVRAM和NVMe SSD硬盘组成二级存储架构,解决IO瓶颈,提升数据库性能。
[0031] 示例性方法
[0032] 下面参考图1所示的系统架构,来描述根据本发明示例性实施方式。需要注意的是,上述应用场景仅是为了便于理解本发明的精神和原理而示出,本发明的实施方式在此方面不受任何限制。相反,本发明的实施方式可以应用于适用的任何场景。
[0033] 如图2所示,本发明实施例提出一种数据读取方法,其具体处理流程如下述:
[0034] 步骤21,在存储节点启动存储应用程序,用于处理接收到的IO请求。
[0035] 步骤22,在确定出接收到IO请求的类型是读请求时,判断NVRAM中是否存储有读请求对应的数据,如果判断结果为是,执行步骤23,反之,执行步骤24。
[0036] 步骤23,若判断结果为是,在NVRAM中获取存储的读请求对应的数据块,并修改数据块标识。
[0037] 根据NVRAM中数据块标识的数值,按照设定顺序访问每一数据块,获取存储的读请求对应的数据块。
[0038] 具体地,在本发明实施例提出的技术方案中,NVRAM中数据块标识的数值,是按照数据的访问热度进行设置,即访问热度高的数据块,其对应的数据块标识的数值也大与访问热度低的数据块标识的数值。
[0039] 进一步地,在NVRAM中获取存储的读请求对应的数据块,若数据块是NVRAM中的缓存队列中最后一个数据块,且NVRAM中的缓存队列中所有数据块标识均为相同时,将除最后一个数据块的其它数据块标识设置为初始值,修改最后一个数据块标识为设定值。
[0040] 这样可以有效的防止队列死锁。
[0041] 步骤24,若判断结果为否时,将二级缓存NVMe SSD中读请求对应的数据加载至NVRAM中的数据块中存储,并修改数据块标识。
[0042] 在上述步骤24之后,还可以包括,按照加载至NVRAM中的数据块中存储的与读请求对应的数据响应该读请求。
[0043] 可选地,如图3所示,在上述步骤21之前,还包括:
[0044] 步骤30,将NVRAM中用于存储数据的缓存队列划分至少一个数据块。
[0045] 其中每个数据块包含有效数据和数据块标识,数据块标识初始值为设定值。
[0046] 具体地,在本发明实施例提出的技术方案中,数据块标识初始值为0。
[0047] 可选地,在上述步骤23之后,如图4所示,还可以包括:
[0048] 步骤40,将数据块标识增加设定数值。
[0049] 具体地,在本发明实施例提出的技术方案中,数据块标识增加1。即该设定数值为1。
[0050] 基于图1所示的系统架构,以一实例进行详细阐述:
[0051] 首先,存储节点启动存储应用程序,用于处理接收到的IO请求。
[0052] NVRAM作为一级缓存。当CPU发出写IO请求,应用程序直接写入NVRAM一级缓存中,同时向CPU发出数据写完成信号,当写入的数据积累到一定程度,将数据顺序的写入到后端的NVMe SSD存储中,因此采用NVRAM后,整个系统的写数据速度得到提高。
[0053] 当CPU发出读IO请求,如果NVRAM中有数据时,应用程序直接从NVRAM中读取相应的数据块。如果NVRAM中没有要读的数据块时,应用程序去NVMe SSD加载数据,然后加入到NVRAM中,同时把后续数据读到NVRAM中,CPU随后访问这些数据时可以直接在NVRAM中命中。
[0054] 在本发明实施例提出的技术方案中,NVRAM读写缓存分离,读缓存满不影响写缓存,确保写性能均衡,同样,写缓存满不影响度缓存,确保读缓存性能均衡。写缓存镜像,保证可靠性。
[0055] NVRAM缓存大小是一定的,为了保证热点数据在NVRAM缓存命中率,缓存中的内容应该按一定的算法替换。本发明实施例提出的技术方案中,对NVRAM缓存改进。
[0056] NVRAM缓存组成一个缓存队列,对缓存队列进行初始化,每个数据块包括两部分:有效数据和一位标识符(即上文阐述的数据块标识)。初始化缓存队列,标识符初始值为0,数据块为空。
[0057] 当接收到读请求为查询数据A时,查询缓存队列没有数据,于是数据从磁盘读取数据顺序写入队列,然后再从缓存队列中读取数据,并将标识符设置为1。同理对于查询数据B,数据C。
[0058] 当缓存队列缓存最后一个数据N时,且之前缓存的所有数据块标识都为1时,为了防止产生死锁,将之前所有的缓存数据标识符置为0,数据N标识符设置为1。
[0059] 当查询数据N+1,此时N+1不在缓存队列中且缓存队列满,随机寻找标识符为0的数据块,将其替代,同时设置标识符为1。
[0060] 在队列扫描时,首先扫描标识符为1的数据块,然后在扫描标识符为0的数据块。标识符为1的数据块表示最近命中过的数据,这样可以增加热点数据的命中率。
[0061] 通过本发明实施例提出的数据读取方法,能够保证热点数据命中率,且不需要遍历全表,不需要每次将命中数据移动到队列头部,实现简单。
[0062] 相应地,本发明实施例提出一种数据读取设备,如图5所示,其包括接收模块501,处理模块502,其中:
[0063] 接收模块501,用于接收IO请求;
[0064] 处理模块502,用于在确定出接收到IO请求的类型是读请求时,判断非易失性随机访问存储器NVRAM中是否存储有所述读请求对应的数据;若判断结果为是,在所述NVRAM中获取存储的读请求对应的数据块,并修改所述数据块标识;若判断结果为否时,将二级缓存NVMe SSD中读请求对应的数据加载至NVRAM中的数据块中存储,并修改所述数据块标识。
[0065] 所述处理模块502,还用于将NVRAM中用于存储数据的缓存队列划分至少一个数据块,其中每个数据块包含有效数据和数据块标识,所述数据块标识初始值为设定值。
[0066] 所述处理模块502,具体用于根据所述NVRAM中数据块标识的数值,按照设定顺序访问每一数据块,获取存储的读请求对应的数据块。
[0067] 所述处理模块502,具体用于在所述NVRAM中获取存储的读请求对应的数据块,若所述数据块是所述NVRAM中的缓存队列中最后一个数据块,且所述NVRAM中的缓存队列中所有数据块标识均为相同时,将除最后一个数据块的其它数据块标识设置为初始值,修改最后一个数据块标识为设定值。
[0068] 应当注意,尽管在上文详细描述中提及了装置的若干单元或子单元,但是这种划分仅仅是示例性的并非强制性的。实际上,根据本发明的实施方式,上文描述的两个或更多单元的特征和功能可以在一个单元中具体化。反之,上文描述的一个单元的特征和功能可以进一步划分为由多个单元来具体化。
[0069] 相应地,本发明实施例还提出一种计算机存储机制,该存储介质包括存储器和处理器,存储器用于存储计算机程序,处理器用于按照存储器中存储的计算机程序执行数据读取方法的步骤。
[0070] 此外,尽管在附图中以特定顺序描述了本发明方法的操作,但是,这并非要求或者暗示必须按照该特定顺序来执行这些操作,或是必须执行全部所示的操作才能实现期望的结果。附加地或备选地,可以省略某些步骤,将多个步骤合并为一个步骤执行,和/或将一个步骤分解为多个步骤执行。
[0071] 虽然已经参考若干具体实施方式描述了本发明的精神和原理,但是应该理解,本发明并不限于所公开的具体实施方式,对各方面的划分也不意味着这些方面中的特征不能组合以进行受益,这种划分仅是为了表述的方便。本发明旨在涵盖所附权利要求的精神和范围内所包括的各种修改和等同布置。