CN104035925B - 数据存储方法、装置和存储系统 - Google Patents
数据存储方法、装置和存储系统 Download PDFInfo
- Publication number
- CN104035925B CN104035925B CN201310068244.9A CN201310068244A CN104035925B CN 104035925 B CN104035925 B CN 104035925B CN 201310068244 A CN201310068244 A CN 201310068244A CN 104035925 B CN104035925 B CN 104035925B
- Authority
- CN
- China
- Prior art keywords
- data
- storage
- access
- engine
- storage engines
- 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
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/22—Indexing; Data structures therefor; Storage structures
Abstract
本发明公开了一种数据存储方法、装置和存储系统,属于终端设备领域。所述方法包括:获取当前存储引擎的数据访问情况;根据所述当前存储引擎的数据访问情况,确定所述当前存储引擎中包括需要存储至下一级存储引擎的数据;获取所述需要存储至下一级存储引擎的数据;将获取到的数据存储至所述下一级存储引擎,并删除所述当前存储引擎中的相应数据。该装置包括:第一获取模块、确定模块、第二获取模块和数据存储模块。本发明通过采用多级存储引擎进行数据的存储,提高了数据的访问效率,从当前存储引擎中获取下一级存储引擎的数据,使得数据调度更加合理,进一步降低了用户的访问时间。
Description
技术领域
本发明涉及计算机领域,特别涉及一种数据存储方法、装置和存储系统。
背景技术
在传统的数据库环境下,信息的访问速度是数据库技术性能的衡量要素之一,而信息的访问速度和数据库中的存储形式息息相关,现有数据库中的数据存储一般是分布式存储,而根据这种存储形式的每一次数据访问,都必须通过数据查询语言在数据库中进行查询,以得到对应的数据,对于访问频繁的数据,也是如此,重复的检索使得访问效率较低,也降低了获取数据的速度。
现有技术中,通过采用分布式缓存技术提高数据库的可扩展性。该技术可以在一台或多台服务器的随机存储器中缓存数据库中的数据,用户通过从随机存储器中读取数据,与从本地数据库检索、加载数据相比,在速度上有了显著的提高。
在实现本发明的过程中,发明人发现现有技术至少存在以下问题:
分布式缓存技术虽然提高了访问的速度,但是需要用户自行对存储在随机存储器中的数据预先进行调度,无法根据业务需要自动选择最优的存储组合,此外,该技术只能进行两层存储,即本地数据库存储和随机存储器存储,在随机存储器中存储的数据具有不稳定性。
发明内容
为了解决数据自行调度以及数据稳定的问题,本发明实施例提供了一种数据存储方法、装置和存储系统。所述技术方案如下:
一方面,提供了一种数据存储方法,所述方法包括:
获取当前存储引擎的数据访问情况;
根据所述当前存储引擎的数据访问情况,确定所述当前存储引擎中包括需要存储至下一级存储引擎的数据;
获取所述需要存储至下一级存储引擎的数据;
将获取到的数据存储至所述下一级存储引擎,并删除所述当前存储引擎中的相应数据。
另一方面,提供了一种数据存储装置,所述装置包括:
第一获取模块,用于获取当前存储引擎的数据访问情况;
确定模块,用于根据所述当前存储引擎的数据访问情况,确定所述当前存储引擎中包括需要存储至下一级存储引擎的数据;
第二获取模块,用于获取所述需要存储至下一级存储引擎的数据;
数据存储模块,用于将获取到的数据存储至所述下一级存储引擎,并删除所述当前存储引擎中的相应数据。
又一方面,提供了一种存储系统,所述系统包括接入机设备以及两级以上的存储引擎,
其中,所述接入机设备被配置用于执行以下方法:
获取当前存储引擎的数据访问情况;
根据所述当前存储引擎的数据访问情况,确定所述当前存储引擎中包括需要存储至下一级存储引擎的数据;
获取所述需要存储至下一级存储引擎的数据;
将获取到的数据存储至所述下一级存储引擎,并删除所述当前存储引擎中的相应数据。
本发明实施例提供的技术方案带来的有益效果是:
本发明实施例提供了一种数据存储方法、装置和存储系统,通过获取当前存储引擎的数据访问情况;根据所述当前存储引擎的数据访问情况,确定所述当前存储引擎中包括需要存储至下一级存储引擎的数据;获取所述需要存储至下一级存储引擎的数据;将获取到的数据存储至所述下一级存储引擎,并删除所述当前存储引擎中的相应数据。采用本发明提供的技术方案,通过采用多级存储引擎进行数据的存储,提高了数据的访问效率,从当前存储引擎中获取需要存储至下一级存储引擎的数据,使得数据调度更加合理,进一步降低了用户的访问时间。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例中提供的一种数据存储方法流程图;
图2a是本发明实施例中提供的一种数据存储方法流程图;
图2b是本发明实施例中提供的一种数据存储方法示意图;
图3是本发明实施例中提供的一种数据存储装置结构示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述。
为了便于对本发明技术方案的理解,在此对本发明实施例涉及到的概念进行解释:
存储引擎,存储引擎是一种适用于服务器、数据库和表格的存储机制,一个存储引擎可以是服务器集群中的一个单独服务器,还可以是服务器上的功能模块,存储引擎的存储介质可以根据需要进行选择,且存储引擎可以拆卸,方便用户的使用。
CCNS(cloud common nosql service,反数据库查询语言服务)接入机,提供一个存储介质无关的反数据库查询服务平台,其中,nosql为非关系型数据库。
主存储引擎和从存储引擎,在本发明实施例中,采用多级存储引擎存储数据库中的数据,同一个数据库中可具有两级或两级以上的存储引擎,根据其在数据库中的地位可以分为主存储引擎和从存储引擎。其中,主存储引擎用于存储数据库中的访问量高的数据。优选地,主存储引擎采用CMEM(Cloud Memcache,基于云的对象缓存系统),CMEM具有高性能内存级持久化分布式的存储服务,适用于数据量小、访问量高、key-value(键-值)存储的场景。
在本发明实施例中,对于主存储引擎来说,可以具有多个从存储引擎,而对于从存储引擎来说,也可以有其相对应的从存储引擎,也即是,存储数据库中多个具有上下级关系的存储引擎。
图1是本发明实施例中提供的一种数据存储方法流程图。参见图1,该方法包括:
101:获取当前存储引擎的数据访问情况;
在本发明实施例中,由于采用多级存储引擎存储数据,为了最大程度上避免对用户的使用造成影响,根据各级存储引擎中的数据访问情况进行数据的调度,访问时长较短的数据存储在上级的存储引擎中,访问时长较长的数据存储在下级的存储引擎中。
其中,当前存储引擎的数据访问情况至少包括存储引擎存储的被访问次数和访问时间,该访问包括但不限于对数据的查询、更新、修改、插入和调用等操作。在对各级存储引擎的数据调度过程中,可以同时根据各个存储引擎的数据访问情况,对各个存储引擎的数据进行调度,还可以根据各个存储引擎的数据访问情况,逐个对各个存储引擎的数据进行调度。
102:根据所述当前存储引擎的数据访问情况,确定所述当前存储引擎中包括需要存储至下一级存储引擎的数据;
具体地,根据当前存储引擎中的数据访问情况,获取数据最后一次被访问的时间到当前时间的间隔时长,当数据的间隔时长大于或等于预设存储时长,说明该数据的访问频率较低,将该数据作为需要存储至下一级存储引擎的数据,当数据的间隔时长小于预设存储时长,说明该数据的访问频率较高,则该数据不需要被存储至下一级存储引擎的数据。
103:获取所述需要存储至下一级存储引擎的数据;
在确定当前存储引擎中包括需要存储至下一级存储引擎的数据后,以复制的方式从当前存储引擎中获取该数据。
104:将获取到的数据存储至所述下一级存储引擎,并删除所述当前存储引擎中的相应数据。
在获取到需要存储至下一级存储引擎的数据后,将该数据写入下一级存储引擎,并从当前存储引擎中删除该已经存储至下一级存储引擎的数据。
上述过程是数据调度过程中从当前存储引擎中获取下一级存储引擎中的数据的过程。对于各级存储引擎而言,在数据存储过程中,下一级存储引擎总是从上一级存储引擎中获取数据,这样各级存储引擎中存储的数据就形成了一个具有时间梯度的数据,这些数据的存储情况反映了被访问时间的情况。对于访问频率高,访问间隔时长短的数据总是存储在级别较高上级的存储引擎中,以方便用户的访问,而对于访问频率低,访问间隔时长长的数据总是存储在级别较低的下级的存储引擎中,有效缩短了用户的访问时间。
而在将需要存储至下一级存储引擎的数据存储至下一级存储引擎后,将当前存储引擎中的需要存储至下一级存储引擎的数据删除,减少了当前存储引擎中数据的数据量,在访问当前数据中的数据时,避免了进行大量的数据查找。
优选地,存储系统中各个存储引擎的数据存储可以采用key-value的形式,在将数据存储至下一级存储引擎中时,根据该需要存储的数据的key值,若下一级存储引擎中已存在相同的key对应的数据,则使用获取到的数据覆盖下一级存储引擎中已存在的相同key对应的数据,若下一级存储引擎中不存在相同的key对应的数据,则将获取到的数据直接进行存储至下一级存储引擎。
按照上述方法,在各级存储引擎中依次进行数据的存储,将一个数据库的数据按照数据访问情况分别放置在不同的存储引擎中,存储引擎越多,数据存储的分配就越细。通过数据在各级存储引擎中进行存储使得数据得到了有效合理地调度,避免了人工不合理的调度带来的数据访问问题。在用户访问的时候,从上向下在各级存储引擎中进行查找,对于访问频率高的数据在上级的存储引擎中很快就能查找到,不需要继续在下级的存储引擎中进行查找,避免了在大量数据中进行查找带来的访问速度慢的问题,加快了服务器的工作效率。
本发明实施例通过获取当前存储引擎的数据访问情况;根据所述当前存储引擎的数据访问情况,确定所述当前存储引擎中包括需要存储至下一级存储引擎的数据;获取所述需要存储至下一级存储引擎的数据;将获取到的数据存储至所述下一级存储引擎,并删除所述当前存储引擎中的相应数据。采用本发明提供的技术方案,通过采用多级存储引擎进行数据的存储,提高了数据的访问效率,从当前存储引擎中获取下一级存储引擎的数据,使得数据调度更加合理,进一步降低了用户的访问时间。
可选地,根据所述当前存储引擎的数据访问情况,确定所述当前存储引擎中包括需要存储至下一级存储引擎的数据,包括:
根据所述当前存储引擎的数据访问情况,判断所述当前存储引擎中是否包括指定类型数据,所述指定类型数据为存储时长超过预设存储时长且访问次数低于预设阈值的数据;
如果所述当前存储引擎中包括指定类型数据,则将所述指定类型数据确定为需要存储至下一级存储引擎的数据。
可选地,将获取到的数据存储至所述下一级存储引擎,并删除所述当前存储引擎中的相应数据,包括:
将所述获取到的数据存储至所述下一级存储引擎;
当所述需要存储至下一级存储引擎的数据未处于被访问状态时,删除所述当前存储引擎中的相应数据。
可选地,所述方法还包括:
接收用户的业务请求,所述业务请求携带访问对象和操作方式;
根据所述操作方式,按照所述操作方式对应的查找方法,在各级存储引擎中查找所述访问对象,对所述访问对象对应的数据进行相应地操作。
可选地,根据所述操作方式,按照所述操作方式对应的查找方法,在各级存储引擎中查找所述访问对象,对所述访问对象对应的数据进行相应地操作,包括:
如果所述操作方式是删除操作,根据所述访问对象,从下向上逐级在各级存储引擎中查找所述访问对象,删除所述访问对象对应的数据;
如果所述操作方式不是删除操作,根据所述访问对象,从上向下逐级在所述各级存储引擎中查找所述访问对象,对所述访问对象对应的数据进行相应地操作。
可选地,如果所述操作方式是删除操作,根据所述访问对象,从下向上逐级在各级存储引擎中查找所述访问对象,删除所述访问对象,包括:
如果所述操作方式是删除操作,按照所述各级存储引擎的级别,从下向上逐级在各级存储引擎中查找所述访问对象,当被查找的存储引擎上存在所述访问对象对应的数据时,删除所述访问对象对应的数据。
可选地,如果所述操作方式不是删除操作,根据所述访问对象,从上向下逐级在所述各级存储引擎中查找所述访问对象,对所述访问对象对应的数据进行相应地操作,包括:
判断所述两级以上的存储引擎中的主存储引擎中是否存在所述访问对象对应的数据;
如果所述主存储引擎中存在所述访问对象对应的数据,从主存储引擎中获取所述对应的数据;
如果主存储引擎中不存在所述访问对象对应的数据,按照所述各级存储引擎的级别,从上向下逐级在所述各级存储引擎中查找所述访问对象对应的数据,直到查找到和所述访问对象对应的数据,将所述查找到的数据移动到所述主存储引擎中;
在所述主存储引擎中,对所述访问对象对应的数据进行相应地操作。
图2a是本发明实施例中提供的一种数据存储方法流程图。参见图2a,该方法包括:
201:获取当前存储引擎的数据访问情况;
在对各级存储引擎的数据调度过程中,按照存储引擎的级别高低,依次选取存储引擎作为当前存储引擎,获取当前存储引擎的数据访问情况,并在根据当前存储引擎的数据访问情况进行数据调度后,再对其他各级存储引擎进行同理的遍历,或随机从多级存储引擎中任意选取一个或多个存储引擎作为当前存储引擎,并在根据当前存储引擎的数据访问情况进行数据调度后,再对其他各级存储引擎进行同理的遍历。
需要说明的是,该过程可以周期性地进行,即每隔预设时长,获取当前存储引擎的数据访问情况,还可以由预设条件触发,即当满足预设条件时,获取当前存储引擎的数据访问情况,如,当存储系统的数据总容量超过预设阈值时,获取当前存储引擎的数据访问情况,该预设时长、预设条件均可以由技术人员在系统建立时设置或后续调整,本发明实施例对此不作具体限定。
202:根据所述当前存储引擎的数据访问情况,判断所述当前存储引擎中是否包括指定类型数据,所述指定类型数据为存储时长超过预设存储时长且访问次数低于预设阈值的数据;
其中,指定类型数据也即是需要存储到下一级存储引擎的数据。CCNS接入机获取当前存储引擎中的各个数据的被访问时间,如果数据最后一次被访问的时间到当前时间的间隔时长大于或等于预设时长,则该数据为指定类型数据,也即是当前存储引擎中包括指定类型数据;如果间隔时长小于预设时长,则该数据不为指定类型数据,也即是当前存储引擎中不包括指定类型数据。
本发明实施例仅以当前存储引擎中包括指定类型数据为例进行说明,对于当前存储引擎中不包括指定类型数据的情况,则不进行后续的指定类型数据的获取和存储的步骤。
203:如果所述当前存储引擎中包括指定类型数据,则将所述指定类型数据确定为需要存储至下一级存储引擎的数据;
步骤202-203是根据所述当前存储引擎的数据访问情况,确定所述当前存储引擎中包括需要存储至下一级存储引擎的数据的过程。
204:从当前存储引擎中获取所述需要存储至下一级存储引擎的数据;
优选地,由于各个存储引擎上的数据以键-值(Key-Value)的形式存储,则该获取过程可以为:根据需要存储至下一级存储引擎的数据的Key值,获取当前存储引擎中与该需要存储至下一级存储引擎的数据的Key值相应的数据。
205:将所述获取到的数据存储至所述下一级存储引擎;
优选地,由于各个存储引擎上的数据以键-值(Key-Value)的形式存储,则该存储过程可以为:将该需要存储至下一级存储引擎的数据存储至下一级存储引擎。优选地,根据需要存储至下一级存储引擎的数据的Key值,判断该下一级存储引擎中是否包括该Key值对应的数据,如果是,使用需要存储至下一级存储引擎的数据覆盖下一级存储引擎中该Key值对应的数据,如果否,将该需要存储至下一级存储引擎的数据存储至下一级存储引擎。
可选地,在存储系统中,对数据进行调度以及执行数据获取和存储的可以为同一服务器上的不同功能模块,该服务器可以为CCNS接入机,如功能模块可以为用于进行数据调度的调度模块和用于进行数据获取和存储的存储模块。
优选地,在存储系统中,对数据进行调度以及执行数据获取和存储的可以分别为不同的服务器,如通过用于进行数据调度的调度服务器(CCNS_scheduler)对各个存储引擎中的数据进行调度,并通过用于进行数据获取和存储的CCNS接入机对数据进行处理。具体地,图2b是本发明实施例中提供的一种数据存储方法示意图,如图2b所示,该步骤201-204可以包括:调度服务器根据当前存储引擎的数据访问情况采用LRU(Least Recently Used,最近最少使用)算法判断当前存储引擎中是否包括指定类型数据,当当前存储引擎中包括指定类型数据时,向用于进行数据获取和存储的CCNS接入机发送调度(move)命令,该调度命令携带该指定类型数据的Key。当CCNS接入机接收到调度命令时,根据调度命令向当前存储引擎发送获取(get)命令以获取该指定类型数据,该获取命令携带指定类型数据的Key,并将从当前存储引擎获取到的数据通过存储命令(set)存储至下一级存储引擎。
206:判断所述需要存储至下一级存储引擎的数据是否处于被访问状态;
如果是,结束;
如果否,执行步骤207;
由于用户访问和数据调度的时间是不可预料的,二者可能会发生冲突,所以,为了避免用户访问和数据调度冲突的问题,判断当前存储引擎中需要存储至下一级存储引擎的数据是否处于被访问状态,根据判断的结果,进行相应地处理。
CCNS接入机根据需要存储至下一级存储引擎的数据的状态,判断需要存储至下一级存储引擎的数据是否处于被访问状态,如果需要存储至下一级存储引擎的数据未处于被访问状态,则删除所述当前存储引擎中的相应数据,如果需要存储至下一级存储引擎的数据处于被访问状态,不删除所述当前存储引擎中的相应数据。
207:当所述需要存储至下一级存储引擎的数据未处于被访问状态时,删除所述当前存储引擎中的相应数据。
当需要存储至下一级存储引擎的数据未处于被访问状态时,删除当前存储引擎中的相应数据,可以避免在访问其他数据时对该数据的查找带来的时间损耗。
步骤205-207是将获取到的数据存储至所述下一级存储引擎,并删除所述当前存储引擎中的相应数据的过程。通过CCNS接入机对数据在各级存储引擎中的调度,实现了数据在各级存储引擎中的合理分配,加快了数据访问的速度。
需要说明的是,各级存储引擎的存储时长是指数据的总存储时长,而预设存储时长是指该存储引擎中应存放数据的存储时长,可如主存储引擎的预设存储时长为第一时长,即是该主存储引擎中应用于存储已存储时长低于第一时长的数据,而二级存储引擎的预设存储时长为第二时长,三级存储引擎的预设存储时长为第三时长,存储系统中可以包含多级存储引擎,在此不再一一举例说明。而一般地,由于对存储系统中各个存储引擎中所存储的数据按照时间进行调度,使得被经常访问的数据能够存储于上级存储引擎,而访问次数少或未被访问过的数据能够存储于下级存储引擎,根据数据的利用率和受欢迎度进行了合理的存储。
进一步可选地,本发明实施例还在上述数据存储方法的基础上,提供了以下步骤208-214:
208:接收用户的业务请求,所述业务请求携带访问对象和操作方式;
在本发明实施例中,CCNS接入机除了用于维护各级存储引擎、实现数据的调度以外,还用于接收用户的业务请求,完成数据访问和对应的数据的操作。
具体地,CCNS接入机接收用户的业务请求,获取该业务请求携带的访问对象以及对该访问对象的操作方式。
209:判断所述操作方式是否是删除操作,如果是,执行步骤210,如果否,执行步骤211;
具体地,由于存储系统中各级存储引擎对数据的存储是按照访问量的多少进行存储的,因此,作为第一级存储引擎的主存储引擎中的数据访问量最高,其他各级存储引擎依次递减。而由于数据在调度过程中,同一个数据可能存储在不同的存储引擎中,根据操作方式的不同,对各级存储引擎进行的查找方法也不同。因此,根据操作方式,按照该操作方式对应的查找方法,在各级存储引擎中查找所述访问对象,对所述访问对象对应的数据进行相应地操作。具体地,CCNS接入机对操作方式进行判断,如果该操作方式是删除操作,则根据删除操作对应的查找方法在各级存储引擎中查找该访问对象,对所述访问对象对应的数据进行相应地操作;如果该操作方式不是删除操作,则根据非删除操作对应的查找方式在各级存储引擎中查找该访问对象,对所述访问对象对应的数据进行相应地操作。
210:如果所述操作方式是删除操作,根据所述访问对象,从下向上逐级在各级存储引擎中查找所述访问对象,并删除所述访问对象对应的数据;
具体地,如果所述操作方式是删除操作,按照所述各级存储引擎的级别和该访问对象,从下向上逐级在各级存储引擎中查找所述访问对象,当被查找的存储引擎上存在所述访问对象对应的数据时,删除所述访问对象对应的数据。
由于在各级存储引擎中都可能存在访问对象对应的数据,所以只要删除最上一级的存储引擎中的对应的数据就可以看作是删除成功。
在本发明实施例中,采用了从下向上的删除方式,只要用户收到删除失败的消息,说明包含该访问对象对应的数据的上级存储引擎的对应的数据删除失败。当用户收到删除成功的消息时,说明包含该访问对象对应的数据的上级存储引擎的对应的数据删除成功,避免了由于采用从上向下的删除方式,当某一级存储引擎中的对应数据删除失败时,将删除失败消息返回给用户,用户不能判断是否已将包含该访问对象对应的数据的最上一级的存储引擎中的对应的数据删除的情况,避免了不能准确判断该删除操作是否成功的情况,不会造成用户重复发送该业务请求的冗余操作,提高了访问的效率。
211:判断所述两级以上的存储引擎中的主存储引擎中是否存在所述访问对象对应的数据,如果是,执行步骤212,如果否,执行步骤213;
其中,主存储引擎用于存储数据库中的访问量高的数据。对于访问量高的数据,CCNS接入机根据访问对象可以直接从主存储引擎中找到对应的数据,而对于访问量低的数据,CCNS接入机在主存储引擎中不能找到对应的数据,需要在各级存储引擎中进行查找。
需要说明的是,如果需要在数据库中直接写入新的对象,而不是对已有对象的操作,则不需要进行以下的步骤,直接将新的对象写入到主存储引擎中即可。
212:如果主存储引擎中存在所述访问对象对应的数据,从主存储引擎中获取所述对应的数据;
如果CCNS接入机在主存储引擎中查找到访问对象对应的数据,通过获取(get)命令获取该对应的数据,并根据操作方式对该对应的数据进行处理。
213:如果主存储引擎中不存在所述访问对象对应的数据,按照所述各级存储引擎的级别,从上向下逐级在所述各级存储引擎中查找所述访问对象对应的数据,直到查找到和所述访问对象对应的数据,将所述查找到的数据移动到所述主存储引擎中;
如果CCNS接入机在主存储引擎中没有找到访问对象对应的数据,说明该数据的访问量较少,可能存储于主存储引擎以外的其他存储引擎中,因此需要在其他的各级存储引擎中进行查找。
当在其他存储引擎中查找到对应的数据后,由于该次访问使得对应的数据的访问量改变,也就是该数据的访问时间在预设时长内,CNNS接入机将该数据移动到主存储引擎中,进一步地,CNNS接入机对该对应的数据按照用户的操作方式进行处理。
需要说明的是,该步骤213将访问对象对应的数据移动到主存储引擎中进行存储,而不对原数据进行删除,可以达到数据备份的目的。
214:在所述主存储引擎中,对和所述访问对象对应的数据进行相应地操作。
其中,操作包括对数据的读、写、更新等。CNNS接入机根据用户的业务请求中的操作方式,对主存储引擎中对应的数据进行相应地操作。
步骤213-214是如果所述操作方式不是删除操作,根据所述访问对象,从上向下逐级在所述各级存储引擎中查找所述访问对象,对所述访问对象对应的数据进行相应地操作的过程。
步骤209-214是根据所述操作方式,按照所述操作方式对应的查找方法,在各级存储引擎中查找所述访问对象,对所述访问对象对应的数据进行相应地操作的过程。
本发明实施例的执行主体可以CCNS接入机,也可以为CCNS接入机的功能模块,而各个存储引擎可以为存储引擎接入机。
本发明实施例通过获取当前存储引擎的数据访问情况;根据所述当前存储引擎的数据访问情况,确定所述当前存储引擎中包括需要存储至下一级存储引擎的数据;获取所述需要存储至下一级存储引擎的数据;将获取到的数据存储至所述下一级存储引擎,并删除所述当前存储引擎中的相应数据。采用本发明提供的技术方案,通过采用多级存储引擎进行数据的存储,提高了数据的访问效率,从当前存储引擎中获取需要存储至下一级存储引擎的数据,使得数据调度更加合理,进一步降低了用户的访问时间。
图3是本发明实施例中提供的一种数据存储装置结构示意图。参见图3,该装置包括:
第一获取模块301,用于获取当前存储引擎的数据访问情况;
确定模块302,用于根据所述当前存储引擎的数据访问情况,确定所述当前存储引擎中包括需要存储至下一级存储引擎的数据;
第二获取模块303,用于获取所述需要存储至下一级存储引擎的数据;
数据存储模块304,用于将获取到的数据存储至所述下一级存储引擎,并删除所述当前存储引擎中的相应数据。
所述确定模块302包括:
判断单元,用于根据所述当前存储引擎的数据访问情况,判断所述当前存储引擎中是否包括指定类型数据,所述指定类型数据为存储时长超过预设存储时长且访问次数低于预设阈值的数据;
确定单元,用于如果所述当前存储引擎中包括指定类型数据,则将所述指定类型数据确定为需要存储至下一级存储引擎的数据。
所述数据存储模块304包括:
存储单元,用于将所述获取到的数据存储至所述下一级存储引擎;
删除单元,用于当所述需要存储至下一级存储引擎的数据未处于被访问状态时,删除所述当前存储引擎中的相应数据。
所述装置还包括:
接收模块305,用于接收用户的业务请求,所述业务请求携带访问对象和操作方式;
操作模块306,用于根据所述操作方式,按照所述操作方式对应的查找装置,在各级存储引擎中查找所述访问对象,对所述访问对象对应的数据进行相应地操作。
所述操作模块306包括:
第一操作单元,用于如果所述操作方式是删除操作,根据所述访问对象,从下向上逐级在各级存储引擎中查找所述访问对象,删除所述访问对象对应的数据;
第二操作单元,用于如果所述操作方式不是删除操作,根据所述访问对象,从上向下逐级在所述各级存储引擎中查找所述访问对象,对所述访问对象对应的数据进行相应地操作。
所述第一操作单元用于如果所述操作方式是删除操作,按照所述各级存储引擎的级别,从下向上逐级在各级存储引擎中查找所述访问对象,当被查找的存储引擎上存在所述访问对象对应的数据时,删除所述访问对象对应的数据。
所述第二操作单元包括:
判断子单元,用于判断所述两级以上的存储引擎中的主存储引擎中是否存在所述访问对象对应的数据;
数据获取子单元,用于如果所述主存储引擎中存在所述访问对象对应的数据,从主存储引擎中获取所述对应的数据;
所述数据获取子单元还用于如果主存储引擎中不存在所述访问对象对应的数据,按照所述各级存储引擎的级别,从上向下逐级在所述各级存储引擎中查找所述访问对象对应的数据,直到查找到和所述访问对象对应的数据,将所述查找到的数据移动到所述主存储引擎中;
操作子单元,用于在所述主存储引擎中,对所述访问对象对应的数据进行相应地操作。
本发明实施例通过获取当前存储引擎的数据访问情况;根据所述当前存储引擎的数据访问情况,确定所述当前存储引擎中包括需要存储至下一级存储引擎的数据;获取所述需要存储至下一级存储引擎的数据;将获取到的数据存储至所述下一级存储引擎,并删除所述当前存储引擎中的相应数据。采用本发明提供的装置,通过采用多级存储引擎进行数据的存储,提高了数据的访问效率,从当前存储引擎中获取需要存储至下一级存储引擎的数据,使得数据调度更加合理,进一步降低了用户的访问时间。
需要说明的是:上述实施例提供的数据存储装置在数据存储时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将设备的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的数据存储装置与数据存储方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
本发明提供了一种存储系统的第一种可能实现方式,在该第一种可能实现方式中,所述系统包括接入机设备以及两级以上的存储引擎,
其中,所述接入机设备被配置用于执行以下方法:
获取当前存储引擎的数据访问情况;
根据所述当前存储引擎的数据访问情况,确定所述当前存储引擎中包括需要存储至下一级存储引擎的数据;
获取所述需要存储至下一级存储引擎的数据;
将获取到的数据存储至所述下一级存储引擎,并删除所述当前存储引擎中的相应数据。
在上述存储系统的基础上,本发明实施例的第二种可能实现方式中,根据所述当前存储引擎的数据访问情况,确定所述当前存储引擎中包括需要存储至下一级存储引擎的数据,包括:
根据所述当前存储引擎的数据访问情况,判断所述当前存储引擎中是否包括指定类型数据,所述指定类型数据为存储时长超过预设存储时长且访问次数低于预设阈值的数据;
如果所述当前存储引擎中包括指定类型数据,则将所述指定类型数据确定为需要存储至下一级存储引擎的数据。
在上述存储系统的基础上,本发明实施例的第三种可能实现方式中,将获取到的数据存储至所述下一级存储引擎,并删除所述当前存储引擎中的相应数据,包括:
将所述获取到的数据存储至所述下一级存储引擎;
当所述需要存储至下一级存储引擎的数据未处于被访问状态时,删除所述当前存储引擎中的相应数据。
在上述存储系统的基础上,本发明实施例的第四种可能实现方式中,所述方法还包括:
接收用户的业务请求,所述业务请求携带访问对象和操作方式;
根据所述操作方式,按照所述操作方式对应的查找方法,在各级存储引擎中查找所述访问对象,对所述访问对象对应的数据进行相应地操作。
在上述存储系统的基础上,本发明实施例的第五种可能实现方式中,根据所述操作方式,按照所述操作方式对应的查找方法,在各级存储引擎中查找所述访问对象,对所述访问对象对应的数据进行相应地操作,包括:
如果所述操作方式是删除操作,根据所述访问对象,从下向上逐级在各级存储引擎中查找所述访问对象,删除所述访问对象对应的数据;
如果所述操作方式不是删除操作,根据所述访问对象,从上向下逐级在所述各级存储引擎中查找所述访问对象,对所述访问对象对应的数据进行相应地操作。
在上述存储系统的基础上,本发明实施例的第六种可能实现方式中,如果所述操作方式是删除操作,根据所述访问对象,从下向上逐级在各级存储引擎中查找所述访问对象,删除所述访问对象,包括:
如果所述操作方式是删除操作,按照所述各级存储引擎的级别,从下向上逐级在各级存储引擎中查找所述访问对象,当被查找的存储引擎上存在所述访问对象对应的数据时,删除所述访问对象对应的数据。
在上述存储系统的基础上,本发明实施例的第七种可能实现方式中,如果所述操作方式不是删除操作,根据所述访问对象,从上向下逐级在所述各级存储引擎中查找所述访问对象,对所述访问对象对应的数据进行相应地操作,包括:
判断所述两级以上的存储引擎中的主存储引擎中是否存在所述访问对象对应的数据;
如果所述主存储引擎中存在所述访问对象对应的数据,从主存储引擎中获取所述对应的数据;
如果主存储引擎中不存在所述访问对象对应的数据,按照所述各级存储引擎的级别,从上向下逐级在所述各级存储引擎中查找所述访问对象对应的数据,直到查找到和所述访问对象对应的数据,将所述查找到的数据移动到所述主存储引擎中;
在所述主存储引擎中,对所述访问对象对应的数据进行相应地操作。
本发明实施例通过获取当前存储引擎的数据访问情况;根据所述当前存储引擎的数据访问情况,确定所述当前存储引擎中包括需要存储至下一级存储引擎的数据;获取所述需要存储至下一级存储引擎的数据;将获取到的数据存储至所述下一级存储引擎,并删除所述当前存储引擎中的相应数据。采用本发明提供的装置,通过采用多级存储引擎进行数据的存储,提高了数据的访问效率,从当前存储引擎中获取需要存储至下一级存储引擎的数据,使得数据调度更加合理,进一步降低了用户的访问时间。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (14)
1.一种数据存储方法,其特征在于,存储系统中包括两级以上的存储引擎,所述方法包括:
获取当前存储引擎的数据访问情况;
根据所述当前存储引擎的数据访问情况,确定所述当前存储引擎中包括需要存储至下一级存储引擎的数据;
获取所述需要存储至下一级存储引擎的数据;
将获取到的数据存储至所述下一级存储引擎,并删除所述当前存储引擎中的相应数据;
所述方法还包括:接收用户的业务请求,所述业务请求携带访问对象和操作方式;
如果所述操作方式是删除操作,根据所述访问对象,从下向上逐级在各级存储引擎中查找所述访问对象,删除所述访问对象对应的数据。
2.根据权利要求1所述的方法,其特征在于,根据所述当前存储引擎的数据访问情况,确定所述当前存储引擎中包括需要存储至下一级存储引擎的数据,包括:
根据所述当前存储引擎的数据访问情况,判断所述当前存储引擎中是否包括指定类型数据,所述指定类型数据为存储时长超过预设存储时长且访问次数低于预设阈值的数据;
如果所述当前存储引擎中包括指定类型数据,则将所述指定类型数据确定为需要存储至下一级存储引擎的数据。
3.根据权利要求1所述的方法,其特征在于,将获取到的数据存储至所述下一级存储引擎,并删除所述当前存储引擎中的相应数据,包括:
将所述获取到的数据存储至所述下一级存储引擎;
当所述需要存储至下一级存储引擎的数据未处于被访问状态时,删除所述当前存储引擎中的相应数据。
4.根据权利要求1所述的方法,其特征在于,所述方法还包括:
如果所述操作方式不是删除操作,根据所述访问对象,从上向下逐级在所述各级存储引擎中查找所述访问对象,对所述访问对象对应的数据进行相应地操作。
5.根据权利要求1所述的方法,其特征在于,如果所述操作方式是删除操作,根据所述访问对象,从下向上逐级在各级存储引擎中查找所述访问对象,删除所述访问对象对应的数据,包括:
如果所述操作方式是删除操作,按照所述各级存储引擎的级别,从下向上逐级在各级存储引擎中查找所述访问对象,当被查找的存储引擎上存在所述访问对象对应的数据时,删除所述访问对象对应的数据。
6.根据权利要求4所述的方法,其特征在于,如果所述操作方式不是删除操作,根据所述访问对象,从上向下逐级在所述各级存储引擎中查找所述访问对象,对所述访问对象对应的数据进行相应地操作,包括:
判断所述两级以上的存储引擎中的主存储引擎中是否存在所述访问对象对应的数据;
如果所述主存储引擎中存在所述访问对象对应的数据,从主存储引擎中获取所述对应的数据;
如果主存储引擎中不存在所述访问对象对应的数据,按照所述各级存储引擎的级别,从上向下逐级在所述各级存储引擎中查找所述访问对象对应的数据,直到查找到和所述访问对象对应的数据,将查找到的数据移动到所述主存储引擎中;
在所述主存储引擎中,对所述访问对象对应的数据进行相应地操作。
7.一种数据存储装置,其特征在于,存储装置中包括两级以上的存储引擎,所述装置包括:
第一获取模块,用于获取当前存储引擎的数据访问情况;
确定模块,用于根据所述当前存储引擎的数据访问情况,确定所述当前存储引擎中包括需要存储至下一级存储引擎的数据;
第二获取模块,用于获取所述需要存储至下一级存储引擎的数据;
数据存储模块,用于将获取到的数据存储至所述下一级存储引擎,并删除所述当前存储引擎中的相应数据;
所述装置还包括:接收模块和操作模块;
所述接收模块,用于接收用户的业务请求,所述业务请求携带访问对象和操作方式;
所述操作模块包括第一操作单元,所述第一操作单元用于如果所述操作方式是删除操作,根据所述访问对象,从下向上逐级在各级存储引擎中查找所述访问对象,删除所述访问对象对应的数据。
8.根据权利要求7所述的装置,其特征在于,所述确定模块包括:
判断单元,用于根据所述当前存储引擎的数据访问情况,判断所述当前存储引擎中是否包括指定类型数据,所述指定类型数据为存储时长超过预设存储时长且访问次数低于预设阈值的数据;
确定单元,用于如果所述当前存储引擎中包括指定类型数据,则将所述指定类型数据确定为需要存储至下一级存储引擎的数据。
9.根据权利要求7所述的装置,其特征在于,所述数据存储模块包括:
存储单元,用于将所述获取到的数据存储至所述下一级存储引擎;
删除单元,用于当所述需要存储至下一级存储引擎的数据未处于被访问状态时,删除所述当前存储引擎中的相应数据。
10.根据权利要求7所述的装置,其特征在于,所述操作模块还包括:
第二操作单元,用于如果所述操作方式不是删除操作,根据所述访问对象,从上向下逐级在所述各级存储引擎中查找所述访问对象,对所述访问对象对应的数据进行相应地操作。
11.根据权利要求7所述的装置,其特征在于,所述第一操作单元用于如果所述操作方式是删除操作,按照所述各级存储引擎的级别,从下向上逐级在各级存储引擎中查找所述访问对象,当被查找的存储引擎上存在所述访问对象对应的数据时,删除所述访问对象对应的数据。
12.根据权利要求10所述的装置,其特征在于,所述第二操作单元包括:
判断子单元,用于判断所述两级以上的存储引擎中的主存储引擎中是否存在所述访问对象对应的数据;
数据获取子单元,用于如果所述主存储引擎中存在所述访问对象对应的数据,从主存储引擎中获取所述对应的数据;
所述数据获取子单元还用于如果主存储引擎中不存在所述访问对象对应的数据,按照所述各级存储引擎的级别,从上向下逐级在所述各级存储引擎中查找所述访问对象对应的数据,直到查找到和所述访问对象对应的数据,将查找到的数据移动到所述主存储引擎中;
操作子单元,用于在所述主存储引擎中,对所述访问对象对应的数据进行相应地操作。
13.一种存储系统,其特征在于,所述系统包括接入机设备以及两级以上的存储引擎,
其中,所述接入机设备被配置用于执行以下方法:
获取当前存储引擎的数据访问情况;
根据所述当前存储引擎的数据访问情况,确定所述当前存储引擎中包括需要存储至下一级存储引擎的数据;
获取所述需要存储至下一级存储引擎的数据;
将获取到的数据存储至所述下一级存储引擎,并删除所述当前存储引擎中的相应数据;
还用于执行如下方法:
接收用户的业务请求,所述业务请求携带访问对象和操作方式;
如果所述操作方式是删除操作,根据所述访问对象,从下向上逐级在各级存储引擎中查找所述访问对象,删除所述访问对象对应的数据。
14.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质包括至少一段程序,所述程序被执行以实现权利要求1-6中任一所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310068244.9A CN104035925B (zh) | 2013-03-04 | 2013-03-04 | 数据存储方法、装置和存储系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310068244.9A CN104035925B (zh) | 2013-03-04 | 2013-03-04 | 数据存储方法、装置和存储系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104035925A CN104035925A (zh) | 2014-09-10 |
CN104035925B true CN104035925B (zh) | 2018-07-17 |
Family
ID=51466696
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310068244.9A Active CN104035925B (zh) | 2013-03-04 | 2013-03-04 | 数据存储方法、装置和存储系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104035925B (zh) |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106603610B (zh) * | 2015-10-19 | 2019-11-22 | 阿里巴巴集团控股有限公司 | 一种数据获取以及同步方法、装置 |
CN106021414B (zh) * | 2016-05-13 | 2019-07-09 | 中国建设银行股份有限公司 | 一种访问多级缓存参数信息的方法及系统 |
CN106502789A (zh) * | 2016-10-12 | 2017-03-15 | 阔地教育科技有限公司 | 一种资源访问方法及装置 |
CN108334279B (zh) * | 2017-12-26 | 2021-04-06 | 金卡智能集团股份有限公司 | 基于负载均衡模式的数据读写方法 |
CN108363796A (zh) * | 2018-02-23 | 2018-08-03 | 北京网信云服信息科技有限公司 | 一种数据的迁移方法及装置 |
CN109284258A (zh) * | 2018-08-13 | 2019-01-29 | 华东计算技术研究所(中国电子科技集团公司第三十二研究所) | 基于hdfs的分布式多级存储系统及方法 |
CN113515497A (zh) * | 2020-04-09 | 2021-10-19 | 奇安信安全技术(珠海)有限公司 | 数据库的数据处理方法、装置及系统 |
CN113524202B (zh) * | 2021-09-10 | 2021-12-21 | 湖南三湘银行股份有限公司 | 一种基于rpa机器人的智能整合系统 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1828556A (zh) * | 2005-03-05 | 2006-09-06 | 腾讯科技(深圳)有限公司 | 一种数据存储的方法、系统及设备 |
CN102156738A (zh) * | 2011-04-13 | 2011-08-17 | 成都市华为赛门铁克科技有限公司 | 数据块处理方法、数据块存储设备及系统 |
CN102521419A (zh) * | 2011-12-31 | 2012-06-27 | 曙光信息产业股份有限公司 | 分级存储的实现方法和系统 |
CN102938784A (zh) * | 2012-11-06 | 2013-02-20 | 无锡江南计算技术研究所 | 应用于分布式存储系统中的数据存储方法和系统 |
-
2013
- 2013-03-04 CN CN201310068244.9A patent/CN104035925B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1828556A (zh) * | 2005-03-05 | 2006-09-06 | 腾讯科技(深圳)有限公司 | 一种数据存储的方法、系统及设备 |
CN102156738A (zh) * | 2011-04-13 | 2011-08-17 | 成都市华为赛门铁克科技有限公司 | 数据块处理方法、数据块存储设备及系统 |
CN102521419A (zh) * | 2011-12-31 | 2012-06-27 | 曙光信息产业股份有限公司 | 分级存储的实现方法和系统 |
CN102938784A (zh) * | 2012-11-06 | 2013-02-20 | 无锡江南计算技术研究所 | 应用于分布式存储系统中的数据存储方法和系统 |
Non-Patent Citations (1)
Title |
---|
实时内存数据库的装入;刘云生,李国徽;《软件学报》;20000623(第2000年06期);全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN104035925A (zh) | 2014-09-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104035925B (zh) | 数据存储方法、装置和存储系统 | |
CN103473239B (zh) | 一种非关系型数据库数据更新方法和装置 | |
CN102521406B (zh) | 海量结构化数据复杂查询任务的分布式查询方法和系统 | |
CN102521405B (zh) | 支持高速加载的海量结构化数据存储、查询方法和系统 | |
CN103853727B (zh) | 提高大数据量查询性能的方法及系统 | |
CN109299113B (zh) | 具有存储感知的混合索引的范围查询方法 | |
CN105320775B (zh) | 数据的存取方法和装置 | |
CN102831120B (zh) | 一种数据处理方法及系统 | |
CN104572727B (zh) | 一种数据查询方法及装置 | |
CN104115133B (zh) | 用于复合非易失性存储设备的数据迁移的方法、系统和设备 | |
CN104850572A (zh) | HBase非主键索引构建与查询方法及其系统 | |
CN110162528A (zh) | 海量大数据检索方法及系统 | |
CN101673192B (zh) | 时序化的数据处理方法、装置及系统 | |
CN107003814A (zh) | 存储系统中的有效元数据 | |
CN105302840B (zh) | 一种缓存管理方法与设备 | |
CN105159845A (zh) | 存储器读取方法 | |
CN103810219B (zh) | 一种基于行存储数据库的数据处理方法及装置 | |
CN108920616A (zh) | 一种元数据访问性能优化方法、系统、装置及存储介质 | |
CN109271106A (zh) | 消息存储、读取方法及装置、服务器、存储介质 | |
CN104021223B (zh) | 一种集群数据库测点的访问方法及装置 | |
CN105975345A (zh) | 一种基于分布式内存的视频帧数据动态均衡存储管理方法 | |
CN109828966A (zh) | 渐进式重哈希方法、装置、计算机设备及存储介质 | |
CN112947860A (zh) | 一种分布式数据副本的分级存储与调度方法 | |
CN107704507A (zh) | 数据库处理方法和设备 | |
CN108319634A (zh) | 分布式文件系统的目录访问方法和装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |