用于管理数据存储系统的方法和装置技术领域
本发明的各实施方式涉及数据存储(datastorage),更具体地,
涉及用于管理数据存储系统的方法和装置。
背景技术
随着数据存储技术的发展,数据存储系统在存储空间、可靠性
和响应效率方面都有了显著进步。在技术进步的同时,人们对于存
储系统的要求也越来越高。例如,人们日常工作和生活涉及到的数
据类型越来越多,一方面人们期望可以将这些数据存储至大容量数
据库中,另一方面,人们对于数据查询的准确性和实时性的要求也
逐渐提高。
仅以电力行业为例,人们已经不再满足于查询每月的耗电总量,
而是希望能够实时地查询到各种数据,例如,当前的耗电量、电流
值、电压值、以及电阻值等等其他信息。电力公司通常以多维数据
库来存储各种类型的数据,例如,电力公司的数据库可能会涉及如
下维度:电表ID、时间点、电流、电压、以及电阻等(在此的电流、
电压和电阻均为在某时间点采集到的数值)。随着多维数据库的维
度的提高,针对多维数据库的查询可能会涉及多方面的内容。例如,
可以查询在一定时间范围内的从各个电表采集到的数据、可以查询
特定电表在全部时间范围内采集到的数据,等等。
应当注意,随着数据库维度的增加以及数据量的增加,查询效
率将会受到数据库中的数据记录的存储方式的影响。然而,按照目
前的数据存储方式,查询效率并不令人满意。尤其是,当需要跨越
数据库中的多个数据记录来查找满足查询条件的数据记录时,查询
效率通常并不理想。
例如,假设数据库中存储了100个电表在10000个时间点采集
到的数据,并且数据库中依次存储了电表1在时间点t1-t10000采集
的数据、电表2在时间点t1-t10000采集的数据、…、电表100在时
间点t1-t10000采集到的数据。当需要查询每个电表在时间点t1采集
的数据时,则需要依次读取第1行、第10001行、第20001行、…、
等数据记录。由于在查询时需要在数据库内跨越大的区域读取数据,
造成了查询效率底下。
因而,如何提高数据存储系统中的查询效率成为一个亟待解决
的问题。
发明内容
因而,期望可以开发出一种能够有效地管理数据存储系统的技
术方案,期望该技术方案可以提高在数据存储系统中的查询效率,
并且期望该技术方案的查询效率可以在数据库中存储了多维数据和/
或海量数据时仍然保持有效。进一步,期望该技术方案可以与现有
的数据存储系统(例如,集中式数据存储系统和/或分布式数据存储
系统)相结合,在尽量不改变现有硬件资源配置的情况下,提高查
询效率。
在本发明的一个实施方式中,提供了一种用于管理数据存储系
统的方法,包括:响应于接收到数据对象(dataobject),基于第一
查询将数据对象中的数据记录排序以形成第一备份;在数据存储系
统中存储第一备份;以及在数据存储系统的索引中存储第一查询以
及第一备份在数据存储系统中的第一地址。
在本发明的一个实施方式中,提供了一种用于查询数据存储系
统的方法,包括:接收针对数据存储系统的查询;以及响应于数据
存储系统的索引中存在与查询相匹配的查询,访问数据存储系统中
与相匹配的查询相关联的地址以执行查询;其中数据存储系统是根
据本发明的方法管理的数据存储系统。
在本发明的一个实施方式中,提供了一种用于管理数据存储系
统的装置,包括:排序模块,配置用于响应于接收到数据对象,基
于第一查询将数据对象中的数据记录排序以形成第一备份;存储模
块,配置用于在数据存储系统中存储第一备份;以及索引模块,配
置用于在数据存储系统的索引中存储第一查询以及第一备份在数据
存储系统中的第一地址。
在本发明的一个实施方式中,提供了一种用于查询数据存储系
统的装置,包括:接收模块,配置用于接收针对数据存储系统的查
询;以及第一查询模块,配置用于响应于数据存储系统的索引中存
在与查询相匹配的查询,访问数据存储系统中与相匹配的查询相关
联的地址以执行查询;其中数据存储系统是根据本发明的装置管理
的数据存储系统。
采用本发明所述的方法和装置,可以有效地管理数据存储系统,
并且可以提高针对数据存储系统的查询的效率。
附图说明
通过结合附图对本公开示例性实施方式进行更详细的描述,本
公开的上述以及其他目的、特征和优势将变得更加明显,其中,在
本公开示例性实施方式中,相同的参考标号通常代表相同部件。
图1示意性示出了适于用来实现本发明实施方式的示例性计算
机系统/服务器12的框图;
图2示意性示出了根据一个技术方案的用于管理数据存储系统
的技术方案的框图;
图3示意性示出了根据本发明一个实施方式的用于管理数据存
储系统的技术方案的框图;
图4示意性示出了根据本发明一个实施方式的用于管理数据存
储系统的方法的流程图;
图5示意性示出了根据本发明一个实施方式的用于管理数据存
储系统的技术方案的框图;
图6示意性示出了根据本发明一个实施方式的用于恢复数据存
储系统中的备份的示意图;
图7示意性示出了根据本发明一个实施方式的用于针对数据存
储系统进行查询的方法的流程图;以及
图8A示意性示出了根据本发明一个实施方式的用于管理数据
存储系统的装置的框图;以及图8B示意性示出了根据本发明一个实
施方式的用于查询数据存储系统的装置的框图。
具体实施方式
下面将参照附图更详细地描述本公开的优选实施方式。虽然附
图中显示了本公开的优选实施方式,然而应该理解,可以以各种形
式实现本公开而不应被这里阐述的实施方式所限制。相反,提供这
些实施方式是为了使本公开更加透彻和完整,并且能够将本公开的
范围完整地传达给本领域的技术人员。
图1示出了适于用来实现本发明实施方式的示例性计算机系统/
服务器12的框图。图1显示的计算机系统/服务器12仅仅是一个示
例,不应对本发明实施方式的功能和使用范围带来任何限制。
如图1所示,计算机系统/服务器12以通用计算设备的形式表现。
计算机系统/服务器12的组件可以包括但不限于:一个或者多个处理
器或者处理单元16,系统存储器28,连接不同系统组件(包括系统
存储器28和处理单元16)的总线18。
总线18表示几类总线结构中的一种或多种,包括存储器总线或
者存储器控制器,外围总线,图形加速端口,处理器或者使用多种
总线结构中的任意总线结构的局域总线。举例来说,这些体系结构
包括但不限于工业标准体系结构(ISA)总线,微通道体系结构(MAC)
总线,增强型ISA总线、视频电子标准协会(VESA)局域总线以及
外围组件互连(PCI)总线。
计算机系统/服务器12典型地包括多种计算机系统可读介质。这
些介质可以是任何能够被计算机系统/服务器12访问的可用介质,包
括易失性和非易失性介质,可移动的和不可移动的介质。
系统存储器28可以包括易失性存储器形式的计算机系统可读介
质,例如随机存取存储器(RAM)30和/或高速缓存存储器32。计
算机系统/服务器12可以进一步包括其他可移动/不可移动的、易失
性/非易失性计算机系统存储介质。仅作为举例,存储系统34可以用
于读写不可移动的、非易失性磁介质(图1未显示,通常称为“硬
盘驱动器”)。尽管图1中未示出,可以提供用于对可移动非易失
性磁盘(例如“软盘”)读写的磁盘驱动器,以及对可移动非易失
性光盘(例如CD-ROM,DVD-ROM或者其他光介质)读写的光盘驱
动器。在这些情况下,每个驱动器可以通过一个或者多个数据介质
接口与总线18相连。存储器28可以包括至少一个程序产品,该程
序产品具有一组(例如至少一个)程序模块,这些程序模块被配置
以执行本发明各实施方式的功能。
具有一组(至少一个)程序模块42的程序/实用工具40,可以
存储在例如存储器28中,这样的程序模块42包括——但不限于——
操作系统、一个或者多个应用程序、其他程序模块以及程序数据,
这些示例中的每一个或某种组合中可能包括网络环境的实现。程序
模块42通常执行本发明所描述的实施方式中的功能和/或方法。
计算机系统/服务器12也可以与一个或多个外部设备14(例如
键盘、指向设备、显示器24等)通信,还可与一个或者多个使得用
户能与该计算机系统/服务器12交互的设备通信,和/或与使得该计
算机系统/服务器12能与一个或多个其他计算设备进行通信的任何
设备(例如网卡,调制解调器等等)通信。这种通信可以通过输入/
输出(I/O)接口22进行。并且,计算机系统/服务器12还可以通过
网络适配器20与一个或者多个网络(例如局域网(LAN),广域网
(WAN)和/或公共网络,例如因特网)通信。如图所示,网络适配
器20通过总线18与计算机系统/服务器12的其他模块通信。应当明
白,尽管图中未示出,可以结合计算机系统/服务器12使用其他硬件
和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理单
元、外部磁盘驱动阵列、RAID系统、磁带驱动器以及数据备份存储
系统等。
为清楚起见,在本发明的上下文中将结合数据库表的具体示例
来描述本发明的各个实施方式。例如,电力公司中用于存储从电表
1-n、在不同时间点采集到的数据的表Record可以如下文表1所示。
表1数据对象的示例
在上文表1所示的数据对象中,各个数据记录按照时间戳的顺
序排序,即,首先存储在时间点“2010-12-0101:00:00.0000”、由电
表1-n采集到的n行数据记录,接着存储在时间点“2010-12-01
01:00:10.0000”、由电表采集到的n行数据记录,以此类推。应当注
意,尽管在本文中以时间序列数据(timeseriesdata)为示例而描述
了本发明的各个实施方式,本领域技术人员应当理解,本发明的各
个实施方式并不仅限于被应用于时间序列数据,而是可以被应用于
各种类型的关系数据库。
目前的数据库的维度越来越高并且数据量越来越大,为了提供
更加可靠的数据存储,目前已经提出了分布式数据存储的技术方案。
在分布式数据存储系统中,可以在多个数据节点中存储数据对象的
多个备份,从而在当部分数据节点出现故障时,可以基于其他未出
现故障的数据节点中的数据来恢复故障节点中的备份。
图2示意性示出了根据一个技术方案的用于管理数据存储系统
的技术方案的框图200。如图2所示,数据存储系统可以包括管理节
点210,该管理节点210用于管理多个数据节点(即,数据节点1220、
数据节点2230、…、以及数据节点N240)。为了提供更高的可靠
性,每个数据节点中可以包括数据对象的备份,例如,数据节点1220
中包括备份222,数据节点2230中包括备份232,以及数据节点N
240中包括备份242。应当注意,在此的“备份”是指数据对象的完
整拷贝。尽管在图2中以不同的参考数字表示,各个备份的内容是
完全相同的。
目前已经发现,对于同一个查询语句,当数据对象中的数据记
录的排列顺序不同时,查询效率将会有所不同。基于这一现象,本
发明提出了一种用于管理数据存储系统的技术方案。具体地,可以
基于针对数据对象执行的历史查询来调整备份中的数据记录的顺
序,继而可以针对调整后的备份进行查询,以便提高查询效率。进
一步,还可以基于多个历史查询来生成多个备份,并且将多个备份
存储至多个数据节点中。
图3示意性示出了根据本发明一个实施方式的用于管理数据存
储系统的技术方案的框图300。如图3所示,数据对象310表示原始
的数据对象,与表1所示相同,此时各个数据记录按照时间戳的顺
序排序。例如,存在查询语句320“SELECT*FROMRECORD
WHEREMETER_ID=XXX”,该语句表示需要从数据表RECORD
中查找由特定电表“XXX”在各个时间点采集到的所有数据。假设
存在10000个不同的时间点,按照现有数据对象310中数据记录的
顺序,则需要跨越大量数据记录来获得满足查询条件的语句(即,
依次读取第1行、第10001行、第20001行等数据记录),因而查
询效率较低。
根据本发明的各个实施方式,可以基于查询语句320来将数据
对象310中的数据记录重新排序(如箭头A所示)以形成备份330,
并将该备份330存储至数据存储系统340(如箭头B所示)。在备
份330中,数据记录按照电表ID重新排序,此时原本存储在数据对
象310中的第1行、第10001行、第20001行等数据记录变为连续
存储方式(例如,存储在连续的数据块中)。以此方式,不必再跨
越大量数据记录读取数据,而是可以从备份中读取一段连续的数据
即可。尽管将数据对象310转换为备份330需要一定的时间,然而
转换是在查询之前预先完成的,因而这一预处理步骤不会影响查询
的效率。另外,当存在大量类似于“SELECT*FROMRECORD
WHEREMETER_ID=XXX”形式的查询时,本发明的技术方案将大
大提高查询效率。
在本发明的一个实施方式中,提出了一种用于管理数据存储系
统的方法,包括:响应于接收到数据对象,基于第一查询将数据对
象中的数据记录排序以形成第一备份;在数据存储系统中存储第一
备份;以及在数据存储系统的索引中存储第一查询以及第一备份在
数据存储系统中的第一地址。
在下文中,将参见附图详细描述本发明的各个实施方式。图4
示意性示出了根据本发明一个实施方式的用于管理数据存储系统的
方法的流程图400。在步骤S402中,响应于接收到数据对象,基于
第一查询将数据对象中的数据记录排序以形成第一备份。在本发明
的一个实施方式中,例如可以基于数据存储系统的主要功能来确定
第一查询,或者还可以基于历史查询中各个查询语句出现的频率而
确定第一查询。
例如,当数据存储系统仅能够查询与特定电表相关联的数据时,
可以按照图3中以附图标记330示出的格式来排序各个数据记录。
又例如,当针对数据存储系统的历史查询显示:80%的历史查询是查
询在特定时间点采集的各个电表的数据时,则可以按照图3中以附
图标记310所示的格式来排序数据记录。基于出现可能性最高的查
询来排序数据对象中的各个数据记录并生成备份,可以在将来针对
备份执行查询时获得满意的查询效率。
接着,在步骤S404中,在数据存储系统中存储第一备份。由于
数据存储系统可以具有海量数据存储,为了在后续的写入和读取操
作中能够方便地访问第一备份,在步骤S406中,还需要在数据存储
系统的索引中存储第一查询以及第一备份在数据存储系统中的第一
地址。
在本发明的一个实施方式中,进一步包括:在数据存储系统中
维护数据对象的备份。在此实施方式中,可以在数据存储系统中维
护数据对象的备份和第一备份,第一备份中的数据记录的排列顺序
是针对第一查询而设置的,因而第一备份不但可以提高数据可靠性,
还可以提高查询效率。
在本发明的一个实施方式中,响应于接收到数据对象,基于第
一查询将数据对象中的数据记录排序以形成第一备份包括:基于第
一查询获取第一标准;以及按照第一标准,将数据对象中的数据记
录排序以形成第一备份。
在本发明的实施方式中,可以基于第一查询来获取第一标准。
例如,查询语句“SELECT*FROMRECORDWHEREMETER_ID=
XXX”的目的在于查询由特定电表“XXX”采集到的所有数据。此
时,当以查询语句中指定的“METER_ID”为标准来将数据对象中
的各个数据记录进行排序并形成备份时,可以获得较高的查询效率。
又例如,查询语句“SELECT*FROMRECORDWHERETIMESTAMP
=XXX”的目的在于查询在特定时间点“XXX”采集到的所有数据。
此时,当以查询语句中指定的“TIMESTAMP”为标准将数据对象中
的各个数据记录进行排序并形成备份时,可以获得较高的查询效率。
在本发明的一个实施方式中,第一标准使得在第一备份中执行
第一查询时的查询效率高于在按照其他标准将数据对象中的数据记
录排序以形成的其他文件中执行第一查询时的查询效率。
应当注意,由于第一备份是专门按照第一查询而排序并形成的,
因而,此时针对该第一备份执行第一查询时的效率最高。换言之,
采用第一标准来进行排序,可以使得在第一备份中执行第一查询时
的查询效率高于在按照其他标准将数据对象中的数据记录排序以形
成的其他文件中执行第一查询时的查询效率。
具体而言,针对上文中的具体示例,当第一查询为“SELECT*
FROMRECORDWHEREMETER_ID=XXX”时,第一备份可以如
图3中的备份330所示,此时针对第一备份进行查询的效率要远高
于针对如图3中的数据对象310进行查询的效率。这是因为,在针
对数据对象310进行查询时,需要在跳跃地读取各个数据记录,因
而效率较低。
在本发明的一个实施方式中,数据对象是多维数据库,以及基
于第一查询获取第一标准包括:基于多维数据库中与第一查询相对
应的至少一个维度获取第一标准。在针对多维数据库进行查询时可
能会涉及到多个维度,例如,可以查询第1-u个电表在每周之内采集
到的数据,此时可以将第1-u个电表在每周内采集到的数据排列在一
起,以便在获得较高的查询效率。根据数据存储系统的功能,可以
按照查询所涉及的多个维度来将数据对象进行排序。
在本发明的一个实施方式中,响应于接收到数据对象,基于第
一查询将数据对象中的数据记录排序以形成第一备份包括:按照数
据存储系统支持的块大小,将排序后的数据记录划分为多个数据块;
以及基于多个数据块形成第一备份。
在存储系统中以数据块为单位来存储数据,因而可以基于数据
块来组织排序后的数据记录。假设数据库存储系统中的数据块的大
小为64M,并且如图3中所示的备份330中与每个电表ID相关联
的数据记录的总容量为64M,则可以在每个数据块中存储关于一个
电表ID的所有数据。假设共存在10个电表,则10个数据块一起构
成第一备份。
尽管在上文中仅示意性示出了关于每个电表的数据记录总容量
恰好为64M的情况,本领域技术人员还可以理解,当总容量不足或
者超过64M时,也可以采用本发明的实施方式。例如,假设关于每
个电表的数据记录的总容量是60M,可以利用一个数据块来存储关
于一个电表的数据。具体地,可以将剩余的4M空间闲置或者还可
以将其用于存储用于下一电表的数据。又例如,假设关于每个电表
的数据记录的总容量为100M,则可以在两个或者更多的数据块中
存储关于一个电表的数据。
在本发明的一个实施方式中,还可以在索引中存储每个数据块
的地址,以便响应于接收到查询而快速地定位满足查询条件的数据
块。本领域技术人员可以基于具体应用环境的要求来实现。
在本发明的一个实施方式中,进一步包括:基于第二查询将数
据对象中的数据记录排序以形成第二备份;在数据存储系统中存储
第二备份;以及在数据存储系统的索引中存储第二查询以及第二备
份在数据存储系统中的第二地址。
为了进一步提高数据查询效率,可以在数据存储系统中存储数
据对象的多个备份,并且该多个备份中的每个备份都是按照一个查
询来将数据对象中的数据记录进行排序后形成的。在执行查询时,
可以与查询相对应的备份,进而提高查询的效率。
图5示意性示出了根据本发明一个实施方式的用于管理数据存
储系统的技术方案的框图500。在该数据存储系统中,管理节点210
可以管理各个数据节点,如数据节点1220、数据节点2230、…、
数据节点N240,并且还可以维护记录了各个查询与相应的备份之间
的映射关系的索引510。不同于如图2所示的技术方案,在图5所示
的实施方式中,各个数据节点中存储的备份(即,第一备份522、第
二备份532、第N文件542)并不相同,而是分别基于不同的查询来
将数据对象中的数据记录进行排序后形成的备份。
如图5所示,可以按照第一数据表524的格式存储第一备份522,
并且该第一备份522对应于第一查询520。还可以按照第二数据表
534所示的格式存储第二备份532,并且该第二备份532对应于第二
查询530。以此方式,可以在接收到不同的查询时将查询引导至相应
的备份,以便提高查询效率。相对于现有技术中在各个数据节点中
存储相同备份的技术方案,采用本发明的技术方案,可以在提高数
据可靠性的同时提高数据查询效率。
应当注意,尽管在图5中参见分布式数据存储系统的应用环境
来描述了本发明的各个实施方式,本领域技术人员应当理解,本发
明的各个实施方式并不仅限于应用于分布式数据存储环境,而是还
可以应用于其他数据存储环境中。例如,可以在一个数据服务器上
存储基于多个查询而生成的多个备份,尽管此时多个备份将会占据
额外的存储空间,然而将不同的查询引导至不同的备份可以大大提
高查询效率。又例如,本发明还可以在虚拟机的环境中运行,例如,
如图5中所示的管理节点210和各个数据节点220-240可以是虚拟
机。
在上文中已经介绍了在多个数据节点中存储对应于多个查询的
多个备份,尽管多个备份中的数据记录是相同的,然而数据记录的
排列顺序有所不同。因而,在一个数据节点中的备份被损坏或者更
新时,还需要附加处理过程。
在本发明的一个实施方式中,进一步包括:获得第一备份中的
数据块与第二备份中的数据块的映射关系;以及响应于第一备份被
损坏,基于映射文件从第二备份中恢复第一备份。在本发明的一个
实施方式中,第一备份和第二备份中内容在整体上是相同的,不同
之处在于数据记录的排序不同,因而导致了第一备份和第二备份中
的数据块之间可以具有映射关系。例如,第一备份中的数据块A可
以对应于第二备份中的数据块B。此时,当第一备份中的数据块A
被损坏时可以利用第二备份中的数据块B来恢复该数据块A。
在本发明的一个实施方式中,响应于第一备份被损坏,基于映
射关系从第二备份中恢复第一备份包括:基于映射关系,在第二备
份中查找与第一备份中被损坏的第一备份块相对应的第二备份块;
以及拷贝第二备份块以替换被损坏的第一备份块。
在下文中将参见图6详细描述恢复步骤的具体细节。图6示意
性示出了根据本发明一个实施方式的用于恢复数据存储系统中的文
件的示意图600。如图6所示,第一备份610包括多个数据块
A11-A23,并且第二备份620包括多个数据块B11-B23,第一备份中
的数据块和第二备份中的数据块的映射关系如表630所示。当第一
备份中的数据块A22(以阴影示出)被损坏时,基于映射关系630
可知,第一备份610中的数据块A22对应于第二备份620中的数据
块B23。因而,可以直接拷贝数据块B23以覆盖损坏的数据块A22。
在上文中已经参见附图详细示出了恢复操作的具体步骤,在下
文中将描述当数据存储系统中的一个备份被更新时,如何更新其他
备份的操作。在本发明的一个实施方式中,进一步包括:获得第一
备份中的数据块与第二备份中的数据块的映射关系;以及响应于第
二备份被更新,基于映射关系利用已更新的第二备份来更新第一备
份。
更新操作类似于恢复操作,在已经知晓第一备份和第二备份中
的数据块的映射关系的情况下,在第二备份被更新的情况下可以基
于该映射关系来查找需要更新第一备份中的哪部分,进而进行更新。
具体地,参见图6的示例,假设第二备份620中的数据块B23被更
新,并且第二备份620中的数据块B23对应于第一备份610中的数
据块A22,则此时可以拷贝数据块B23以覆盖数据块A22。以此方
式,可以将数据存储系统中的各个备份保持最新。
在本发明的一个实施方式中,数据存储系统是Hadoop分布式文
件系统。Hadoop分布式文件系统是目前的一种流行的数据存储系统,
该系统可以在多个数据节点中保存数据对象的多个备份,因而可以
提供较高的可靠性。通过在Hadoop分布式文件系统中应用本发明的
技术方案,可以在各个数据节点中保存基于不同查询而将数据对象
中的数据记录重新排序后生成的备份。以此方式,可以在确保可靠
性的前提下提高数据查询效率。
在上文中已经参见附图描述了如何管理数据存储系统,在下文
中将详细描述如何在本发明所述的数据存储系统中执行查询。具体
地,在本发明的一个实施方式中,提供了一种用于查询数据存储系
统的方法,包括:接收针对数据存储系统的查询;以及响应于数据
存储系统的索引中存在与查询相匹配的查询,访问数据存储系统中
与相匹配的查询相关联的地址以执行查询;其中数据存储系统是根
据本发明的方法管理的数据存储系统。
在已经在数据存储系统中保存了基于不同查询生成的备份的情
况下,可以基于索引来搜索在数据存储系统中是否存在与接收到的
查询相匹配的备份。例如,在数据存储系统中已经存储了如图5中
的第一备份522和第二备份532,并且在索引中已经记载了分别与两
个备份相关联的第一查询520和第二查询530。此时,当接收到类似
于第一查询520的查询时,可以在第一备份522中执行查询,当接
收到类似于第二查询530的查询时,则可以在第二备份532中执行
查询,以便提高查询效率。
在本发明的一个实施方式中,进一步包括:响应于数据存储系
统的索引中不存在与查询相匹配的查询,访问数据存储系统中与任
一查询相关联的地址以执行查询。换言之,当在数据存储系统中不
存在匹配于接收到的查询的备份时,则可以在存储系统中的任一备
份中执行查询。由于数据存储系统中的各个备份是基于数据存储系
统的功能和/或历史查询的频率而设置的,在索引中不存在相匹配查
询的可能性较低。因而,在大多数情况下,采用本发明的实施方式
可以显著提高查询效率。
图7示意性示出了根据本发明一个实施方式的用于针对数据存
储系统进行查询的方法的流程图700。如图7所示,在步骤S702中,
接收对数据存储系统的查询。继而,在步骤S704中,判断在数据存
储系统中是否存在与接收到的查询相匹配的查询。如果判断结果为
“是”,则操作流程前进至步骤S706,访问数据存储系统中与相匹
配的查询相关联的地址以执行查询;否则,操作流程前进至步骤
S708,访问数据存储系统中与任一查询相关联的地址以执行查询。
应当注意,尽管在说明书和附图中以在数据存储系统维护一个
备份、两个备份为具体示例描述了本发明的细节,本领域技术人员
应当理解,为了提高数据可靠性和/或进一步提高查询效率,还可以
在数据存储系统中保持更多的备份。具体而言,在Hadoop分布式文
件系统中,可以维护三个备份。
前面已经参考附图描述了实现本发明的方法的各个实施方式。
本领域技术人员可以理解的是,上述方法既可以以软件方式实现,
也可以以硬件方式实现,或者通过软件与硬件相结合的方式实现。
并且,本领域技术人员可以理解,通过以软件、硬件或者软硬件相
结合的方式实现上述方法中的各个步骤,可以提供一种基于相同发
明构思的一种设备。即使该设备在硬件结构上与通用处理设备相同,
由于其中所包含的软件的作用,使得该设备表现出区别于通用处理
设备的特性,从而形成本发明的各个实施方式的设备。本发明中所
述设备包括若干装置或模块,所述装置或模块被配置为执行相应步
骤。本领域的所述技术人员通过阅读本说明书可以理解如何编写程
序实现所述装置或模块执行的动作。由于所述设备与方法基于相同
的发明构思,因此其中相同或相应的实现细节同样适用于与上述方
法对应的装置或模块,由于其在上文中已经进行了详细和完整的描
述,因此在下文中可能不再进行赘述。
图8A示意性示出了根据本发明一个实施方式的用于管理数据
存储系统的装置的框图800A。如图8A所示,提供了一种用于管理
数据存储系统的装置,包括:排序模块810A,配置用于响应于接收
到数据对象,基于第一查询将数据对象中的数据记录排序以形成第
一备份;存储模块820A,配置用于在数据存储系统中存储第一备份;
以及索引模块830A,配置用于在数据存储系统的索引中存储第一查
询以及第一备份在数据存储系统中的第一地址。
在本发明的一个实施方式中,排序模块810A包括:获取模块,
配置用于基于第一查询获取第一标准;以及第一排序模块,配置用
于按照第一标准,将数据对象中的数据记录排序以形成第一备份。
在本发明的一个实施方式中,第一标准使得在第一备份中执行
第一查询时的查询效率高于在按照其他标准将数据对象中的数据记
录排序以形成的其他文件中执行第一查询时的查询效率。
在本发明的一个实施方式中,数据对象是多维数据库,以及获
取模块包括:第一获取模块,配置用于基于多维数据库中与第一查
询相对应的至少一个维度获取第一标准。
在本发明的一个实施方式中,排序模块810A包括:划分模块,
配置用于按照数据存储系统支持的块大小,将排序后的数据记录划
分为多个数据块;以及形成模块,配置用于基于多个数据块形成第
一备份。
在本发明的一个实施方式中,排序模块810A进一步配置用于基
于第二查询将数据对象中的数据记录排序以形成第二备份;存储模
块820A进一步配置用于在数据存储系统中存储第二备份;以及索引
模块830A进一步配置用于在数据存储系统的索引中存储第二查询
以及第二备份在数据存储系统中的第二地址。
在本发明的一个实施方式中,进一步包括:映射模块,配置用
于获得第一备份中的数据块与第二备份中的数据块的映射关系;以
及恢复模块,配置用于响应于第一备份被损坏,基于映射关系从第
二备份中恢复第一备份。
在本发明的一个实施方式中,恢复模块包括:查找模块,配置
用于基于映射关系,在第二备份中查找与第一备份中被损坏的第一
备份块相对应的第二备份块;以及拷贝模块,配置用于拷贝第二备
份块以替换被损坏的第一备份块。
在本发明的一个实施方式中,进一步包括:映射模块,配置用
于获得第一备份中的数据块与第二备份中的数据块的映射关系;以
及更新模块,配置用于响应于第二备份被更新,基于映射关系利用
更新的第二备份来更新第一备份。
图8B示意性示出了根据本发明一个实施方式的用于查询数据存
储系统的装置的框图800B。具体地,提供了一种用于查询数据存储
系统的装置,包括:接收模块810B,配置用于接收针对数据存储系
统的查询;以及第一查询模块820B,配置用于响应于数据存储系统
的索引中存在与查询相匹配的查询,访问数据存储系统中与相匹配
的查询相关联的地址以执行查询;其中数据存储系统是根据本发明
的装置管理的数据存储系统。
在本发明的一个实施方式中,进一步包括:第二查询模块830B,
配置用于响应于数据存储系统的索引中不存在与查询相匹配的查
询,访问数据存储系统中与任一查询相关联的地址以执行查询。
本发明可以是系统、方法和/或计算机程序产品。计算机程序产
品可以包括计算机可读存储介质,其上载有用于使处理器实现本发
明的各个方面的计算机可读程序指令。
计算机可读存储介质可以是可以保持和存储由指令执行设备使
用的指令的有形设备。计算机可读存储介质例如可以是――但不限
于――电存储设备、磁存储设备、光存储设备、电磁存储设备、半
导体存储设备或者上述的任意合适的组合。计算机可读存储介质的
更具体的例子(非穷举的列表)包括:便携式计算机盘、硬盘、随
机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读
存储器(EPROM或闪存)、静态随机存取存储器(SRAM)、便携
式压缩盘只读存储器(CD-ROM)、数字多功能盘(DVD)、记忆
棒、软盘、机械编码设备、例如其上存储有指令的打孔卡或凹槽内
凸起结构、以及上述的任意合适的组合。这里所使用的计算机可读
存储介质不被解释为瞬时信号本身,诸如无线电波或者其他自由传
播的电磁波、通过波导或其他传输媒介传播的电磁波(例如,通过
光纤电缆的光脉冲)、或者通过电线传输的电信号。
这里所描述的计算机可读程序指令可以从计算机可读存储介质
下载到各个计算/处理设备,或者通过网络、例如因特网、局域网、
广域网和/或无线网下载到外部计算机或外部存储设备。网络可以包
括铜传输电缆、光纤传输、无线传输、路由器、防火墙、交换机、
网关计算机和/或边缘服务器。每个计算/处理设备中的网络适配卡或
者网络接口从网络接收计算机可读程序指令,并转发该计算机可读
程序指令,以供存储在各个计算/处理设备中的计算机可读存储介质
中。
用于执行本发明操作的计算机程序指令可以是汇编指令、指令
集架构(ISA)指令、机器指令、机器相关指令、微代码、固件指令、
状态设置数据、或者以一种或多种编程语言的任意组合编写的源代
码或目标代码,所述编程语言包括面向对象的编程语言—诸如Java、
Smalltalk、C++等,以及常规的过程式编程语言—诸如“C”语言或
类似的编程语言。计算机可读程序指令可以完全地在用户计算机上
执行、部分地在用户计算机上执行、作为一个独立的软件包执行、
部分在用户计算机上部分在远程计算机上执行、或者完全在远程计
算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可
以通过任意种类的网络—包括局域网(LAN)或广域网(WAN)—
连接到用户计算机,或者,可以连接到外部计算机(例如利用因特
网服务提供商来通过因特网连接)。在一些实施方式中,通过利用
计算机可读程序指令的状态信息来个性化定制电子电路,例如可编
程逻辑电路、现场可编程门阵列(FPGA)或可编程逻辑阵列(PLA),
该电子电路可以执行计算机可读程序指令,从而实现本发明的各个
方面。
这里参照根据本发明实施方式的方法、装置(系统)和计算机
程序产品的流程图和/或框图描述了本发明的各个方面。应当理解,
流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,
都可以由计算机可读程序指令实现。
这些计算机可读程序指令可以提供给通用计算机、专用计算机
或其他可编程数据处理装置的处理器,从而生产出一种机器,使得
这些指令在通过计算机或其他可编程数据处理装置的处理器执行
时,产生了实现流程图和/或框图中的一个或多个方框中规定的功能/
动作的装置。也可以把这些计算机可读程序指令存储在计算机可读
存储介质中,这些指令使得计算机、可编程数据处理装置和/或其他
设备以特定方式工作,从而,存储有指令的计算机可读介质则包括
一个制造品,其包括实现流程图和/或框图中的一个或多个方框中规
定的功能/动作的各个方面的指令。
也可以把计算机可读程序指令加载到计算机、其他可编程数据
处理装置、或其他设备上,使得在计算机、其他可编程数据处理装
置或其他设备上执行一系列操作步骤,以产生计算机实现的过程,
从而使得在计算机、其他可编程数据处理装置、或其他设备上执行
的指令实现流程图和/或框图中的一个或多个方框中规定的功能/动
作。
附图中的流程图和框图显示了根据本发明的多个实施方式的系
统、方法和计算机程序产品的可能实现的体系架构、功能和操作。
在这点上,流程图或框图中的每个方框可以代表一个模块、程序段
或指令的一部分,所述模块、程序段或指令的一部分包含一个或多
个用于实现规定的逻辑功能的可执行指令。在有些作为替换的实现
中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。
例如,两个连续的方框实际上可以基本并行地执行,它们有时也可
以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框
图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组
合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,
或者可以用专用硬件与计算机指令的组合来实现。
以上已经描述了本发明的各实施方式,上述说明是示例性的,
并非穷尽性的,并且也不限于所披露的各实施方式。在不偏离所说
明的各实施方式的范围和精神的情况下,对于本技术领域的普通技
术人员来说许多修改和变更都是显而易见的。本文中所用术语的选
择,旨在最好地解释各实施方式的原理、实际应用或对市场中的技
术的技术改进,或者使本技术领域的其他普通技术人员能理解本文
披露的各实施方式。