一种数据查询的方法及设备与流程

文档序号:12596593阅读:413来源:国知局
本申请涉及计算机领域,尤其涉及一种数据查询的方法及设备。
背景技术
::随着传统企业业务的快速发展,大数据的处理需求成为了所有行业不可避免的问题。大数据平台中一般存储着很多的元数据对象,如表、视图,存储过程等等,而大数据平台普遍缺乏一种简单高效的元数据展现和查询方法。虽然关系型数据库普遍提供数据字典来查询数据库元数据,但关系型数据库的数据字典只应用于关系型数据库。大数据平台普遍没有数据字典的一个重要原因是,大多大数据平台查询和计算的数据和元数据是分离的,这给大数据平台的数据字典带来了难度。目前,大数据平台中普遍提供一系列非结构化的元数据查询命令来查询元信息,如“showtables”命令。对于元数据的非结构化查询的一系列命令,所能查询到的信息,第一个缺点是非结构化,对于非结构化的信息,关系型查询的大数据平台很难进一步从查询结果中精确获取信息,或者对查询的信息进行统计。第二个缺点是这些查询命令的可查询范围小,这些查询命令是从大数据平台存储元信息的独立数据库中获取信息,只能获取当前数据库有多少张表,当前平台有多少数据库这样的信息,无法获取一些临时元数据,平台信息,或者一些统计信息。第三个缺点是查询命令没有统一的规范。目前,还可利用用户自定义函数(UDF)直接获取元信息,但其语法不规范,而且用UDF抽取元信息的方法,很难知道用于获取元信息的UDF能获取到元信息的哪些列,而且UDF是基本上和数据库严格绑定,而数据字典组件和数据库产品并非严格绑定,而是能够可插拔式安装和卸载的。申请内容本申请的一个目的是提供一种数据查询的方法及设备,解决现有技术中大数据平台没有数据字典的、无法获取到临时元数据或一些统计信息等精准信息的问题。根据本申请的一个方面,提供了一种数据查询的方法,所述方法包括:根据用户发送的待查询数据的查询请求获取数据字典的视图的定义;基于所述数据字典的视图的定义确定所述待查询数据的查询方式;根据所述查询方式访问所述待查询数据所在的数据库,得到所述待查询数据的元信息;将查询到的所述待查询数据的元信息反馈至所述用户。进一步地,所述将查询到的所述待查询数据的元信息反馈至所述用户,包括:根据预设的权限过滤查询到的所述待查询数据的元信息,将过滤后的元信息反馈至所述用户。进一步地,所述根据用户发送的待查询数据的查询请求获取数据字典的视图的定义,包括:根据用户发送的待查询数据的查询请求判断所述待查询数据是否为临时数据表,得到判断结果,根据所述判断结果获取数据字典的视图的定义。进一步地,若所述判断结果为所述待查询数据为持久化数据表,所述基于所述数据字典的视图的定义确定所述待查询数据的查询方式,包括:根据获取到的数据字典的视图的定义确定所述待查询数据的查询方式为根据数据库链接查询所述待查询数据。进一步地,根据数据库链接查询所述待查询数据之前,包括:从所述数据字典的视图的定义中获取所述待查询数据对应的数据库链接和数据库链接下的表。进一步地,所述根据所述查询方式访问所述待查询数据所在的数据库,得到所述待查询数据的元信息,包括:根据所述数据库链接访问所述数据库链接下的表所在的关系型数据库;根据所述关系型数据库的视图的定义获得所述待查询数据的元信息。进一步地,所述待查询数据的元信息包括:所述持久化数据表的表名、存储类型、数据位置信息及事务类型。进一步地,若所述判断结果为所述待查询数据为临时数据表,所述基于所述数据字典的视图的定义确定所述待查询数据的查询方式,包括:根据获取到的数据字典的视图的定义确定所述待查询数据的查询方式为根据系统表的单条数据记录查询所述待查询数据。进一步地,根据系统表的单条数据记录查询所述待查询数据之前,包括:从所述数据字典的视图的定义中获取待使用的用户自定义函数或用户自定义的表生成函数及系统表的定义;根据所述系统表的定义获取所述系统表的单条数据记录。进一步地,所述根据所述查询方式访问所述待查询数据所在的数据库,得到所述待查询数据的元信息,包括:将所述系统表的单条数据记录作为所述待使用的用户自定义函数或用户自定义的表生成函数的输入数据;所述待使用的用户自定义函数或用户自定义的表生成函数,通过应用程序接口或预设的反射机制访问所述待查询数据所在的数据库,得到所述待查询数据的元信息。进一步地,通过应用程序接口或预设的反射机制访问所述待查询数据所在的数据库之前,包括:确定所述待查询数据所在的数据库,其中,所述数据库包括分布式文件系统、非关系型数据库、分布式内存列式存储引擎和分布式交互分析引擎服务中的一种或任几种组合。进一步地,所述待查询数据的元信息包括:所述临时数据表的表名、表类型、数据平台版本信息、所述临时数据表的数据量及划分所述临时数据表的规则。根据本申请的另一方面,还提供了一种数据查询的设备,所述设备包括:获取装置,用于根据用户发送的待查询数据的查询请求获取数据字典的视图的定义;确定装置,用于基于所述数据字典的视图的定义确定所述待查询数据的查询方式;查询装置,用于根据所述查询方式访问所述待查询数据所在的数据库,得到所述待查询数据的元信息;反馈装置,用于将查询到的所述待查询数据的元信息反馈至所述用户。进一步地,所述反馈装置用于:根据预设的权限过滤查询到的所述待查询数据的元信息,将过滤后的元信息反馈至所述用户。进一步地,所述获取装置用于:根据用户发送的待查询数据的查询请求判断所述待查询数据是否为临时数据表,得到判断结果,根据所述判断结果获取数据字典的视图的定义。进一步地,若所述判断结果为所述待查询数据为持久化数据表,所述确定装置用于:根据获取到的数据字典的视图的定义确定所述待查询数据的查询方式为根据数据库链接查询所述待查询数据。进一步地,所述确定装置还用于:从所述数据字典的视图的定义中获取所述待查询数据对应的数据库链接和数据库链接下的表。进一步地,所述查询装置用于:根据所述数据库链接访问所述数据库链接下的表所在的关系型数据库;根据所述关系型数据库的视图的定义获得所述待查询数据的元信息。进一步地,所述待查询数据的元信息包括:所述持久化数据表的表名、存储类型、数据位置信息及事务类型。进一步地,若所述判断结果为所述待查询数据为临时数据表,所述确定装置用于:根据获取到的数据字典的视图的定义确定所述待查询数据的查询方式为根据系统表的单条数据记录查询所述待查询数据。进一步地,所述确定装置还用于:从所述数据字典的视图的定义中获取待使用的用户自定义函数或用户自定义的表生成函数及系统表的定义;根据所述系统表的定义获取所述系统表的单条数据记录。进一步地,所述查询装置用于:将所述系统表的单条数据记录作为所述待使用的用户自定义函数或用户自定义的表生成函数的输入数据;所述待使用的用户自定义函数或用户自定义的表生成函数,通过应用程序接口或预设的反射机制访问所述待查询数据所在的数据库,得到所述待查询数据的元信息。进一步地,所述设备还包括:存储确定装置,用于确定所述待查询数据所在的数据库,其中,所述数据库包括分布式文件系统、非关系型数据库、分布式内存列式存储引擎和分布式交互分析引擎服务中的一种或任几种组合。进一步地,所述待查询数据的元信息包括:所述临时数据表的表名、表类型、数据平台版本信息、所述临时数据表的数据量及划分所述临时数据表的规则。与现有技术相比,本申请通过根据用户发送的待查询数据的查询请求获取数据字典的视图的定义;基于所述数据字典的视图的定义确定所述待查询数据的查询方式;根据所述查询方式访问所述待查询数据所在的数据库,得到所述待查询数据的元信息;将查询到的所述待查询数据的元信息反馈至所述用户。通过本申请所述的数据字典进行查询元数据,能够让元数据的查询规范化,结构化,且能够精准快速获取用户期望的元数据具体信息或统计信息;对于查询不同的元数据,通过统一的数据字典的接口,确定的查询链路方式不同,进而增加了操作系统所能提供的元数据的多样性。附图说明通过阅读参照以下附图所作的对非限制性实施例所作的详细描述,本申请的其它特征、目的和优点将会变得更明显:图1示出根据本申请一个方面的一种数据查询的方法流程示意图;图2示出本申请一实施例中大数据平台的数据字典的结构示意图;图3示出本申请一实施例中数据库链接的查询方式的流程示意图;图4示出本申请一实施例中系统表的单条数据记录的查询方式的流程示意图;图5示出根据本申请另一个方面的一种数据查询的设备结构示意图。附图中相同或相似的附图标记代表相同或相似的部件。具体实施方式下面结合附图对本申请作进一步详细描述。在本申请一个典型的配置中,终端、服务网络的设备和可信方均包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flashRAM)。内存是计算机可读介质的示例。计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括非暂存电脑可读媒体(transitorymedia),如调制的数据信号和载波。图1示出根据本申请一个方面的一种数据查询的方法流程示意图;所述方法包括步骤S11~步骤S14,在步骤S11中,根据用户发送的待查询数据的查询请求获取数据字典的视图的定义;在本申请一实施例中,在用户端发起对于数据字典的查询,如执行结构化查询语言“select*fromsystem.tables_v”命令,进行查询数据字典中存在的所有表。查询请求从客户端提交到服务器端,服务器端接受请求后开始编译、执行。执行开始时首先处理数据字典的视图system.tables_v,获取到该视图的定义,从而为后续的查询提供查询链路。在步骤S12中,基于所述数据字典的视图定义确定的所述待查询数据的查询方式;在本申请一实施例中,基于获取到的数据字典的视图的定义,从该视图的定义中获取到查询链路,对于查询不同的元数据,通过统一的数据字典的接口,确定的查询链路方式不同,进而增加了操作系统所能提供的元数据的多样性。在步骤S13中,根据所述查询方式访问所述待查询数据所在的数据库,得到所述待查询数据的元信息;接上述实施例,利用确定的查询方式进行访问待查询数据所在的数据库。当待查询数据不同时,所在的数据库可能不同,使用的查询方式不同,因此需要根据查询方式确定该待查询数据之前存储的数据库信息,从而能够准确的访问对应的数据库,进而准确查询到数据库中待查询的数据。在步骤S14中,将查询到的所述待查询数据的元信息反馈至所述用户。接上述实施例,将在数据库中查找到的待查询数据的元信息反馈至发起查询请求的用户。例如,先查询数据表1的元信息,获取到数据表1是否为事务表等信息,利用从数据字典的视图定义中获取到的查询链路,访问到数据表1所在的数据库,将数据库中数据表1的元信息反馈至用户。用户可以看到该数据表1的元信息,包括了数据表1的存储目录,是否为事务等更精确的信息,从而扩大了查询命令的可查询范围。图2示出本申请一实施例中大数据平台的数据字典的结构示意图。该大数据平台的数据字典应用在分布式系统中,以下简称为大数据平台数据字典。在本申请一实施例中,大数据平台数据字典分为三层,主要包括DatabaseLink,SystemRDD,大数据平台数据字典的UDF,大数据平台数据字典的视图(view),Mysql视图(view)。数据字典的底层为存储元数据的Mysql元信息表按照逻辑重新组织的Mysql视图,以及平台的其他元数据提供组件。数据字典中间层包括DatabaseLink和UDF+SystemRDD两种,前者负责Mysql视图到大数据平台数据字典的映射,后者用于从平台本身抓取更多元信息。数据字典最上层为大数据平台数据字典的视图,包装了带有DatabaseLink的表。底层为元数据的存储者和提供者,包括Mysql、HDFS以及TDH中的其他存储了元信息的引擎和服务。底层元数据通过DatabaseLink,UDF的方式抽取到大数据平台数据字典层,成为对于用户可见的大数据平台数据字典的视图。需要说明的是,在图2中,大数据平台数据字典为基于分布式系统(Hadoop)和数据并行通用批量处理引擎(Spark)的分布式交互分析引擎。大数据平台数据字典可提供完整的结构化查询语言(SQL)支持,支持主流的SQL模块化扩展,兼容通用开发框架和工具,支持事务特性保证数据的准确性,允许多租户的隔离与管理,且能够利用内存或者固态硬盘(SSD)来加速数据的读取,支持与关系型数据库实时对接并做统计分析,辅以高性能的SQL执行引擎,为企业提供高性价比和高度可扩展的解决方案。Holodesk为高效的分布式内存列式存储引擎,是一种跨内存/闪存/磁盘等介质的分布式混合存储。Holodesk把数据在内存或者SSD中做列式存储,辅以基于内存的执行引擎,可以完全避免输入输出(IO)带来的延时,极大的提高数据扫描速度。结合其内建索引,可提供比spark更快的交互式分析统计性能。Hyperbase为一种非关系型数据库,融合了多种索引技术、分布式事务处理、全文实时搜索、图检索数据库等多种技术。DatabaseLink为数据库链接,是一种从大数据平台数据数据字典到其他数据库的双向通路。用户通过数据库链接可以从大数据平台数据字典中直接查询,修改其他数据字典或者数据字典以外数据库中的表。SystemRDD:一种特殊的弹性分布式数据集,只提供一条固定记录。简而言之,SystemRDD旨在为计算引擎提供一条固定的计算数据,便于大数据平台数据字典可以利用这一条记录来输出一些不依赖于数据本身的信息,比如系统版本,系统日期等。本领域技术人员应能理解,图2中的UDF(user-definedfunction)为用户自定义函数;每个数据库,无论是关系型数据库还是大数据平台,都有很多内建的函数。而这些内建的函数有时候不能满足所有用户对于数据处理的需要,所以很多数据库也为用户提供自定义函数的接口,从而让用户能用一些特定的编程语言来把自己需要的数据处理逻辑实现为函数,并能加载到数据库中像内建函数一样使用。UDTF(user-definedtablefunction)为用户定义的表生成函数,和UDF唯一不同的是,UDTF输出的结果不仅限于一行,而可以是多行。优选地,在步骤S14中,根据预设的权限过滤查询到的所述待查询数据的元信息,将过滤后的元信息反馈至所述用户。如图2所示,数据字典的结构中使用了用户权限系统,以避免用户通过数据字典查询到自己没有权限的元信息,在数据库中查询的结果在返回至用户时通过用户权限系统将用户没有权限的数据过滤掉。在用户权限系统中,不是在代码中控制权限而是直接使用SQL实现,从而保证了更精确的快速获取用户期望的元数据具体信息或统计信息。优选地,在步骤S11中,根据用户发送的待查询数据的查询请求判断所述待查询数据是否为临时数据表,得到判断结果,根据所述判断结果获取数据字典的视图的定义。在本申请一实施例中,元数据可能存储在Mysql中,也可能存储在HDFS,Holodesk,Hyperbase等数据库中,而在Mysql中为存储持久化的数据,如数据表、分区、存储过程、列等元信息都是存储在Mysql中;而临时表的元信息不存储在Mysql中,因此针对持久化数据表和临时数据表,本申请的数据字典提供了不同的查询链路,能够实现快速准确地查询到用户所需的具体元信息或统计信息。优选地,若所述判断结果为所述待查询数据为持久化数据表,在步骤S12中,根据获取到的数据字典的视图的定义确定所述待查询数据的查询方式为根据数据库链接查询所述待查询数据。在本申请一实施例中,当要查询的数据为持久化数据表时,采用数据库链接DatabaseLink+Mysql视图(Mysqlview)这条链路访问Mysql,查询元数据表。在根据数据库链接查询所述待查询数据之前,包括:从所述数据字典的视图的定义中获取所述待查询数据对应的数据库链接和数据库链接下的表。在本申请一实施例中,如图3所示,客户端发起对于数据字典的查询“select*fromsystem.tables_v”,查询提交至服务端,在服务端首先查询数据字典的视图“system.tables_v”,获取到该视图的定义,进而获取视图定义指定的数据库链接和数据库链接下的表。规范了查询命令,且扩大了查询命令的可查询范围,使得利用查询命令可以获取到一些临时元数据、大数据平台信息或者一些统计信息。进一步地,在步骤S13中,根据所述数据库链接访问所述数据库链接下的表所在的关系型数据库;根据所述关系型数据库的视图的定义获得所述待查询数据的元信息。接上述实施例,根据获取到的数据库链接,访问指定的Mysql数据库,查询Mysql数据库下指定的视图,接着,Mysql会根据Mysql下的视图定义查询相应的元信息表,返回数据。优选地,把数据用数据字典的权限系统进行过滤,过滤掉查询用户没有权限看到的数据。其中,Mysql中的数据表为真正存储元信息的容器,而Mysql视图是把符合关系模式的Mysql元信息表重新组织为用户友好结构的视图。数据库链接是能让大数据平台数据字典访问其他数据库的通路,只需要知道相应数据库的数据库连接的统一资源定位符(jdbcurl)、用户名及密码,就可以访问其他数据库下的任何有权限的表,而大数据平台数据字典的视图则是屏蔽了数据库链接的查询语法的组织结构。优选地,所述待查询数据的元信息包括:所述持久化数据表的表名、存储类型、数据位置信息及事务类型。在此,在数据字典中通过数据库链接的查询方式,可以查询到持久化数据表的表名,存储类型比如文本表,数据位置,如数据表在哪个目录下,数据表的大小,以及该数据表为事务类型还是非事务类型的表。实现在大数据平台中,可以从查询结果中精确获取信息或者对查询到的信息进行统计。优选地,若所述判断结果为所述待查询数据为临时数据表,在步骤S12中,根据获取到的数据字典的视图的定义确定所述待查询数据的查询方式为根据系统表的单条数据记录查询所述待查询数据。在本申请一实施例中,当要查询的数据为临时数据表时,采用SystemRDD+UDF/UDTF的查询方式进行访问所述临时数据表所在的数据库,其中,通过数据字典的定义获取到系统表的定义和数据,拿到该系统表的单条数据,查询的流程图如图4所示。更优选地,根据系统表的单条数据记录查询所述待查询数据之前,包括:从所述数据字典的视图的定义中获取待使用的用户自定义函数或用户自定义的表生成函数及系统表的定义;根据所述系统表的定义获取所述系统表的单条数据记录。在此,当需要返回的数据表为多行多列时,则需要获取待使用的用户自定义的表生成函数(UDTF),而不需要多行多列的数据表时,可以使用用户自定义函数UDF或UDTF,从系统表的定义中获取到该系统表的单条数据记录,在步骤S13中,将所述系统表的单条数据记录作为所述待使用的用户自定义函数或用户自定义的表生成函数的输入数据;所述待使用的用户自定义函数或用户自定义的表生成函数,通过应用程序接口或预设的反射机制访问所述待查询数据所存在的服务,得到所述待查询数据的元信息。并通过应用程序接口或预设的反射机制访问所述待查询数据所在的服务之前,所述设备还包括存储确定装置15,用于确定所述待查询数据所在的数据库,其中,所述服务包括分布式文件系统、非关系型数据库、分布式内存列式存储引擎和分布式交互分析引擎服务数据库中的一种或任几种组合。在此,把所获得的单条数据记录作为大数据平台数据字典的UDF/UDTF的输入数据,进入函数逻辑,函数中会通过应用程序接口(API)或一些反射机制去获取分布式文件系统(HDFS)/非关系型数据库(Holodesk)/分布式内存列式存储引擎(Hyperbase)/分布式交互分析引擎服务(Server)中存有的元信息。其中,所述待查询数据的元信息包括:所述临时数据表的表名、表类型、数据平台版本信息、所述临时数据表的数据量及划分所述临时数据表的规则。在此,通过SystemRDD中的单条数据记录+大数据平台数据字典的UDF/UDTF的查询方式获取的元信息包括:没有持久化在Mysql中而是存在服务端的临时表信息,大数据平台版本信息、数据表的大小等。其中,存储格式为文本(text)、纯文本文件(csv)、优化的列式记录文件(orc)、列式记录文件(rc)、列式存储文件格式(parquet)等表数据存储在HDFS中,需要通过HDFSAPI查询,Holodesk表数据存储在内存中,需要HolodeskAPI查询,Hyperbase表的划分临时数据表的规则(splitkey),存储在HDFS中,但需要通过Hyperbase的API解析。需要说明的是,splitkey决定了Hyperbase表分区域的规则,极大影响着Hyperbase表的查询性能、并发性能,因此通过本申请所述的查询方式,将更精确的元信息反馈至用户,如将元信息中的splitkey反馈至用户,用户可以对其进行改进等,进而提高数据表的查询性能、并发性能。在此,元数据信息的查询,在普通大数据平台中只能通过非结构化查询命令,如“showtables”,“showdatabases”查询。对于更高级的元信息,比如数据的分布和大小,需要用HDFS的命令查询。对于一些存储在服务器端的信息,比如平台版本信息等,需要用管理界面查看。而本申请中所述的数据字典把所有的非结构化查询命令,HDFS命令,服务器端的信息进行了汇总并提供统一的标准sql查询接口。另外,数据库传统的元信息查询命令,如“showtables”,“showdatabases”,“describetable”获取到的元信息一般是非结构化的,类似一段文字描述,因此很难从这段文字描述中获取到特定的精准信息,比如无法从“describetable”的结果中获取到表的类型,或者获取到表的数据位置信息,也无法把获取到的元信息和其他的sql做进一步的操作。而通过本申请所述的数据字典则为用户提供了结构化查询的的接口,由于数据字典获取到的结构化数据是有列信息的,所以用户很容易从数据字典中精确获取到用户需要的信息。比如在所有数据库下,查找名字为xxx表的表存储类型:“selecttable_formatfromsystem.tables_vwheretable_name=‘XXX’”。综上所述,通过本申请所述的数据字典进行查询元数据,能够让元数据的查询规范化,结构化,使用sql来精准快速获取用户期望的元数据具体信息或统计信息,且本申请所述的数据字典的架构易于安装管理升级,大数据平台数据字典可以和大数据平台分离,独立安装,升级,并能提供自动化工具进行版本控制和升级卸载。图5示出根据本申请另一个方面的一种数据查询的设备结构示意图;所述设备包括获取装置11、确定装置12、查询装置13和反馈装置14,获取装置11,用于根据用户发送的待查询数据的查询请求获取数据字典的视图的定义;在本申请一实施例中,在用户端发起对于数据字典的查询,如执行结构化查询语言“select*fromsystem.tables_v”命令,进行查询数据字典中存在的所有表。查询请求从客户端提交到服务器端,服务器端接受请求后开始编译、开始执行。执行开始时首先处理数据字典的视图system.tables_v,获取到该视图的定义,从而为后续的查询提供查询链路。确定装置12,用于基于所述数据字典的视图定义确定的所述待查询数据的查询方式;在本申请一实施例中,基于获取到的数据字典的视图的定义,从该视图的定义中获取到查询链路,对于查询不同的元数据,通过统一的数据字典的接口,确定的查询链路方式不同,进而增加了操作系统所能提供的元数据的多样性。查询装置13,用于根据所述查询方式访问所述待查询数据所在的数据库,得到所述待查询数据的元信息;接上述实施例,利用确定的查询方式进行访问待查询数据所在的数据库。当待查询数据不同时,所在的数据库可能不同,使用的查询方式不同,因此需要根据查询方式确定该待查询数据之前存储的数据库信息,从而能够准确的访问对应的数据库,进而准确查询到数据库中待查询的数据。反馈装置14,用于将查询到的所述待查询数据的元信息反馈至所述用户。接上述实施例,将在数据库中查找到的待查询数据的元信息反馈至发起查询请求的用户。例如,先查询数据表1的元信息,获取到数据表1是否为事务表等信息,利用从数据字典的视图定义中获取到的查询链路,访问到数据表1所在的数据库,将数据库中数据表1的元信息反馈至用户。用户可以看到该数据表1的元信息,包括了数据表1的存储目录,是否为事务等更精确的信息,从而扩大了查询命令的可查询范围。图2示出本申请一实施例中大数据平台的数据字典的结构示意图。该大数据平台的数据字典应用在分布式系统中,以下简称为大数据平台数据字典。在本申请一实施例中,大数据平台数据字典分为三层,主要包括DatabaseLink,SystemRDD,大数据平台数据字典的UDF,大数据平台数据字典的视图(view),Mysql视图(view)。数据字典的底层为存储元数据的Mysql元信息表按照逻辑重新组织的Mysql视图,以及平台的其他元数据提供组件。数据字典中间层包括DatabaseLink和UDF+SystemRDD两种,前者负责Mysql视图到大数据平台数据字典的映射,后者用于从平台本身抓取更多元信息。数据字典最上层为incptor视图,包装了带有DatabaseLink的表。底层为元数据的存储者和提供者,包括Mysql、HDFS以及TDH中的其他存储了元信息的引擎和服务。底层元数据通过DatabaseLink,UDF的方式抽取到大数据平台数据字典层,成为对于用户可见的大数据平台数据字典的view。需要说明的是,在图2中,大数据平台数据字典为基于分布式系统(hadoop)和数据并行通用批量处理引擎(spark)的分布式交互分析引擎。大数据平台数据字典可提供完整的结构化查询语言(SQL)支持,支持主流的SQL模块化扩展,兼容通用开发框架和工具,支持事务特性保证数据的准确性,允许多租户的隔离与管理,且能够利用内存或者固态硬盘(SSD)来加速数据的读取,支持与关系型数据库实时对接并做统计分析,辅以高性能的SQL执行引擎,为企业提供高性价比和高度可扩展的解决方案。Holodesk为高效的分布式内存列式存储引擎,是一种跨内存/闪存/磁盘等介质的分布式混合存储。Holodesk把数据在内存或者SSD中做列式存储,辅以基于内存的执行引擎,可以完全避免输入输出(IO)带来的延时,极大的提高数据扫描速度。结合其内建索引,可提供比spark更快的交互式分析统计性能。Hyperbase为一种非关系型数据库,融合了多种索引技术、分布式事务处理、全文实时搜索、图检索数据库等多种技术。DatabaseLink为数据库链接,是一种从大数据平台数据字典到其他数据库的双向通路。用户通过数据库链接可以从大数据平台数据字典中直接查询,修改其他大数据平台或者大数据平台以外数据库中的表。SystemRDD:一种特殊的弹性分布式数据集,只提供一条固定记录。简而言之,SystemRDD旨在为计算引擎提供一条固定的计算数据,便于大数据平台数据字典可以利用这一条记录来输出一些不依赖于数据本身的信息,比如系统版本,系统日期等。本领域技术人员应能理解,图2中的UDF(user-definedfunction)为用户自定义函数;每个数据库,无论是关系型数据库还是大数据平台,都有很多内建的函数。而这些内建的函数有时候不能满足所有用户对于数据处理的需要,所以很多数据库也为用户提供自定义函数的接口,从而让用户能用一些特定的编程语言来把自己需要的数据处理逻辑实现为函数,并能加载到数据库中像内建函数一样使用。UDTF(user-definedtablefunction)为用户定义的表生成函数,和UDF唯一不同的是,UDTF输出的结果不仅限于一行,而可以是多行。优选地,反馈装置14,用于根据预设的权限过滤查询到的所述待查询数据的元信息,将过滤后的元信息反馈至所述用户。如图2所示,数据字典的结构中使用了用户权限系统,以避免用户通过数据字典查询到自己没有权限的元信息,在数据库中查询的结果在返回至用户时通过用户权限系统将用户没有权限的数据过滤掉。在用户权限系统中,不是在代码中控制权限而是直接使用SQL实现,从而保证了更精确的快速获取用户期望的元数据具体信息或统计信息。优选地,获取装置11,用于根据用户发送的待查询数据的查询请求判断所述待查询数据是否为临时数据表,得到判断结果,根据所述判断结果获取数据字典的视图的定义。在本申请一实施例中,元数据可能存储在Mysql中,也可能存储在HDFS,Holodesk,Hyperbase等数据库中,而在Mysql中为存储持久化的数据,如数据表、分区、存储过程、列等元信息都是存储在Mysql中;而临时表的元信息不存储在Mysql中,因此针对持久化数据表和临时数据表,本申请的数据字典提供了不同的查询链路,能够实现快速准确地查询到用户所需的具体元信息或统计信息。优选地,若所述判断结果为所述待查询数据为持久化数据表,确定装置12,用于根据获取到的数据字典的视图的定义确定所述待查询数据的查询方式为根据数据库链接查询所述待查询数据。在本申请一实施例中,当要查询的数据为持久化数据表时,采用数据库链接DatabaseLink+Mysqlview这条链路访问Mysql,查询元数据表。在根据数据库链接查询所述待查询数据之前,包括:从所述数据字典的视图的定义中获取所述待查询数据对应的数据库链接和数据库链接下的表。在本申请一实施例中,如图3所示,客户端发起对于数据字典的查询“select*fromsystem.tables_v”,查询提交至服务端,在服务端首先查询数据字典的视图“system.tables_v”,获取到该视图的定义,进而获取视图定义指定的数据库链接和数据库链接下的表。规范了查询命令,且扩大了查询命令的可查询范围,使得利用查询命令可以获取到一些临时元数据、大数据平台信息或者一些统计信息。进一步地,查询装置13用于根据所述数据库链接访问所述数据库链接下的表所在的关系型数据库;根据所述关系型数据库的视图的定义获得所述待查询数据的元信息。接上述实施例,根据获取到的数据库链接,访问指定的Mysql数据库,查询Mysql数据库下指定的视图,接着,Mysql会根据Mysql下的视图定义查询相应的元信息表,返回数据。优选地,把数据用数据字典的权限系统进行过滤,过滤掉查询用户没有权限看到的数据。其中,Mysql中的数据表为真正存储元信息的容器,而Mysql视图是把符合关系模式的Mysql元信息表重新组织为用户友好结构的视图。数据库链接是能让大数据平台数据字典访问其他数据库的通路,只需要知道相应数据库的数据库连接的统一资源定位符(jdbcurl)、用户名及密码,就可以访问其他数据库下的任何有权限的表,而大数据平台数据字典的视图则是屏蔽了数据库链接的查询语法的组织结构。优选地,所述待查询数据的元信息包括:所述持久化数据表的表名、存储类型、数据位置信息及事务类型。在此,在数据字典中通过数据库链接的查询方式,可以查询到持久化数据表的表名,存储类型比如文本表,数据位置,如数据表在哪个目录下,数据表的大小,以及该数据表为事务类型还是非事务类型的表。实现在大数据平台中,可以从查询结果中精确获取信息或者对查询到的信息进行统计。优选地,若所述判断结果为所述待查询数据为临时数据表,确定装置12,用于根据获取到的数据字典的视图的定义确定所述待查询数据的查询方式为根据系统表的单条数据记录查询所述待查询数据。在本申请一实施例中,当要查询的数据为临时数据表时,采用SystemRDD+UDF/UDTF的查询方式进行访问所述临时数据表所在的数据库,其中,通过数据字典的定义获取到系统表的定义和数据,拿到该系统表的单条数据,查询的流程图如图4所示。更优选地,根据系统表的单条数据记录查询所述待查询数据之前,确定装置12还用于从所述数据字典的视图的定义中获取待使用的用户自定义函数或用户自定义的表生成函数及系统表的定义;根据所述系统表的定义获取所述系统表的单条数据记录。在此,当需要返回的数据表为多行多列时,则需要获取待使用的用户自定义的表生成函数(UDTF),而不需要多行多列的数据表时,可以使用用户自定义函数UDF或UDTF,从系统表的定义中获取到该系统表的单条数据记录,查询装置13用于将所述系统表的单条数据记录作为所述待使用的用户自定义函数或用户自定义的表生成函数的输入数据;所述待使用的用户自定义函数或用户自定义的表生成函数,通过应用程序接口或预设的反射机制访问所述待查询数据所存在的服务,得到所述待查询数据的元信息。并通过应用程序接口或预设的反射机制访问所述待查询数据所在的服务之前,确定所述待查询数据所在的数据库,其中,所述服务包括分布式文件系统、非关系型数据库、分布式内存列式存储引擎和分布式交互分析引擎服务数据库中的一种或任几种组合。在此,把所获得的单条数据记录作为大数据平台数据字典UDF/UDTF的输入数据,进入函数逻辑,函数中会通过应用程序接口(API)或一些反射机制去获取分布式文件系统(HDFS)/非关系型数据库(Holodesk)/分布式内存列式存储引擎(Hyperbase)/分布式交互分析引擎服务(Server)中存有的元信息。其中,所述待查询数据的元信息包括:所述临时数据表的表名、表类型、数据平台版本信息、所述临时数据表的数据量及划分所述临时数据表的规则。在此,通过SystemRDD中的单条数据记录+大数据平台数据字典的UDF/UDTF的查询方式获取的元信息包括没有持久化在Mysql中而是存在服务端的临时表信息,大数据平台版本信息、数据表的大小等。其中,存储格式为文本(text)、纯文本文件(csv)、优化的列式记录文件(orc)、列式记录文件(rc)、列式存储文件格式(parquet)等表数据存储在HDFS中等表数据存储在HDFS中,需要通过HDFSAPI查询,Holodesk表数据存储在内存中,需要HolodeskAPI查询,Hyperbase表的划分临时数据表的规则(splitkey),存储在HDFS中,但需要通过Hyperbase的API解析。需要说明的是,splitkey决定了Hyperbase表分区域的规则,极大影响着Hyperbase表的查询性能、并发性能,因此通过本申请所述的查询方式,将更精确的元信息反馈至用户,如将元信息中的splitkey反馈至用户,用户可以对其进行改进等,进而提高数据表的查询性能、并发性能。一方面,元数据信息的查询,在普通大数据平台中只能通过非结构化查询命令,如“showtables”,“showdatabases”查询。对于更高级的元信息,比如数据的分布和大小,需要用HDFS的命令查询。对于一些存储在服务器端的信息,比如平台版本信息等,需要用管理界面查看。而本申请中所述的数据字典把所有的非结构化查询命令,HDFS命令,服务器端的信息进行了汇总并提供统一的标准sql查询接口。另一方面,数据库传统的元信息查询命令,如“showtables”,“showdatabases”,“describetable”获取到的元信息一般是非结构化的,类似一段文字描述,因此很难从这段文字描述中获取到特定的精准信息,比如无法从describetable的结果中获取到表的类型,或者获取到表的数据位置信息,也无法把获取到的元信息和其他的sql做进一步的操作。而通过本申请所述的数据字典则为用户提供了结构化查询的的接口,由于数据字典获取到的结构化数据是有列信息的,所以用户很容易从数据字典中精确获取到用户需要的信息。比如在所有数据库下,查找名字为xxx表的表存储类型:“selecttable_formatfromsystem.tables_vwheretable_name=‘XXX’”。综上所述,通过本申请所述的数据字典进行查询元数据,能够让元数据的查询规范化,结构化,使用sql来精准快速获取用户期望的元数据具体信息或统计信息,且本申请所述的数据字典的架构易于安装管理升级,大数据平台数据字典可以和大数据平台分离,独立安装,升级,并能提供自动化工具进行版本控制和升级卸载。显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的精神和范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。需要注意的是,本申请可在软件和/或软件与硬件的组合体中被实施,例如,可采用专用集成电路(ASIC)、通用目的计算机或任何其他类似硬件设备来实现。在一个实施例中,本申请的软件程序可以通过处理器执行以实现上文所述步骤或功能。同样地,本申请的软件程序(包括相关的数据结构)可以被存储到计算机可读记录介质中,例如,RAM存储器,磁或光驱动器或软磁盘及类似设备。另外,本申请的一些步骤或功能可采用硬件来实现,例如,作为与处理器配合从而执行各个步骤或功能的电路。另外,本申请的一部分可被应用为计算机程序产品,例如计算机程序指令,当其被计算机执行时,通过该计算机的操作,可以调用或提供根据本申请的方法和/或技术方案。而调用本申请的方法的程序指令,可能被存储在固定的或可移动的记录介质中,和/或通过广播或其他信号承载媒体中的数据流而被传输,和/或被存储在根据所述程序指令运行的计算机设备的工作存储器中。在此,根据本申请的一个实施例包括一个装置,该装置包括用于存储计算机程序指令的存储器和用于执行程序指令的处理器,其中,当该计算机程序指令被该处理器执行时,触发该装置运行基于前述根据本申请的多个实施例的方法和/或技术方案。对于本领域技术人员而言,显然本申请不限于上述示范性实施例的细节,而且在不背离本申请的精神或基本特征的情况下,能够以其他的具体形式实现本申请。因此,无论从哪一点来看,均应将实施例看作是示范性的,而且是非限制性的,本申请的范围由所附权利要求而不是上述说明限定,因此旨在将落在权利要求的等同要件的含义和范围内的所有变化涵括在本申请内。不应将权利要求中的任何附图标记视为限制所涉及的权利要求。此外,显然“包括”一词不排除其他单元或步骤,单数不排除复数。装置权利要求中陈述的多个单元或装置也可以由一个单元或装置通过软件或者硬件来实现。第一,第二等词语用来表示名称,而并不表示任何特定的顺序。当前第1页1 2 3 当前第1页1 2 3 
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1