CN108628540A - 数据存储装置及方法 - Google Patents
数据存储装置及方法 Download PDFInfo
- Publication number
- CN108628540A CN108628540A CN201710172307.3A CN201710172307A CN108628540A CN 108628540 A CN108628540 A CN 108628540A CN 201710172307 A CN201710172307 A CN 201710172307A CN 108628540 A CN108628540 A CN 108628540A
- Authority
- CN
- China
- Prior art keywords
- data
- caching
- directed toward
- node
- cached
- 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
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0656—Data buffering arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0614—Improving the reliability of storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0629—Configuration or reconfiguration of storage systems
- G06F3/0635—Configuration or reconfiguration of storage systems by changing the path, e.g. traffic rerouting, path reconfiguration
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0646—Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
- G06F3/0652—Erasing, e.g. deleting, data cleaning, moving of data to a wastebasket
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Human Computer Interaction (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Networks & Wireless Communication (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本发明实施例公开了一种数据存储装置及方法,属于数据存储技术领域。数据存储装置包括存储有缓存数据的内存缓存模块。还包括存储缓存指向数据的缓存指向数据存储模块,每条缓存指向数据指向一条缓存数据;每条缓存指向数据包括:所指向的缓存数据的唯一编码,和所指向的缓存数据在内存缓存模块中的数据引用;存储管理模块,用于当所述缓存指向数据存储模块中任意一个节点包括的缓存指向数据所指向的缓存数据被访问后,将节点放置于缓存指向数据存储模块中各节点的队首。本发明实施例实现了重新定义了一种数据结构,结合了键值对和链表这两种数据结构的优点,提高了数据存储装置的利用率,进而提高了数据的读写性能。
Description
技术领域
本发明涉及数据存储技术领域,特别涉及一种数据存储装置及方法。
背景技术
随着科技的快速发展,使用终端处理数据的用户越来越多。终端在对数据处理前,通常需要在内存缓存中对数据进行存储。例如,终端在接收到服务器发送的数据时,通常会将接收到的数据在内存缓存中进行存储,以便于后续快速读取数据。由于内存缓存的大小有限,内存缓存中数据存储的方式影响着内存缓存的利用率,而内存缓存的利用率影响着读写数据的性能。因此,如何对数据进行存储是提高读写数据性能的关键。
现有技术中,有相关技术中提出了一种数据存储方法,在该方法中,将缓存数据存储至内存,当内存被占满后,则删除内存中的缓存数据以释放存储空间,从而留出存储空间后,用于存储新添加的缓存数据。
在实现本发明的过程中,发明人发现上述方法至少存在以下问题:
存储缓存数据和删除缓存数据都是以随机的方式进行的,而由于没有提供一种有效的存储和删除管理机制,会造成缓存数据获取效率低,从而会造成内存缓存的利用率较低的问题。
发明内容
本发明的目的是提供一种数据存储装置及方法,采用该数据存储装置对缓存数据进行存储后,既能实现快速的查询缓存数据,又能实现根据缓存数据的被访问次数来删除可能被访问次数较少的缓存数据,提高内存缓存的利用率,还能实现适用于不同领域的缓存数据的存储。
根据本发明实施例的一个方面,提供一种数据存储装置,包括内存缓存模块,所述内存缓存模块中存储有至少一条缓存数据,还包括:缓存指向数据存储模块,包括至少一个节点,用于存储缓存指向数据;每个所述节点包括一条缓存指向数据,每条缓存指向数据指向一条所述缓存数据;每条缓存指向数据包括:所指向的缓存数据的唯一编码,和所指向的缓存数据在所述内存缓存模块中的数据引用;存储管理模块,用于当所述缓存指向数据存储模块中任意一个所述节点包括的缓存指向数据所指向的缓存数据被访问后,将所述节点放置于所述缓存指向数据存储模块中各节点的队首。
进一步,所述的数据存储装置,还包括:键值对存储模块,用于将节点指向数据以键值对的形式进行存储;每个键值对包括一条节点指向数据,每条节点指向数据指向一条所述缓存指向数据;每条节点指向数据包括:所指向的缓存指向数据所指向的缓存数据的唯一编码,和所指向的缓存指向数据在所述缓存指向数据存储模块中的数据引用;
所述存储管理模块,还用于:获取待存储的缓存数据以及所述缓存数据的唯一编码;将所述缓存数据添加入所述内存缓存模块中;获取所述缓存数据在所述内存缓存模块中的数据引用;根据所述缓存数据的唯一编码和所述缓存数据在所述内存缓存模块中的数据引用生成一条缓存指向数据;将所述缓存指向数据添加入所述缓存指向数据存储模块中;获取所述缓存指向数据在所述缓存指向数据存储模块中的数据引用;根据所述缓存数据的唯一编码和所述缓存指向数据在所述缓存指向数据存储模块中的数据引用生成一条节点指向数据;将所述节点指向数据添加入所述键值对存储模块中;
所述存储管理模块,还用于:根据待访问的缓存数据的唯一编码在所述键值对存储模块中进行查询,得到指向所述缓存数据的缓存指向数据在所述缓存指向数据存储模块中的数据引用;根据得到的所述缓存指向数据在所述缓存指向数据存储模块中的数据引用在所述缓存指向数据存储模块中进行查询,得到所述缓存数据在所述内存缓存模块中的数据引用;根据所述缓存数据在所述内存缓存模块中的数据引用在所述内存缓存模块中进行查询,定位到所述缓存数据;对定位到的缓存数据进行访问;
所述存储管理模块,还用于:获取所述内存缓存模块中当前缓存数据的数量;将所述当前缓存数据的数量与预设的缓存数据的总量阈值进行比对;如果当前缓存数据的数量大于所述预设的缓存数据的总量阈值,则从所述缓存指向数据存储模块中删除预设数量的节点,其中预设数量不小于所述当前缓存数据的数量与所述预设的缓存数据的总量阈值的差值;将删除的所述节点中的缓存指向数据所指向的缓存数据从内存缓存模块中删除;以及,将指向删除的所述节点中的缓存指向数据的节点指向数据从所述键值对存储模块中删除。
进一步,所述的数据存储装置,所述存储管理模块在将所述缓存指向数据添加入所述缓存指向数据存储模块中时,具体用于:将所述缓存指向数据添加入所述缓存指向数据存储模块的队首节点中。
进一步,所述的数据存储装置,所述存储管理模块在从所述缓存指向数据存储模块中删除预设数量的节点时,具体用于:从所述缓存指向数据存储模块的队尾节点开始,沿着所述缓存指向数据存储模块的队尾节点至队首节点的方向,删除预设数量的节点。
进一步,所述的数据存储装置,所述缓存指向数据存储模块为双向链表存储结构;所述存储管理模块,还用于:在将所述节点放置于所述缓存指向数据存储模块中各节点的队首之后,更新所述节点、所述节点移动前的相邻节点、以及所述节点移动后的相邻节点的指针域指向。
根据本发明实施例的另一个方面,提供了一种数据存储方法,包括:将至少一条缓存数据存储至内存缓存模块;将至少一条缓存指向数据存储至缓存指向数据存储模块的各个节点,每个所述节点存储一条缓存指向数据;每条所述缓存指向数据指向一条所述缓存数据;每条缓存指向数据包括:所指向的缓存数据的唯一编码,和所指向的缓存数据在所述内存缓存模块中的数据引用;当所述缓存指向数据存储模块中任意一个所述节点所存储的缓存指向数据所指向的缓存数据被访问后,将所述节点放置于所述缓存指向数据存储模块中各节点的队首。
进一步,所述的数据存储方法,还包括:将指向所述至少一条缓存指向数据的节点指向数据以键值对的形式存储至键值对存储模块;每个键值对包括一条节点指向数据,每条节点指向数据指向一条所述缓存指向数据;每条节点指向数据包括:所指向的缓存指向数据所指向的缓存数据的唯一编码,和所指向的缓存指向数据在所述缓存指向数据存储模块中的数据引用;
所述将至少一条缓存数据存储至内存缓存模块之后,将所述至少一条缓存指向数据存储至缓存指向数据存储模块包含的各个节点之前,还包括:对于每条缓存数据,分别执行:获取所述缓存数据在所述内存缓存模块中的数据引用;根据所述缓存数据的唯一编码和所述缓存数据在所述内存缓存模块中的数据引用生成一条缓存指向数据;所述将至少一条缓存指向数据存储至缓存指向数据存储模块包含的各个节点之后,将所述节点指向数据存储至键值对存储模块之前,还包括:对于每条缓存指向数据,分别执行:获取所述缓存指向数据在所述缓存指向数据存储模块中的数据引用;根据所述缓存指向数据所指向的缓存数据的唯一编码和所述缓存指向数据在所述缓存指向数据存储模块中的数据引用生成一条节点指向数据;
对存储的缓存数据进行访问,具体包括:根据待访问的缓存数据的唯一编码在所述键值对存储模块中进行查询,得到指向所述缓存数据的缓存指向数据在所述缓存指向数据存储模块中的数据引用;根据得到的所述缓存指向数据在所述缓存指向数据存储模块中的数据引用在所述缓存指向数据存储模块中进行查询,得到所述缓存数据在所述内存缓存模块中的数据引用;根据所述缓存数据在所述内存缓存模块中的数据引用在所述内存缓存模块中进行查询,定位到所述缓存数据;对定位到的缓存数据进行访问;
所述方法还包括:获取所述内存缓存模块中当前缓存数据的数量;将所述当前缓存数据的数量与预设的缓存数据的总量阈值进行比对;如果当前缓存数据的数量大于所述预设的缓存数据的总量阈值,则从所述缓存指向数据存储模块中删除预设数量的节点,其中预设数量不小于所述当前缓存数据的数量与所述预设的缓存数据的总量阈值的差值;将删除的所述节点中的缓存指向数据所指向的缓存数据从内存缓存模块中删除;以及,将指向删除的所述节点中的缓存指向数据的节点指向数据从所述键值对存储模块中删除。
进一步,所述的数据存储方法,所述将至少一条缓存指向数据存储至缓存指向数据存储模块包含的各个节点,具体包括:按照所述至少一条缓存指向数据所指向的所述至少一条缓存数据的存储时间距离当前时间的差值从小到大的顺序,从所述缓存指向数据存储模块的队首节点开始,沿着所述缓存指向数据存储模块的队首节点至队尾节点的方向,依次将所述至少一条缓存指向数据存储至所述缓存指向数据存储模块包含的各个节点中。
进一步,所述的数据存储方法,所述从所述缓存指向数据存储模块中删除预设数量的节点,具体包括:从所述缓存指向数据存储模块的队尾节点开始,沿着所述缓存指向数据存储模块的队尾节点至队首节点的方向,删除预设数量的节点。
进一步,所述的数据存储方法,在所述将节点放置于所述缓存指向数据存储模块中各节点的队首之后,还包括:更新所述节点、所述节点移动前的相邻节点、以及所述节点移动后的相邻节点的指针域指向。
本发明实施例的有益效果在于,重新定义了一种数据结构,结合了键值对和链表这两种数据结构,利用了链表的存储结构依据访问时间对节点进行自动排序的特点和键值对查找数据快的特点,从而提高了数据存储装置的利用率,进而提高了数据的读写性能。
附图说明
图1是本发明第一实施例提供的数据存储装置的模块关系示意图;
图2是本发明第二实施例提供的数据存储装置的模块关系示意图;
图3是本发明第二实施例提供的数据存储装置以.NET语言来实现时的数据结构示意图;
图4为本发明提供的数据存储方法的步骤流程图;
图5a为初始化得到的数据结构示意图;
图5b为添加缓存数据为Data3得到的数据结构示意图;
图5c为添加缓存数据为Data5得到的数据结构示意图;
图5d为添加缓存数据为Data4得到的数据结构示意图;
图6是在图5d的基础上对缓存数据Data3访问之后的数据结构示意图;
图7是在图6的基础上增加一条缓存数据时对已有的缓存数据进行删除的数据结构示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚明了,下面结合具体实施方式并参照附图,对本发明进一步详细说明。应该理解,这些描述只是示例性的,而并非要限制本发明的范围。此外,在以下说明中,省略了对公知结构和技术的描述,以避免不必要地混淆本发明的概念。
本发明实施例中,公开了一种数据存储装置及方法。在本发明实施例中,采用该数据存储装置对缓存数据进行存储后,既能实现快速的查询缓存数据,又能实现根据缓存数据的被访问次数来删除可能被访问次数较少的缓存数据,提高内存缓存的利用率,还能实现适用于不同领域的缓存数据的存储。以下对本发明提供的数据存储装置及方法进行详细说明。
请参阅图1,图1是本发明第一实施例提供的数据存储装置的模块关系示意图。其中,图1所示的数据存储装置可以适用于智能手机(如Android手机、iOS手机等)、平板电脑、掌上电脑、台式电脑以及其他具有处理器和存储器的终端中。
如图1所示,在本发明实施例中,数据存储装置包括内存缓存模块、缓存指向数据存储模块和存储管理模块。
内存缓存模块中存储有至少一条缓存数据,该缓存数据为终端通过网络从服务器中获取的数据。其中,网络可以为互联网,也可以为企业内部网、局域网、移动通信网及其组合,采用的网络方式不用于限制本发明的保护范围。缓存数据可以为文本、图片、视频以及可运行程序等,缓存数据的格式形式不用于限制本发明的保护范围。
缓存指向数据存储模块,包括至少一个节点,用于存储缓存指向数据。每个节点包括一条缓存指向数据,每条缓存指向数据指向一条缓存数据;每条缓存指向数据包括:所指向的缓存数据的唯一编码,和所指向的缓存数据在内存缓存模块中的数据引用。在本发明实施例中,缓存数据的唯一编码由编程人员预先设置,每条缓存数据在从服务器下载到终端后,编程人员都会为其设置唯一的编码。该数据引用记录的是该缓存数据在内存缓存模块中的存储地址,用于指向该缓存数据。
存储管理模块,用于当缓存指向数据存储模块中任意一个节点包括的缓存指向数据所指向的缓存数据被访问后,将节点放置于缓存指向数据存储模块中各节点的队首。
与现有技术的数据存储方案相比,本发明实施例的有益效果为:将被访问后的缓存指向数据放置在队首,实现了依据访问的先后顺序对缓存指向数据进行排列,进而实现对缓存数据的排列,即将最近一次访问过的缓存数据排列至队首。进而有利于依据访问的时间先后删除缓存数据。当由于存储空间的限制,只能保留预定数量的缓存数据时,能够将最近访问过的缓存数据保留,由于最近访问过的缓存数据具有较高的再访问概率,因此,提高了内存的缓存利用率。
请参阅图2,图2是本发明第二实施例提供的数据存储装置的模块关系示意图。
如图2所示,在第一实施例的基础上,本发明实施例还包括:键值对存储模块。
键值对存储模块,用于将节点指向数据以键值对的形式进行存储。每个键值对包括一条节点指向数据,每条节点指向数据指向一条缓存指向数据;每条节点指向数据包括:所指向的缓存指向数据所指向的缓存数据的唯一编码,和所指向的缓存指向数据在缓存指向数据存储模块中的数据引用。键值对也是现有技术中的一种数据结构,该数据结构本身并不是本发明的发明点,但是为了使得公众能够更好的理解本发明,在此对键值对进行简单介绍:一个键值对包括互为对应的键和值,键是编程人员预先设置的,因此可以根据键获得与该键所对应的值。所指向的缓存指向数据所指向的缓存数据的唯一编码,和所指向的缓存指向数据在缓存指向数据存储模块中的数据引用分别为互为对应的键值对中的键和值。
进一步的,每条节点指向数据以键值对<K,Value>的形式进行存储;其中,缓存数据的唯一编码为键值对<K,Value>中的键K,该缓存指向数据在缓存指向数据存储模块中的数据引用为键值对<K,Value>中的值Value。
存储管理模块,还用于:获取待存储的缓存数据以及缓存数据的唯一编码;将缓存数据添加入内存缓存模块中;获取缓存数据在内存缓存模块中的数据引用;根据缓存数据的唯一编码和缓存数据在内存缓存模块中的数据引用生成一条缓存指向数据;将缓存指向数据添加入缓存指向数据存储模块中;获取缓存指向数据在缓存指向数据存储模块中的数据引用;根据缓存数据的唯一编码和缓存指向数据在缓存指向数据存储模块中的数据引用生成一条节点指向数据;将节点指向数据添加入键值对存储模块中。
由于缓存数据的唯一编码是由编程人员预先设置的,因此,在获取对待访问的缓存数据的请求时,可以从请求中获取到该缓存数据的唯一编码。
以下以.NET语言为例结合附图描述存储管理模块将一条缓存数据存储至内存缓存模块的过程。
请参阅图5a-5d,其中,图5a为初始化得到的数据结构示意图;图5b为添加缓存数据为Data3得到的数据结构示意图;图5c为添加缓存数据为Data5得到的数据结构示意图;图5d为添加缓存数据为Data4得到的数据结构示意图。需要说明的是,在进行存储之前,需要初始化一个SortedQueue<K,V>,在当前示例中,设置容量阈值capacity为3,此时,得到的数据结构如图5a所示。在初始化完成之后,执行:获取待添加入的一条缓存数据Data。之后,获取缓存数据Data的唯一编码3,至此,得到待添加入的缓存数据为Data3。将缓存数据Data3添加入内存缓存模块MemeryCache中,参见图5b所示。其中,背景为阴影线的框图表示新增加的缓存数据。获取该缓存数据Data3在内存缓存模块MemeryCache中的数据引用V。根据缓存数据Data3的唯一编码3和该缓存数据在内存缓存模块中的数据引用V生成一条缓存指向数据Node<3,V>,参见图5b所示。将生成的缓存指向数据Node<3,V>添加入缓存指向数据存储模块的队首节点中。参见图5b所示。其中,背景为阴影线的框图表示新增加的缓存数据。获取该缓存指向数据Node<3,V>在缓存指向数据存储模块中的数据引用Value。根据该缓存数据Data3的唯一编码3和缓存指向数据Node<3,V>在缓存指向数据存储模块中的数据引用Value生成一条节点指向数据<3,Value>。将节点指向数据<3,Value>添加入键值对存储模块中。参见图5b所示。其中,背景为阴影线的框图表示新增加的缓存数据。同理,可添加缓存数据Data5,参见图5c所示。其中,背景为阴影线的框图表示新增加的缓存数据。同理,可添加缓存数据Data4,参见图5d所示。其中,背景为阴影线的框图表示新增加的缓存数据。
存储管理模块,还用于:根据待访问的缓存数据的唯一编码在键值对存储模块中进行查询,得到指向缓存数据的缓存指向数据在缓存指向数据存储模块中的数据引用;根据得到的缓存指向数据在缓存指向数据存储模块中的数据引用在缓存指向数据存储模块中进行查询,得到缓存数据在内存缓存模块中的数据引用;根据缓存数据在内存缓存模块中的数据引用在内存缓存模块中进行查询,定位到缓存数据;对定位到的缓存数据进行访问。
以下以.NET语言为例结合附图描述存储管理模块对缓存数据进行访问的过程。
请参阅图6,图6是在图5d的基础上对缓存数据Data3访问之后的数据结构示意图。
如图6所示,当对缓存数据Data3进行访问之后,在缓存指向数据存储模块LinkList中,与当前缓存数据Data3所对应的缓存指向数据Node<3,V>会移动到LinkList的队首,参见如图6,即移动到了LinkList的最上面。
从对缓存数据Data3进行访问之后,其所对应的缓存指向数据Node<3,V>会移动到LinkList的队首的过程可以得知:Node<3,V>由队尾移动到缓存指向数据存储模块队首,由于LinkedList是缓存指向数据存储模块,其各个节点Node之间是双向连接,即缓存指向数据存储模块中每个节点包括节点间数据引用,节点间数据引用包括前向数据引用、后向数据引用;前向数据引用用于指向缓存指向数据存储模块中该节点的前一个节点;后向数据引用用于指向缓存指向数据存储模块中该节点的后一个节点。因此,在移动操作后,仅需要更新互相连接的指针,使得移动操作的时间复杂度为O(1),即保证了无论缓存指向数据存储模块中存储了多少节点,移动操作的时间复杂度恒定为O(1),从而能够保证移动操作的高效性。另一方面,由于缓存指向数据存储模块中每个节点被访问后都能置于队首,因此,实现了缓存指向数据存储模块中能够根据被访问的时间先后顺序将各个节点由队首排列至队尾,进而保证了当仅需要保留最近被访问的预定个数的节点时,可以直接从队尾删除大于预定个数的节点。当将本发明实施例应用在智能终端的视频缓存技术中时,例如,当播放器允许保留的缓存视频数量为有限个数的时候,采用本发明的数据存储装置对缓存数据进行存储,可以确保保留下来的视频为再访问率较高的视频(时间越近,则认为其再访问率越高)。
存储管理模块,还用于:获取内存缓存模块中当前缓存数据的数量;将当前缓存数据的数量与预设的缓存数据的总量阈值进行比对;如果当前缓存数据的数量大于预设的缓存数据的总量阈值,则从缓存指向数据存储模块中删除预设数量的节点,其中预设数量不小于当前缓存数据的数量与预设的缓存数据的总量阈值的差值;将删除的节点中的缓存指向数据所指向的缓存数据从内存缓存模块中删除;以及,将指向删除的节点中的缓存指向数据的节点指向数据从键值对存储模块中删除。
以下以.NET语言为例结合附图描述存储管理模块对缓存数据进行删除的过程。
请参阅图7,图7是在图6的基础上增加一条缓存数据时对已有的缓存数据进行删除的数据结构示意图。
如图7所示,在图6的基础上增加一条缓存数据Data8时,由于缓存数据的数量已经达到容量阈值capacity=3的限制,因此,需要从现有的缓存数据中删除一条,由于最久之前访问的缓存数据为Node<5,V>,其在LinkList的队尾,因此,将该节点从链表LinkList中删除,并删除与其对应的缓存数据Data5和节点指向数据<5,Value>。参见图7,其中,虚线框表示需要删除的数据。
在本发明的另一个实施例中,数据存储装置,存储管理模块在将缓存指向数据添加入缓存指向数据存储模块中时,具体用于:将缓存指向数据添加入缓存指向数据存储模块的队首节点中。
在本发明的另一个实施例中,数据存储装置,存储管理模块在从缓存指向数据存储模块中删除预设数量的节点时,具体用于:从所述缓存指向数据存储模块的队尾节点开始,沿着所述缓存指向数据存储模块的队尾节点至队首节点的方向,删除预设数量的节点。
在采用本发明实施例提供的数据存储装置对缓存数据进行存储时,由于终端内存容量的限制,当缓存数据达到预定值而需要对缓存数据进行删除时,缓存指向数据存储模块由于缓存指向数据以访问时间的先后进行排序存储至各个节点中,底部的节点为访问时间距当前时间最久的节点。因此,保证了每次当缓存数据达到预定值而需要对缓存数据进行删除时,删除的都是被再次访问的可能性最小的记录,以保证留下的缓存数据都是访问的可能性较高的节点,从而提高了数据存储装置的利用率,进而提高了数据的读写性能。
在本发明的另一个实施例中,数据存储装置,缓存指向数据存储模块为双向链表存储结构。存储管理模块,还用于:在将节点放置于缓存指向数据存储模块中各节点的队首之后,更新节点、节点移动前的相邻节点、以及节点移动后的相邻节点的指针域指向。
双向链表是一种数据结构。数据结构是计算机存储、组织数据的方式。双向链表中,将数据以一个个节点的形式进行组织存储,由于双向链表本身为现有技术,在此不再介绍。
当缓存指向数据存储模块为双向链表存储结构时,在双向链表的每个节点中,每条缓存指向数据以键值对Node<K,V>的形式进行存储;其中,缓存数据的唯一编码为键值对Node<K,V>中的键K,该缓存数据在内存缓存模块中的数据引用为键值对Node<K,V>中的值V,即缓存数据的唯一编码和该缓存数据在内存缓存模块中的数据引用分别为一个互为对应的键值对Node<K,V>中的键K和值V。
需要说明的是,在本发明实施例中,链表、键值对可以采用现有技术中的多种编程语言来实现。具体的,采用java或.NET语言时,可以调用原有的类库中的LinkedList<T>类来实现链表的定义,调用HashMap来实现键值对的定义。本发明还可以采用其他编程语言来实现,采用何种编程语言来实现并不能限制本发明的保护范围。
本发明实施例提供的数据存储装置的进一步的有益效果为:数据存储装置中的数据结构与业务无关,因此不必每做一项新项目的时候,因为每个项目的业务逻辑不同而导致每次项目都需要从头开发一次数据结构。而且,由于链表、键值这两个常用的数据结构在现有的编程语言的类库中都有相应的类,本发明利用了这两个常用的数据结构,因此,无论采用何种编程语言,使得本发明都具有一定的通用型,可以适用于多种开发语言,弥补了开发语言本身的类库在特定情况下无法满足特定领域的场景。
以下以采用.NET语言为例来说明本实施例数据存储装置的实现过程。
请参阅图3,图3是本发明第二实施例提供的数据存储装置以.NET语言来实现时的数据结构示意图。
如图3所示,定义一个数据结构SortedQueue<K,V>,其中,K代表缓存数据的唯一编码(键),V代表缓存数据。在SortedQueue<K,V>中的缓存数据根据每条缓存数据的访问时间距离当前时间的远近进行排序。访问时间距离当前时间越近则排序位置越靠近队首(顶部),访问时间距离当前时间越远则排序位置越靠近队尾(底部)。其中,访问包括对缓存数据的添加、查询操作。
数据结构SortedQueue<K,V>内部包括以下两个子数据结构:链表LinkedList<LinkedListNode<KeyValue>>数据结构和键值对数据结构HashMap<K,LinkedListNode<KeyValue>>。
其中,链表LinkedList<LinkedListNode<KeyValue>>,用于实现根据每条缓存数据的访问时间距离当前时间的远近对缓存数据进行排序。当链表中某个节点被访问过则会移动到链表的队首(顶部),这样可以实现越近被访问过的节点在链表的顶部,而越久之前被访问的数据越靠后,当链表的容量达到限额时则会删除链表队尾的节点,从而实现缓存数据的动态调整以保证留下的缓存数据均为访问率比较高的缓存数据。
键值对HashMap<K,LinkedListNode<KeyValue>>,用于实现根据K值快速定位缓存数据内容,包括访问缓存数据、删除缓存数据等功能。
参见图2,SortedQueue结构中的两个对象HashMap和LinkList分别指向HashMap结构和LinkedList结构。HashMap结构和LinkList结构中包含的对象的数量(size)保持一致,并且和缓存设备中实际的缓存数据ValueData的数量保持一致。需要说明的是,图2中的给出的是以对象的数量size=3的情况,并不用来限制本发明的保护范围。
HashMap与LinkedList中的K值一致,为缓存唯一键值。HashMap中的Value指向LinkedList的Node<K,V>节点,而Node节点的V指向缓存设备中实际的缓存数据ValueData的地址。因此通过HashMap的K值可快速找到缓存数据ValueData,通过LinkedList可实现排序功能。
SortedQueue的capacity字段定义缓存数据ValueData的容量阈值,当缓存数据ValueData的数量大于预设的容量阈值时,则需要删除已缓存的一条数据。
请参阅图4,图4为本发明提供的数据存储方法的步骤流程图。本实施例提供的数据存储方法适用于前述的数据存储装置。
如图4所示,在本实施例中,数据存储方法,包括步骤S1,将至少一条缓存数据存储至内存缓存模块。还包括:
步骤S2,将指向所述至少一条缓存数据的至少一条缓存指向数据存储至缓存指向数据存储模块包含的各个节点,每个所述节点存储有一条缓存指向数据。每条缓存指向数据指向一条缓存数据。每条缓存指向数据包括:所指向的缓存数据的唯一编码,和所指向的缓存数据在内存缓存模块中的数据引用。
步骤S3,当缓存指向数据存储模块中任意一个节点所存储的缓存指向数据所指向的缓存数据被访问后,将节点放置于缓存指向数据存储模块中各节点的队首。
进一步,的数据存储方法,还包括以下步骤S4、步骤S5、步骤S6和步骤S11-步骤S14。
其中,步骤S4包括:将指向所述至少一条缓存指向数据的节点指向数据以键值对的形式存储至键值对存储模块。每个键值对包括一条节点指向数据,每条节点指向数据指向一条缓存指向数据。每条节点指向数据包括:所指向的缓存指向数据所指向的缓存数据的唯一编码,和所指向的缓存指向数据在缓存指向数据存储模块中的数据引用。
其中,在步骤S1将至少一条缓存数据存储至内存缓存模块之后,且在步骤S2将所述至少一条缓存指向数据存储至缓存指向数据存储模块包含的各个节点之前,还包括对于每条缓存数据,分别执行以下步骤S11-步骤S12。
步骤S11,获取缓存数据在内存缓存模块中的数据引用。
步骤S12,根据缓存数据的唯一编码和缓存数据在内存缓存模块中的数据引用生成一条缓存指向数据。
在步骤S2将所述至少一条缓存指向数据存储至缓存指向数据存储模块包含的各个节点之后,将所述节点指向数据存储至键值对存储模块之前,还包括,对于每条缓存指向数据,分别执行以下步骤S13-步骤S14。
步骤S13,获取缓存指向数据在缓存指向数据存储模块中的数据引用。
步骤S14,根据所述缓存指向数据所指向的缓存数据的唯一编码和缓存指向数据在缓存指向数据存储模块中的数据引用生成一条节点指向数据。
以下以.NET语言为例结合附图描述将一条缓存数据存储至内存缓存模块的过程。
请参阅图5a-5d,其中,图5a为初始化得到的数据结构示意图;图5b为添加缓存数据为Data3得到的数据结构示意图;图5c为添加缓存数据为Data5得到的数据结构示意图;图5d为添加缓存数据为Data4得到的数据结构示意图。需要说明的是,在执行步骤S11之前,需要初始化一个SortedQueue<K,V>,在当前示例中,设置容量阈值capacity为3,此时,得到的数据结构如图5a所示。在初始化完成之后,执行以下步骤:
获取待添加入的一条缓存数据Data。之后,获取所述待添加入的缓存数据Data的唯一编码3,至此,得到待添加入的缓存数据为Data3。将所述缓存数据Data3添加入所述内存缓存模块MemeryCache中,参见图5b所示。其中,背景为阴影线的框图表示新增加的缓存数据。获取该缓存数据Data3在所述内存缓存模块MemeryCache中的数据引用V。根据缓存数据Data3的唯一编码3和该缓存数据在内存缓存模块中的数据引用V生成一条缓存指向数据Node<3,V>,参见图5b所示。将生成的缓存指向数据Node<3,V>添加入链表的队首节点中。参见图5b所示。其中,背景为阴影线的框图表示新增加的缓存数据。获取该缓存指向数据Node<3,V>在所述链表中的数据引用Value。根据该缓存数据Data3的唯一编码3和缓存指向数据Node<3,V>在所述链表中的数据引用Value生成一条节点指向数据<3,Value>。将所述节点指向数据<3,Value>添加入所述键值对存储模块中。参见图5b所示。其中,背景为阴影线的框图表示新增加的缓存数据。同理,可添加缓存数据Data5,参见图5c所示。其中,背景为阴影线的框图表示新增加的缓存数据。同理,可添加缓存数据Data4,参见图5d所示。其中,背景为阴影线的框图表示新增加的缓存数据。
步骤S5包括:对存储的缓存数据进行访问。该步骤具体包括以下步骤S51-步骤S54。
步骤S51,根据待访问的缓存数据的唯一编码在键值对存储模块中进行查询,得到指向缓存数据的缓存指向数据在缓存指向数据存储模块中的数据引用。
步骤S52,根据得到的缓存指向数据在缓存指向数据存储模块中的数据引用在缓存指向数据存储模块中进行查询,得到缓存数据在内存缓存模块中的数据引用。
步骤S53,根据缓存数据在内存缓存模块中的数据引用在内存缓存模块中进行查询,定位到缓存数据。
步骤S54,对定位到的缓存数据进行访问。
以下以.NET语言为例结合附图描述对缓存数据进行访问的过程。
请参阅图6,图6是在图5d的基础上对缓存数据Data3访问之后的数据结构示意图。
如图6所示,当对缓存数据Data3进行访问之后,在缓存指向数据存储模块LinkList中,与当前缓存数据Data3所对应的缓存指向数据Node<3,V>会移动到LinkList的队首,参见如图6,即移动到了LinkList的最上面。
从对缓存数据Data3进行访问之后,其所对应的缓存指向数据Node<3,V>会移动到LinkList的队首的过程可以得知:Node<3,V>由队尾移动到链表队首,由于LinkedList是链表,其各个节点Node之间是双向连接,即链表中每个节点包括节点间数据引用,节点间数据引用包括前向数据引用、后向数据引用;前向数据引用用于指向链表中该节点的前一个节点;后向数据引用用于指向链表中该节点的后一个节点。因此,在移动操作后,仅需要更新互相连接的指针,使得移动操作的时间复杂度为O(1),即保证了无论链表中存储了多少节点,移动操作的时间复杂度恒定为O(1),从而能够保证移动操作的高效性。另一方面,由于链表中每个节点被访问后都能置于队首,因此,实现了链表中能够根据被访问的时间先后顺序将各个节点由队首排列至队尾,进而保证了当仅需要保留最近被访问的预定个数的节点时,可以直接从队尾删除大于预定个数的节点。当将本发明实施例应用在智能终端的视频缓存技术中时,例如,当播放器允许保留的缓存视频数量为有限个数的时候,采用本发明所述的数据存储装置对缓存数据进行存储,可以确保保留下来的视频为再访问率较高的视频(时间越近,则认为其再访问率越高)。
步骤S6具体包括以下步骤S61-步骤S64。
步骤S61,获取内存缓存模块中当前缓存数据的数量。
步骤S62,将当前缓存数据的数量与预设的缓存数据的总量阈值进行比对。
步骤S63,如果当前缓存数据的数量大于预设的缓存数据的总量阈值,则从缓存指向数据存储模块中删除预设数量的节点,其中预设数量不小于当前缓存数据的数量与预设的缓存数据的总量阈值的差值。
步骤S64,将删除的节点中的缓存指向数据所指向的缓存数据从内存缓存模块中删除;以及,将指向删除的节点中的缓存指向数据的节点指向数据从键值对存储模块中删除。
以下以.NET语言为例结合附图描述对缓存数据进行删除的过程。
请参阅图7,图7是在图6的基础上增加一条缓存数据时对已有的缓存数据进行删除的数据结构示意图。
如图7所示,在图6的基础上增加一条缓存数据Data8时,由于缓存数据的数量已经达到容量阈值capacity=3的限制,因此,需要从现有的缓存数据中删除一条,由于最久之前访问的缓存数据为Node<5,V>,其在LinkList的队尾,因此,将该节点从链表LinkList中删除,并删除与其对应的缓存数据Data5和节点指向数据<5,Value>。参见图7,其中,虚线框表示需要删除的数据。
在本发明的另一个实施例中,数据存储方法,其中,“将至少一条缓存指向数据存储至缓存指向数据存储模块包含的各个节点”,具体包括:按照所述至少一条缓存指向数据所指向的所述至少一条缓存数据的存储时间距离当前时间的差值从小到大的顺序,从所述缓存指向数据存储模块的队首节点开始,沿着所述缓存指向数据存储模块的队首节点至队尾节点的方向,依次将所述至少一条缓存指向数据存储至所述缓存指向数据存储模块包含的各个节点中。
在本发明的另一个实施例中,数据存储方法,其中,“从所述缓存指向数据存储模块中删除预设数量的节点”,具体包括:从所述缓存指向数据存储模块的队尾节点开始,沿着所述缓存指向数据存储模块的队尾节点至队首节点的方向,删除预设数量的节点。
在本发明的另一个实施例中,数据存储方法,其中,在“将节点放置于所述缓存指向数据存储模块中各节点的队首”之后,还包括:更新节点、节点移动前的相邻节点、以及节点移动后的相邻节点的指针域指向。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分步骤是可以通过程序来指令相关硬件来完成,所述的程序可以存储于一计算机可读取存储介质中,该程序在执行时,包括如下如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(Read-OnlyMemory,简称ROM)或随机存取存储器(RandomAccessMemory,简称RAM)等。
本发明实施例方法中的步骤可以根据实际需要进行顺序调整、合并和删减。
应当理解的是,本发明的上述具体实施方式仅仅用于示例性说明或解释本发明的原理,而不构成对本发明的限制。因此,在不偏离本发明的精神和范围的情况下所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。此外,本发明所附权利要求旨在涵盖落入所附权利要求范围和边界、或者这种范围和边界的等同形式内的全部变化和修改例。
Claims (10)
1.一种数据存储装置,包括内存缓存模块,所述内存缓存模块中存储有至少一条缓存数据,其特征在于,还包括:
缓存指向数据存储模块,包括至少一个节点,用于存储缓存指向数据;每个所述节点包括一条缓存指向数据,每条缓存指向数据指向一条所述缓存数据;每条缓存指向数据包括:所指向的缓存数据的唯一编码,和所指向的缓存数据在所述内存缓存模块中的数据引用;
存储管理模块,用于当所述缓存指向数据存储模块中任意一个所述节点包括的缓存指向数据所指向的缓存数据被访问后,将所述节点放置于所述缓存指向数据存储模块中各节点的队首。
2.根据权利要求1所述的装置,其特征在于,还包括:键值对存储模块,用于将节点指向数据以键值对的形式进行存储;每个键值对包括一条节点指向数据,每条节点指向数据指向一条所述缓存指向数据;每条节点指向数据包括:所指向的缓存指向数据所指向的缓存数据的唯一编码,和所指向的缓存指向数据在所述缓存指向数据存储模块中的数据引用;
所述存储管理模块,还用于:获取待存储的缓存数据以及所述缓存数据的唯一编码;将所述缓存数据添加入所述内存缓存模块中;获取所述缓存数据在所述内存缓存模块中的数据引用;根据所述缓存数据的唯一编码和所述缓存数据在所述内存缓存模块中的数据引用生成一条缓存指向数据;将所述缓存指向数据添加入所述缓存指向数据存储模块中;获取所述缓存指向数据在所述缓存指向数据存储模块中的数据引用;根据所述缓存数据的唯一编码和所述缓存指向数据在所述缓存指向数据存储模块中的数据引用生成一条节点指向数据;将所述节点指向数据添加入所述键值对存储模块中;
所述存储管理模块,还用于:根据待访问的缓存数据的唯一编码在所述键值对存储模块中进行查询,得到指向所述缓存数据的缓存指向数据在所述缓存指向数据存储模块中的数据引用;根据得到的所述缓存指向数据在所述缓存指向数据存储模块中的数据引用在所述缓存指向数据存储模块中进行查询,得到所述缓存数据在所述内存缓存模块中的数据引用;根据所述缓存数据在所述内存缓存模块中的数据引用在所述内存缓存模块中进行查询,定位到所述缓存数据;对定位到的缓存数据进行访问;
所述存储管理模块,还用于:获取所述内存缓存模块中当前缓存数据的数量;将所述当前缓存数据的数量与预设的缓存数据的总量阈值进行比对;如果当前缓存数据的数量大于所述预设的缓存数据的总量阈值,则从所述缓存指向数据存储模块中删除预设数量的节点,其中预设数量不小于所述当前缓存数据的数量与所述预设的缓存数据的总量阈值的差值;将删除的所述节点中的缓存指向数据所指向的缓存数据从内存缓存模块中删除;以及,将指向删除的所述节点中的缓存指向数据的节点指向数据从所述键值对存储模块中删除。
3.根据权利要求2所述的装置,其特征在于,所述存储管理模块在将所述缓存指向数据添加入所述缓存指向数据存储模块中时,具体用于:将所述缓存指向数据添加入所述缓存指向数据存储模块的队首节点中。
4.根据权利要求2所述的装置,其特征在于,所述存储管理模块在从所述缓存指向数据存储模块中删除预设数量的节点时,具体用于:从所述缓存指向数据存储模块的队尾节点开始,沿着所述缓存指向数据存储模块的队尾节点至队首节点的方向,删除预设数量的节点。
5.根据权利要求1所述的装置,其特征在于,所述缓存指向数据存储模块为双向链表存储结构;
所述存储管理模块,还用于:在将所述节点放置于所述缓存指向数据存储模块中各节点的队首之后,更新所述节点、所述节点移动前的相邻节点、以及所述节点移动后的相邻节点的指针域指向。
6.一种数据存储方法,包括:将至少一条缓存数据存储至内存缓存模块,其特征在于,所述方法还包括:
将指向所述至少一条缓存数据的至少一条缓存指向数据存储至缓存指向数据存储模块包含的各个节点,每个所述节点存储有一条所述缓存指向数据;每条所述缓存指向数据指向一条所述缓存数据;每条缓存指向数据包括:所指向的缓存数据的唯一编码,和所指向的缓存数据在所述内存缓存模块中的数据引用;
当所述缓存指向数据存储模块中任意一个所述节点所存储的缓存指向数据所指向的缓存数据被访问后,将所述节点放置于所述缓存指向数据存储模块中各节点的队首。
7.根据权利要求6所述的方法,其特征在于,所述方法还包括:
将指向所述至少一条缓存指向数据的节点指向数据以键值对的形式存储至键值对存储模块;每个键值对包括一条节点指向数据,每条节点指向数据指向一条所述缓存指向数据;每条节点指向数据包括:所指向的缓存指向数据所指向的缓存数据的唯一编码,和所指向的缓存指向数据在所述缓存指向数据存储模块中的数据引用;
所述将至少一条缓存数据存储至内存缓存模块之后,将所述至少一条缓存指向数据存储至缓存指向数据存储模块包含的各个节点之前,还包括:
对于每条缓存数据,分别执行:
获取所述缓存数据在所述内存缓存模块中的数据引用;
根据所述缓存数据的唯一编码和所述缓存数据在所述内存缓存模块中的数据引用生成一条缓存指向数据;
所述将至少一条缓存指向数据存储至缓存指向数据存储模块包含的各个节点之后,将所述节点指向数据存储至键值对存储模块之前,还包括:
对于每条缓存指向数据,分别执行:
获取所述缓存指向数据在所述缓存指向数据存储模块中的数据引用;
根据所述缓存指向数据所指向的缓存数据的唯一编码和所述缓存指向数据在所述缓存指向数据存储模块中的数据引用生成一条节点指向数据;
对存储的缓存数据进行访问,具体包括:
根据待访问的缓存数据的唯一编码在所述键值对存储模块中进行查询,得到指向所述缓存数据的缓存指向数据在所述缓存指向数据存储模块中的数据引用;
根据得到的所述缓存指向数据在所述缓存指向数据存储模块中的数据引用在所述缓存指向数据存储模块中进行查询,得到所述缓存数据在所述内存缓存模块中的数据引用;
根据所述缓存数据在所述内存缓存模块中的数据引用在所述内存缓存模块中进行查询,定位到所述缓存数据;
对定位到的缓存数据进行访问;
所述方法还包括:
获取所述内存缓存模块中当前缓存数据的数量;
将所述当前缓存数据的数量与预设的缓存数据的总量阈值进行比对;
如果当前缓存数据的数量大于所述预设的缓存数据的总量阈值,则从所述缓存指向数据存储模块中删除预设数量的节点,其中预设数量不小于所述当前缓存数据的数量与所述预设的缓存数据的总量阈值的差值;
将删除的所述节点中的缓存指向数据所指向的缓存数据从内存缓存模块中删除;以及,将指向删除的所述节点中的缓存指向数据的节点指向数据从所述键值对存储模块中删除。
8.根据权利要求6或7所述的方法,其特征在于,所述将至少一条缓存指向数据存储至缓存指向数据存储模块包含的各个节点,具体包括:
按照所述至少一条缓存指向数据所指向的所述至少一条缓存数据的存储时间距离当前时间的差值从小到大的顺序,从所述缓存指向数据存储模块的队首节点开始,沿着所述缓存指向数据存储模块的队首节点至队尾节点的方向,依次将所述至少一条缓存指向数据存储至所述缓存指向数据存储模块包含的各个节点中。
9.根据权利要求7所述的方法,其特征在于,所述从所述缓存指向数据存储模块中删除预设数量的节点,具体包括:
从所述缓存指向数据存储模块的队尾节点开始,沿着所述缓存指向数据存储模块的队尾节点至队首节点的方向,删除预设数量的节点。
10.根据权利要求6所述的方法,其特征在于,其中,在所述将节点放置于所述缓存指向数据存储模块中各节点的队首之后,还包括:
更新所述节点、所述节点移动前的相邻节点、以及所述节点移动后的相邻节点的指针域指向。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710172307.3A CN108628540A (zh) | 2017-03-22 | 2017-03-22 | 数据存储装置及方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710172307.3A CN108628540A (zh) | 2017-03-22 | 2017-03-22 | 数据存储装置及方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN108628540A true CN108628540A (zh) | 2018-10-09 |
Family
ID=63706444
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710172307.3A Pending CN108628540A (zh) | 2017-03-22 | 2017-03-22 | 数据存储装置及方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108628540A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109491988A (zh) * | 2018-11-05 | 2019-03-19 | 北京中安智达科技有限公司 | 一种支持全量更新的数据实时关联方法 |
CN110908972A (zh) * | 2019-11-19 | 2020-03-24 | 加和(北京)信息科技有限公司 | 一种日志数据预处理方法、装置、电子设备和存储介质 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2005332507A (ja) * | 2004-05-21 | 2005-12-02 | Sony Corp | 情報処理装置、および情報処理方法、並びにコンピュータ・プログラム |
CN103019960A (zh) * | 2012-12-03 | 2013-04-03 | 华为技术有限公司 | 分布式缓存方法及系统 |
CN103853504A (zh) * | 2014-02-12 | 2014-06-11 | 上海爱数软件有限公司 | 一种缓存系统数据存取方法 |
CN103942342A (zh) * | 2014-05-12 | 2014-07-23 | 中国人民大学 | 一种内存数据库oltp&olap并发查询优化方法 |
US20150113216A1 (en) * | 2013-10-17 | 2015-04-23 | International Business Machines Corporation | Reducing elapsed time to access data from a storage medium during a recall operation |
CN104571954A (zh) * | 2014-12-26 | 2015-04-29 | 杭州华为数字技术有限公司 | 一种数据存储方法及装置 |
CN105446895A (zh) * | 2014-08-25 | 2016-03-30 | 北京云巢动脉科技有限公司 | 一种存储系统非同源数据运行时io去重的方法及系统 |
-
2017
- 2017-03-22 CN CN201710172307.3A patent/CN108628540A/zh active Pending
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2005332507A (ja) * | 2004-05-21 | 2005-12-02 | Sony Corp | 情報処理装置、および情報処理方法、並びにコンピュータ・プログラム |
CN103019960A (zh) * | 2012-12-03 | 2013-04-03 | 华为技术有限公司 | 分布式缓存方法及系统 |
US20150113216A1 (en) * | 2013-10-17 | 2015-04-23 | International Business Machines Corporation | Reducing elapsed time to access data from a storage medium during a recall operation |
CN103853504A (zh) * | 2014-02-12 | 2014-06-11 | 上海爱数软件有限公司 | 一种缓存系统数据存取方法 |
CN103942342A (zh) * | 2014-05-12 | 2014-07-23 | 中国人民大学 | 一种内存数据库oltp&olap并发查询优化方法 |
CN105446895A (zh) * | 2014-08-25 | 2016-03-30 | 北京云巢动脉科技有限公司 | 一种存储系统非同源数据运行时io去重的方法及系统 |
CN104571954A (zh) * | 2014-12-26 | 2015-04-29 | 杭州华为数字技术有限公司 | 一种数据存储方法及装置 |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109491988A (zh) * | 2018-11-05 | 2019-03-19 | 北京中安智达科技有限公司 | 一种支持全量更新的数据实时关联方法 |
CN109491988B (zh) * | 2018-11-05 | 2021-12-14 | 北京中安智达科技有限公司 | 一种支持全量更新的数据实时关联方法 |
CN110908972A (zh) * | 2019-11-19 | 2020-03-24 | 加和(北京)信息科技有限公司 | 一种日志数据预处理方法、装置、电子设备和存储介质 |
CN110908972B (zh) * | 2019-11-19 | 2022-09-02 | 加和(北京)信息科技有限公司 | 一种日志数据预处理方法、装置、电子设备和存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11882054B2 (en) | Terminating data server nodes | |
US11645183B1 (en) | User interface for correlation of virtual machine information and storage information | |
CN108647151A (zh) | 一种全闪系统元数据落盘方法、装置、设备及存储介质 | |
CN109656956B (zh) | 一种实现业务系统数据集中式缓存的方法及装置 | |
CN107229415A (zh) | 一种数据写方法、数据读方法及相关设备、系统 | |
CN109960686A (zh) | 数据库的日志处理方法和装置 | |
CN106326499B (zh) | 一种数据处理方法及装置 | |
CN107943718A (zh) | 一种清理缓存文件的方法和装置 | |
CN109471843A (zh) | 一种元数据缓存方法、系统及相关装置 | |
US10642530B2 (en) | Global occupancy aggregator for global garbage collection scheduling | |
CN107368608A (zh) | 基于arc替换算法的hdfs小文件缓存管理方法 | |
CN109189772A (zh) | 用于无文件系统存储介质的文件管理方法及系统 | |
CN108415962A (zh) | 一种云存储系统 | |
CN110287152A (zh) | 一种数据管理的方法以及相关装置 | |
US20210286730A1 (en) | Method, electronic device and computer program product for managing cache | |
CN107480072A (zh) | 基于关联模式的透明计算服务端缓存优化方法及系统 | |
CN110795042A (zh) | 一种全闪存储系统元数据写缓存刷盘方法及相关组件 | |
CN102542036B (zh) | 使用优化的表 | |
US8600990B2 (en) | Interacting methods of data extraction | |
US11080239B2 (en) | Key value store using generation markers | |
CN108628540A (zh) | 数据存储装置及方法 | |
CN117235088B (zh) | 一种存储系统的缓存更新方法、装置、设备、介质及平台 | |
CN105915595A (zh) | 一种集群存储系统存取数据的方法以及集群存储系统 | |
CN111459412B (zh) | 磁盘管理方法、装置以及电子设备 | |
CN111752941A (zh) | 一种数据存储、访问方法、装置、服务器及存储介质 |
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 | ||
WD01 | Invention patent application deemed withdrawn after publication | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20181009 |