CN109947787A - 一种数据分层存储、分层查询方法及装置 - Google Patents
一种数据分层存储、分层查询方法及装置 Download PDFInfo
- Publication number
- CN109947787A CN109947787A CN201711036438.5A CN201711036438A CN109947787A CN 109947787 A CN109947787 A CN 109947787A CN 201711036438 A CN201711036438 A CN 201711036438A CN 109947787 A CN109947787 A CN 109947787A
- Authority
- CN
- China
- Prior art keywords
- data
- block
- local
- file
- disk
- 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/0638—Organizing or formatting or addressing of data
- G06F3/064—Management of blocks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/17—Details of further file system functions
- G06F16/172—Caching, prefetching or hoarding of files
-
- 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
- G06F3/0619—Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
-
- 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/0638—Organizing or formatting or addressing of data
- G06F3/0643—Management of files
-
- 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/0647—Migration mechanisms
-
- 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
-
- 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/0653—Monitoring storage devices or 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/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/067—Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
-
- 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/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0683—Plurality of storage devices
- G06F3/0685—Hybrid storage combining heterogeneous device types, e.g. hierarchical storage, hybrid arrays
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Computer Security & Cryptography (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
一种数据分层存储、分层查询方法及装置,包括:将数据文件存储到远程磁盘;从所述远程磁盘获取用户最近一次访问的数据文件,分割所述数据文件为数据块,并将所述数据块缓存在本地磁盘;将所述数据块从所述本地磁盘加载到本地内存缓存。本申请至少能够自动按照实际的数据访问热度将数据以数据块的形式进行分层存储,数据的加载和计算更快,而且网络资源消耗更少。
Description
技术领域
本发明涉及计算机应用技术领域,尤其涉及一种数据分层存储、分层查询方法及装置。
背景技术
分析型数据库(Analytic DB)是将参与计算的数据在计算之前从外部数据源(如:分布式文件系统)全部导入到计算结点,计算过程中读取本地数据即可,这虽然可以降低计算过程的网络开销,但仍至少存在如下问题:
1、分析型数据库的本地容量有限,而计算之前又需要存储大量数据文件对此,目前主要通过在分析型数据库增加计算结点来扩大其存储容量的方式解决,而增加计算结点必然会增加用户的使用成本;
2、相关技术中,通过预先在分析型数据库设置一定条件将数据分为冷热两种并进行分层存储,热数据存在分析型数据库的高层级(比如,本地SSD),冷数据存储在低层级(比如,本地HDD),一方面仍存在上述第一点所述问题,另一方面由于这些条件无法随用户访问情况动态更新,因而数据冷热分配不够精确,分层存储也不够灵活;
3、目前,分析型数据库虽然可支持分层存储,但其数据分层的颗粒是文件,颗粒度比较大,一方面不能对文件内部数据的冷热进行分层存储,另一方面,还会降低数据的加载速度和计算速度,同时造成大量的网络资源浪费。
发明内容
本申请旨在至少解决相关技术中的技术问题之一。
本申请提供一种数据分层存储、分层查询方法及装置,至少能够自动按照实际的数据访问热度将数据以数据块的形式进行分层存储,数据的加载和计算更快,而且网络资源消耗更少。
本申请采用如下技术方案。
一种数据分层存储方法,包括:
将数据文件存储到远程磁盘;
从所述远程磁盘获取用户最近一次访问的数据文件,分割所述数据文件为数据块,并将所述数据块缓存在本地磁盘;
将所述数据块从所述本地磁盘加载到本地内存缓存。
其中,所述本地磁盘创建有至少一个定长的块文件,所述块文件包括定长的块;所述将所述数据块缓存在所述本地磁盘,包括:将所述数据块缓存到所述本地磁盘的空块中。
其中,所述将所述数据块缓存在所述本地磁盘之前,还包括:在所述本地磁盘的所有块均存满时,采用最近最少使用算法淘汰部分块中的数据,以清空所述部分块。
其中,所述本地内存创建有至少一个定长的块文件,所述块文件包括定长的块;所述将所述数据块从所述本地磁盘加载到本地内存缓存之前,还包括:在所述本地内存中所有块均存满时,采用最近最少使用算法淘汰部分块中的数据,以清空所述部分块。
其中,所述本地磁盘还创建有至少一个本地文件,所述本地文件用于存储数据文件;所述方法还包括:将预先指定的数据文件缓存在所述本地磁盘的本地文件。
其中,所述本地磁盘包含块缓存区和文件缓存区,所述块缓存区创建有所述块文件,所述文件缓存区创建有所述本地文件;所述将预先指定的数据文件缓存在所述本地磁盘的本地文件之后,还包括:通过扫描所述本地磁盘中文件缓存区的使用容量,将所述本地磁盘中所述块缓存区进行扩容或缩容。
其中,所述将所述本地磁盘中块缓存区的扩容或缩容,至少包括如下之一:
根据所述文件缓存区可释放的容量相应增大所述块缓存区的容量,并根据新增容量在所述块缓存区新建所述块文件或所述块;
根据所述文件缓存区需增加的容量,将所述块缓存区中的部分所述块文件或块删除,并相应缩小所述块缓存区的容量。
其中,所述将所述数据块缓存在所述本地磁盘之前,还包括:在所述本地磁盘设置对应所述块文件的预写式日志WAL。
其中,还包括:用户访问时,从本地内存、本地磁盘到远程磁盘逐层递归向下查询相应的数据块,同时将所述数据块在本地内存和本地磁盘逐层缓存。
一种数据分层查询方法,包括:
聚合结点将来自用户设备的计算任务拆分为计算子任务并分发给各个计算结点;
各个计算结点通过执行所述计算子任务执行如下操作:从本地内存、本地磁盘到远程磁盘逐层递归向下查询相应的数据块,同时将所述数据块在本地内存和本地磁盘逐层缓存,并将查询到的数据块返回给所述聚合结点;
聚合结点将所述各个计算结点返回的数据块聚合后提供给所述用户设备。
其中,所述各个计算结点通过执行所述计算子任务还执行如下操作:将数据文件存储到远程磁盘。
其中,所述从本地内存、本地磁盘到远程磁盘逐层递归向下查询相应的数据块,同时将所述数据块在本地内存和本地磁盘中逐层缓存,包括:在所述本地内存和本地磁盘中均未查询到所述数据块时,从所述远程磁盘获取相应的数据文件,分割所述数据文件为数据块,并将所述数据块缓存在本地磁盘;将所述数据块从所述本地磁盘加载到本地内存缓存。
一种数据分层存储装置,包括:
远程文件处理单元,用于将数据文件存储到远程磁盘;以及,从所述远程磁盘获取用户最近一次访问的数据文件;
块处理单元,用于分割所述数据文件为数据块,并将所述数据块缓存在本地磁盘;
内存缓存单元,用于将所述数据块从所述本地磁盘加载到本地内存缓存。
其中,还包括:块缓存单元,用于在所述本地磁盘创建至少一个定长的块文件,所述块文件至少包括定长的块;所述块处理单元,用于将所述数据块缓存到空的所述块中。
其中,还包括:文件处理单元,用于在所述本地磁盘创建至少一个本地文件,所述本地文件用于存储数据文件;以及,用于将预先指定的数据文件缓存在所述本地磁盘的本地文件。
其中,所述本地磁盘包含块缓存区和文件缓存区,所述块缓存区创建有所述块文件,所述文件缓存区创建有所述本地文件;还包括:磁盘处理单元,用于通过扫描所述本地磁盘中文件缓存区的使用容量,将所述本地磁盘中所述块缓存区进行扩容或缩容。
其中,还包括:元数据处理单元,用于在所述本地磁盘设置对应所述块文件的预写式日志WAL。
其中,还包括:块文件处理单元,用于在用户访问时,从本地内存、本地磁盘到远程磁盘逐层递归向下查询相应的数据块;所述块缓存单元,还用于在所述块文件处理单元查询所述数据块的过程中,将所述数据块在本地内存和本地磁盘逐层缓存。
一种计算设备,包括:
配置为与远程磁盘进行通信的通信电路;
支持分层存储模式的数据存储器,包含作为低层级的本地磁盘和作为高层级的本地内存;
存储有数据分层存储程序的存储器;
处理器,配置为读取所述数据分层存储程序以执行如权利要求1至8任一项所述数据分层存储方法的操作。
一种分布式计算系统,包括:至少一个聚合结点和多个计算结点;其中,
所述聚合结点,用于将来自用户设备的计算任务拆分为计算子任务并分发给各个计算结点;以及,将所述各个计算结点返回的数据块聚合后提供给所述用户设备;
所述计算结点,用于通过执行所述计算子任务执行如下操作:从本地内存、本地磁盘到远程磁盘逐层递归向下查询相应的数据块,同时将所述数据块在本地内存和本地磁盘逐层缓存,并将查询到的数据块返回给所述聚合结点。
本申请包括以下优点:
一方面,本申请是将用户最近一次访问的数据文件分割成数据块并分层存储在本地,使分析型数据库可随用户访问情况的变化动态更新本地分层存储的数据,从而按照实际的数据访问热度将热数据以小颗粒度的数据块进行分层存储,数据冷热分配和分层存储更符合实际的数据访问情况,而且可按照文件内部数据块的冷热自动进行分层存储,不仅可大大提高数据的加载速度和计算速度,而且分析型数据库与用户设备之间、以及分析型数据库与远程磁盘之间都需要频繁传输数据文件,从而节省了大量网络资源。
另一方面,本申请通过将大量的数据文件存储到远程磁盘,不需要在计算之前将所有数据文件都存储在分析型数据库本地,而只需加载参与计算(即用户当前访问)的数据到本地,相当于虚拟的扩大了分析型数据库的本地容量,大大降低了分析型数据库的本地存储压力,降低了用户的使用成本,同时还可避免因从远程传输大量数据文件到本地而造成的网络资源浪费。
再一方面,本申请中分析型数据库可支持数据文件和数据块共存的存储方式,一方面对于实时性要求不高的应用场景可按照实际的数据访问热度将其中的热数据以数据块的小颗粒度进行分层存储,另一方面对于实时性要求比较高的应用场景还可以将其数据文件直接存在本地,这样,可兼顾高计算速度和多种应用场景,用户体验更好。
当然,实施本申请的任一产品必不一定需要同时达到以上所述的所有优点。
附图说明
图1为本申请示例性应用环境的示意图;
图2为实施例一数据分层存储方法的流程示意图;
图3为实施例一中数据分层查询方法的示例性流程示意图;
图4为实施例一中数据分层查询方法的另一示例性流程示意图;
图5为实施例二中数据分层存储装置的示例性结构示意图;
图6为示例二中分析型数据库中计算结点的层级结构及其与远程磁盘之间交互的示意图;
图7为示例三分析型数据库中计算结点的层级结构及其与远程磁盘之间交互的示意图;
图8为示例四中缩容扩容的示意图;
图9为示例五中数据块分层存储模式下数据访问流程的示意图。
具体实施方式
下面将结合附图及实施例对本申请的技术方案进行更详细的说明。
需要说明的是,如果不冲突,本申请实施例以及实施例中的各个特征可以相互结合,均在本申请的保护范围之内。另外,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
在一个典型的配置中,客户端或服务器的计算设备可包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存(memory)。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。内存可能包括模块1,模块2,……,模块N(N为大于2的整数)。
计算机可读介质包括永久性和非永久性、可移动和非可移动存储介质。存储介质可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM),快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括非暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
相关技术中,分析型数据库仅支持预存储模式,在预存储模式下分析型数据库会在计算之前预先将用户的大量数据文件存储在本地,此模式至少存在如下缺陷:1、大量数据文件存储在本地,会占用大量本地空间,而分析型数据库的本地容量有限,在用户数据量很大时就需要增加计算结点,这必然会增加用户的使用成本;2、数据导入过程慢,当用户导入的数据量非常大时时间成本高,且导入过程将会消耗大量网络资源,会间接影响分析型数据库服务的稳定性;3、用户导入的数据文件中可能存在大量冷数据,这些冷数据不仅会占用本地存储空间,而且会影响计算速度;4、计算过程中,计算结点读取数据时以文件为单位进行读取,颗粒度高,读取效率低,如果一个数据文件中热数据和冷数据共存,还可能读取到不需要参与计算的数据,不仅影响了数据的加载速度和计算速度,而且会造成大量的网络资源浪费。
相关技术中,分析型数据库可以将数据文件按照冷热程度进行存储,但不能对文件内部块的冷热进行分层存储,这必然也会造成数据的加载速度和计算速度慢,而且会因为传输大量颗粒度较大的数据文件而造成网络资源浪费。
针对相关技术存在的上述技术问题,本申请提供如下技术方案。
如图1所示,为本申请技术方案的示例性应用环境示意图。如图1所示,分析型数据库可以包括多个聚合结点(M1、……、Mn,n为不小于2的整数)和多个计算结点(Worker1、……、Worker_m,m为不小于2的整数),各聚合结点负责与用户进行交互,将用户提交的任务进行拆分并下发到各个计算结点,计算结点执行聚合结点下发的任务,并将计算结果反馈给聚合结点,聚合结点会将各计算结点反馈的计算结果合并之后提供给用户。其中,分析型数据库中的计算结点在执行查询计算时,会从外部数据源(比如,分布式文件系统)直接拷贝一份数据到本地,再从本地读取相应的数据文件。比如,需要查询数据时,用户可以把查询SQL发送到聚合结点Mn,聚合结点Mn将相应的查询任务拆分为子任务并分发到Worker1和Worker_m,Worker1和Worker_m分别执行查询,Worker1和Worker_m会分别从将外部数据源直接拷贝Data1和Data2,再对Data1和Data2进行查询计算,并最终将查询计算的结果返回给聚合结点Mn,聚合结点Mn将Worker1和Worker_m返回的结果聚合后返回给用户。
下面对本申请的技术方案进行详细说明。需要说明的是,本申请如下技术方案可应用于(但不限于)分析型数据库。除此之外,也可以应用于其他类型的数据库,本文不予限制。
实施例一
一种数据分层存储方法,如图2所示,可以包括:
步骤201,将数据文件存储到远程磁盘;
步骤202,从所述远程磁盘获取用户最近一次访问的数据文件,分割所述数据文件为数据块,并将所述数据块缓存在本地磁盘;
步骤203,将所述数据块从所述本地磁盘加载到本地内存缓存。
本实施例中,将用户最近一次访问的数据文件分割成数据块并分层存储在本地,使分析型数据库可随用户访问情况的变化动态更新本地分层存储的数据,从而按照实际的数据访问热度将热数据以小颗粒度的数据块进行分层存储,数据冷热分配和分层存储更符合实际的数据访问情况,而且可按照文件内部数据块的冷热自动进行分层存储,不仅可大大提高数据的加载速度和计算速度,而且分析型数据库与用户设备之间、以及分析型数据库与远程磁盘之间都需要频繁传输数据文件,从而节省了大量网络资源。
本实施例中,本地内存和本地磁盘属于分析型数据库,分层存储时本地内存为高层级、本地磁盘为低层级,即在分析型数据库被访问时,优先从本地内存获取数据块,本地内存没有时再从本地磁盘获取,如果本地磁盘没有则说明该数据块没有在所述分析型数据库本地,此时,再从远程磁盘获取相应的数据文件,将该数据文件分割成数据块并依次存储到本地磁盘和本地内存。
本实施例中,本地磁盘可以BlockFile的形式存储数据块。即,可以在所述本地磁盘创建有至少一个定长的BlockFile,所述块文件(BlockFile)包括定长的块(Block);所述将所述数据块缓存在所述本地磁盘,可以包括:将所述数据块缓存到所述本地磁盘的空Block中。
一种实现方式中,可以在本地磁盘配置映射关系,所述映射关系至少包含所述数据块的长度、各个Block以及Block中数据内容所属的文件的地址等信息,通过该映射关系可以将来自远程磁盘的数据文件分割成定长的数据块,再将这些数据块存入本地磁盘的空Block中。比如,一个数据文件为10G,一个Block的长度设为128KB,那么一个数据文件可以分割成81920个数据块,由此可知,数据块的颗粒度将远远小于数据文件。
一种实现方式中,可以在本地SSD创建多个BlockFile,每个块文件(BlockFile)都是定长的文件,每个块文件内部划分成定长的Block,并记录各个Block的状态。这里,Block的状态可以有两种:空和满,空时表示该Block中还没有存入数据,满表示该Block已存满数据。这样,在需要将数据块缓存到本地磁盘时可以查询为空的Block并将该数据块存入这些空的Block中。
比如,在系统启动时,可以根据本地磁盘的可用容量(默认700GB)创建BlockFile。如果一个BlockFile的长度设为1GB,一个Block的长度设为128KB,如果本地磁盘所有可用容量都可用于数据块存储,可以创建700个BlockFile,每个BlockFile内部划分成8192个Block。如果一个Block的长度设为256KB,则每个BlockFile内部可划分成4096个Block。由此可知,本地磁盘以Block缓存数据,相对文件级别的冷热分层,Block级别的缓存将更利于聚集热数据。比如一个数据文件10GB,可能查询计算的只有其中的1G或几百KB,以Block级别缓存数据可直接加载所需要的小部分数据,而文件级别冷热分层则需要加载10G的数据文件,因此,本实施例的方法相较于相关技术可大大提高数据的加载速度和计算速度。
一种实现方式中,将一次计算或查询的数据块缓存在所述本地磁盘的过程可以是:如果有空的连续Block,那么优先将自动使用该连续Block存储本次计算或查询的数据;如果本地磁盘有空的Block但不连续,那么可以自动使用这些不连续的空Block存储本次计算或查询的数据。本实施例中,本地磁盘支持随机读取的方式,因此,数据是否存在连续的Block中不会影响其读取效率。比如,在刚开始使用时,还没有发生过用户访问时,本地磁盘可能为空,此时本地磁盘可以将每次从远程磁盘获取的数据文件分割成数据块后存入连续的多个Block或BlockFile中。再比如,经过多次用户访问之后,本地磁盘中可能存在部分空的Block,但这些Block不连续且可能属于不同的BlockFile,此时,也可以直接将数据块存入这些不连续但空的Block中。
本实施例中,需要加载新数据时,如果本地磁盘没有足够的Block缓存这些新数据,可以将本地磁盘中的部分Block清空,以便缓存所述新数据。即将所述数据块缓存在所述本地磁盘之前,在所述本地磁盘的所有Block均存满时,可以采用最近最少使用算法(LRU)淘汰部分Block中的数据,清空所述部分Block,以将所述数据块缓存到这部分Block中。
一种实现方式中,本地磁盘可以根据当前需缓存的数据块的所需容量以及自身各个Block当前的状态(空或满),采用最近最少使用算法(LRU)将部分Block清空,以便将所述数据块存入这部分Block。这样,通过多次加载数据,本地磁盘缓存的数据块都是访问频率比较高的数据即热数据。
本实施例中,本地内存可以采用与本地磁盘相似的形式存储数据块或者数据块和数据文件。一种实现方式中,本地内存可以BlockFile的形式存储数据块。即,本地内存也创建有至少一个定长的BlockFile,所述BlockFile包括定长的Block。这里,本地内存存储数据块的方式与本地磁盘相同,不再赘述。
本实施例中,需要加载新数据时,如果本地内存没有足够空间缓存这些新数据,本地内存也可以将自身的部分Block清空,以便缓存所述新数据。具体的,将所述数据块从所述本地磁盘加载到本地内存缓存之前,在所述本地内存中所有Block均存满时,可以采用LRU淘汰部分Block中的数据,清空所述部分Block,以将所述数据块存入这部分Block中。
一种实现方式中,本地内存可以根据需缓存的数据块所需容量以及自身各个Block当前的状态(空或满),采用LRU将部分Block清空,以便需缓存的数据块存入这部分Block。这样,通过多次加载,本地内存所缓存的数据将会是访问频率很高的数据即热数据。
本实施例中,所述本地磁盘还可以创建有至少一个本地文件(LocalFile),所述LocalFile用于存储数据文件;所述方法还包括:将预先指定的数据文件缓存在所述本地磁盘的LocalFile。这样,可根据场景或用户的需求将部分数据以预存储模式的方式存储在分析型数据库,使得分析型数据库可同时适用于实时性要求较高的应用场景,比如类似于监控的应用场景。
一种实现方式中,本地磁盘可以进行分区,通过不同的分区来同时支持数据文件的预存储和数据块的分层存储。即,所述本地磁盘可以包含块缓存区和文件缓存区,所述块缓存区创建有所述BlockFile,所述文件缓存区创建有所述LocalFile。这样,块缓存区和本地内存可实现上文所述数据块的分层存储,文件缓存区和本地内存则可以实现上文所述的预存储模式。
本实施例中,还可以通过扫描所述本地磁盘中文件缓存区的使用容量,将所述本地磁盘中所述块缓存区进行扩容或缩容。
一种实现方式中,所述将所述本地磁盘中块缓存区的扩容或缩容,至少可以包括如下之一:1)根据所述文件缓存区可释放的容量相应增大所述块缓存区的容量,并根据新增容量在所述块缓存区新建所述BlockFile或所述Block;2)根据所述文件缓存区需增加的容量,将所述块缓存区中的部分所述BlockFile或Block删除,并相应缩小所述块缓存区的容量。
比如,在预存储模式和数据块分层存储模式共存时,可以设置预存储模式的优先级高于数据块分层存储模式。在预存储模式下因数据文件增加而需扩容时,则需要释放数据块分层存储模式下的存储空间给预存储模式,此时,可以将本地磁盘中的块缓存区自动缩容。在预存储模式因数据文件减少而占用较少存储空间时,可以释放预存储模式下的多余存储空间用于数据块分层存储模式中,即可以使用预存储模式释放的存储空间,将本地磁盘中的块缓存区自动扩容。
由于块缓存区容量很大,如果计算结点重启,预热时间将会非常长,这必然会影响查询性能。为避免此问题,本实施例中,还可以通过预写式日志(WAL,write ahead log)对块缓存区进行持久化,即将所述数据块缓存在所述本地磁盘之前,可以在所述本地磁盘的块缓存区设置对应所述BlockFile的WAL。这样,计算结点重启后可以通过回放日志来快速预热块缓存区。
一种实现方式中,通过WAL对块缓存区进行持久化的过程可以是:在块缓存区存入元数据,这些元数据分为两部分:一部分用于记录哪些Block已分配和哪些Block未分配即各个Block的状态,另一部分用于记录各个Block属于哪个BlockFile即Block与BlockFIle的从属关系。这样,在计算结点重启时可以通过这些元数据完整恢复各BlockFile中缓存的数据,而不需要重新获取。如果没有保存这些元数据,那么会自动将所有BlockFile中的数据清空,此时,还需要重新获取数据文件、分割并缓存,这必然会影响数据的查询计算速度,以至于影响分析型数据库的性能。
本实施例中,还可以包括:用户访问时,从本地内存、本地磁盘到远程磁盘逐层递归向下查询相应的数据块,同时将所述数据块在本地内存和本地磁盘逐层缓存。
一种实现方式中,在上述数据分层存储方法的基础上,本实施例还提供一种数据分层查询方法,应用于上述分析型数据库,通过该数据分层查询方法可以从本地内存、本地磁盘到远程磁盘逐层递归向下查询相应的数据块,同时将所述数据块在本地内存和本地磁盘逐层缓存。如图3所示,该数据分层查询方法可以包括:
步骤301,根据来自计算层的查询指示,在本地内存读取相应的数据块;
步骤302,所述本地内存存在所述数据块时,将所述数据块反馈至所述计算层。
一种实现方式中,所述从本地内存读取相应的数据块之后,还可以包括:所述本地内存不存在所述数据块时,在所述本地磁盘中读取所述数据块;所述本地磁盘存在所述数据块时,将所述数据块从所述本地磁盘加载到所述本地内存;重新从所述本地内存读取所述数据块。
一种实现方式中,所述从本地磁盘读取所述数据块之后,还可以包括:所述本地磁盘不存在所述数据块时,从远程磁盘读取相应的数据文件,将所述数据文件分割为数据块并缓存入所述本地磁盘;将所述数据块从所述本地磁盘加载到所述本地内存;重新从所述本地内存读取所述数据块。
一种实现方式中,用户可以通过指示控制数据查询时是否进入相应的存储层。比如,用户可以输入如下的查询SQL:/*+MemBlockCache=false,SSDBlockCache=false*/select*from table1,该查询SQL表示:当SSDBlockCache=false时,指示数据不进入本地SSD缓存中;MemBlockCache=false时,指示数据不进入本地内存缓存中。实际应用中,默认用户查询都缓存,通过提供类似的功能,便于用户根据需要通过查询SQL控制不让某些查询结果进入缓存,避免缓存进行无效的换入换出。
上述数据分层查询方法,可在分析型数据库的任一计算结点中实现,在计算结点的计算层向其数据处理层读取数据时(不考虑并发),首先从顶层即本地内存获取,如果没命中,便递归向下层即本地磁盘以及远程磁盘获取,直至获取到所需的数据,并且在查询过程中将相应数据缓存到相应的存储层级中。
在上述数据分层存储方法的基础上,本实施例还提供另一种数据分层查询方法,可应用于分析型数据库,如图4所示,可以包括:
步骤401,聚合结点将来自用户设备的计算任务拆分为计算子任务并分发给各个计算结点;
步骤402,各个计算结点通过执行所述计算子任务执行如下操作:从本地内存、本地磁盘到远程磁盘逐层递归向下查询相应的数据块,同时将所述数据块在本地内存和本地磁盘逐层缓存,并将查询到的数据块返回给所述聚合结点;
步骤403,聚合结点将所述各个计算结点返回的数据块聚合后提供给所述用户设备。
一种实现方式中,所述各个计算结点通过执行所述计算子任务还可以执行如下操作:将数据文件存储到远程磁盘。
一种实现方式中,所述从本地内存、本地磁盘到远程磁盘逐层递归向下查询相应的数据块,同时将所述数据块在本地内存和本地磁盘中逐层缓存,可以包括:在所述本地内存和本地磁盘中均未查询到所述数据块时,从所述远程磁盘获取相应的数据文件,分割所述数据文件为数据块,并将所述数据块缓存在本地磁盘;将所述数据块从所述本地磁盘加载到本地内存缓存。
一种实现方式中,各个计算结点执行“从本地内存、本地磁盘到远程磁盘逐层递归向下查询相应的数据块,同时将所述数据块在本地内存和本地磁盘逐层缓存”的过程可以通过图3所示的数据分层查询方法实现,不再赘述。
各个计算结点通过执行所述查询子任务在对应的本地内存读取相应数据块,所述本地内存存在所述数据块时将所述数据块反馈给所述聚合结点;
聚合结点将所述各个计算结点反馈的数据块聚合后提供给所述用户设备。
一种实现方式中,所述在对应的分析型数据库的本地内存读取相应数据块之后,还可以包括:所述本地内存不存在所述数据块时,在对应的本地磁盘中读取所述数据块;所述本地磁盘存在所述数据块时,将所述数据块从所述本地磁盘加载到所述本地内存缓存;重新从所述本地内存读取所述数据块。
一种实现方式中,所述从所述分析型数据库的本地磁盘读取所述数据块之后,还可以包括:所述本地磁盘不存在所述数据块时,从远程磁盘读取相应的数据文件,将所述数据文件分割为数据块并缓存到相应的本地磁盘;将所述数据块从所述本地磁盘加载到所述本地内存缓存;重新从所述本地内存读取所述数据块。
需要说明的是,在上述数据分层查询方法中,还可以包括:所述各个计算结点通过执行所述计算子任务还可以执行如下操作:针对指定的数据文件,可以从本地内存到本地磁盘到远程磁盘逐层递归向下查询,同时将所述数据文件在本地内存中缓存。
下面一个具体例子详细说明本实施例的上述方法。
假设用户需要保留过去100天的数据,每天都会将新的数据导入其定制的分析型数据库中。如果用户设置该分析型数据库同时采用预存储模式和数据块分层存储模式,并默认将每天存入的数据以数据块分层存储模式进行存储。那么,分析型数据库默认将用户每天存入的数据以数据文件的形式存入远程磁盘。
用户第一次查询一些特定的数据时,分析型数据库会从远程磁盘中获取相应的数据文件,将数据文件分割为数据块并缓存到分析型数据库的本地磁盘各BlockFile的空Block中,并从本地磁盘加载该数据块到分析型数据库的本地内存缓存。
经过多次查询之后,用户常访问的数据将会以数据块的形式缓存在本地磁盘和本地内存。用户再查询此类数据时,分析型数据库的计算结点可直接从本地磁盘或本地内存中读取,且所读取到的数据为Block级别,不仅查询速度快,而且用户的查询成本也更低。
一般来说,用户常查询最近几天的数据,在特殊情况下才会查询更长时间之前存入的数据。
如果用户需要较长时间之前存入的数据且这些数据较少访问,很可能本地磁盘或本地内存中并未缓存。用户查询此类数据时,分析型数据库的计算结点将会通过本地磁盘和本地内存逐层向下查询,很可能需要向远程磁盘获取相应的数据文件,再将该数据文件分割为数据块并存入本地磁盘和本地内存,最后将该数据以数据块的形式提供给用户。此类数据在第一次查询时会比较慢,但查询一次之后相应数据也会缓存在本地磁盘和本地内存中,如果用户后续常访问此类数据,此类数据将会作为热数据长时间缓存在本地磁盘和本地内存,其加载速度和计算速度将会随着访问次数的增多而更快。
实施例二
一种数据分层存储装置,如图5所示,可以包括:
远程文件处理单元51,用于将数据文件存储到远程磁盘;以及,从所述远程磁盘获取用户最近一次访问的数据文件;
块处理单元52,用于分割所述数据文件为数据块,并将所述数据块缓存在本地磁盘;
内存缓存单元53,用于将所述数据块从所述本地磁盘加载到本地内存缓存。
一种实现方式中,上述数据分层存储装置还可以包括:块缓存单元54,用于在所述本地磁盘创建至少一个定长的BlockFile,所述BlockFile至少包括定长的Block;所述块处理单元52,可用于将所述数据块缓存到空的所述Block中。
一种实现方式中,上述数据分层存储装置还可以包括:文件处理单元55,用于在所述本地磁盘创建至少一个LocalFile,所述LocalFile用于存储数据文件;以及,用于将预先指定的数据文件缓存在所述本地磁盘的LocalFile。
一种实现方式中,所述本地磁盘可以包含块缓存区和文件缓存区,所述块缓存区创建有所述BlockFile,所述文件缓存区创建有所述LocalFile;上述数据分层存储装置还可以包括:磁盘处理单元56,用于通过扫描所述本地磁盘中文件缓存区的使用容量,将所述本地磁盘中所述块缓存区进行扩容或缩容。
一种实现方式中,上述数据分层存储装置还可以包括:元数据处理单元57,可用于在所述本地磁盘设置对应所述BlockFile的预写式日志。
一种实现方式中,上述数据分层存储装置还可以包括:块文件处理单元58,可用于在用户访问时,从本地内存、本地磁盘到远程磁盘逐层递归向下查询相应的数据块;所述块缓存单元54,还可用于在所述块文件处理单元查询所述数据块的过程中,将所述数据块在本地内存和本地磁盘逐层缓存。
本实施例的其他技术细节可参照实施例一以及下文各示例。
实施例三
一种计算设备,可以包括:
配置为与远程磁盘进行通信的通信电路;
支持分层存储模式的数据存储器,包含作为低层级的本地磁盘和作为高层级的本地内存;
存储有数据分层存储程序的存储器;
处理器,配置为读取所述数据分层存储程序以执行实施例一所述数据分层存储方法的操作。
一种实现方式中,所述处理器,还配置为读取所述数据分层存储程序以执行下述操作:用户访问时,从本地内存、本地磁盘到远程磁盘逐层递归向下查询相应的数据块,同时将所述数据块在本地内存和本地磁盘逐层缓存。
本实施例的其他技术细节可参照实施例一以及下文各示例。
实施例四
一种分布式计算系统,包括:至少一个聚合结点和多个计算结点;其中,
所述聚合结点,用于将来自用户设备的计算任务拆分为计算子任务并分发给各个计算结点;以及,将所述各个计算结点返回的数据块聚合后提供给所述用户设备;
所述计算结点,用于通过执行所述计算子任务执行如下操作:从本地内存、本地磁盘到远程磁盘逐层递归向下查询相应的数据块,同时将所述数据块在本地内存和本地磁盘逐层缓存,并将查询到的数据块返回给所述聚合结点。
本实施例的其他技术细节可参照实施例一以及下文各示例。
实施例五
一种计算机可读存储介质,所述计算机可读存储介质上存储有数据分层存储程序,所述数据分层存储程序被处理器执行时实现如实施例一所述数据分层存储方法的步骤。
本实施例的其他技术细节可参照实施例一以及下文各示例。
下面对上述各实施例的示例性实现方式进行详细说明。需要说明的是,下文各示例可相互结合。并且,下文示例中各流程、执行过程等也可以根据实际应用的需要进行调整。此外,在实际应用中,上述各实施例还可以有其他的实现方式。
下面以多个示例对本实施例进行详细说明。
示例一
一种实现方案中,所述本地磁盘可以实现为访问速度较高的固态硬盘(SSD,SolidState Disk),本地内存可以实现为访问速度更高的动态随机存取存储器(DRAM,DynamicRandom Access Memory)。远程磁盘可以实现为可存储大量数据的分布式文件系统(DFS,Distributed File System),比如,远程的串行高级技术附件(SATA,Serial AdvancedTechnology Attachment)。
此实现方案中,采用分层存储模式进行存储之后:
分布式文件系统(远程SATA):存储用户的所有数据文件;
分析型数据库的本地SSD:1、存储参与计算的数据,并按照数据块对所存储的数据进行管理;2、将不同数据文件按照冷热程度的不同进行分开缓存;3、将一个数据文件内的数据分为冷数据和热数据并以数据块的形式缓存;4、在需要时可使用最近最少使用算法(LRU)对数据进行清理。
分析型数据库的本地DRAM:存储参与计算的热数据,该热数据来自本地SSD,并在需要时可使用最近最少使用算法LRU对所存储的数据进行清理。
除此之外,本地内存、本地磁盘和远程磁盘还可以实现为其他形式,对于具体的实现形式,本申请不予限制。
示例二
一种实现方案中,分析型数据库可以仅支持数据块分层存储模式,该数据块分层存储模式即为本实施例所述数据块在本地磁盘和本地内存的分层存储。
本示例中,DRAM为分析型数据库中一个计算结点的内存。
如图6所示,为本示例中分析型数据库中一个计算结点的层级结构及其与远程磁盘之间交互的示意图。其中,SATA作为远程磁盘负责存储用户导入的所有数据文件。一个计算结点可以包含计算层(Compute)和数据处理层(DataManager),计算层负责通过执行聚合结点下发的子任务调用数据处理层查询指定的数据块并进行计算,并将计算结果反馈给所述聚合结点。数据处理层用于根据计算层的查询指示查询指定的数据块。
如图6所示,本示例中数据处理层可包括两层:高层级的DRAM和低层级的SSD。SSD上创建有多个BlockFile:BlockFile 1、BlockFile2、……、BlockFile N(N为不小于1的整数)。数据处理层支持数据块分层存储模式,在数据块分层存储模式下,在最近一次用户访问的数据块DRAM和SSD中都没有缓存时,数据管理层从SATA获取相应的数据文件,将该数据文件分割为定长的数据块,将数据块缓存在SSD中BlockFile内部的各个Block,并将该数据块加载到DRAM缓存。
如图6所示,数据处理层可以包括如下功能单元,以实现数据块的分层存储:
远程文件处理单元,负责与SATA交互,可用于从SATA获取数据文件。
块处理单元,负责Block级数据的管理,可用于将数据文件分割为定长的数据块,将数据块缓存在SSD中BlockFile内部的各个Block。
元数据处理单元,可用于在所述SSD设置对应上述各个BlockFile的预写式日志,以便记录SSD中各个Block的分配情况、以及各个Block与BlockFile之间的从属关系,从而可在计算结点重启之后迅速恢复各个Block中缓存的数据。
块缓存单元,负责管理SSD中BlockFile及其Block,可用于在SSD创建上述多个BlockFile:BlockFile 1、BlockFile2、……、BlockFile N(N为不小于1的整数),每个BlockFile划分为多个定长的Block,以及还可以用于在块处理单元的调用下,在所述本地磁盘的所有Block均存满时采用最近最少使用算法淘汰部分Block中的数据,清空所述部分Block,以使块处理单元可以将数据块缓存到SSD的Block中。
块文件处理单元,负责与DRAM交互,可用于在DRAM中不存在相应数据块时向SSD查询该数据块,并在SSD中不存在相应数据块时调用块文件处理单元向SATA获取相应的数据文件,并最终将查询到的数据块加载到DRAM。
示例三
一种实现方案中,分析型数据库可以同时支持预存储模式和数据块分层存储模式,该数据块分层存储模式为本实施例将数据块在本地磁盘和本地内存分层存储的模式,该预存储模式为在计算之前将用户导入的数据文件存储在分析型数据库本地的模式。
如图7所示,为本示例中分析型数据库中一个计算结点的层级结构及其与远程磁盘之间交互的示意图。如图7所示,本示例中计算结点的层级结构以及数据处理层的分层存储结构与示例二相同,不同的是,数据处理层可同时支持预存储模式和数据块分层存储模式。数据处理层的SSD分为两个区域:块缓存区和文件缓存区,块缓存区创建有多个BlockFile:BlockFile 1、BlockFile 2、……、BlockFile N(N为不小于2的整数),文件缓存区创建有多个LocalFIle:BlockFile 1、BlockFile 2、……、BlockFile X(X为不小于2的整数)。
本示例中,数据块分层存储模式下,如果最近一次用户访问的数据块在DRAM和SSD中都没有缓存,那么可以从SATA获取相应的数据文件,将该数据文件分割为定长的数据块,将数据块缓存在SSD中BlockFile内部的各个Block,最后将该数据块加载到DRAM缓存。
本示例中,预存储模式下,对于用户导入的指定类型的数据文件,数据处理层可以直接将其存入SSD的LocalFile中,查询时可以从LocalFile中直接获取相应的数据文件,将该数据文件加载到DRAM缓存后、再从DRAM中读取并反馈给计算层。
如图7所示,数据处理层可以除包含示例二中的功能单元之外,还可以包括如下功能单元,以同时支持数据文件的存储和数据块的分层存储:
文件处理单元,负责将用户导入的指定数据文件存储到SSD的各个LocalFile中;
文件元数据处理单元,负责记录对应各个LocalFile的元数据,这些元数据用于记录各个LocalFile的状态(即是否存储数据文件),以便在计算结点重启时恢复其中的数据。
示例四
本示例以一个具体例子详细说明示例三所示结构中本地磁盘中块缓存区缩容和扩容的过程。
如图8所示,为本例子中块缓存区缩容和扩容的示意图。本例子中,在预存储模式扩容而需要数据块分层存储模式释放空间时,将块缓存区缩容。如图8所示,在缩容之前,块缓存区创建有如下BlockFile:BlockFile N、BlockFile N+1、……BlockFile N+M、BlockFile N+M+1(N、M均为不小于1的整数),在缩容之后,块缓存区删除了Block N,保留Block N+1、……Block N+M、Block N+M+1。在预存储模式缩容而使得数据块分层存储模式可使用更大容量时,可以将块缓存区扩容。如图8所示,在扩容之后,块缓存区在所扩大的存储空间里新建了多个BlockFlie。这里,图8中阴影部分的Block为已存入数据的Block。
示例五
一种实现方案中,数据块分层存储模式下的数据访问流程即数据分层查询的过程可以包括:在计算层向数据管理层读取数据时,首先从顶层即本地内存中读取,如果没有命中,则采用递归方式向下层即本地SSD和分布式文件系统读取,直至读取到数据,并将从下层读取到的数据加入到本地内存中。
如图9所示,本示例中数据块分层存储模式下的数据访问流程可以包括:
步骤901,从本地内存中读取数据块,并判断是否命中,如果命中则直接结束当前流程,否则继续步骤902;
步骤902,判断是否其他进程(other)在读取同一个数据块,如果是则继续步骤903,否则继续905;
步骤903,等待通知;
步骤904,接收来自other的通知,并返回到步骤901;
步骤905,从本地SSD读取数据块并判断是否命中,如果命中则继续步骤906,如果没有命中则继续908;
步骤906,将所述数据块下载到本地内存中;
步骤907,通知其它等待读取同一数据块的进程(all waiters),并返回步骤1;
步骤908,判断是否other(其他进程)在读取同一个数据块,如果是则继续步骤909,否则继续911;
步骤909,等待通知;
步骤910,接收来自other的通知,并返回到步骤901;
步骤911,从分布式文件系统(DFS)读取所述数据块;
步骤912,将从DFS读取的数据块下载到本地SSD;
步骤913,将所述数据块从本地SSD中下载到本地缓存;
步骤914,通知all waiters,并返回步骤901。
需要说明的是,上述图9仅为示例。在其他实际应用场景下,数据块分层存储模式下的数据访问流程还可通过其他方式实现。
本领域普通技术人员可以理解上述方法中的全部或部分步骤可通过程序来指令相关硬件完成,所述程序可以存储于计算机可读存储介质中,如只读存储器、磁盘或光盘等。可选地,上述实施例的全部或部分步骤也可以使用一个或多个集成电路来实现。相应地,上述实施例中的各模块/单元可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。本申请不限制于任何特定形式的硬件和软件的结合。
当然,本申请还可有其他多种实施例,在不背离本申请精神及其实质的情况下,熟悉本领域的技术人员当可根据本申请作出各种相应的改变和变形,但这些相应的改变和变形都应属于本申请的权利要求的保护范围。
Claims (20)
1.一种数据分层存储方法,包括:
将数据文件存储到远程磁盘;
从所述远程磁盘获取用户最近一次访问的数据文件,分割所述数据文件为数据块,并将所述数据块缓存在本地磁盘;
将所述数据块从所述本地磁盘加载到本地内存缓存。
2.根据权利要求1所述的数据分层存储方法,其特征在于,
所述本地磁盘创建有至少一个定长的块文件,所述块文件包括定长的块;
所述将所述数据块缓存在所述本地磁盘,包括:将所述数据块缓存到所述本地磁盘的空块中。
3.根据权利要求1或2所述的数据分层存储方法,其特征在于,所述将所述数据块缓存在所述本地磁盘之前,还包括:
在所述本地磁盘的所有块均存满时,采用最近最少使用算法淘汰部分块中的数据,以清空所述部分块。
4.根据权利要求1所述的数据分层存储方法,其特征在于,
所述本地内存创建有至少一个定长的块文件,所述块文件包括定长的块;
所述将所述数据块从所述本地磁盘加载到本地内存缓存之前,还包括:在所述本地内存中所有块均存满时,采用最近最少使用算法淘汰部分块中的数据,以清空所述部分块。
5.根据权利要求1或2所述的数据分层存储方法,其特征在于,
所述本地磁盘还创建有至少一个本地文件,所述本地文件用于存储数据文件;
所述方法还包括:将预先指定的数据文件缓存在所述本地磁盘的本地文件。
6.根据权利要求5所述的数据分层存储方法,其特征在于,
所述本地磁盘包含块缓存区和文件缓存区,所述块缓存区创建有所述块文件,所述文件缓存区创建有所述本地文件;
所述将预先指定的数据文件缓存在所述本地磁盘的本地文件之后,还包括:通过扫描所述本地磁盘中文件缓存区的使用容量,将所述本地磁盘中所述块缓存区进行扩容或缩容。
7.根据权利要求6所述的数据分层存储方法,其特征在于,所述将所述本地磁盘中块缓存区的扩容或缩容,至少包括如下之一:
根据所述文件缓存区可释放的容量相应增大所述块缓存区的容量,并根据新增容量在所述块缓存区新建所述块文件或所述块;
根据所述文件缓存区需增加的容量,将所述块缓存区中的部分所述块文件或块删除,并相应缩小所述块缓存区的容量。
8.根据权利要求2所述的数据分层存储方法,其特征在于,所述将所述数据块缓存在所述本地磁盘之前,还包括:
在所述本地磁盘设置对应所述块文件的预写式日志WAL。
9.根据权利要求1所述的数据分层存储方法,其特征在于,还包括:
用户访问时,从本地内存、本地磁盘到远程磁盘逐层递归向下查询相应的数据块,同时将所述数据块在本地内存和本地磁盘逐层缓存。
10.一种数据分层查询方法,包括:
聚合结点将来自用户设备的计算任务拆分为计算子任务并分发给各个计算结点;
各个计算结点通过执行所述计算子任务执行如下操作:从本地内存、本地磁盘到远程磁盘逐层递归向下查询相应的数据块,同时将所述数据块在本地内存和本地磁盘逐层缓存,并将查询到的数据块返回给所述聚合结点;
聚合结点将所述各个计算结点返回的数据块聚合后提供给所述用户设备。
11.根据权利要求10所述的数据分层查询方法,其特征在于,所述各个计算结点通过执行所述计算子任务还执行如下操作:
将数据文件存储到远程磁盘。
12.根据权利要求10所述的数据分层查询方法,其特征在于,所述从本地内存、本地磁盘到远程磁盘逐层递归向下查询相应的数据块,同时将所述数据块在本地内存和本地磁盘中逐层缓存,包括:
在所述本地内存和本地磁盘中均未查询到所述数据块时,从所述远程磁盘获取相应的数据文件,分割所述数据文件为数据块,并将所述数据块缓存在本地磁盘;将所述数据块从所述本地磁盘加载到本地内存缓存。
13.一种数据分层存储装置,包括:
远程文件处理单元,用于将数据文件存储到远程磁盘;以及,从所述远程磁盘获取用户最近一次访问的数据文件;
块处理单元,用于分割所述数据文件为数据块,并将所述数据块缓存在本地磁盘;
内存缓存单元,用于将所述数据块从所述本地磁盘加载到本地内存缓存。
14.根据权利要求13所述的数据分层存储装置,其特征在于,
还包括:块缓存单元,用于在所述本地磁盘创建至少一个定长的块文件,所述块文件至少包括定长的块;
所述块处理单元,用于将所述数据块缓存到空的所述块中。
15.根据权利要求13或14所述的数据分层存储装置,其特征在于,
还包括:文件处理单元,用于在所述本地磁盘创建至少一个本地文件,所述本地文件用于存储数据文件;以及,用于将预先指定的数据文件缓存在所述本地磁盘的本地文件。
16.根据权利要求15所述的数据分层存储装置,其特征在于,
所述本地磁盘包含块缓存区和文件缓存区,所述块缓存区创建有所述块文件,所述文件缓存区创建有所述本地文件;
还包括:磁盘处理单元,用于通过扫描所述本地磁盘中文件缓存区的使用容量,将所述本地磁盘中所述块缓存区进行扩容或缩容。
17.根据权利要求14所述的数据分层存储装置,其特征在于,还包括:
元数据处理单元,用于在所述本地磁盘设置对应所述块文件的预写式日志WAL。
18.根据权利要求14所述的数据分层存储装置,其特征在于,还包括:
块文件处理单元,用于在用户访问时,从本地内存、本地磁盘到远程磁盘逐层递归向下查询相应的数据块;
所述块缓存单元,还用于在所述块文件处理单元查询所述数据块的过程中,将所述数据块在本地内存和本地磁盘逐层缓存。
19.一种计算设备,包括:
配置为与远程磁盘进行通信的通信电路;
支持分层存储模式的数据存储器,包含作为低层级的本地磁盘和作为高层级的本地内存;
存储有数据分层存储程序的存储器;
处理器,配置为读取所述数据分层存储程序以执行如权利要求1至8任一项所述数据分层存储方法的操作。
20.一种分布式计算系统,包括:至少一个聚合结点和多个计算结点;其中,
所述聚合结点,用于将来自用户设备的计算任务拆分为计算子任务并分发给各个计算结点;以及,将所述各个计算结点返回的数据块聚合后提供给所述用户设备;
所述计算结点,用于通过执行所述计算子任务执行如下操作:从本地内存、本地磁盘到远程磁盘逐层递归向下查询相应的数据块,同时将所述数据块在本地内存和本地磁盘逐层缓存,并将查询到的数据块返回给所述聚合结点。
Priority Applications (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711036438.5A CN109947787A (zh) | 2017-10-30 | 2017-10-30 | 一种数据分层存储、分层查询方法及装置 |
PCT/CN2018/110968 WO2019085769A1 (zh) | 2017-10-30 | 2018-10-19 | 一种数据分层存储、分层查询方法及装置 |
JP2020519351A JP2021501389A (ja) | 2017-10-30 | 2018-10-19 | データ階層記憶及び階層探索方法及び装置 |
US16/862,163 US20200257450A1 (en) | 2017-10-30 | 2020-04-29 | Data hierarchical storage and hierarchical query method and apparatus |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711036438.5A CN109947787A (zh) | 2017-10-30 | 2017-10-30 | 一种数据分层存储、分层查询方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN109947787A true CN109947787A (zh) | 2019-06-28 |
Family
ID=66331351
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201711036438.5A Pending CN109947787A (zh) | 2017-10-30 | 2017-10-30 | 一种数据分层存储、分层查询方法及装置 |
Country Status (4)
Country | Link |
---|---|
US (1) | US20200257450A1 (zh) |
JP (1) | JP2021501389A (zh) |
CN (1) | CN109947787A (zh) |
WO (1) | WO2019085769A1 (zh) |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110515964A (zh) * | 2019-08-30 | 2019-11-29 | 百度在线网络技术(北京)有限公司 | 一种文件更新方法、装置、电子设备和介质 |
CN110750507A (zh) * | 2019-09-30 | 2020-02-04 | 华中科技大学 | 面向dfs的全局命名空间下的客户端持久缓存方法及系统 |
CN111694865A (zh) * | 2020-06-02 | 2020-09-22 | 中国工商银行股份有限公司 | 基于分布式系统的四层结构数据获取方法和装置 |
CN112181302A (zh) * | 2020-09-28 | 2021-01-05 | 上海简苏网络科技有限公司 | 一种数据多级存储和访问方法及系统 |
CN112559459A (zh) * | 2020-12-15 | 2021-03-26 | 跬云(上海)信息科技有限公司 | 一种基于云计算的自适应存储分层系统及方法 |
CN112905129A (zh) * | 2021-05-06 | 2021-06-04 | 蚂蚁金服(杭州)网络技术有限公司 | 缓存内存块的淘汰方法、装置及电子设备 |
CN112948025A (zh) * | 2021-05-13 | 2021-06-11 | 阿里云计算有限公司 | 数据加载方法、装置及存储介质、计算设备、计算系统 |
CN113254270A (zh) * | 2021-05-28 | 2021-08-13 | 济南浪潮数据技术有限公司 | 一种存储缓存热点数据自恢复方法、系统及存储介质 |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
SG10201913065QA (en) * | 2019-12-23 | 2021-07-29 | Sensetime Int Pte Ltd | Data processing method and apparatus, and edge device |
US11429397B1 (en) | 2021-04-14 | 2022-08-30 | Oracle International Corporation | Cluster bootstrapping for distributed computing systems |
CN113741807B (zh) * | 2021-07-29 | 2023-08-11 | 苏州浪潮智能科技有限公司 | 一种提高系统存储性能的方法、系统、设备和存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20100333116A1 (en) * | 2009-06-30 | 2010-12-30 | Anand Prahlad | Cloud gateway system for managing data storage to cloud storage sites |
CN103116618A (zh) * | 2013-01-28 | 2013-05-22 | 南开大学 | 基于客户端持久缓存的远程文件系统镜像方法及系统 |
CN106372190A (zh) * | 2016-08-31 | 2017-02-01 | 华北电力大学(保定) | 实时olap查询方法和装置 |
CN106649687A (zh) * | 2016-12-16 | 2017-05-10 | 飞狐信息技术(天津)有限公司 | 大数据联机分析处理方法及装置 |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050038767A1 (en) * | 2003-08-11 | 2005-02-17 | Oracle International Corporation | Layout aware calculations |
US20100145990A1 (en) * | 2008-12-09 | 2010-06-10 | Washington University In St. Louis | Selection and performance of hosted and distributed imaging analysis services |
CN103605483A (zh) * | 2013-11-21 | 2014-02-26 | 浪潮电子信息产业股份有限公司 | 一种分级存储系统中块级数据特征处理方法 |
US9323615B2 (en) * | 2014-01-31 | 2016-04-26 | Google Inc. | Efficient data reads from distributed storage systems |
CN104850572B (zh) * | 2014-11-18 | 2018-11-23 | 中兴通讯股份有限公司 | HBase非主键索引构建与查询方法及其系统 |
US10318649B2 (en) * | 2017-04-18 | 2019-06-11 | International Business Machines Corporation | Implementing a secondary storage dentry cache |
US20190163664A1 (en) * | 2017-11-27 | 2019-05-30 | Salesforce.Com, Inc. | Method and system for intelligent priming of an application with relevant priming data |
-
2017
- 2017-10-30 CN CN201711036438.5A patent/CN109947787A/zh active Pending
-
2018
- 2018-10-19 WO PCT/CN2018/110968 patent/WO2019085769A1/zh active Application Filing
- 2018-10-19 JP JP2020519351A patent/JP2021501389A/ja active Pending
-
2020
- 2020-04-29 US US16/862,163 patent/US20200257450A1/en not_active Abandoned
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20100333116A1 (en) * | 2009-06-30 | 2010-12-30 | Anand Prahlad | Cloud gateway system for managing data storage to cloud storage sites |
CN103116618A (zh) * | 2013-01-28 | 2013-05-22 | 南开大学 | 基于客户端持久缓存的远程文件系统镜像方法及系统 |
CN106372190A (zh) * | 2016-08-31 | 2017-02-01 | 华北电力大学(保定) | 实时olap查询方法和装置 |
CN106649687A (zh) * | 2016-12-16 | 2017-05-10 | 飞狐信息技术(天津)有限公司 | 大数据联机分析处理方法及装置 |
Cited By (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110515964A (zh) * | 2019-08-30 | 2019-11-29 | 百度在线网络技术(北京)有限公司 | 一种文件更新方法、装置、电子设备和介质 |
CN110750507A (zh) * | 2019-09-30 | 2020-02-04 | 华中科技大学 | 面向dfs的全局命名空间下的客户端持久缓存方法及系统 |
CN110750507B (zh) * | 2019-09-30 | 2022-09-20 | 华中科技大学 | 面向dfs的全局命名空间下的持久客户端缓存方法及系统 |
CN111694865A (zh) * | 2020-06-02 | 2020-09-22 | 中国工商银行股份有限公司 | 基于分布式系统的四层结构数据获取方法和装置 |
CN112181302A (zh) * | 2020-09-28 | 2021-01-05 | 上海简苏网络科技有限公司 | 一种数据多级存储和访问方法及系统 |
WO2022126839A1 (zh) * | 2020-12-15 | 2022-06-23 | 跬云(上海)信息科技有限公司 | 一种基于云计算的自适应存储分层系统及方法 |
CN112559459A (zh) * | 2020-12-15 | 2021-03-26 | 跬云(上海)信息科技有限公司 | 一种基于云计算的自适应存储分层系统及方法 |
CN112559459B (zh) * | 2020-12-15 | 2024-02-13 | 跬云(上海)信息科技有限公司 | 一种基于云计算的自适应存储分层系统及方法 |
CN112905129A (zh) * | 2021-05-06 | 2021-06-04 | 蚂蚁金服(杭州)网络技术有限公司 | 缓存内存块的淘汰方法、装置及电子设备 |
CN112948025A (zh) * | 2021-05-13 | 2021-06-11 | 阿里云计算有限公司 | 数据加载方法、装置及存储介质、计算设备、计算系统 |
CN112948025B (zh) * | 2021-05-13 | 2021-09-14 | 阿里云计算有限公司 | 数据加载方法、装置及存储介质、计算设备、计算系统 |
CN113254270B (zh) * | 2021-05-28 | 2022-06-14 | 济南浪潮数据技术有限公司 | 一种存储缓存热点数据自恢复方法、系统及存储介质 |
CN113254270A (zh) * | 2021-05-28 | 2021-08-13 | 济南浪潮数据技术有限公司 | 一种存储缓存热点数据自恢复方法、系统及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
WO2019085769A1 (zh) | 2019-05-09 |
JP2021501389A (ja) | 2021-01-14 |
US20200257450A1 (en) | 2020-08-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109947787A (zh) | 一种数据分层存储、分层查询方法及装置 | |
US20210056074A1 (en) | File System Data Access Method and File System | |
US10482062B1 (en) | Independent evictions from datastore accelerator fleet nodes | |
CN104899156A (zh) | 一种面向大规模社交网络的图数据存储及查询方法 | |
CN103366016A (zh) | 基于hdfs的电子文件集中存储及优化方法 | |
CN112000287B (zh) | 一种io请求处理装置、方法、设备及可读存储介质 | |
CN104270412A (zh) | 一种基于Hadoop分布式文件系统的三级缓存方法 | |
US20130290636A1 (en) | Managing memory | |
JP2005276198A (ja) | 複数のメモリ・バッファ・サイズを均衡させるためのシステムおよび方法 | |
US20120317339A1 (en) | System and method for caching data in memory and on disk | |
CN113672175A (zh) | 分布式对象存储方法、装置和设备及计算机存储介质 | |
CN107368608A (zh) | 基于arc替换算法的hdfs小文件缓存管理方法 | |
CN111737168A (zh) | 一种缓存系统、缓存处理方法、装置、设备及介质 | |
CN112596762A (zh) | 一种滚动升级方法及装置 | |
CN107992270B (zh) | 一种多控存储系统全局共享缓存的方法及装置 | |
CN107092624B (zh) | 数据存储方法、装置及系统 | |
CN107181773B (zh) | 分布式存储系统的数据存储及数据管理方法、设备 | |
CN110716924B (zh) | 删除过期数据的方法和装置 | |
CN111159140A (zh) | 数据处理方法、装置、电子设备及存储介质 | |
CN114594914A (zh) | 用于分布式存储系统的控制方法及系统 | |
CN101470733A (zh) | 数据块副本数量调整方法及分布式文件系统 | |
CN114610680A (zh) | 分布式文件系统元数据管理方法、装置、设备及存储介质 | |
CN116894041B (zh) | 数据存储方法、装置、计算机设备及介质 | |
CN104978283B (zh) | 一种内存访问控制方法,及装置 | |
CN109947718A (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 |