CN115658680A - 数据存储方法、数据查询方法和相关装置 - Google Patents
数据存储方法、数据查询方法和相关装置 Download PDFInfo
- Publication number
- CN115658680A CN115658680A CN202211120270.7A CN202211120270A CN115658680A CN 115658680 A CN115658680 A CN 115658680A CN 202211120270 A CN202211120270 A CN 202211120270A CN 115658680 A CN115658680 A CN 115658680A
- Authority
- CN
- China
- Prior art keywords
- data
- file
- data table
- metadata
- query
- 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
Images
Abstract
本申请公开一种数据存储方法、数据查询方法和相关装置。该方法包括:获取待存储的第一数据表,第一数据表包括多行数据中的任意一行数据记录第一数据表包括的多个列字段的值;根据预设分区信息,将第一数据表包括的多行数据分别存储至第一存储系统包括的多个数据文件,预设分区信息为多个列字段中的至少一个列字段,第一数据表包括的多行数据与多个数据文件一一对应;按照行存储方式,将多个数据文件的多个元数据存储至第二存储系统包括的第二数据表,第二数据表包括的多行数据与多个元数据一一对应,多个数据文件中的任意一个数据文件的元数据包括指示任意一个数据文件所存储的第一数据表包括的行数据的数据。该方法可以提高数据查询效率。
Description
技术领域
本申请涉及计算机数据存储领域,具体涉及一种数据存储方法、数据查询方法和相关装置。
背景技术
在大数据场景下,数据量成指数式增长,如何快速从海量数据中发现数据的价值是大数据分析的一个重要分支,因此在线分析处理(on-line analytical processing,OLAP)成为了一个重要的研究领域。OLAP是一种针对多维数据分析查询的解决方案,它使分析人员能够一致、交互地从各个方面观察信息,以达到深入理解数据的目的。
传统OLAP中,计算引擎接收到客户端发送的查询指令后,计算引擎对查询指令进行解析获得查询指令包括的元数据信息(例如,元数据信息包括表信息、分区表、以及物理存储表),然后根据元数据信息查找元数据信息对应的数据。其中,元数据信息通过HiveMetastore服务存储。Hive Metastore服务存储元数据信息时,其底层数据持久化存储是通过多表关联方式,也就是说,基于这种存储方式,获取查询指令包括的元数据信息时需要对多表进行关联查询,这种方式存在数据查询效率低的问题。
因此,亟需一种数据存储方法、数据查询方法,以提高数据查询效率。
发明内容
本申请提供一种数据存储方法、数据查询方法和相关装置,该方法可以提高数据查询效率。
本申请实施例第一方面提供了一种数据存储方法,包括:获取待存储的第一数据表,其中,所述第一数据表包括的多行数据中的任意一行数据记录所述第一数据表包括的多个列字段的值;根据预设分区信息,将所述第一数据表包括的多行数据分别存储至第一存储系统包括的多个数据文件,其中,所述预设分区信息为所述多个列字段中的至少一个列字段,所述第一数据表包括的多行数据与所述多个数据文件一一对应;按照行存储方式,将所述多个数据文件的多个元数据存储至第二存储系统包括的第二数据表,其中,所述第二数据表包括的多行数据与所述多个元数据一一对应,所述第二数据表包括的多行数据中的任意一行数据为对应的元数据,所述多个数据文件中的任意一个数据文件的元数据包括指示所述任意一个数据文件所存储的所述第一数据表包括的行数据的数据。
本申请实施例第二方面提供了一种数据查询方法,包括:接收来自客户端的查询指令,其中,所述查询指令包括待查询事件所关联的第一文件的文件特征;根据所述第一文件的文件特征和第二存储系统包括的第二数据表,确定第一存储系统包括的多个数据文件中的第二数据文件的元数据包括所述第一文件的文件特征;从所述第一存储系统包括的目标存储位置中读取所述第二数据文件所包括的数据,其中,所述第二数据文件的元数据包括的所述目标存储位置;向所述客户端发送查询响应消息,其中,所述查询响应消息所携带的事件内容是根据读取到的所述第二数据文件包括的数据确定的;其中,第一数据表包括的多行数据存储于所述第一存储系统包括的多个数据文件,所述第一数据表包括的多行数据中的任意一行数据记录所述第一数据表包括的多个列字段的值,所述多个数据文件的多个元数据存储于所述第二存储系统包括的第二数据表。
本申请实施例第三方面提供了一种数据存储装置,包括:收发单元,用于获取待存储的第一数据表,其中,所述第一数据表包括的多行数据中的任意一行数据记录所述第一数据表包括的多个列字段的值;处理单元用于:根据预设分区信息,将所述第一数据表包括的多行数据分别存储至第一存储系统包括的多个数据文件,其中,所述预设分区信息为所述多个列字段中的至少一个列字段,所述第一数据表包括的多行数据与所述多个数据文件一一对应;所述处理单元还用于:按照行存储方式,将所述多个数据文件的多个元数据存储至第二存储系统包括的第二数据表,其中,所述第二数据表包括的多行数据与所述多个元数据一一对应,所述第二数据表包括的多行数据中的任意一行数据为对应的元数据,所述多个数据文件中的任意一个数据文件的元数据包括指示所述任意一个数据文件所存储的所述第一数据表包括的行数据的数据。
本申请实施例第四方面提供了一种数据查询装置,包括:所述收发单元,用于接收来自客户端的查询指令,其中,所述查询指令包括待查询事件所关联的第一文件的文件特征;所述处理单元用于:包括的多个数据文件中的第二数据文件的元数据包括所述第一文件的文件特征;所述处理单元还用于:从所述第一存储系统包括的目标存储位置中读取所述第二数据文件,其中,所述第二数据文件的元数据包括所述目标存储位置;所述收发单元还用于:向所述客户端发送查询响应消息,其中,所述查询响应消息所携带的事件内容是根据述第二数据文件确定的;其中,第一数据表包括的多行数据存储于所述第一存储系统包括的多个数据文件,所述第一数据表包括的多行数据中的任意一行数据记录所述第一数据表包括的多个列字段的值,所述多个数据文件的多个元数据存储于所述第二存储系统包括的第二数据表。
本申请实施例第五方面还提供一种数据存储设备,包括:处理器;以及存储器,用于存储数据存储程序,该数据存储设备通电并通过所述处理器运行该程序后,执行如上所述的数据存储方法。
本申请实施例第六方面还提供一种数据查询设备,包括:处理器;以及存储器,用于存储数据查询程序,该数据查询设备通电并通过所述处理器运行该程序后,执行如上所述的数据查询方法。
本申请实施例第七方面还提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机执行指令,所述计算机执行指令被处理器执行时用于实现上述任意一种技术方案所述的数据存储方法。
本申请实施例第八方面还提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机执行指令,所述计算机执行指令被处理器执行时用于实现上述任意一种技术方案所述的数据查询方法。
本申请实施例第九方面还提供了一种计算机程序产品,包括计算机程序,所述计算机程序被处理器执行时用于实现上述任意一种技术方案所述的数据存储方法。
本申请实施例第十方面还提供了一种计算机程序产品,包括计算机程序,所述计算机程序被处理器执行时用于实现上述任意一种技术方案所述的数据查询方法。
应当理解,本部分所描述的内容并非旨在标识本申请公开的实施例的关键或重要特征,也不用于限制本申请公开的范围。本申请公开的其它特征将通过以下的说明书而变得容易理解。
本申请实施例所提供的数据存储方法的技术方案,包括:获取待存储的第一数据表,其中,第一数据表包括的多行数据中的任意一行数据记录第一数据表包括的多个列字段的值;根据预设分区信息,将第一数据表包括的多行数据分别存储至第一存储系统包括的多个数据文件,其中,预设分区信息为多个列字段中的至少一个列字段,第一数据表包括的多行数据与多个数据文件一一对应;按照行存储方式,将多个数据文件的多个元数据存储至第二存储系统包括的第二数据表,其中,第二数据表包括的多行数据与多个元数据一一对应,第二数据表包括的多行数据中的任意一行数据为对应的元数据,多个数据文件中的任意一个数据文件的元数据包括指示任意一个数据文件所存储的第一数据表包括的行数据的数据。上述数据存储的方案中,根据预设分区信息将待存储的第一数据表包括的多行数据分别存储在第一存储系统包括的多个数据文件中,第一数据表包括的每行数据的元数据存储在第二存储系统包括的第二数据表中的一行数据中,这样,可以根据第二存储系统包括的第二数据表中的一行数据快速确定第一数据表中对应的行数据的元数据,进一步,根据查询到的元数据可以快速从第一存储系统中查询到元数据对应的数据,该方法可以提高数据查询效率。
附图说明
图1是用于本申请实施例提供的数据存储方法、数据查询方法的一种应用场景的示意图。
图2是本申请实施例提供的一种数据存储方法的示意图。
图3是本申请实施例提供的一种数据查询方法的示意图。
图4是本申请实施例提供的另一种数据存储方法的示意图。
图5是上述图4所提供的数据存储方法所涉及的文件存储的示意图。
图6是本申请实施例提供的另一种数据查询方法的示意图。
图7是本申请实施例提供的一种数据存储装置的结构示意图。
图8是本申请实施例提供的一种数据查询装置的结构示意图。
图9是本申请实施例提供的一种设备的结构示意图。
具体实施方式
为了使本领域的技术人员能够更好的理解本申请的技术方案,下面结合本申请实施例中的附图,对本申请进行清楚、完整地描述。但本申请能够以很多不同于上述描述的其他方式进行实施,因此,基于本申请提供的实施例,本领域普通技术人员在不经过创造性劳动的情况下,所获得的所有其他实施例,都应属于本申请保护的范围。
需要说明的是,本申请的权利要求书、说明书及附图中的术语“第一”、“第二”、“第三”等是用于区别类似的对象,并不用于描述特定的顺序或先后次序。这样使用的数据在适当情况下是可以互换的,以便于本文所描述的本申请的实施例,能够以除了在本文图示或描述的内容以外的顺序实施。此外,术语“包括”、“具有”以及他们的变形形式,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
在介绍本申请实施例之前,首先对本申请实施例中涉及的专业名词进行介绍。
为便于理解,首先对本申请实施例中可能涉及的技术术语进行简单介绍。
1,在线分析处理(on-line analytical processing,OLAP)
OLAP用于对数据进行分析。也就是说,OLAP使我们能够同时分析来自多个数据库系统的信息。换句话说,可以认为OLAP是一种计算方法,可以让用户轻松提取所需的数据并查询数据,以便从不同的角度进行分析。OLAP通常可以对从数据仓库中收集所需的数据并执行业务所需的分析,以在业务中做出一些决策,以提高利润、改善销售、改善品牌、改善营销等。因此,它在商业智能中用于趋势分析、销售预测、财务报告、计划目的、预算等方面的查询辅助。
2,Hadoop
Hadoop是一个由Apache基金会所开发的分布式系统基础架构。用户可以在不了解分布式底层细节的情况下,开发分布式程序。充分利用集群的威力进行高速运算和存储。Hadoop实现了一个分布式文件系统(distributed file system),其中一个组件是Hadoop分布式文件系统(hadoop distribute file system,HDFS)。HDFS有高容错性的特点,并且设计用来部署在低廉的硬件上;而且它提供高吞吐量(high throughput)来访问应用程序的数据,适合那些有着超大数据集(large data set)的应用程序。HDFS放宽了POSIX的要求,可以以流的形式访问(streaming access)文件系统中的数据。Hadoop的框架最核心的设计就是:HDFS和MapReduce。HDFS为海量的数据提供了存储,而MapReduce则为海量的数据提供了计算。
3,Hadoop分布式文件系统(hadoop distribute file system,HDFS)
HDFS是一个文件系统,用于存储文件。HDFS通过统一的命名空间——目录树来定位文件。HDFS是分布式的,由很多服务器联合起来实现其功能,集群中的服务器有各自的角色。HDFS中的文件在物理上是分块存储(block),块的大小可以通过配置参数来规定。HDFS文件系统会给客户端提供一个统一的抽象目录树,客户端通过路径来访问文件,形如:hdfs://namenode:port/dir-a/dir-b/dir-c/file.data。
4,数据仓库(data warehouse,DW或DWH)
数据仓库,是为企业所有级别的决策制定过程,提供所有类型数据支持的战略集合。它是单个数据存储,出于分析性报告和决策支持目的而创建。为需要业务智能的企业,提供指导业务流程改进、监视时间、成本、质量以及控制。
下面,结合附图对适用于本申请实施例的数据查询方法的应用场景、数据查询方法、数据查询装置和设备进行详细说明。可以理解的是,本申请提供的各实施例之间不冲突的情况下,下述的实施例及实施例中的特征可以相互组合。另外,下述各方法实施例中的步骤时序仅为一种举例,而非严格限定。
首先,结合附图介绍适用于本申请实施例的数据存储方法、数据查询方法的应用场景。
图1是适用于本申请实施例提供的数据存储方法、数据查询方法的一种应用场景的示意图。示例性的,图1示出的应用场景包括:用户、客户端110、计算引擎120、元数据存储系统130和分布式文件系统140。可选的,该应用场景还可以包括更多数目的用户、客户端或计算引擎等。客户端110、元数据存储系统130或分布式文件系统140中的任意一个系统与计算引擎120之间可以通过有线方式连接,也可以通过无线方式(例如,蓝牙(bluetooth)或无线通信技术(WIFI))连接,本申请对此不作具体限定。
客户端110,安装和运行有应用程序。用户通过客户端110上安装的应用程序,可以将用户的查询需求(例如,以查询指令的形式)发送给计算引擎120。具体实现时,客户端110中运行的应用程序可以向用户提供图形界面(graphical user interface,GUI),用户通过在GUI中输入查询指令,以实现将查询指令发送给计算引擎120的目的。本申请实施例中,对上述GUI不作具体限定。例如,上述图形界面可以为Hadoop用户管理界面(hadoop userexperience,HUE)。又如,上述图形界面可以为用户自己封装的交互式查询界面。对用户在上述图形界面输入的查询指令的查询语言不作具体限定。例如,若所述查询指令所请求查询的数据在数据库中进行存储,则所述查询指令的查询语言可以为结构化查询语言(structured query language,SQL)。对查询指令所查询的内容也不作具体限定,具体可以根据用户的查询需求确定查询指令所查询的内容。例如,查询指令用于查询客户端110中运行的某个应用程序在某天的日志信息。又如,查询指令用于查询客户端110中运行的电商应用程序在某一天的总交易额。可选的,客户端110通过与分布式文件系统149交互,将客户端110生成的业务数据写入分布式文件系统140中。
元数据存储系统130,用于以目录形式存储表(table)的元数据信息。也就是说,表的元数据信息存储在目录所指示的表或文本文件中。其中,表的元数据信息包括:表的基本信息(例如,表的属性(是否为外部表等)、表的名称、表的字段(即,表的列)、表的分区、表的创建时间和表结构等)、表的分区信息、或表中记录的业务数据位于分布式文件系统140中的物理存储信息(例如,文件存储格式或序列化信息等)。例如,文件目录可以为:hdfs://namenode:port/dir-a/dir-b/dir-c/file.data。对元数据存储系统130不作具体限定。例如,元数据存储系统130可以但不限于是内嵌式存储系统(embedded storage,ES)。
分布式文件系统140,用于以文件形式存储业务数据。也就是说,业务数据存储在分布式文件系统140包括的文件中。其中,该业务数据对应的元数据信息存储在元数据存储系统130中。分布式文件系统包括多个存储节点,每个存储节点可以用于存储数据。具体来说,可以根据分布式文件系统包括的每个存储节点的单位存储容量将业务数据划分为多个子数据,并将该多个子数据分别存储至分布式文件系统包括的多个存储节点中,多个子数据与多个存储节点一一对应。对所述分布式文件系统不作具体限定。在一些可能的实现方式中,所述分布式文件系统为HDFS。这种实现方式中,业务数据按照HDFS方式在分布式文件系统140中进行存储。
计算引擎120,具有读取、计算和分析的能力。计算引擎120可以对客户端110发送的查询指令进行解析,并根据解析结果生成至少一个查询任务;计算引擎120根据所述至少一个查询任务和元数据存储系统130中存储的元数据信息,确定所述至少一个查询任务所关联的业务数据位于分布式文件系统140中的存储路径;计算引擎120根据确定的存储路径从分布式文件系统140中读取所述存储路径对应的数据;计算引擎120根据查询指令对读取到的数据执行相应的操作,获得查询指令对应的查询结果;计算引擎120将查询结果发送给客户端110。对计算引擎120的类型不作具体限定,例如,计算引擎120可以但不限于是以下任意一种引擎:Trino引擎、Presto引擎、或者Impala引擎。
在本申请实施例中,对计算引擎120和元数据存储系统130是否部署在同一设备中不作具体限定。例如,计算引擎120和元数据存储系统130可以部署在一个设备中。又如,计算引擎120和元数据存储系统130可以分别部署在不同的两个设备中。
应理解,上述图1示出的应用场景仅为示意,并不对本申请实施例提供的数据存储方法、数据查询方法的适用的应用场景构成任何限定。例如,上述图1示出的应用场景还可以包括更多数目(例如,2个或2个以上)的计算引擎。
在上述图1示出的应用场景中,数据量持续增长,对海量数据进行分析有迫切需求。现有的数据分析系统,例如OLAP是一种针对多维数据分析查询的解决方案,OLAP使分析人员能够一致、交互地从各个方面观察信息,以达到深入理解数据的目的。
传统OLAP中,计算引擎120接收到客户端120发送的查询指令后,对查询指令进行解析获得元数据信息,如元数据信息包括元数据存储系统130中存储的表信息(包括表的字段)、分区表(用于指示表信息的分区信息)和物理存储表(用于指示表信息所关联的业务数据的物理存储路径),然后对上述多个表进行联合(join)查询,以确定查询指令关联的业务数据位于分布式文件系统140中的存储路径。其中,表信息、分区表和物理存储表中的任意一个表满足传统数据库设计的三范式要求,元数据存储系统130中用3个表分别存储表信息、分区表和物理存储表。接下来,计算引擎120根据确定的存储路径从分布式文件系统140中读取业务数据,并根据读取到的业务数据执行查询指令所查询的相关操作。上述实现方式中,计算引擎120需要先获取多张表(例如,表信息、分区表和物理存储表),并对多张表进行联合查询才能获得查询指令关联的数据位于分布式文件系统140中的存储路径,上述查询方式效率低,不适用于对海量数据进行在线分析的场景。此外,上述元数据存储系统130中一个文件夹对应所述表信息的一个分区。具体来说,元数据存储系统130中存储的一个文件夹包括的多个文件为所述表信息包括的一个分区的数据,这种实现方式中,使得计算引擎120根据查询指令确定的存储路径指示了分布式文件系统140中的多个文件,计算引擎120需要对该多个文件进行扫描,才能获得查询指令所对应的目标文件,这种实现方式中,根据查询指令实现谓词下推时,分区裁剪的粒度太粗,进一步导致查询效率低。
为了解决上述存在的问题,本申请提供一种数据存储方法、数据查询方法和相关装置。接下来,结合附图对本申请实施例提供的数据存储方法、数据查询方法进行详细说明。
图2是本申请实施例提供的一种数据存储方法的示意图。示例性的,图2所提供的数据存储方法可以应用于上述图1示出的应用场景,这种实现方式中,图1示出的分布式文件系统140包括的控制节点141可以作为执行图2所描述的数据存储方法的执行主体。如图2所示,本申请实施例提供的数据存储方法包括S210至S230。下面,对S210至S230进行详细介绍。
S210,获取待存储的第一数据表,其中,第一数据表包括的多行数据中的任意一行数据记录第一数据表包括的多个列字段的值。
对第一数据表的来源不作具体限定。例如,可以从客户端获取的待存储的第一数据表。又如,可以从网络中的服务端中获取的待存储的第一数据表。对第一数据表包括多个列字段,多个列字段中的任意两个列字段不同。其中,对第一数据表包括的多个列字段不作具体限定。示例性的,下文中的表2.1示出了适用于本申请实施例的第一数据表的一个具体示例。
表2.1
入学年份 | 学号 | 姓名 | 年级 |
2012.09.01 | 001 | 小赵 | 大二 |
2012.09.01 | 002 | 小王 | 大二 |
2013.09.01 | 003 | 小王 | 大一 |
其中,上述表2.1包括4个不同的列字段,这4个不同的列字段分别记为:“入学年份”、“学号”、“姓名”和“年级”,上述表2.1包括3行数据。以上述表2.1包括的第一行数据为例,第一行数据对应的“入学年份”列字段的值为“2012.09.01”;第一行数据对应的“学号”列字段的值为“001”;第一行数据对应的“姓名”列字段的值为“小赵”;第一行数据对应的“年级”列字段的值为“大二”。
对获取待存储的第一数据表的实现方式中不作具体限定。在一些实现方式中,获取待存储的第一数据表,包括:接收文本文件,其中,文本文件包括的文本数据用于指示第一数据表;从文本文件中获取第一数据表。这种实现方式中,第一数据表是根据文本文件中记录的数据确定的。在另一些实现方式中,获取待存储的第一数据表,包括:接收图像,其中,图像用于指示第一数据表;对图像进行识别,并从图像中获得第一数据表。可选的,在又一些实现方式中,获取待存储的第一数据表,包括:接收来自客户端的第一数据表。
S220,根据预设分区信息,将第一数据表包括的多行数据分别存储至第一存储系统包括的多个数据文件,其中,预设分区信息为多个列字段中的至少一个列字段,第一数据表包括的多行数据与多个数据文件一一对应。
预设分区信息为多个列字段中的至少一个列字段,也就是说,预设分区信息是根据第一数据表包括的多个列字段中的至少一个列字段确定的。例如,继续以上述表2.1为第一数据表为例,当所述至少一个列字段为“入学年份”字段,则所述预设分区信息可以为入学年份。又如,继续以上述表2.1为第一数据表为例,当所述至少一个列字段包括“入学年份”字段和“学号”字段,则所述预设分区信息包括入学年份和学号。
上述S220中,第一数据表包括的多行数据与多个数据文件一一对应,也就是说,多个数据文件中的任意一个数据文件用于存储对应的行数据。
可选的,在另一些实现方式中,第一数据表中记录的多行数据中的任意两行数据对应的至少一个列字段的值不同。示例性的,继续以上述表2.1为例,这种实现方式中,预设分区信息为多个列字段中的至少一个列字段,该至少一个列字段可以是上述表2.1中的“学号”字段。这种元数据存储方式的存储粒度更细,基于这种细粒度的元数据存储方式,可以进一步提高数据查询的效率。
可选的,在另一些实现方式中,多个数据文件中的任意两个数据文件的文件特征不同,多个数据文件中的任意一个数据文件的文件特征是根据任意一个数据文件中记录的第一数据表包括的行数据确定的。其中,第一存储系统包括的多个数据文件与第一数据表包括的多行数据一一对应。这种实现方式中,将不同行数据存储至不同数据文件。可以理解的是,这种实现方式中,第一数据表包括的每行数据的数据量不大于数据文件能够存储的数据量。可选的,在另一些实现方式中,当第一数据表包括的一行数据的数据量大于一个数据文件的数据量时,这种实现方式中,可以将该一行数据存储至两个数据文件,此时这两个数据文件的文件特征也不同。这种实现方式中,还可以执行以下步骤:根据预设特征提取算法,对任意一个数据文件中记录的第一数据表包括的行数据进行特征提取,获取任意一个数据文件的文件特征。本申请实施例中,对数据文件的文件特征不作具体限定。例如,数据文件的文件特征可以包括该数据文件中存储的数据的存储方式(例如,路由存储、倒排索引、或索引范围等)、该数据文件中存储的数据的类型(例如,结构化数据或非结构化数据)。
S230,按照行存储方式,将多个数据文件的多个元数据存储至第二存储系统包括的第二数据表,其中,第二数据表包括的多行数据与多个元数据一一对应,第二数据表包括的多行数据中的任意一行数据为对应的元数据,多个数据文件中的任意一个数据文件的元数据包括指示任意一个数据文件所存储的第一数据表包括的行数据的数据。
上述S230中,按照行存储方式,将多个数据文件的多个元数据存储至第二存储系统包括的第二数据表。也就是说,第二数据表中的一行数据用于记录多个数据文件中的一个数据文件的元数据。这种存储元数据的方式,可以理解为,是用空间换取时间的方式,有利于提高数据查询的效率。
可选的,在另一些实现方式中,任意一个数据文件的元数据至少包括以下数据:任意一个数据文件的文件特征、任意一个数据文件在第一存储系统中的存储位置、任意一个数据文件存储的第一数据表包括的行数据所关联的多个列字段,其中,任意一个数据文件的文件特征是根据任意一个数据文件中记录的第一数据表包括的行数据确定的。可选的,所述任意一个数据文件的元数据还可以包括所述任意一个数据文件中记录的数据的存储格式。示例性的,当所述多个数据文件包括2个数据文件时,这2个数据文件存储在第二存储系统包括的第二数据表中,且第二数据表包括的2行数据与这2个数据文件的2个元数据一一对应,表2.2示出了这种实现方式中,第二数据表的一种具体示例。
表2.2
对上述S230中第二数据表在第二存储系统中的存储形式不作具体限定。例如,第二数据表包括的多行数据可以存储在第二存储系统包括的一个文件中。又如,第二数据表包括的多行数据可以存储在第二存储系统包括的2个文件中,一个文件存储第二数据表包括的部分行数据,另一个文件存储第二数据表包括的除去该部分行数据之外的剩余行数据。
可选的,在一些实现方式中,第一存储系统为Hadoop分布式文件系统HDFS,第二存储系统为内嵌式存储系统ES。示例性的,HDFS可以为图1示出的分布式文件系统140,ES可以为图1示出的元数据存储系统130。
需说明的是,本申请实施例提供的数据存储方法,与传统技术中hive metastore组织的元数据的方式兼容。
应理解,上述图2示出的数据存储方法仅为示意,并不对本申请实施例提供的数据存储方法构成任何限定。
在本申请实施例中,根据预设分区信息将待存储的第一数据表包括的多行数据分别存储在第一存储系统包括的多个数据文件中,第一数据表包括的每行数据的元数据存储在第二存储系统包括的第二数据表中的一行数据中,这样,可以根据第二存储系统包括的第二数据表中的一行数据快速确定第一数据表中对应的一行数据的元数据,进一步,根据查询到的元数据可以快速从第一存储系统中查询到元数据对应的数据,该方法可以提高数据查询效率。当上述数据存储方法应用于OLAP场景时,在OLAP场景中,历史数据是一次写入多次读取。也就是说,历史数据和元数据写入后就不会在变化。因此,上述数据存储方法以文件形式来组织业务数据以满足谓词快速对业务数据的裁剪,进一步可以提高数据查询的效率。
图3是本申请实施例提供的一种数据查询方法的示意图。可以理解的是,图3示出的数据查询方法中所描述的第一数据表包括的多行数据根据本申请实施例提供的数据存储方法存储于所述第一存储系统包括的多个数据文件,所述第一数据表包括的多行数据中的任意一行数据记录所述第一数据表包括的多个列字段的值,所述多个数据文件的多个元数据根据本申请实施例提供的数据存储方法存储于所述第二存储系统包括的第二数据表。示例性的,本申请实施例提供的数据查询方法可以应用于上述图1示出的应用场景,这种实现方式中,图1示出的计算引擎120可以作为执行图3所描述的数据查询方法的执行主体。如图3所示,本申请实施例提供的数据查询方法包括S310至S340。下面,对S310至S340进行详细介绍。
S310,接收来自客户端的查询指令,其中,查询指令包括待查询事件所关联的第一文件的文件特征。
第一文件的文件特征可以但不限于包括第一文件的数据存储格式、第一文件的索引范围。例如,数据存储格式可以为倒排索引或路由索引。
对触发客户端发送查询指令的条件不作具体限定。例如,可以是用户通过客户端提供的交互界面,向该交互界面输入待查询事件。此后,客户端发送待查询事件的查询指令。相应的,当计算引擎执行数据查询方法时,计算引擎可以接受来自客户端的查询指令。对计算引擎的类型不作具体限定。例如,用户通过Hue向客户端输入查询指令。例如,计算引擎可以是Trino引擎。
S320,根据第一文件的文件特征和第二存储系统包括的第二数据表,确定第一存储系统包括的多个数据文件中的第二数据文件的元数据包括第一文件的文件特征。
其中,多个数据文件根据上述图2所描述的数据存储方法存储于所述第一存储系统包括的多个数据文件,所述多个数据文件的多个元数据根据上述图2所描述的数据存储方法存储至所述第二存储系统包括的第二数据表。此处未详细赘述的内容可以参见上文对图2的描述。
S330,从第一存储系统包括的目标存储位置中读取第二数据文件,其中,第二数据文件的元数据包括目标存储位置。
其中,从第一存储系统包括的目标存储位置中读取第二数据文件,即从第一存储系统包括的目标存储位置中读取第二数据文件所包括的业务数据。对读取的方式不作具体限定。实际应用中,可以根据业务数据在第二数据文件中的存储方式确定上述S330的读取方式。例如,当业务数据在第二数据文件中是以倒排索引的方式存储的,相应的,执行上述S330可以采用对应的索引读取方式读取第二数据文件所包括的业务数据。
S340,向客户端发送查询响应消息,其中,查询响应消息所携带的事件内容是根据第二数据文件确定的。
实际应用中,可以根据用户需求确定查询指令所携带的具体内容。下面,结合不同应用场景,详细介绍本申请实施例提供的查询响应消息。
场景一:
场景一中,用户需要查询某些具体的业务数据。这种场景一中,上述S340中的查询响应消息所携带的事件内容包括第二数据文件包括的业务数据。可以理解的是,这种实现方式中,计算引擎查询到数据后没有对查询到的数据进行数据分析,即计算引擎将查询到的数据直接发送给客户端。
在一些实现方式中,第二数据文件存储第一数据表包括的多行数据中的目标行数据,查询响应消息所携带的事件内容包括目标行数据。可以理解的是,这种实现方式中,查询指令所查询的内容为第一数据表包括的目标行数据。
场景二:
场景二中,用户需要查询对某些具体的业务数据的分析结果。这种场景二中,上述S340中的查询指令还可以包括对第一文件的文件特征所关联的数据进行数据分析的方式。可以理解的是,与上述场景一所描述的实现方式相比,场景二所描述的这种实现方式中,计算引擎查询到数据后会对查询到的数据进行数据分析,然后将数据分析结果发送给客户端。
在一些实现方式中,第二数据文件存储第一数据表包括的多行数据中的目标行数据,在向客户端发送查询响应消息之前,还可以执行以下步骤:根据查询指令所包括的数据分析的方式对目标行数据进行分析,获得数据分析结果,其中,查询响应消息所携带的事件内容包括数据分析结果。
应理解,上述图3示出的数据查询方法仅为示意,并不对本申请实施例提供的数据查询方法构成任何限定。上述图3示出的数据查询方法以利用一个计算引擎进行数据查询为例进行描述。可选的,在另一些实现方式中,还可以利用多个计算引擎执行上述S310至S340所描述的数据查询方法。
在本申请实施例中,计算引擎根据查询指令和第二存储系统存储的第二数据表包括的行数据,可以快速确定查询指令包括的待查询事件所关联的业务数据的元数据。此后,可以根据该元数据可以快速确定待查询事件所关联的业务数据在第一存储系统中的存储位置,进一步,从该存储位置获取待查询事件所关联的业务数据,该方法可以提高数据查询效率。上述方式避免了传统技术中计算引擎需要联合多个表进行查询的方式,该方法还可以减少计算引擎侧的数据访问。
下面,结合图4介绍本申请提供的另一种数据存储方法。可以理解的是,图4所述描述的数据存储方法为上述图2所描述的数据存储方法的一个具体示例。具体来说,上述图2所描述的多个数据文件为图4所描述的文件#i(i=A、B、C),上述图2所描述的第一数据表为图4所描述的数据表1,上述图2所描述的第一存储系统为图4所描述的分布式文件系统140,上述图2所描述的第二存储系统为图4所描述的元数据存储系统130,上述图2所描述的第二数据表包括的多行数据为图4所描述的文件i(i=A、B、C)包括的数据。
图4是本申请实施例提供的另一种数据存储方法的示意图。应理解,图4的例子仅仅是为了帮助本领域技术人员理解本申请实施例,而非要将申请实施例限制于所示例的具体数值或具体场景。本领域技术人员根据下面所给出的图4的例子,显然可以进行各种等价的修改或变化,这样的修改和变化也落入本申请实施例的范围内。可以理解的是,图4示出的数据存储方法应用于上述图1示出的应用场景。如图4所示,该方法包括S401至S405。下面,对S401至S405进行详细介绍。
S401,控制节点141从客户端110处获取业务数据1的数据表1。
其中,数据表1是一个二维数据表,数据表1又称为结构化数据。在本申请实施例中,数据表1可以如表4.1所示。
表4.1
入学年份 | 学号 | 姓名 | 年级 | 课程号 | 成绩 |
2012.09.01 | 001 | 小赵 | 大二 | 1012 | 90 |
2012.09.01 | 002 | 小王 | 大二 | 1012 | 84 |
2013.09.01 | 003 | 小王 | 大一 | 1022 | 80 |
上述表4.1示出的数据表1包括以下字段:“入学年份”、“学号”、“姓名”、“年级”、“课程号”和“成绩”。
业务数据1的数据表1可以是客户端110生成的数据。这种实现方式中,控制节点141获取业务数据,包括:控制节点141从客户端110处获取业务数据。可选的,业务数据还可以是网络中的其他服务器生成的数据。这种实现方式中,控制节点141获取业务数据,包括:控制节点141从网络中的其他服务器处获取业务数据。
S402,控制节点141根据预设分区信息对数据表1进行分区,获得数据表1对应的多个分区。
其中,预设分区信息可以为数据表1中的学号字段。这种实现方式中,控制节点141根据入学年份和学号对数据表1进行分区,获得数据表1对应的多个分区,包括:控制节点141根据入学年份对数据表1进行分区,获得数据表1对应的分区A、分区B和分区C。示例性的,图5中的(1)示出了这种实现方式中对数据表1进行分区获得2个不同分区的分区结果的示意图。
S403,控制节点141将数据表1对应的多个分区所关联的数据写入分布式文件系统140包括的数据节点所包括的文件i中,i=A、B、C,且多个分区中的一个分区与文件i中的一个文件一一对应。
在本申请实施例中,数据表1对应的多个分区所关联的数据以文件的形式存储在数据节点包括的存储单元中。下面,继续以上S402中图5中的(1)示出的分区示例为例,介绍控制节点141执行上述S403的方法。
上述S402中,对数据表1按照上述图5中的(1)示出的分区方式进行分区。这种实现方式中,控制节点141将数据表1对应的多个分区所关联的数据写入分布式文件系统140包括的数据节点所包括的文件中,包括:控制节点141将分区A所关联的数据存储至数据节点10包括的存储单元11中的文件A中;控制节点141将分区B所关联的数据存储至数据节点20包括的存储单元21中的文件B中;以及,控制节点141将分区C所关联的数据存储至数据节点30包括的存储单元23中的文件C中。示例性的,图5中的(2)示出了这种实现方式中,文件A、文件B和文件C在分布式文件系统140中存储的示意图。具体来说,文件A包括以下内容:“2012.09.01,001,小赵,大二,1012,90”;文件B包括以下内容:“2012.09.01,002,小王,大二,1012,95”;文件C包括以下内容:“2013.09.01,003,小王,大一,1022,85”。
S404,控制节点141对分布式文件系统140包括的数据节点所包括的文件i进行特征提取,获得文件i的特征信息。
在本申请实施例中,分布式文件系统140包括的数据节点所包括的文件中存储的数据是结构化的数据。所述结构化数据是由二维表结构来逻辑表达和实现的数据,其严格地遵循数据格式与长度规范。结构化数据中可以包括字符串字段和数值字段。例如,以上述表4.1举例,字符串字段为“小赵”,数值字段为“1012”。基于此,执行上述S404,即对分布式文件系统140包括的数据节点所包括的文件进行特征提取,获得文件的特征信息,可以包括以下步骤:对文件i包括的字符串字段进行哈希计算,获得文件i包括的字符串字段的哈希值,i=A、B、C;根据文件i,确定文件i包括的数值字段中的最大数值字段和最小数值字段。其中,文件i的特征信息包括:文件i包括的字符串字段的哈希值、文件i包括的数值字段中的最大数值字段和最小数值字段。示例性的,以上述表4.1示出的数据按照上述图5中的(2)进行文件封装为例,文件A包括的字符字段的哈希值包括:“小赵”的哈希值、以及“大二”的哈希值,文件A包括的数值字段中最大数值字段可以为“1012”,文件A包括的数值字段中最小数值字段可以为“001”。
S405,控制节点141将文件i的分区信息、文件i的信息、文件i的物理存储地址写入至元数据存储系统130包括的文件#i中。
文件#i与文件i一一对应。也就是说,文件#i用于存储文件i的分区信息、文件i的信息、文件i的物理存储地址。
文件i的分区信息包括分区字段、分区对应的索引方式(例如,普通字段索引或倒排索引等)、分区是否有效。文件i的信息包括文件i包括的数据所对应的数据表1中的字段。文件i的物理存储地址为文件i位于分布式文件系统140中的存储位置。例如,文件A的物理地址为分布式文件系统140包括的数据节点10包括的存储单元11的地址。
其中,控制节点141将文件i的分区信息、文件i的信息、文件i的物理存储地址写入至元数据存储系统130包括的文件#i中,包括:控制节点141将文件i的分区信息、文件i的信息、文件i的物理存储地址按照行存储写入至元数据存储系统130包括的文件#i中。
示例性的,文件#i的一行数据可以存储以下内容:
col_name:数据表1;
partition_col_name:数据表1的分区A的字段;
detailed_information:数据表1的信息,数据表1的信息包括数据表1的字段;
storage_information:分区A的数据的物理存储地址信息;
partiton_state:标记分区A是否有效;
index_message:标记分区A的索引实现方式。
其中,文件i的特征信息可以存储在index_message字段。
上述S405中,将业务数据所关联的数据表1的字段、分区信息和物理存储地址均封装在同一个文件中,这种元数据存储方法摈弃hive metastore的三范式的存储方式,避免联合分区表和数据表进行联合查询,有利于提高数据查询的效率。
应理解的是,上述图4所描述的方法仅为示例,并不对本申请实施例提供的数据存储方法构成任何限定。
下面,结合图6介绍本申请提供的另一种数据查询方法。可以理解的是,图6所述描述的数据查询方法为上述图3所描述的数据查询方法的一个具体示例。具体来说,上述图3所描述的多个数据文件为图6所描述的文件#i(i=A、B、C),上述图3所描述的第一存储系统为图6所描述的分布式文件系统140,上述图3所描述的第二存储系统为图6所描述的元数据存储系统130,上述图2所描述的第二数据表包括的多行数据为图4所描述的文件i(i=A、B、C)包括的数据。
图6是本申请实施例提供的一种数据查询方法的示意图。应理解,图6的例子仅仅是为了帮助本领域技术人员理解本申请实施例,而非要将申请实施例限制于所示例的具体数值或具体场景。本领域技术人员根据下面所给出的图6的例子,显然可以进行各种等价的修改或变化,这样的修改和变化也落入本申请实施例的范围内。可以理解的是,图6示出的数据查询方法应用于上述图1示出的应用场景。如图6所示,该方法包括S601至S606。下面,详细介绍S601至S606。
S601,用户通过客户端110向计算引擎120发送查询指令。相应的,计算引擎120接收来自客户端110的查询指令。
查询指令用于查询数据表1中记录的学号为001的学生的成绩是否及格。其中,查询指令可以包括文件特征K,文件特征K用于指示存储查询指令所查询的学号为001的学生的成绩的文件特征。文件特征K可以包括以下一种或多种特征:数据存储的格式、索引方式、或者索引范围。示例性的,以上文中的表4.1为例,当课程号1012对应的满分成绩为100分时,若学生的成绩大于等于60分,则认为该学生的成绩及格;若学生的成绩小于60分,则认为该学生的成绩不及格。
其中,用户通过客户端110向计算引擎120发送查询指令,包括:用户通过Hue向客户端110输入查询指令,以使客户端110向计算引擎120发送查询指令。
S602,计算引擎120对查询指令进行解析,生成查询任务。
其中,计算引擎120对查询指令进行解析,生成查询任务,包括:计算引擎120对查询指令进行解析,获得查询指令包括的文件特征K;计算引擎120根据文件特征K,生成查询任务,其中,查询任务用于查询包括文件特征K的文件。S603,计算引擎120根据查询任务和元数据存储系统130中存储的文件#i,确定文件特征K与文件#A包括的文件A的文件特征相匹配,i=A、B、C。文件#i包括的行数据存储文件i的元数据,i=A、B、C。具体来说,文件#i包括的行数据可以存储以下内容:文件i的特征、文件i的字段、以及文件i的物理存储位置,i=A、B、C。示例性的,文件A、文件B和文件C的物理存储位置参见图6中的(2)所示,此处不再详细赘述。文件A、文件B和文件C包括的内容参见上述S403中的描述,或参见图6中的(1)所示,此处不再详细赘述。上述S603中,文件特征K与文件#A的文件特征相匹配,也就是说,文件#A包括的行数据中记录的元数据所描述的业务数据为查询任务所查询的业务数据(即,学号为001的学生的成绩)。
在执行上述S603之前,还可以执行以下步骤:从元数据存储系统130获取文件#i,i=A、B、C,其中,文件#i是根据预设分区信息进行存储的,即文件#i与预设分区信息关联。其中,预设分区信息为“学号”字段。
S604,计算引擎120根据文件#A包括的文件A的物理存储地址,从分布式文件系统140包括对应的存储地址中获得查询任务所查询的数据。
其中,文件#A包括的行数据中记录的文件A的物理存储地址为分布式文件系统140包括的数据节点10包括的存储单元11的地址。这种实现方式中,计算引擎120根据文件#A包括的行数据中记录的文件A的物理存储地址,从分布式文件系统140包括对应的存储地址中获得查询任务所查询的数据,包括:计算引擎120从数据节点10包括的存储单元11的地址中获得查询任务所查询的数据。
S605,计算引擎120根据查询指令所指示的查询目标和查询任务所关联的数据,生成查询指令对应的查询结果。
其中,计算引擎120根据查询指令所指示的查询目标和查询任务所关联的数据,生成查询指令对应的查询结果,包括:计算引擎120通过比较预设合格成绩和查询任务所关联的数据,确定查询任务所关联的数据与预设合格成绩的大小关系;计算引擎120根据所述大小关系,生成查询指令对应的查询结果;其中,当大小关系表示查询任务所关联的数据大于等于预设合格成绩时,查询指令对应的查询结果为合格;或者,当大小关系表示查询任务所关联的数据小于预设合格成绩时,查询指令对应的查询结果为不合格。示例性的,当预设合格成绩为60分时,查询任务所关联的数据为90,这种实现方式中,查询指令对应的查询结果为合格。
S606,计算引擎120向客户端110发送查询指令对应的查询结果。相应的,客户端110接收来自计算引擎120的查询指令对应的查询结果。
应理解,上述图6示出的数据查询方法仅为示意,并不对本申请实施例提供的数据查询方法构成任何限定。可选的,在一些实现方式中,上述文件#i还可以替换为数据表2,相应的,数据表2包括的多行数据中的第一行数据可以存储文件#A存储的元数据,数据表2包括的多行数据中的第二行数据可以存储文件#B存储的元数据,数据表2包括的多行数据中的第三行数据可以存储文件#C存储的元数据。
上文,结合图1至图6详细介绍了本申请提供的数据存储方法、数据查询方法适用的应用场景、数据存储方法和数据查询方法。下面,结合图7至图9介绍本申请提供的数据存储装置、数据查询装置和相关设备。应理解,上文中数据存储方法与下文中的数据存储装置、数据存储设备相对应。上文中的数据查询方法与下文中的数据查询装置、数据查询设备相对应。下文中未详细描述的内容可以参见上述方法实施例中的相关描述。
图7是本申请实施例提供的一种数据存储装置的结构示意图。如图7所示,该装置包括收发单元701和处理单元702,
收发单元701,用于获取待存储的第一数据表,其中,所述第一数据表包括的多行数据中的任意一行数据记录所述第一数据表包括的多个列字段的值;所述处理单元702用于:根据预设分区信息,将所述第一数据表包括的多行数据分别存储至第一存储系统包括的多个数据文件,其中,所述预设分区信息用于指示所述多个列字段中的至少一个列字段,所述第一数据表包括的多行数据与所述多个数据文件一一对应;所述处理单元702还用于:按照行存储方式,将所述多个数据文件的多个元数据存储至第二存储系统包括的第二数据表,其中,所述第二数据表包括的多行数据与所述多个元数据一一对应,所述第二数据表包括的多行数据中的任意一行数据为对应的元数据,所述多个数据文件中的任意一个数据文件的元数据包括指示所述任意一个数据文件所存储的所述第一数据表包括的行数据的数据。
可选的,在一些实现方式中,所述任意一个数据文件的元数据至少包括以下数据:所述任意一个数据文件的文件特征、所述任意一个数据文件在所述第一存储系统中的存储位置、所述任意一个数据文件存储的所述第一数据表包括的行数据所关联的所述多个列字段,其中,所述任意一个数据文件的文件特征是根据所述任意一个数据文件中记录的所述第一数据表包括的行数据确定的。
可选的,在另一些实现方式中,所述处理单元702还用于:根据预设特征提取算法,对所述任意一个数据文件中记录的所述第一数据表包括的行数据进行特征提取,获取所述任意一个数据文件的文件特征。
可选的,在另一些实现方式中,所述多个数据文件中的任意两个数据文件的文件特征不同。
可选的,在另一些实现方式中,所述收发单元701还用于:接收文本文件,其中,所述文本文件包括的文本数据用于指示所述第一数据表;所述处理单元702还用于:从所述文本文件中获取所述第一数据表。
可选的,在另一些实现方式中,所述第一存储系统为Hadoop分布式文件系统HDFS,所述第二存储系统为内嵌式存储系统ES。
图8是本申请实施例提供的一种数据查询装置的结构示意图。如图8所示,该装置包括收发单元801和处理单元802,
所述收发单元801,用于接收来自客户端的查询指令,其中,所述查询指令包括待查询事件所关联的第一文件的文件特征;所述处理单元802用于:包括的多个数据文件中的第二数据文件的元数据包括的文件特征与所述第一文件的文件特征相匹配;所述处理单元802还用于:从所述第一存储系统包括的目标存储位置中读取所述第二数据文件,其中,所述第二数据文件的元数据包括的存储位置指示所述目标存储位置;所述收发单元801还用于:向所述客户端发送查询响应消息,其中,所述查询响应消息所携带的事件内容是根据所述第二数据文件确定的;其中,第一数据表包括的多行数据存储于所述第一存储系统包括的多个数据文件,所述第一数据表包括的多行数据中的任意一行数据记录所述第一数据表包括的多个列字段的值,所述多个数据文件的多个元数据存储于所述第二存储系统包括的第二数据表。
可选的,在一些实施方式中,第一数据表包括的多行数据根据本申请实施例提供的数据存储方法存储于所述第一存储系统包括的多个数据文件,所述第一数据表包括的多行数据中的任意一行数据记录所述第一数据表包括的多个列字段的值,所述多个数据文件的多个元数据根据本申请实施例提供的数据存储方法存储于所述第二存储系统包括的第二数据表。
可选的,在一些实现方式中,所述第二数据文件存储所述第一数据表包括的多行数据中的目标行数据,所述查询响应消息所携带的事件内容包括所述目标行数据。
可选的,在另一些实现方式中所述第二数据文件存储所述第一数据表包括的多行数据中的目标行数据,,所述查询指令还包括对所述第一文件的文件特征所关联的数据进行数据分析的方式,在所述向所述客户端发送查询响应消息之前,所述方法还包括:根据所述查询指令所包括的数据分析的方式对所述目标行数据进行分析,获得数据分析结果,其中,所述查询响应消息所携带的事件内容包括所述数据分析结果。
图9是本申请实施例提供的一种设备的结构示意图。如图9所示,包括存储器901、处理器902、通信接口903以及通信总线904。其中,存储器901、处理器902、通信接口903通过通信总线904实现彼此之间的通信连接。
在一些实现方式中,图9示出的设备为数据存储设备。这种实现方式中,存储器901可以是只读存储器(read only memory,ROM),静态存储设备,动态存储设备或者随机存取存储器(random access memory,RAM)。存储器901可以存储程序,当存储器901中存储的程序被处理器902执行时,处理器902和通信接口903用于执行本申请实施例的数据存储方法的各个步骤。
处理器902可以采用通用的中央处理器(central processing unit,CPU),微处理器,应用专用集成电路(application specific integrated circuit,ASIC),图形处理器(graphics processing unit,GPU)或者一个或多个集成电路,用于执行相关程序,以实现本申请实施例的数据存储装置中的单元所需执行的功能,或者执行本申请实施例的数据存储方法的各个步骤。
处理器902还可以是一种集成电路芯片,具有信号的处理能力。在实现过程中,本申请提供的数据存储方法的各个步骤可以通过处理器902中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器902还可以是通用处理器、数字信号处理器(digitalsignal processing,DSP)、专用集成电路(ASIC)、现成可编程门阵列(field programmablegate array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本申请实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本申请实施例所公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器901,处理器902读取存储器901中的信息,结合其硬件完成本申请实施例的数据存储装置中包括的单元所需执行的功能,或者执行本申请方法实施例的数据存储方法。
通信接口903使用例如但不限于收发器一类的收发装置,来实现图9所示的设备与其他设备或通信网络之间的通信。
通信总线904可包括在图9所示的设备各个部件(例如,存储器901、处理器902、通信接口903)之间传送信息的通路。
可选的,在另一些实现方式中,图9示出的设备为数据查询设备。这种实现方式中,存储器901可以是只读存储器(read only memory,ROM),静态存储设备,动态存储设备或者随机存取存储器(random access memory,RAM)。存储器901可以存储程序,当存储器901中存储的程序被处理器902执行时,处理器902和通信接口903用于执行本申请实施例的数据查询方法的各个步骤。
处理器902可以采用通用的中央处理器(central processing unit,CPU),微处理器,应用专用集成电路(application specific integrated circuit,ASIC),图形处理器(graphics processing unit,GPU)或者一个或多个集成电路,用于执行相关程序,以实现本申请实施例的数据查询装置中的单元所需执行的功能,或者执行本申请实施例的数据查询方法的各个步骤。
处理器902还可以是一种集成电路芯片,具有信号的处理能力。在实现过程中,本申请提供的数据查询方法的各个步骤可以通过处理器902中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器902还可以是通用处理器、数字信号处理器(digitalsignal processing,DSP)、专用集成电路(ASIC)、现成可编程门阵列(field programmablegate array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本申请实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本申请实施例所公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器901,处理器902读取存储器901中的信息,结合其硬件完成本申请实施例的数据查询装置中包括的单元所需执行的功能,或者执行本申请方法实施例的数据查询方法。
通信接口903使用例如但不限于收发器一类的收发装置,来实现图9所示的设备与其他设备或通信网络之间的通信。
通信总线904可包括在图9所示的设备各个部件(例如,存储器901、处理器902、通信接口903)之间传送信息的通路。
本申请实施例还提供了一种计算机存储介质,所述计算机存储介质存储有计算机程序,所述程序在被执行时实现上述方法实施例中提供的数据存储方法和/或数据查询方法。
本申请实施例还提供了一种计算机程序产品,包括计算机程序,所述计算机程序被处理器执行时用于实现上述方法实施例中提供的数据存储方法和/或数据查询方法。
通过以上的实施方式的描述,本领域的技术人员易于理解,这里描述的示例实施方式可以通过软件实现,也可以通过软件结合必要的硬件的方式来实现。因此,根据本公开实施方式的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个计算机可读介质上,包括若干指令以使得一台计算设备(可以是个人计算机、服务器、终端装置、或者网络设备等)执行根据本申请公开实施方式的方法。
在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
1、计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括非暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
2、本领域技术人员应明白,本申请的实施例可提供为系统或电子设备。因此,本申请可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
Claims (15)
1.一种数据存储方法,其特征在于,包括:
获取待存储的第一数据表,其中,所述第一数据表包括的多行数据中的任意一行数据记录所述第一数据表包括的多个列字段的值;
根据预设分区信息,将所述第一数据表包括的多行数据分别存储至第一存储系统包括的多个数据文件,其中,所述预设分区信息为所述多个列字段中的至少一个列字段,所述第一数据表包括的多行数据与所述多个数据文件一一对应;
按照行存储方式,将所述多个数据文件的多个元数据存储至第二存储系统包括的第二数据表,其中,所述第二数据表包括的多行数据与所述多个元数据一一对应,所述第二数据表包括的多行数据中的任意一行数据为对应的元数据,所述多个数据文件中的任意一个数据文件的元数据包括指示所述任意一个数据文件所存储的所述第一数据表包括的行数据的数据。
2.根据权利要求1所述的方法,其特征在于,所述任意一个数据文件的元数据至少包括以下数据:
所述任意一个数据文件的文件特征、所述任意一个数据文件在所述第一存储系统中的存储位置、所述任意一个数据文件存储的所述第一数据表包括的行数据所关联的所述多个列字段,其中,所述任意一个数据文件的文件特征是根据所述任意一个数据文件中记录的所述第一数据表包括的行数据确定的。
3.根据权利要求2所述的方法,其特征在于,所述方法还包括:
根据预设特征提取算法,对所述任意一个数据文件中记录的所述第一数据表包括的行数据进行特征提取,获取所述任意一个数据文件的文件特征。
4.根据权利要求2或3所述的方法,其特征在于,
所述多个数据文件中的任意两个数据文件的文件特征不同。
5.根据权利要求1至4任一项所述的方法,其特征在于,
所述第一数据表中记录的多行数据中的任意两行数据对应的所述至少一个列字段的值不同。
6.根据权利要求1至5任一项所述的方法,其特征在于,所述获取待存储的第一数据表,包括:
接收文本文件,其中,所述文本文件包括的文本数据用于指示所述第一数据表;
从所述文本文件中获取所述第一数据表。
7.根据权利要求1至6任一项所述的方法,其特征在于,
所述第一存储系统为Hadoop分布式文件系统HDFS,所述第二存储系统为内嵌式存储系统ES。
8.一种数据查询方法,其特征在于,包括:
接收来自客户端的查询指令,其中,所述查询指令包括待查询事件所关联的第一文件的文件特征;
根据所述第一文件的文件特征和第二存储系统包括的第二数据表,确定第一存储系统包括的多个数据文件中的第二数据文件的元数据包括所述第一文件的文件特征;
从所述第一存储系统包括的目标存储位置中读取所述第二数据文件,其中,所述第二数据文件的元数据包括所述目标存储位置;
向所述客户端发送查询响应消息,其中,所述查询响应消息所携带的事件内容是根据所述第二数据文件确定的;
其中,第一数据表包括的多行数据存储于所述第一存储系统包括的多个数据文件,所述第一数据表包括的多行数据中的任意一行数据记录所述第一数据表包括的多个列字段的值,所述多个数据文件的多个元数据存储于所述第二存储系统包括的第二数据表。
9.根据权利要求8所述的方法,其特征在于,
所述第二数据文件存储所述第一数据表包括的多行数据中的目标行数据,所述查询响应消息所携带的事件内容包括所述目标行数据。
10.根据权利要求8所述的方法,其特征在于,所述第二数据文件存储所述第一数据表包括的多行数据中的目标行数据,所述查询指令还包括对所述第一文件的文件特征所关联的数据进行数据分析的方式,
在所述向所述客户端发送查询响应消息之前,所述方法还包括:
根据所述查询指令所包括的数据分析的方式对所述目标行数据进行分析,获得数据分析结果,其中,所述查询响应消息所携带的事件内容包括所述数据分析结果。
11.一种数据存储装置,其特征在于,包括:
收发单元,用于获取待存储的第一数据表,其中,所述第一数据表包括的多行数据中的任意一行数据记录所述第一数据表包括的多个列字段的值;
处理单元用于:根据预设分区信息,将所述第一数据表包括的多行数据分别存储至第一存储系统包括的多个数据文件,其中,所述预设分区信息为所述多个列字段中的至少一个列字段,所述第一数据表包括的多行数据与所述多个数据文件一一对应;
所述处理单元还用于:按照行存储方式,将所述多个数据文件的多个元数据存储至第二存储系统包括的第二数据表,其中,所述第二数据表包括的多行数据与所述多个元数据一一对应,所述第二数据表包括的多行数据中的任意一行数据为对应的元数据,所述多个数据文件中的任意一个数据文件的元数据包括指示所述任意一个数据文件所存储的所述第一数据表包括的行数据的数据。
12.一种数据查询装置,其特征在于,包括:
收发单元,用于接收来自客户端的查询指令,其中,所述查询指令包括待查询事件所关联的第一文件的文件特征;
处理单元用于:根据所述第一文件的文件特征和第二存储系统包括的第二数据表,确定第一存储系统包括的多个数据文件中的第二数据文件的元数据包括所述第一文件的文件特征;
所述处理单元还用于:从所述第一存储系统包括的目标存储位置中读取所述第二数据文件,其中,所述第二数据文件的元数据包括所述目标存储位置;
所述收发单元还用于:向所述客户端发送查询响应消息,其中,所述查询响应消息所携带的事件内容是所述第二数据文件确定的;
其中,第一数据表包括的多行数据存储于所述第一存储系统包括的多个数据文件,所述第一数据表包括的多行数据中的任意一行数据记录所述第一数据表包括的多个列字段的值,所述多个数据文件的多个元数据存储于所述第二存储系统包括的第二数据表。
13.一种数据存储设备,其特征在于,包括:存储器和处理器、所述存储器和所述处理器耦合;
所述存储器用于存储一条或多条计算机指令;
所述处理器用于执行所述一条或多条计算机指令,以实现如权利要求1至7任意一项所述的数据存储方法。
14.一种数据查询设备,其特征在于,包括:存储器和处理器、所述存储器和所述处理器耦合;
所述存储器用于存储一条或多条计算机指令;
所述处理器用于执行所述一条或多条计算机指令,以实现如权利要求8至10任意一项所述的数据查询方法。
15.一种计算机可读存储介质,其上存储有一条或多条计算机指令,其特征在于,该指令被处理器执行以实现如权利要求1至10任意一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211120270.7A CN115658680A (zh) | 2022-09-14 | 2022-09-14 | 数据存储方法、数据查询方法和相关装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211120270.7A CN115658680A (zh) | 2022-09-14 | 2022-09-14 | 数据存储方法、数据查询方法和相关装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115658680A true CN115658680A (zh) | 2023-01-31 |
Family
ID=84983877
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211120270.7A Pending CN115658680A (zh) | 2022-09-14 | 2022-09-14 | 数据存储方法、数据查询方法和相关装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115658680A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116304390A (zh) * | 2023-04-13 | 2023-06-23 | 北京基调网络股份有限公司 | 时序数据处理方法、装置、存储介质及电子设备 |
-
2022
- 2022-09-14 CN CN202211120270.7A patent/CN115658680A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116304390A (zh) * | 2023-04-13 | 2023-06-23 | 北京基调网络股份有限公司 | 时序数据处理方法、装置、存储介质及电子设备 |
CN116304390B (zh) * | 2023-04-13 | 2024-02-13 | 北京基调网络股份有限公司 | 时序数据处理方法、装置、存储介质及电子设备 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR102627690B1 (ko) | Sql 질의 플랜들을 최적화하기 위한 차원 콘텍스트 전파 기술들 | |
US10585913B2 (en) | Apparatus and method for distributed query processing utilizing dynamically generated in-memory term maps | |
JP6144700B2 (ja) | 半構造データのためのスケーラブルな分析プラットフォーム | |
US9892178B2 (en) | Systems and methods for interest-driven business intelligence systems including event-oriented data | |
US11226963B2 (en) | Method and system for executing queries on indexed views | |
US20080104089A1 (en) | System and method for distributing queries to a group of databases and expediting data access | |
CN106294695A (zh) | 一种面向实时大数据搜索引擎的实现方法 | |
CN111221791A (zh) | 一种多源异构数据导入数据湖的方法 | |
US10496645B1 (en) | System and method for analysis of a database proxy | |
KR20160100752A (ko) | 컬럼-인덱스 데이터 포맷을 이용하여 빅데이터를 효율적으로 처리 및 분석하는 시스템 및 방법 | |
WO2022083436A1 (zh) | 数据处理方法、装置、设备及可读存储介质 | |
US20220148016A1 (en) | Graph based processing of multidimensional hierarchical data | |
Gupta et al. | Faster as well as early measurements from big data predictive analytics model | |
Goyal et al. | Cross platform (RDBMS to NoSQL) database validation tool using bloom filter | |
CN110414259A (zh) | 一种构建数据类目、实现数据共享的方法及设备 | |
US10776368B1 (en) | Deriving cardinality values from approximate quantile summaries | |
CN115905630A (zh) | 一种图数据库查询方法、装置、设备及存储介质 | |
CN114297204A (zh) | 一种异构数据源的数据存储、检索方法及装置 | |
CN115658680A (zh) | 数据存储方法、数据查询方法和相关装置 | |
US8548980B2 (en) | Accelerating queries based on exact knowledge of specific rows satisfying local conditions | |
CN111125199B (zh) | 一种数据库访问方法、装置及电子设备 | |
CN116155597A (zh) | 访问请求的处理方法、装置及计算机设备 | |
WO2008055202A2 (en) | System and method for distributing queries to a group of databases and expediting data access | |
US20160048560A1 (en) | System and Method for Querying a Distributed Dwarf Cube | |
CN113190577B (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 |