数据存储方法、查询方法及相关装置与流程

文档序号:19385457发布日期:2019-12-11 00:54阅读:140来源:国知局
数据存储方法、查询方法及相关装置与流程

本发明涉及数据库技术领域,具体而言,涉及一种数据存储方法、查询方法及相关装置。



背景技术:

近年来互联网和信息行业的发展,大数据引起越来越多人的关注。随着数据的规模和类型的剧增,标志着已逐步进入大数据时代。大数据时段对数据的存储与查询提出了挑战。

而传统的oracle等关系型数据库由于存储管理能力受到限制、并发度不足、扩展性不足、成本较高等问题,无法满足对业务关系复杂的海量数据的并发访问及数据分析和挖掘的需求。



技术实现要素:

本发明实施例提供一种数据存储方法、查询方法及相关装置,以应对海量数据的存储压力及提高对业务关系复杂的数据的查询速度。

为了实现上述目的,本发明实施例采用的技术方案如下:

第一方面,本发明实施例提供的一种数据存储方法,应用于服务器,所述服务器包括一预先构建的雪花模型,所述数据存储方法包括:获取预先处理过的数据信息;将所述数据信息导入hbase数据库对应的所述雪花模型的多个表格中;对导入所述hbase数据库的数据信息进行压缩,以实现数据存储。

第二方面,本发明实施例提供的一种数据存储装置,应用于服务器,所述服务器包括一预先构建的雪花模型,所述数据存储装置包括:获取模块,用于获取预先处理过的数据信息;存储模块,用于将所述数据信息导入hbase数据库对应的所述雪花模型的多个表格中;压缩模块,用于对导入所述hbase数据库的数据信息进行压缩,以实现数据存储。

第三方面,本发明实施例提供的一种数据查询方法,应用于服务器,所述服务器包括hbase数据库、利用前述数据存储方法写入所述hbase数据库的数据信息及对应的索引表,所述服务器与客户端通信连接,所述数据查询方法包括:接收到客户端发送的查询请求;根据所述查询请求结合所述索引表从所述hbase数据库查找与该查询请求对应的数据信息;将查找到的所述数据信息反馈给所述客户端。

第四方面,本发明实施例提供的一种数据查询装置,应用于服务器,所述服务器包括hbase数据库、利用前述数据存储方法写入所述hbase数据库的数据信息及对应的索引表,所述服务器与客户端通信连接,所述数据查询装置包括:接收模块,用于接收到客户端发送的查询请求;查找模块,用于根据所述查询请求结合所述索引表从所述hbase数据库查找与该查询请求对应的数据信息;反馈模块,用于将查找到的所述数据信息反馈给所述客户端。

与现有技术相比,本发明实施例提供的一种数据存储方法,通过利用所述雪花模型将预先处理过的数据信息导入hbase数据库,也就是利用hbase数据库面向列的数据存储系统,横向扩展的特点,配合雪花模型进行数据存储。这样一方面能很好的适应数据急速增长对存储容量的需求。另一方面,在存储数据业务关系复杂的情况下,避免对所有数据扫描,提高对已存储数据的查找效率。再加上对导入所述hbase数据库的数据信息进行压缩,进一步地节约存储空间,以更好的应对海量的数据存储。

为使本发明的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附附图,作详细说明如下。

附图说明

为了更清楚地说明本发明实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本发明的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。

图1为本发明较佳实施例提供的服务器的方框示意图。

图2示出了本发明实施例提供的数据存储方法流程图。

图3示出了本发明实施例提供的一种雪花模型的示意图。

图4示出了本发明实施例提供的数据查询方法流程图。

图5示出了本发明实施例提供的一种索引表、查询表及特殊查询表的示意图。

图6示出了本发明实施例提供的数据存储装置的示意图。

图7示出了本发明实施例提供的数据查询装置的示意图。

图标:100-服务器;111-存储器;112-处理器;113-通信单元;200-数据存储装置;201-获取模块;202-存储模块;203-压缩模块;300-数据查询装置;301-接收模块;302-查找模块;303-反馈模块。

具体实施方式

下面将结合本发明实施例中附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本发明实施例的组件可以以各种不同的配置来布置和设计。因此,以下对在附图中提供的本发明的实施例的详细描述并非旨在限制要求保护的本发明的范围,而是仅仅表示本发明的选定实施例。基于本发明的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。

应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。同时,在本发明的描述中,术语“第一”、“第二”等仅用于区分描述,而不能理解为指示或暗示相对重要性。

随着数据的爆炸式增长,以及数据分析与挖掘需求的增加,传统的关系型数据库在存储容量、并发度、成本、非结构化数据存储等方面受到挑战。为了满足大数据的需求,出现了各种nosql高并发实时数据库,以解决传统关系数据库的不足,具有高灵活性、高性能、模型简单等优点。其中,hbase数据库是一个开源的,分布式的,面向列的数据存储系统,其横向扩展的特点,能很好的适应数据急速增长对存储容量的需求,且分布式并行运行的特点使其具有很高的i/o速度,能满足对大数据进行高效的查询和数据分析与挖掘的需求。对非结构化数据和稀疏矩阵存储的支持,使其很适合对多种多样的非结构化数据进行存储和管理。

虽然相关技术中,基于hbase数据库通常利用高表/宽表对海量数据进行存储。再对行键进行编码压缩、设计优化并通过预分区、二次索引等方法以提高查询效率。但本申请发明人发现,相关技术中提供的hbase数据库对于复杂业务的查询需求考虑较少,对于复杂条件查询的也支持受到限制。也就是在应对业务关系复杂的数据的查询时查询效率还可以进一步提高。

因此,本发明实施例提供一种数据存储方法、查询方法及相关装置,以解决上述问题。

请参照图1,是服务器100的方框示意图。所述服务器100包括数据存储装置200、数据查询装置300、存储器111、处理器112及通信单元113。

所述存储器111、处理器112以及通信单元113各元件相互之间直接或间接地电性连接,以实现数据的传输或交互。例如,这些元件相互之间可通过一条或多条通讯总线或信号线实现电性连接。所述数据存储装置200、数据查询装置300包括至少一个可以软件或固件(firmware)的形式存储于所述存储器111中或固化在所述服务器100的操作系统(operatingsystem,os)中的软件功能模块。所述处理器112用于执行所述存储器111中存储的可执行模块,例如所述数据存储装置200、数据查询装置300所包括的软件功能模块及计算机程序等。

其中,所述存储器111可以是,但不限于,随机存取存储器(randomaccessmemory,ram),只读存储器(readonlymemory,rom),可编程只读存储器(programmableread-onlymemory,prom),可擦除只读存储器(erasableprogrammableread-onlymemory,eprom),电可擦除只读存储器(electricerasableprogrammableread-onlymemory,eeprom)等。其中,存储器111用于存储程序或者数据。所述通信单元113用于通过所述网络建立所述服务器100与其它通信终端之间的通信连接,并用于通过所述网络收发数据。存储器111包括ddr4rdimm-16gb-2133000khz-1.2v-ecc-2rank(1g*4bit)的内存及1200gb-sas12gb/s-10000rpm-2.5inch-热插拔的硬盘搭建。进一步地,服务器100还包括sr320bc1gbcache,支持-raid0,1,5,6,10,50,60-支持超级电容+850mmminisas模块(8盘规格)的raid卡。

应当理解的是,图1所示的结构仅为服务器100的结构示意图,所述服务器100还可包括比图1中所示更多或者更少的组件,或者具有与图1所示不同的配置。图1中所示的各组件可以采用硬件、软件或其组合实现。

第一实施例

请参考图2,图2为本发明较佳实施例提供的一种数据存储方法的流程图。数据存储方法包括以下步骤:

步骤s101,获取预先处理过的数据信息。

上述预先处理过的数据信息通过如下方式获取:接收不同来源的所述数据信息。对接收到的不同来源的所述数据信息进行清洗及整合处理。对处理后的所述数据信息进行脱敏处理。

在本发明实施例中,可以是利用安装于服务器100的安全云桌面系统接收原始数据。上述原始数据包括不同来源的数据信息。再对接收到的数据进行清洗及整合处理,以确保预处理过的数据信息的正确性、完整性、一致性、有效性。对处理后的所述数据信息进行脱敏处理可以是对所述数据信息中属于被预先定义的隐私数据的数据信息进行脱敏处理。例如,预先定义身份信息为隐私数据,则当处理后的数据信息中有身份信息,则对其进行脱敏处理,以确保数据的安全性。

步骤s102,将所述数据信息导入hbase数据库对应的所述雪花模型的多个表格中。

上述雪花模型包括事实表及多个维度表等多个表格。雪花模型为存在一个或多个维度表没有直接连接到事实表上,而是通过其他维表连接到事实表上。事实表及多个维度表均为数据表。由于hbase数据库中的数据表的行键(rowkey)是按字典序组织的,在不知道起止行键的情况下,相关技术中,对于海量数据而言,进行数据查询时使用scan结合各种过滤器进行查询的开销非常大,应尽量避免使用过滤器。而在本实施例中,通过采用雪花模型,在无法避免进行全表扫描的情况下,通过合理设置各数据表的行键和与其他数据表进行关联的外键,可以减少过滤器操作,既节约了查询开销,又提高查询效率。

需要说明的是,上述事实表记录每个人按时间顺序发生的所有业务。上述维度表包括业务维度表、人员维度表及机构维度表。上述业务维度表用于记录相关业务的详细信息。上述人员维度表及机构维度表均为补充维度表,分别用于记录个人的基本信息、机构的详细信息等与业务相关的其他信息。在复杂查询中,日期这一因素尤为重要,因此在雪花模型的各数据表的行键中都包含日期,其余信息视其重要性决定是否加入行键。所有的数据表均包括行键及列族。

进一步地,作为一种实施方式,上述雪花模型的各数据表的设计可以如图3所示。

上述人员维度表的行键为根据每个人员信息随机生成的唯一对应的人员编码。人员编码随机生成有利于避免hbase数据库中出现数据热点等问题。

上述机构维度表的行键为根据每个所述执行机构信息生成的唯一对应的机构编码。

上述业务维度表的行键由所述人员编码、所述业务发生时间信息及序号编码组成,所述序号编码为同一业务信息对应的记录数据的序号。需要说明的是,同一项业务信息可以包括对于多项操作的记录数据,也就是这些记录数据均属于同一业务信息,且对应的业务发生时间也相同,则通过发生先后顺序赋予其序号,以便区分每一项记录数据,从而使其具有唯一对应的用于查询的行键值。例如,a在9点的一次医嘱业务信息,其包括开具的不同的治疗方法或药物及其用法用量等信息,则将该医嘱业务信息写入业务维度表时,一种治疗方法记录数据对应的行键值为a,9:00:00,1;一种药物记录数据对应的行键值为a,9:00:00,2。

上述事实表的行键由人员编码、业务发生时间及业务编码组成。上述事实表的列族包括所述人员编码、该人员编码对应的业务发生时间信息及对应的最大序号。上述最大序号为每个业务信息对应的所有记录数据被赋予的序号中最大的值,接上例,a在9点开始的一次医嘱业务信息被写入事实表时,其最大序号为2。根据事实表中列族设置最大序号就可以对应的业务信息在业务维度表中的行键范围。这样有效的加快了查询效率。在进行数据查询时,只要根据该数据所属的人员编码、业务发生时间和业务编码则可以从业务维度表中查询到该业务对应的数据,或者根据事实表中的人员编码对应的业务发生时间信息及对应的最大序号得到终止行键,人员编码对应的业务发生时间信息及序号“1”可得到起始行键,从而根据起始行键和终止行键获得业务维度表中相应的行键范围。

上述业务维度表及事实表中的人员编码作为与人员维度表关联的外键,上述业务维度表中的机构编码作为与机构维度表关联的外键,事实表中的人员编码对应的业务发生时间信息及对应的最大序号作为与业务维度表关联的外键。通过上述合理的外键及行键的设置,可有效地提高查询效率。

在本发明实施例中,步骤s102通过如下方式实现:

从所述数据信息中获取人员信息、对应的业务信息及每个业务信息对应的业务发生时间信息。将所述人员信息写入所述雪花模型中的人员维度表的列族并将根据每个人员信息随机生成的唯一对应的人员编码,作为其在该人员维度表中对应的行键值。

将所述人员编码及该人员编码对应的业务信息通过所述雪花模型中的业务维度表写入所述hbase数据库。可选地,从所述业务信息中获取对应的执行机构信息及业务详细信息。将所述执行机构信息写入所述雪花模型的机构维度表中,其中,所述机构维度表的行键为根据每个所述执行机构信息生成的唯一对应的机构编码。将所述人员编码、所述机构编码及对应的业务详细信息写入所述业务维度表的列族中。

将所述人员编码、该人员编码对应的所述业务发生时间信息及对应的最大序号写入所述雪花模型的事实表的列族中,所述最大序号为所述人员编码、业务编码及对应的所述业务发生时间信息在所述业务维度表中对应的序号编码中的最大值。

步骤s103,对导入所述hbase数据库的数据信息进行压缩。于分布式文件系统而言,为了保证数据的高可用性和系统容错能力,往往会把同一数据块在多个节点上进行备份,通常默认备份3份。海量数据导入hbase数据库后,再经过备份,占用的集群空间非常可观,因此有必要对其进行压缩。实现存储空间的节约。

第二实施例

在存储的数据信息之间的业务关系复杂时,面对灵活多变查询需求,为提高hfile的存储效率和内存利用率,通常行键不宜过长,因此仅凭行键不能满足实际的查询需求。为提高查询效率,如图4所示,本发明实施例提供了一种数据查询方法,应用于服务器100,该服务器100内还存储有如图5所示的索引表、查询表及特殊查询表。如图4所示,数据查询方法可以包括以下步骤:

步骤s201,接收到客户端发送的查询请求。

在本实施例中,上述客户端与服务器100通信连接。上述客户端可以安装于电子设备的java客户端,以为用户从服务器100获取其提供的服务。上述电子设备可以优选为移动终端设备、电脑,例如可以包括智能手机、平板电脑、膝上型便携计算机、台式电脑等等。

步骤s202,根据所述查询请求结合所述索引表从所述hbase数据库查找与该查询请求对应的数据信息。

在进行数据查询时,由于hbase数据库的列值查询需要扫描全表,效率很低。因此,通过引入索引表帮助快速获得经常查询并希望快速得到查询结果。索引表包括行键及列族。索引表的行键包括列值和其在hbase数据库中对应的行键值,索引表列簇为空。上述索引表的行键的列值可以是常被查询的查询字段及其在hbase数据库中对应的行键值。

在本发明实施例中,可以从获取的查询请求中所包括的待查询字段,依据待查询字段在索引表中进行查询,在索引表中行键中查询到对应的行键值时,从索引表中查询到的行键值中获取对应的查询字段在hbase数据库的数据表中对应的行键值,以便获取与查询请求中待查询字段对应的数据信息。

进一步地,为了应对经常用的多个待查询字段的查询请求时,进一步加快查询速度。根据所述查询请求结合所述索引表从所述hbase数据库查找与该查询请求对应的数据信息还可以是根据查询请求结合所述索引表、查询表,从所述hbase数据库查找与该查询请求对应的数据信息。

上述查询表的行键由至少两个查询字段及每个所述查询字段在所述hbase数据库中对应的行键值组成,所述查询表的列族为空。具体地,在所述查询请求对应的查询条件包括多个待查询字段时,从所述查询表对应的表名中查询是否存在与所述查询请求对应的多个待查询字段。当存在时,根据所述查询表的行键中与所述查询请求的多个待查询字段对应的行键值,获取对应的每个所述查询字段在所述hbase数据库中对应的行键值,以便从所述hbase数据库中获取对应的数据信息。若不存在时,则利用索引表依次查询与所述查询请求中每个待查询字段对应的数据信息。例如,当查询字段来自于不同的数据表时,查询表的行键中包括一行键值为“查询字段a、查询字段b|数据表行键值a、数据表行键值b”,该行键值表示查询字段a在hbase数据库的数据表中对应的行键值为数据表行键值a,查询字段b在hbase数据库的数据表中对应的行键值为数据表行键值b。当查询请求中的待查询字段包括查询字段a和查询字段b的组合时,根据查询请求中的待查询字段,在查询表中可以查到行键值“查询字段a、查询字段b|数据表行键值a、数据表行键值b”,再根据该行键值中的“数据表行键值a、数据表行键值b”分别从hbase数据库中获取对应的数据信息。

进一步地,在查询请求中包括查询条件时(例如,查询请求中包括查询字段a大于查询字段b),可以利用特殊查询表帮助提高查询速度。需要说明的是,当一个查询条件经常被用户使用时,可以将该查询条件对应的查询结果(即根据查询条件查找到的数据信息)与该查询结果在hbase数据库中对应行键值之间的对应关系作为特殊查询表的行键值,方便查找。也就是,特殊查询表的行键由查询结果及该查询结果在所述hbase数据库中对应的行键值组成,所述特殊查询表的列族为空。根据所述查询请求结合所述索引表从所述hbase数据库查找与该查询请求对应的数据信息还可以是根据查询请求结合所述索引表、特殊查询表,从所述hbase数据库查找与该查询请求对应的数据信息。可选地,可以是从特殊查询表的表名中查询是否存在与所述查询请求的查询条件对应的查询结果。当存在时,根据该查询结果在特殊查询表的行键中的行键值,获取该查询结果在所述hbase数据库中对应的行键值,以便从所述hbase数据库中获取对应的数据信息。减少i/o开销,提高查询性能。

上述索引表、查询表及特殊查询表均可以根据用户的需求提前设定,当然为了更灵活的适应用户需求的变化。上述数据查询方法还可以包括:统计接收到的所述查询请求,获取接收到所述查询条件相同的查询请求的数量。若具有相同的查询条件的所述查询请求的数量超过预设阈值时,根据所述查询请求对应的查询条件及依据该查询请求从所述hbase数据库中获得的所述行键值创建新的对应的索引表或查询表或特殊查询表。

步骤s203,将查找到的所述数据信息反馈给所述客户端。

在本实施例中,将查找到的数据信息发送至java客户端,java客户端向用户展示该数据信息。

本发明已经过实验。同一批数据分别使用雪花模型和高表(74列)存储,查询一个人的所有数据时,雪花模型和高表速度相似,分别为2.46s和2.53s。进行列值查询时,雪花模型明显比高表效率高,二者速度分别为16s和26.68s。使用索引表后,雪花模型的列值查询时间由16s减少为2.55s。进行不同业务中的两字段组合查询时,使用查询表前后雪花模型的查询时间分别为13.2s和0.26s。进行不同业务中的两字段列值比较查询时,使用特殊查询表前后雪花模型的查询速度分别为177.6s和18.56s,查询显示1000条记录。

第三实施例

图6示出了与上述数据存储方法相对应的一种数据存储装置200,下述装置中的细节方案可以参照第一实施例提供的数据存储方法来实现,数据存储装置200包括:

获取模块201,用于获取预先处理过的数据信息。

存储模块202,用于将所述数据信息导入hbase数据库对应的所述雪花模型的多个表格中。

压缩模块203,用于对导入所述hbase数据库的数据信息进行压缩,以实现数据存储。

图7示出了与上述数据查询方法相对应的一种数据查询装置300,下述装置中的细节方案可以参照第二实施例提供的数据查询方法来实现,该数据查询装置300包括:

接收模块301,用于接收到客户端发送的查询请求。

查找模块302,用于根据所述查询请求结合所述索引表从所述hbase数据库查找与该查询请求对应的数据信息。

反馈模块303,用于将查找到的所述数据信息反馈给所述客户端。

综上所述,本发明提供的一种数据存储方法、查询方法及相关装置,其应用于服务器,所述服务器包括一预先构建的雪花模型,所述数据存储方法包括:获取预先处理过的数据信息。将所述数据信息导入hbase数据库对应的所述雪花模型的多个表格中。对导入所述hbase数据库的数据信息进行压缩,以实现数据存储。也就是利用hbase数据库面向列的数据存储系统,横向扩展的特点,配合雪花模型进行数据存储。这样一方面能很好的适应数据急速增长对存储容量的需求。另一方面,在存储数据业务关系复杂的情况下,避免整个数据库扫描,提高对已存储数据的查找效率。再加上对导入所述hbase数据库的数据信息进行压缩,进一步地节约存储空间,以更好的应对海量的数据存储。

在本申请所提供的几个实施例中,应该理解到,所揭露的装置和方法,也可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,附图中的流程图和框图显示了根据本发明的多个实施例的装置、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现方式中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。

另外,在本发明各个实施例中的各功能模块可以集成在一起形成一个独立的部分,也可以是各个模块单独存在,也可以两个或两个以上模块集成形成一个独立的部分。

所述功能如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、磁碟或者光盘等各种可以存储程序代码的介质。

需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。

以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。

以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应所述以权利要求的保护范围为准。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1