CN109388596B - 一种数据操作方法和装置 - Google Patents

一种数据操作方法和装置 Download PDF

Info

Publication number
CN109388596B
CN109388596B CN201811148811.0A CN201811148811A CN109388596B CN 109388596 B CN109388596 B CN 109388596B CN 201811148811 A CN201811148811 A CN 201811148811A CN 109388596 B CN109388596 B CN 109388596B
Authority
CN
China
Prior art keywords
access request
access
nvme interface
data operation
queue
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
Application number
CN201811148811.0A
Other languages
English (en)
Other versions
CN109388596A (zh
Inventor
王立
张振杰
周健
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Shanghai Is According To Figure Network Technology Co Ltd
Original Assignee
Shanghai Is According To Figure Network Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Shanghai Is According To Figure Network Technology Co Ltd filed Critical Shanghai Is According To Figure Network Technology Co Ltd
Priority to CN201811148811.0A priority Critical patent/CN109388596B/zh
Priority to SG10201810689YA priority patent/SG10201810689YA/en
Publication of CN109388596A publication Critical patent/CN109388596A/zh
Application granted granted Critical
Publication of CN109388596B publication Critical patent/CN109388596B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1605Handling requests for interconnection or transfer for access to memory bus based on arbitration
    • G06F13/1642Handling requests for interconnection or transfer for access to memory bus based on arbitration with request queuing

Abstract

本发明公开了一种数据操作方法和装置,所述方法包括:确定当前时刻是否到达NVMe接口的完成队列的查询时刻;所述NVMe接口的完成队列中存储有NVMe接口处理IO访问请求后的处理结果;若未到达所述查询时刻,则从NVMe接口的待提交队列中获取第一IO访问请求;所述待提交队列中存储有状态为就绪状态的数据操作请求的IO访问请求;将所述第一IO访问请求发给所述NVMe接口,并将所述第一IO访问请求对应的第一数据操作请求的状态标记为等待状态;返回确定当前时刻是否到达NVMe接口的完成队列的查询时刻的步骤,直至到达所述查询时刻或所述NVMe接口的待提交队列中无IO访问请求。

Description

一种数据操作方法和装置
技术领域
本发明涉及聚类算法领域,尤其涉及一种数据操作方法和装置。
背景技术
近年来,存储硬件不断演化,产生出基于NAND Flash的SSD(Solid State Disk)、PCM到基于3D-XPoint Optane等新的存储介质。这些新的存储介质展现出远超过磁盘的数据访问性能。
为提高数据访问效率,比较常用的方式是将多个IO操作并行处理,从而最大化的利用SSD内部的高并发能力,提升索引效率。然而,这种方式采用同步IO的方式进行数据块的读写操作,需要同时运行大量的索引线程,造成显著的进程切换代价和操作系统线程调度代价。造成了大量的CPU浪费,数据读写效率很低。
发明内容
本发明实施例通过提供一种数据操作方法和装置,解决了现有技术中,无法利用新的存储介质的高并发能力,导致整个数据访问过程效率低的问题。
本发明实施例提供一种数据操作方法,所述方法包括:
确定当前时刻是否到达NVMe接口的完成队列的查询时刻;所述NVMe接口的完成队列中存储有NVMe接口处理IO访问请求后的处理结果;若未到达所述查询时刻,则从NVMe接口的待提交队列中获取第一IO访问请求;所述待提交队列中存储有状态为就绪状态的数据操作请求的IO访问请求;
将所述第一IO访问请求发给所述NVMe接口,并将所述第一IO访问请求对应的第一数据操作请求的状态标记为等待状态;
返回确定当前时刻是否到达NVMe接口的完成队列的查询时刻的步骤,直至到达所述查询时刻或所述NVMe接口的待提交队列中无IO访问请求。
一种可能的实现方式,所述方法还包括:
若到达所述查询时刻,则从所述NVMe接口的完成队列中查询是否有IO访问请求的处理结果;
若存在n个IO访问请求的处理结果,且所述NVMe接口的待提交队列中包括m个IO访问请求,则从所述NVMe接口的待提交队列中获取至少n个IO访问请求;m大于等于n;n,m为正整数;
将所述至少n个IO访问请求发给所述NVMe接口,并将所述至少n个IO访问请求对应的数据操作请求的状态标记为等待状态。
一种可能的实现方式,所述方法还包括,针对所述n个IO访问请求的处理结果中的每个IO访问请求的处理结果,执行:
确定第二IO访问请求对应的第二数据操作请求是否执行完毕,若未执行完毕,则将所述第二数据操作请求的状态设置为就绪状态;所述第二IO访问请求为所述n个IO访问请求中的任一个;
根据所述第二IO访问请求的处理结果和所述第二数据操作请求,生成第三IO访问请求;
将所述第三IO访问请求放入所述NVMe接口的待提交队列中。
一种可能的实现方式,所述数据操作请求为针对B+树的索引访问请求;所述确定第二IO访问请求对应的第二数据操作请求是否执行完毕,包括:
确定所述第二IO访问请求的处理结果是否为B+树中的叶子节点;若是,则确定所述第二IO访问请求对应的第二数据操作请求执行完毕;若否,则确定所述第二IO访问请求对应的第二数据操作请求未执行完毕。
一种可能的实现方式,所述查询时刻是根据预设时间段向所述NVMe接口提交的IO访问请求的数量,以及线性回归模型确定的。
本发明实施例提供一种数据操作装置,所述装置包括:
处理单元,用于确定当前时刻是否到达NVMe接口的完成队列的查询时刻;所述NVMe接口的完成队列中存储有NVMe接口处理IO访问请求后的处理结果;若未到达所述查询时刻,则从NVMe接口的待提交队列中获取第一IO访问请求;所述提交队列中存储有状态为就绪状态的数据操作请求的IO访问请求;
收发单元,用于将所述第一IO访问请求发给所述NVMe接口;
所述处理单元,还用于将所述第一IO访问请求对应的第一数据操作请求的状态标记为等待状态;返回确定当前时刻是否到达NVMe接口的完成队列的查询时刻的步骤,直至到达所述查询时刻或所述NVMe接口的待提交队列中无IO访问请求。
一种可能的实现方式,所述处理单元还用于:
若到达所述查询时刻,则从所述NVMe接口的完成队列中查询是否有IO访问请求的处理结果;若存在n个IO访问请求的处理结果,且所述NVMe接口的待提交队列中包括m个IO访问请求,则从所述NVMe接口的待提交队列中获取至少n个IO访问请求;m大于等于n;n,m为正整数;将所述至少n个IO访问请求发给所述NVMe接口,并将所述至少n个IO访问请求对应的数据操作请求的状态标记为等待状态。
一种可能的实现方式,所述处理单元还用于,针对所述n个IO访问请求的处理结果中的每个IO访问请求的处理结果,执行:
确定第二IO访问请求对应的第二数据操作请求是否执行完毕,若未执行完毕,则将所述第二数据操作请求的状态设置为就绪状态;所述第二IO访问请求为所述n个IO访问请求中的任一个;根据所述第二IO访问请求的处理结果和所述第二数据操作请求,生成第三IO访问请求;将所述第三IO访问请求放入所述NVMe接口的待提交队列中。
一种可能的实现方式,所述数据操作请求为针对b+树的索引访问请求;所述处理单元,具体用于:
确定所述第二IO访问请求的处理结果是否为b+树中的叶子节点;若是,则确定所述第二IO访问请求对应的第二数据操作请求执行完毕;若否,则确定所述第二IO访问请求对应的第二数据操作请求未执行完毕。
一种可能的实现方式,所述查询时刻是根据预设时间段向所述NVMe接口提交的IO访问请求的数量,以及线性回归模型确定的。
本发明实施例提供了一种数据查询装置,所述装置包括:
至少一个处理器,以及
与所述至少一个处理器连接的存储器;
其中,所述存储器存储有可被所述至少一个处理器执行的指令,所述至少一个处理器通过执行所述存储器存储的指令,执行如第一方面实施例所述的方法。
本发明实施例提供了一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现如第一方面实施例所述方法的步骤。
本发明实施例中提供的一个或多个技术方案,至少具有如下技术效果或优点:
本发明实施例中的NVMe接口,可以将接收IO访问请求的提交队列和处理完IO访问请求的完成队列分离开来,通过设置数据操作请求的状态,若未到达所述查询时刻,可以将多个就绪状态的数据操作请求生成IO访问请求,并将提交IO访问请求的数据操作请求的状态设置为等待状态,实现了异步的IO访问请求的提交,在到达查询时刻后,到NVMe接口的完成队列中确定完成的IO访问请求的处理结果,进而确定对应的数据操作请求的下一步处理。从而使得PA-Tree在只需要一个或少数几个索引线程,在单位时间内向NVMe接口提交大量的IO访问请求,并根据查询时刻,异步处理多个数据操作请求。在降低IO访问CPU消耗的同时,避免引入进程切换代价,从而显著降低CPU开销、有效的提升索引的性能、充分发挥新硬件巨大的IO并行处理能力,进而提升了数据操作的性能。
附图说明
图1为本发明实施例提供的数据操作方法的流程示意图;
图2为本发明实施例提供的数据操作方法的流程示意图;
图3为本发明实施例提供的数据操作方法的流程示意图;
图4为本发明实施例提供的数据操作方法的流程示意图;
图5a为本发明实施例提供的数据操作方法的流程示意图;
图5b为本发明实施例提供的数据操作方法的流程示意图;
图6为本发明实施例提供的数据操作方法的流程示意图;
图7为本发明实施例提供的数据操作装置的结构示意图;
图8为本发明实施例提供的数据访问装置的结构示意图。
具体实施方式
为了更好的理解上述技术方案,下面将结合说明书附图以及具体的实施方式对上述技术方案进行详细的说明。
B+树索引是计算机领域内常见的数据索引结构,用来对数据或者文件进行有序的组织,从而提供高效的数据查询。B+树是由若干个节点组成的树状结构,其中最底层的节点叫做叶子节点,负责按照数据的key值有序的存储实际的数据;其余的节点称为非叶节点,每一个非叶节点存储着下一层孩子节点的key值边界。当要插入、删除或者查询时,根据涉及的key值,索引算法从B+树的最顶层节点(称为root节点)开始,根据节点中key值得边界,逐步访问对应的子节点,直至访问到叶子节点,从而完成对应的插入、删除或者查询。随着数据的插入或者删除,索引算法会对交空的节点进行合并,对溢出的节点进行分裂,从而保证B+树的平衡。
查询操作所引起的IO操作以及定位key值的计算代价决定了查询性能;而删除、插入操作所引起的节点合并和分裂所引起的额外的IO操作代价决定了删除和插入的性能。因此,查询和数据更新的性能,是B+技术的关键指标。
近年来,存储硬件不断演化,产生出NAND Flash、PCM到基于3D-XPoint Optane等新的存储介质,展现出远超过磁盘的数据访问性能。为了最大化使用这项存储介质的数据访问带宽,NVMe成为这些新硬件的标准接口。与传统的接口不同,NVMe接口的IO队列的数目巨大,可以同时处理大量的IO操作,并发能力很强。
为提高B+树的索引的性能,在数据结构方面,可以采用基于日志的机制,将更新操作转为以追加的方式写日志,从而避免在Flash中昂贵的替换更新(In-place update)代价。在访问方式方面,常用的方式是将若干个IO操作拼装到一起,同步进行,从而最大化的利用Flash内部的高并发能力,提升索引效率。B+树索引中通过批量更新的方式,提升索引的更新性能,然而在批量更新之前,待更新的数据是没法通过索引访问的,限制了批量更新的在实际系统中适用范围。
然而,上述两种方式都属于图1中的Concurrent B+tree,采用同步IO的方式进行数据块的读写操作。需要引入大量线程,以充分发挥NVMe接口下的存储介质的内部IO处理的并行能力。而同时运行大量的索引线程,通常会超过CPU物理核数目,进而在CPU处理不同线程时,需要频繁的进行进程的切换,造成显著的进程切换代价和操作系统线程调度的代价。既造成大量的CPU浪费,又不能恰当通过NVMe接口发挥存储介质的内部并行IO能力,导致数据访问接口成为了显著的性能瓶颈。
基于上述问题,本发明实施例提供了一种数据操作方法,如图2所示,所述方法包括:
步骤201:确定当前时刻是否到达NVMe接口的完成队列的查询时刻;
其中,所述NVMe接口的完成队列中存储有NVMe接口处理IO访问请求后的处理结果;
步骤202:若未到达所述查询时刻,则从NVMe接口的待提交队列中获取第一IO访问请求;
其中,所述提交队列中存储有状态为就绪状态的数据操作请求的IO访问请求;
步骤203:将所述第一IO访问请求发给所述NVMe接口,并将所述第一IO访问请求对应的第一数据操作请求的状态标记为等待状态;
步骤204:返回确定当前时刻是否到达NVMe接口的完成队列的查询时刻的步骤,直至到达所述查询时刻或所述NVMe接口的待提交队列中无IO访问请求。
需要说明的是,所述数据操作请求可以包括查询操作请求、插入操作请求、更新操作请求和删除操作请求等。
本发明实施例中的NVMe接口,将提交队列和完成队列分离开来。通过设置数据操作请求的状态,若未到达所述查询时刻,可以将多个就绪状态的数据操作请求生成IO访问请求,并将提交IO访问请求的数据操作请求的状态设置为等待状态,实现了异步的IO访问请求的提交,在到达查询时刻后,到NVMe接口的完成队列中确定完成的IO访问请求的处理结果,进而确定对应的数据操作请求的下一步处理。从而使得PA-tree在只需要一个或少数几个索引线程,在单位时间内可向NVMe接口提交大量的IO访问请求,并根据查询时刻,异步处理多个数据操作请求。在降低IO访问CPU消耗的同时,在不引入进程切换代价时,显著降低CPU开销,有效的提升了索引的性能,充分发挥新硬件巨大的IO并行处理能力,进而提升了数据操作的性能。
如图3所示,本发明实施例中,对数据操作请求引入了状态,以便对数据操作请求实行的进行调度。通过状态的设置,可以将数据操作请求的执行过程划分为若干个状态的转化过程。每一个转化过程都实现数据操作请求从一个状态到另外一个状态的转化。数据操作请求可以包括:就绪状态,等待状态,完成状态。
当未到达查询时刻时,索引线程可以连续处理多个处于就绪状态的数据操作请求,并将该数据操作请求从当前的就绪状态转移到下一个状态(等待状态或完成状态)。
当一个数据操作请求需要IO访问时,线程会向NVMe接口的提交队列发送一个IO访问请求,并将这个数据操作请求的状态设置为等待状态。
如图4所示,在具体实施过程中,等待状态的数据操作请求可以通过为数据操作请求加锁的方式设置,例如获取特定索引节点的锁的过程中,该数据操作请求可以认为处于等待状态。
通过上述方法,当一个数据操作请求提交了IO访问请求,进入等待状态后,线程会转而执行其他处于就绪状态的数据操作请求,从而使得在到达查询时刻之前的同一时间段内,同一线程可以提交多个异步地IO访问请求,既能充分发挥NVM的并行数据处理能力,又可以避免多线程所引起的加锁和线程切换代价。
若到达所述查询时刻,则从所述NVMe接口的完成队列中查询是否有IO访问请求的处理结果;
若存在n个IO访问请求的处理结果,且所述NVMe接口的待提交队列中包括m个IO访问请求,则从所述NVMe接口的待提交队列中获取至少n个IO访问请求;m大于等于n;n,m为正整数;
将所述至少n个IO访问请求发给所述NVMe接口,并将所述至少n个IO访问请求对应的数据操作请求的状态标记为等待状态。
在一种具体的实施方式中,针对所述n个IO访问请求的处理结果中的每个IO访问请求的处理结果,执行:
确定第二IO访问请求对应的第二数据操作请求是否执行完毕,若未执行完毕,则将所述第二数据操作请求的状态设置为就绪状态;所述第二IO访问请求为所述n个IO访问请求中的任一个;根据所述第二IO访问请求的处理结果和所述第二数据操作请求,生成第三IO访问请求;将所述第三IO访问请求放入所述NVMe接口的待提交队列中。
如图3所示,在一种具体的实施方式中,所述数据操作请求为针对b+树的索引访问请求;所述确定第二IO访问请求对应的第二数据操作请求是否执行完毕,包括:
确定所述第二IO访问请求的处理结果是否为b+树中的叶子节点;若是,则确定所述第二IO访问请求对应的第二数据操作请求执行完毕;若否,则确定所述第二IO访问请求对应的第二数据操作请求未执行完毕。
在到达查询时刻,探测NVMe接口的完成队列,确定完成的IO访问请求对应的等待状态的数据操作请求已经完成的,则将对应的索引操作设置为完成状态;或者,等待状态的索引操作对应的IO访问请求完成且IO访问请求的结果为非叶子节点,需要生成新的IO访问请求,则将该数据操作请求的状态修改为可被执行的就绪状态。
下面以数据操作请求为B+树索引操作请求为例,图5a示意性的示出了一个索引操作请求从创建到执行完毕的状态转化过程,包括:
步骤501:根据索引操作请求,将该索引搜索操作的状态设置为初始状态;
步骤502:通过定位根节点,该索引操作从初始状态I状态转化为NVMe读就绪状态P;
步骤503:通过执行处于P状态的索引操作请求,向NVMe接口提交第一IO访问请求,并将所述索引操作请求的状态设置为等待状态S;
在具体实施过程中,等待状态的索引操作可以通过为索引操作加锁的方式设置,例如获取特定索引节点的锁的过程中,该索引操作可以认为处于等待状态。当IO访问请求发到提交队列后,索引线程不会等待,而是直接执行下一个索引操作,从而会向提交队列提交更多的IO访问请求。
步骤504:当到达查询时刻,索引线程通过访问NVMe接口的完成队列探测到所述索引操作请求对应的IO访问请求已经完成,从而将所述索引操作转为为NVMe读完成状态C;
步骤505:索引线程继续执行该索引操作,若确定IO访问请求的处理结果为访问到的节点为叶子节点,则索引线程搜索该叶子节点,从而完成整个索引搜索,将所述索引操作请求的状态设置为完成状态T;
步骤506:索引线程继续执行该索引操作,若确定IO访问请求的处理结果为访问到的节点为非叶子节点,则索引线程搜索所述非叶子节点,并定位下一层的孩子节点,并将所述索引操作请求的状态转化为NVMe读就绪状态P。
如图5b所示,C1,C2…Cn为n个不同的操作请求;就绪状态可以包括上述实施例中的初始状态I,NVMe读就绪状态P,NVMe读完成状态C;当未到达查询时刻时,索引线程会对就绪状态下的索引操作请求进行处理,不处理等待状态的索引操作请求。
由于NVMe采用的是poll-mode,因此索引线程需要主动探测完成队列以发现已经完成的IO访问请求。选择恰当探测操作的频率,是PA-tree的关键。如果探测地过于频繁,会有大量的探测会不获得任何完成的IO,之后浪费CPU、干扰NVMe的执行;反之,如果探测不及时,则会有已经完成的IO得不到及时响应,增加索引操作的延迟、降低索引的吞吐量。
为提升数据操作的性能,本发明实施例提供一种确定查询时刻的方法,包括:
所述查询时刻是根据预设时间段向所述NVMe接口提交的IO访问请求的数量以及线性回归模型确定的。
当然,也可以根据其他模型实现对查询时刻的预测,在此不做限定。
在具体实施过程中,可以采用线性回归的方法来预测NVMe接口的完成队列上有已经完成的IO访问请求的查询时刻,使得只有当完成队列中存在IO访问请求时,线程才对NVMe的完成队列进行查询。
举例来说,预设时间段可以为最近t微秒;将最近t微秒切分为k个分片,定义一个向量w=[w1,w2,…,wk],其中wi是在第i个时间分片中向NVMe提交的写IO访问请求的数量。定义一个向量r=[r1,r2,…,rk],其中ri表示在第i个时间分片内向NVMe提交的读IO访问请求的数量。
线性回归模型将T=r||w作为输入,预测当前时刻出现在完成队列上的写IO访问请求的数目w0和读IO访问请求的数目r0:
(w0,r0)=T·β
其中β是是一个2k×2维的参数矩阵。一种可能的实现方式,t=1000,n=20。
一种可能的实现方式,可以将查询时刻确定为预测写IO访问请求的数目w0和/或读IO访问请求的数目r0都大于N的时刻。N的取值可以根据实际需要确定,在此不做限定。
本发明实施例提供一种数据操作的方法,如图6所示,包括:
步骤601:执行一个处于就绪状态的数据操作请求,直至该数据操作请求执行完毕或者进入等待状态;
步骤602:根据模型确定是否到达查询时刻,如果有执行步骤603;否则执行步骤605;
当然,还可以根据模型判断当前时刻是否有执行完成的IO访问请求,若确定预测值大于0,则执行步骤603;否则执行步骤605;
步骤603:探测NVMe的完成队列,并将完成的IO对应的数据操作请求标记为完成状态;执行步骤604;
步骤604:判断是否有处于就绪状态的数据操作请求;如果有,则执行步骤601;否则执行步骤605;
步骤605:根据模型,预测在下一查询时刻,若下一查询时刻超过预设阈值,则执行步骤606;否则,执行步骤601;
一种可能的实现方式,可以根据模型,预测在未来预设阈值的时刻是否有完成的IO访问请求,如果有,则执行步骤601;否则执行步骤606;
步骤606:休眠CPU t毫秒后,执行步骤601。
本发明实施例中,通过NVMe接口,实现了异步的B+tree索引的数据操作。相比现有技术,由于采用了异步的IO提交方式,从而使得PA-tree在只需要一个或少数几个索引线程的同时,即可以向NVMe接口提交大量的IO访问请求,在不引入进程切换代价时,显著降低CPU开销,有效的提升了索引的性能,进而提升了数据操作的性能。
在异步的B+tree访问技术中,通过一个索引线程交替性的执行多个索引操作,并在当为正在执行的索引操作提交IO访问请求后,立即切换到处理下一个处于就绪状态的索引操作,具有更低的CPU消耗,更高的索引性能。本发明实施例中,保证多个异步执行的索引操作交替工作的情况下索引结构的一致性的同时,最小化索引算子状态迁移代价。采用机器学习算法,预测IO的完成情况,从而降低NVMe完成队列探测的频率,提升探测的准确性,对实际应用中工作负载的波动具有自适应性。
基于相同的发明构思,如图7所示,本发明实施例提供一种数据操作装置,所述装置包括:
处理单元701,用于确定当前时刻是否到达NVMe接口的完成队列的查询时刻;所述NVMe接口的完成队列中存储有NVMe接口处理IO访问请求后的处理结果;若未到达所述查询时刻,则从NVMe接口的待提交队列中获取第一IO访问请求;所述提交队列中存储有状态为就绪状态的数据操作请求的IO访问请求;
收发单元702,用于将所述第一IO访问请求发给所述NVMe接口;
所述处理单元701,还用于将所述第一IO访问请求对应的第一数据操作请求的状态标记为等待状态;返回确定当前时刻是否到达NVMe接口的完成队列的查询时刻的步骤,直至到达所述查询时刻或所述NVMe接口的待提交队列中无IO访问请求。
一种可能的实现方式,所述处理单元701还用于:
若到达所述查询时刻,则从所述NVMe接口的完成队列中查询是否有IO访问请求的处理结果;若存在n个IO访问请求的处理结果,且所述NVMe接口的待提交队列中包括m个IO访问请求,则从所述NVMe接口的待提交队列中获取至少n个IO访问请求;m大于等于n;将所述至少n个IO访问请求发给所述NVMe接口,并将所述至少n个IO访问请求对应的数据操作请求的状态标记为等待状态。
一种可能的实现方式,所述处理单元701还用于,针对所述n个IO访问请求的处理结果中的每个IO访问请求的处理结果,执行:
确定第二IO访问请求对应的第二数据操作请求是否执行完毕,若未执行完毕,则将所述第二数据操作请求的状态设置为就绪状态;所述第二IO访问请求为所述n个IO访问请求中的任一个;根据所述第二IO访问请求的处理结果和所述第二数据操作请求,生成第三IO访问请求;将所述第三IO访问请求放入所述NVMe接口的待提交队列中。
一种可能的实现方式,所述数据操作请求为针对b+树的索引访问请求;所述处理单元701,具体用于:
确定所述第二IO访问请求的处理结果是否为b+树中的叶子节点;若是,则确定所述第二IO访问请求对应的第二数据操作请求执行完毕;若否,则确定所述第二IO访问请求对应的第二数据操作请求未执行完毕。
一种可能的实现方式,所述查询时刻是根据预设时间段向所述NVMe接口提交的IO访问请求的数量,以及线性回归模型确定的。
如图8所示,基于同一发明构思,本发明一实施例提供一种数据操作设备,该数据操作设备包括:至少一个处理器801,处理器801用于执行存储器中存储的计算机程序时实现本发明实施例提供的如图2所示的数据操作方法的步骤。
可选的,处理器801具体可以是中央处理器、特定应用集成电路(英文:Application Specific Integrated Circuit,简称:ASIC),可以是一个或多个用于控制程序执行的集成电路。
可选的,该数据操作设备还包括与至少一个处理器连接的存储器802,存储器802可以包括具有NVMe接口的存储介质;例如,具有NVMe接口的SSD等。存储器802用于存储处理器801运行时所需的数据,即存储有可被至少一个处理器801执行的指令,至少一个处理器801通过执行存储器802存储的指令,执行如图2所示的方法。其中,存储器802的数量为一个或多个。其中,存储器802在图8中一并示出。
其中,收发单元701和处理单元702所对应的实体设备均可以是前述的处理器801。该数据操作设备可以用于执行图2所示的实施例所提供的方法。因此关于该设备中各功能模块所能够实现的功能,可参考图2所示的实施例中的相应描述,不多赘述。
本发明实施例还提供一种计算机存储介质,其中,计算机存储介质存储有计算机指令,当计算机指令在计算机上运行时,使得计算机执行如图2所述的方法。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本发明所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器(processor)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:通用串行总线闪存盘(Universal Serial Bus flash disk)、移动硬盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。

Claims (12)

1.一种数据操作方法,其特征在于,所述方法包括:
确定当前时刻是否到达NVMe接口的完成队列的查询时刻;所述NVMe接口的完成队列中存储有NVMe接口处理IO访问请求后的处理结果;若未到达所述查询时刻,则从NVMe接口的待提交队列中获取第一IO访问请求;所述待提交队列中存储有状态为就绪状态的数据操作请求的IO访问请求;
将所述第一IO访问请求发给所述NVMe接口,并将所述第一IO访问请求对应的第一数据操作请求的状态标记为等待状态;
返回确定当前时刻是否到达NVMe接口的完成队列的查询时刻的步骤,直至到达所述查询时刻或所述NVMe接口的待提交队列中无IO访问请求。
2.如权利要求1中所述的数据操作方法,其特征在于,所述方法还包括:
若到达所述查询时刻,则从所述NVMe接口的完成队列中查询是否有IO访问请求的处理结果;
若存在n个IO访问请求的处理结果,且所述NVMe接口的待提交队列中包括m个IO访问请求,则从所述NVMe接口的待提交队列中获取至少n个IO访问请求;m大于等于n;n,m为正整数;
将所述至少n个IO访问请求发给所述NVMe接口,并将所述至少n个IO访问请求对应的数据操作请求的状态标记为等待状态。
3.如权利要求2所述的方法,其特征在于,所述方法还包括,针对所述n个IO访问请求的处理结果中的每个IO访问请求的处理结果,执行:
确定第二IO访问请求对应的第二数据操作请求是否执行完毕,若未执行完毕,则将所述第二数据操作请求的状态设置为就绪状态;所述第二IO访问请求为所述n个IO访问请求中的任一个;
根据所述第二IO访问请求的处理结果和所述第二数据操作请求,生成第三IO访问请求;
将所述第三IO访问请求放入所述NVMe接口的待提交队列中。
4.如权利要求3所述的方法,其特征在于,所述数据操作请求为针对B+树的索引访问请求;所述确定第二IO访问请求对应的第二数据操作请求是否执行完毕,包括:
确定所述第二IO访问请求的处理结果是否为B+树中的叶子节点;若是,则确定所述第二IO访问请求对应的第二数据操作请求执行完毕;若否,则确定所述第二IO访问请求对应的第二数据操作请求未执行完毕。
5.如权利要求1-4任一项所述的方法,其特征在于,所述查询时刻是根据预设时间段向所述NVMe接口提交的IO访问请求的数量,以及线性回归模型确定的。
6.一种数据操作装置,其特征在于,所述装置包括:
处理单元,用于确定当前时刻是否到达NVMe接口的完成队列的查询时刻;所述NVMe接口的完成队列中存储有NVMe接口处理IO访问请求后的处理结果;若未到达所述查询时刻,则从NVMe接口的待提交队列中获取第一IO访问请求;所述提交队列中存储有状态为就绪状态的数据操作请求的IO访问请求;
收发单元,用于将所述第一IO访问请求发给所述NVMe接口;
所述处理单元,还用于将所述第一IO访问请求对应的第一数据操作请求的状态标记为等待状态;返回确定当前时刻是否到达NVMe接口的完成队列的查询时刻的步骤,直至到达所述查询时刻或所述NVMe接口的待提交队列中无IO访问请求。
7.如权利要求6中所述的数据操作装置,其特征在于,所述处理单元还用于:
若到达所述查询时刻,则从所述NVMe接口的完成队列中查询是否有IO访问请求的处理结果;若存在n个IO访问请求的处理结果,且所述NVMe接口的待提交队列中包括m个IO访问请求,则从所述NVMe接口的待提交队列中获取至少n个IO访问请求;m大于等于n;n,m为正整数;将所述至少n个IO访问请求发给所述NVMe接口,并将所述至少n个IO访问请求对应的数据操作请求的状态标记为等待状态。
8.如权利要求7所述的装置,其特征在于,所述处理单元还用于,针对所述n个IO访问请求的处理结果中的每个IO访问请求的处理结果,执行:
确定第二IO访问请求对应的第二数据操作请求是否执行完毕,若未执行完毕,则将所述第二数据操作请求的状态设置为就绪状态;所述第二IO访问请求为所述n个IO访问请求中的任一个;根据所述第二IO访问请求的处理结果和所述第二数据操作请求,生成第三IO访问请求;将所述第三IO访问请求放入所述NVMe接口的待提交队列中。
9.如权利要求8所述的装置,其特征在于,所述数据操作请求为针对b+树的索引访问请求;所述处理单元,具体用于:
确定所述第二IO访问请求的处理结果是否为b+树中的叶子节点;若是,则确定所述第二IO访问请求对应的第二数据操作请求执行完毕;若否,则确定所述第二IO访问请求对应的第二数据操作请求未执行完毕。
10.如权利要求6-9任一项所述的装置,其特征在于,所述查询时刻是根据预设时间段向所述NVMe接口提交的IO访问请求的数量,以及线性回归模型确定的。
11.一种数据查询装置,其特征在于,所述装置包括:
至少一个处理器,以及
与所述至少一个处理器连接的存储器;
其中,所述存储器存储有可被所述至少一个处理器执行的指令,所述至少一个处理器通过执行所述存储器存储的指令,执行如权利要求1-5任一项所述的方法。
12.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1-5中任一项所述方法的步骤。
CN201811148811.0A 2018-09-29 2018-09-29 一种数据操作方法和装置 Active CN109388596B (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN201811148811.0A CN109388596B (zh) 2018-09-29 2018-09-29 一种数据操作方法和装置
SG10201810689YA SG10201810689YA (en) 2018-09-29 2018-11-29 A data operation method and device

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201811148811.0A CN109388596B (zh) 2018-09-29 2018-09-29 一种数据操作方法和装置

Publications (2)

Publication Number Publication Date
CN109388596A CN109388596A (zh) 2019-02-26
CN109388596B true CN109388596B (zh) 2019-12-31

Family

ID=65419146

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201811148811.0A Active CN109388596B (zh) 2018-09-29 2018-09-29 一种数据操作方法和装置

Country Status (2)

Country Link
CN (1) CN109388596B (zh)
SG (1) SG10201810689YA (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111177163A (zh) * 2019-12-09 2020-05-19 国电南瑞科技股份有限公司 一种面向时标数据的数据访问方法、装置及存储介质

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104951252A (zh) * 2015-06-12 2015-09-30 联想(北京)有限公司 一种数据访问方法及PCIe存储设备
CN106469198A (zh) * 2016-08-31 2017-03-01 华为技术有限公司 键值存储方法、装置及系统
CN106469126A (zh) * 2015-08-12 2017-03-01 北京忆恒创源科技有限公司 处理io请求的方法及其存储控制器
CN107346265A (zh) * 2016-05-05 2017-11-14 北京忆恒创源科技有限公司 实现QoS的方法与装置
CN108304272A (zh) * 2018-01-19 2018-07-20 深圳神州数码云科数据技术有限公司 一种数据io请求的处理方法及装置

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6448571B2 (ja) * 2016-03-08 2019-01-09 東芝メモリ株式会社 ストレージシステム、情報処理システムおよび制御方法

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104951252A (zh) * 2015-06-12 2015-09-30 联想(北京)有限公司 一种数据访问方法及PCIe存储设备
CN106469126A (zh) * 2015-08-12 2017-03-01 北京忆恒创源科技有限公司 处理io请求的方法及其存储控制器
CN107346265A (zh) * 2016-05-05 2017-11-14 北京忆恒创源科技有限公司 实现QoS的方法与装置
CN106469198A (zh) * 2016-08-31 2017-03-01 华为技术有限公司 键值存储方法、装置及系统
CN108304272A (zh) * 2018-01-19 2018-07-20 深圳神州数码云科数据技术有限公司 一种数据io请求的处理方法及装置

Also Published As

Publication number Publication date
CN109388596A (zh) 2019-02-26
SG10201810689YA (en) 2020-04-29

Similar Documents

Publication Publication Date Title
Chen et al. {SpanDB}: A fast,{Cost-Effective}{LSM-tree} based {KV} store on hybrid storage
US9575984B2 (en) Similarity analysis method, apparatus, and system
US10534547B2 (en) Consistent transition from asynchronous to synchronous replication in hash-based storage systems
US11132383B2 (en) Techniques for processing database tables using indexes
EP2913768A1 (en) Method and database engine for recording transaction log
EP3368989B1 (en) Intelligent coded memory architecture with enhanced access scheduler
US11360705B2 (en) Method and device for queuing and executing operation commands on a hard disk
CN110187835B (zh) 用于管理访问请求的方法、装置、设备和存储介质
US10691601B2 (en) Cache coherence management method and node controller
US20180075080A1 (en) Computer System and Database Management Method
US20160154848A1 (en) Database management apparatus, database management method, and storage medium
JP6168635B2 (ja) データベース管理システム、計算機、データベース管理方法
US20200311039A1 (en) System and method for supporting versioned objects
JP2008090507A (ja) ジョブ実行のスケジューリングプログラム、ジョブ実行のスケジューリング方法、ジョブ実行のスケジューリング装置
CN109388596B (zh) 一种数据操作方法和装置
CN107391508B (zh) 数据加载方法和系统
CN110008030B (zh) 一种元数据访问的方法、系统及设备
US20170199819A1 (en) Cache Directory Processing Method for Multi-Core Processor System, and Directory Controller
Wang et al. PA-tree: Polled-mode asynchronous B+ tree for NVMe
CN112965939A (zh) 一种文件合并方法、装置和设备
Satish et al. Mapreduce based parallel suffix tree construction for human genome
US11467748B2 (en) Control apparatus and computer-readable recording medium having stored therein control program
CN115438025A (zh) 数据处理方法及装置
WO2022002128A1 (zh) 一种读数据的方法、写数据的方法、设备和系统
CN110188804B (zh) 基于MapReduce框架的支持向量机最优分类模型参数搜索的方法

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